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

Есть вопросы по переходу с verilog на vhdl

tAmega

Забавно, у меня тоже есть учебник Бибило по vhdl, вот в нем то как раз я и наткнулся на ошибки в синтаксисе о которых писал в первом посте ) Второй учебник у меня - Стешенко по альтере, там как то получше написано, но все равно вопросы остаются...

 

Учил VHDL по Суворова Е.А., Шейнин Ю.Е. Проектирование цифровых систем на VHDL и Бабак В.П., Корченко А.Г. VHDL: Справочное пособие по основам языка : довольно в доступной форме все описано с множеством примеров.

Удачи!!!

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


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

Вот классическое описание триггера:

 

entity fdd is
    port(
         resetn        : in std_logic;
         set            : in std_logic;
         clr            : in std_logic;
         q            : out std_logic
    );
end fdd;

architecture fdd of fdd is

begin

pr_state; process( resetn, clk ) begin
   if( resetn='0' ) then
        q <= '0';
   elsif( rising_edge( clk ) ) then
       if( clr='1 ) then
             q <= '0' after 1 ns;
       elsif( set='1' ) then
            q <= '1' after 1 ns;
       end if;
    end if;        
            
end fdd;

 

 

На мой взгляд это выглядит гораздо лучше чем: q <= (set | q) & ~clr;

 

 

 

 

 

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


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

Вот только сбивает с толку это after 1ns.

Это описание триггера для тестбенча, но никак не для синтезируемой схемы.

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


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

Вот только сбивает с толку это after 1ns.

Это описание триггера для тестбенча, но никак не для синтезируемой схемы.

По стандарту языка конструкцию after 1 ns синтезатор игнорирует. А моделировать это помогает.

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


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

Я бы в обязательном порядке приготовил тестбенч под прототип, который готовится под VHDL, и это позволит проверить потом себя. Позволит избежать ошибки.

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


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

Вот классическое описание триггера:

 

entity fdd is
     port(
           resetn        : in std_logic;
           set            : in std_logic;
           clr            : in std_logic;
           q            : out std_logic
     );
end fdd;

architecture fdd of fdd is

begin

pr_state; process( resetn, clk ) begin
    if( resetn='0' ) then
          q <= '0';
    elsif( rising_edge( clk ) ) then
         if( clr='1 ) then
               q <= '0' after 1 ns;
         elsif( set='1' ) then
              q <= '1' after 1 ns;
         end if;
     end if;        
             
end fdd;

 

 

На мой взгляд это выглядит гораздо лучше чем: q <= (set | q) & ~clr;

 

Значительно лучше.

 

А кошернее академически-классически все-же с

elsif (clk'event AND clk = '1') then

:rolleyes:

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


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

А кошернее академически-классически все-же с

elsif (clk'event AND clk = '1') then

Ерунда. Во-первых, rising_edge отродясь была в стандартном std_logic_1164, а во-вторых, она отлавливает переход из 0 в 1, а не из произвольного значения в 1.

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


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

Ерунда. Во-первых, rising_edge отродясь была в стандартном std_logic_1164, а во-вторых, она отлавливает переход из 0 в 1, а не из произвольного значения в 1.

 

А из 'L' в '1' пропускает? ;)

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


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

А из 'L' в '1' пропускает? ;)
Это да. 'L' трактуется как '0', 'H' как '1'. Сорцы открыты, смотрите сами.

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


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

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

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

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

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

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

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

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

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

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