Перейти к содержанию
    

Простые вещи на VHDL

Здравствуйте, срочно горят лабы на VHDL, но даже преподовский вариант не работает.

Есть нотэнд:

 

LIBRARY ieee;                  
USE ieee.std_logic_1164.ALL;   
                                                              
ENTITY notand IS
PORT( a : IN std_logic;       
      b : IN std_logic;       
      c : OUT std_logic );     
END notand;                   
ARCHITECTURE behavior OF notand IS
BEGIN
    C <= NOT ( a AND b );
END behavior;

 

Работает, все хорошо.

На его основе делаем rs триггер:

 

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY rstr IS
PORT( s : IN std_logic;
      r : IN std_logic;
      q : INOUT std_logic;
     qb : INOUT std_logic );
END rstr;
ARCHITECTURE behav OF rstr IS
COMPONENT notand   
PORT( a : IN std_logic;
      b : IN std_logic;
      c : INOUT std_logic);
END COMPONENT;
BEGIN
u1: notand                  
    PORT MAP ( s, qb, q);   
u2: notand
    PORT MAP (q, r, qb);
END behav;
CONFIGURATION con OF rstr IS
    FOR behav
       FOR u1, u2: notand
            USE ENTITY work.notand (behavior);
END FOR;    
END FOR;
END con;

 

И... не работает. Ошибки такие:

Error: BIDIR pin 'q' must be driven by TRI or OPNDRN buffer, but is driven by primitive '|notand:u1|~6~1'

Error: BIDIR pin 'qb' must be driven by TRI or OPNDRN buffer, but is driven by primitive '|notand:u2|:6'

 

Все перепробовал. Может, кто-нибудь подскажет, в чем может быть дело, а то и спросить не у кого(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте, срочно горят лабы на VHDL, но даже преподовский вариант не работает.

Есть нотэнд:

 

LIBRARY ieee;                  
USE ieee.std_logic_1164.ALL;   
                                                              
ENTITY notand IS
PORT( a : IN std_logic;       
      b : IN std_logic;       
      c : OUT std_logic );     
END notand;                   
ARCHITECTURE behavior OF notand IS
BEGIN
    C <= NOT ( a AND b );
END behavior;

 

Работает, все хорошо.

На его основе делаем rs триггер:

 

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY rstr IS
PORT( s : IN std_logic;
      r : IN std_logic;
      q : INOUT std_logic;
     qb : INOUT std_logic );
END rstr;
ARCHITECTURE behav OF rstr IS
COMPONENT notand   
PORT( a : IN std_logic;
      b : IN std_logic;
      c : INOUT std_logic);
END COMPONENT;
BEGIN
u1: notand                  
    PORT MAP ( s, qb, q);   
u2: notand
    PORT MAP (q, r, qb);
END behav;
CONFIGURATION con OF rstr IS
    FOR behav
       FOR u1, u2: notand
            USE ENTITY work.notand (behavior);
END FOR;    
END FOR;
END con;

 

И... не работает. Ошибки такие:

Error: BIDIR pin 'q' must be driven by TRI or OPNDRN buffer, but is driven by primitive '|notand:u1|~6~1'

Error: BIDIR pin 'qb' must be driven by TRI or OPNDRN buffer, but is driven by primitive '|notand:u2|:6'

 

Все перепробовал. Может, кто-нибудь подскажет, в чем может быть дело, а то и спросить не у кого(

Бибило в помощь

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

спасибо, но может кто подскажет, как поправить код, чтоб работал, а то срочно надо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо, но может кто подскажет, как поправить код, чтоб работал, а то срочно надо

А если так:

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY rstr IS
PORT( s : IN std_logic;
      r : IN std_logic;
      q : BUFFER std_logic;
     qb : BUFFER std_logic );
END rstr;
ARCHITECTURE behav OF rstr IS
COMPONENT notand  
PORT( a : IN std_logic;
      b : IN std_logic;
      c : OUT std_logic);
END COMPONENT;
BEGIN
u1: notand                  
    PORT MAP ( s, qb, q);  
u2: notand
    PORT MAP (q, r, qb);
END behav;
CONFIGURATION con OF rstr IS
    FOR behav
       FOR u1, u2: notand
            USE ENTITY work.notand (behavior);
END FOR;    
END FOR;
END con;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Квартус ругается на то что сигналы INOUT. Даже смотрите, в описании notand у вас сигнал "с : OUT std_logic" а в опсании компонента "c : INOUT std_logic". Вам обязательно необходимо использовать сигнал "q" и "qb" как INOUT ? Если это сделано лишь для удобства (чтобы соединять компоненты), то это не правильно. Соединяйте через третий сигнал.

Если еще актуально, то пожалуй вам поможет этот документ: intranet.ftk.spbstu.ru/download.php?DocID=838691

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

intranet.ftk.spbstu.ru/download.php?DocID=838691

Какой хороший текст. Похоже, это глава из какого-то учебника? А можно ссылки на остальные главы?

Заранее признателен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот вроде через 3й сигнал, но ISE выдает "This construct is only supported in VHDL 1076-2008"

 

txdp : in STD_LOGIC;--

txoe : in STD_LOGIC;

VP : inout STD_LOGIC;

rxdp : out STD_LOGIC;

 

bycomby: process (txoe,txdp,VP)

begin

VP <= txdp when txoe = '0' else 'Z';

rxdp <= VP when txoe = '1' else '1';

 

end process bycomby;

 

VP уже снаружи FPGA...

 

Делаю в настройках VHDL-200X но ничего не меняется.....

 

Ткните носом, что тут не нравится системе? :cheers:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

signal tp_s: STD_LOGIC;

 

begin

VP <= tp_s;

 

tp_s <= txdp when txoe = '0' else 'Z';

rxdp <= VP when txoe = '1' else '1';

 

Вот такое уже работает!!! Всем спасибо! Я считал, что я в параллельной секции, раз нет CLK

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...