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

VHDL в QUARTUS для очень начинающего

Здравствуйте. Совсем отчаялся разобраться в этом языке. Сколько есть у меня книжек, все не дают достаточного понимания в программировании VHDL. Помогите пожалуйста разобраться на простых примерах. Например на AHDL можно составить элемент написав таблицу истинности, покажите как это сделать на VHDL. Желательно в quartus, чтобы не добавлять в мое незнание дополнительных переменных.

Может у кого любимые книжки по этой теме, я буду только благодарен.

Заранее спасибо.

Изменено пользователем _Ie0nid

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


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

Здравствуйте. Совсем отчаялся разобраться в этом языке. Сколько есть у меня книжек, все не дают достаточного понимания в программировании VHDL. Помогите пожалуйста разобраться на простых примерах. Например на AHDL можно составить элемент написав таблицу истинности, покажите как это сделать на VHDL. Желательно в quartus, чтобы не добавлять в мое незнание дополнительных переменных.

Может у кого любимые книжки по этой теме, я буду только благодарен.

Заранее спасибо.

Просто в гугле все ищется.

http://en.wikipedia.org/wiki/VHDL

Создать элемент, написав таблицу истинности, можно через case, но какой-то подход не правильный. Обычно просто что надо описывается и все.

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


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

Например на AHDL можно составить элемент написав таблицу истинности, покажите как это сделать на VHDL.
Это можно сделать на Verilog'е - там есть специальная конструкция. Но делать этого не надо - не все (мягко говоря) синтезаторы эту конструкцию поддерживают :)

 

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


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

Здравствсуйте. Хорошо, давайте другой пример.

1. В прикрпеленном файле реализован пример простого D тригера из книжки, компилятор выдал ошибки можете сказать в чем дело?

2. На пальцах может кто ни будь объяснить что делает оператор EVENT?

3. В книжке описаны объявление типов. что означают std_logic и std_logic_vector

Заранее благодарю.

quartus_pict.bmp

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


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

1. В прикрпеленном файле
Имейте совесть и немного уважения к другим. Лично я не буду смотреть рисунок размером в 4 без малого мегабайта.

 

2. На пальцах может кто ни будь объяснить что делает оператор EVENT?
'event --это не оператор, а атрибут сигнала. Он возвращает true, если с сигналом в данный момент времени произошло любое изменение. Например, сигнал перешёл из нулевого состояния в единичное.

 

3. В книжке описаны объявление типов. что означают std_logic и std_logic_vector
Это основные типы стандартной библиотеки VHDL, описанные в пакете std_logic_1164. В той же книжке они должны быть описаны.

Вкратце, std_logic -- это перечислимый тип, имеющий 9 состояний. Позволяет описывать не только логические уровни '0' и '1', но и третье (высокоимпедансное) состояние 'Z', конфликт сигналов 'X', неинициализированный сигнал 'U' и др. std_logic_vector -- это массив элементов std_logic.

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


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

//Andrey_B

//Имейте совесть и немного уважения к другим. Лично я не буду смотреть рисунок размером в 4 без малого мегабайта.

Хорошо, давайте вот так:

library IEEE;

use IEEE.std_logic_1164.all;

entity element001 is

port(DATA,CLK: in std_logic;

Q:out std_logic);

end element001;

architecture element001_ARCH of element001 is

begin

process (CLK)

begin

if CLK `event and CLK = `1` then

Q<=DATA;

end if;

end process;

end element001_ARCH;

 

Error (10500): VHDL syntax error at element001.vhd(12) near text `

Error (10500): VHDL syntax error at element001.vhd(12) near text "`"; expecting "then"

Error (10500): VHDL syntax error at element001.vhd(14) near text "if"; expecting "process"

 

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


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

if CLK `event and CLK = `1` then - это условие нарастающего фронта сигнала (т.е. ожидаем изменения сигнала CLK, после которого этот сигнал принимает значение логической единицы).

А по поводу ошибок - проверяйте синтаксис.

Еще рекомендую почитать "The VHDL Cookbook" Питера Ашендена - эта книжка валяется где-то в закромах.

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


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

if CLK `event and CLK = `1` then

 

if (clk'event and clk = '1') then

 

А по поводу языка. После AHDL Вам verilog в помощь.

VHDL - это язык преподавателей вузов. Они редко схемные решения описывают для реального железа.

Скачайте с сайта xilinx документ xst.pdf, там на примере графического примитива на обоих языках приведено текстовое описание

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


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

Извините, но скобки не совсем помогли, осталось две ошибки, кто знает в чем дело?

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


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

Извините, но скобки не совсем помогли, осталось две ошибки, кто знает в чем дело?

 

Вы скопировали мою строчку, или только скобки поставили.

Можно без скобок. исправив ошибку

'` это разные символы

 

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


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

Вы скопировали мою строчку, или только скобки поставили.

Можно без скобок. исправив ошибку

'` это разные символы

УРА!!! ЗАРРАБОТАЛО!! Большое спасибо.

А можете мне сказать, что эти кавычки вообще означают, почему там одна, а там две? в книжке этого нет.

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


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

УРА!!! ЗАРРАБОТАЛО!! Большое спасибо.

А можете мне сказать, что эти кавычки вообще означают, почему там одна, а там две? в книжке этого нет.

В какой книжке?

Апострофы используются для задания значения сигнала, а двойные кавычки - для задания значения вектора.

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


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

В какой книжке?

Апострофы используются для задания значения сигнала, а двойные кавычки - для задания значения вектора.

Извините за низкий интелект, теперь я окончательно запутался.

1. Вот это апостроф - `, или вот это тоже апостроф - '.

2. Вот такая запись if CLK ' event, почему нельзя записать типа CLK=event, или этот одиночный апостроф и имеет значения "=" в данном случае.

3. CLK = '1', почему значение сигнала, логическая еденица, взята в двойные апострофы, это такой синтаксис, все логические значения должны быть в апострофах.

4. Что такое значение вектора (если для меня это еще слишком рано, можете не отвечать).

Заранее Благодарю.

Изменено пользователем _Ie0nid

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


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

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

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

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

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

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

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

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

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

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