Спец курс (Избранные главы VHDL)/Вспомним VHDL — различия между версиями
Материал из Wiki
Vidokq (обсуждение | вклад) (→Слайд: When Else) |
ANA (обсуждение | вклад) м (→Примеры кода на VHDL) |
||
Строка 76: | Строка 76: | ||
<slides split="-----" width="200"> | <slides split="-----" width="200"> | ||
− | <source lang="vhdl">entity and2 is -- декларация имени объекта проекта | + | <source lang="vhdl"> |
− | port (x1,x2: in BIT; -- декларация входных портов | + | entity and2 is -- декларация имени объекта проекта |
− | + | port (x1,x2: in BIT; -- декларация входных портов | |
+ | y: out BIT); -- декларация выходного порта | ||
end and2; | end and2; | ||
+ | |||
architecture functional of and2 is -- декларация архитектуры | architecture functional of and2 is -- декларация архитектуры | ||
begin | begin | ||
− | + | y <= x1 and x2; -- описание функции объекта | |
end functional;</source> | end functional;</source> | ||
+ | |||
----- | ----- | ||
− | <source lang="vhdl">entity add1 is | + | <source lang="vhdl"> |
− | port (b1,b2 : in BIT; | + | entity add1 is |
− | + | port (b1,b2 : in BIT; | |
+ | c1,s1 : out BIT); | ||
end add1; | end add1; | ||
architecture struct_1 of add1 is | architecture struct_1 of add1 is | ||
begin | begin | ||
− | s1<= ((b1 and (not b2)) or ((not b1) and b2)); | + | s1 <= ((b1 and (not b2)) or ((not b1) and b2)); |
− | c1<= b1 and b2; | + | c1 <= b1 and b2; |
end struct_1;</source> | end struct_1;</source> | ||
----- | ----- | ||
− | <source lang="vhdl">entity add2 is | + | <source lang="vhdl"> |
− | port (c1,a1, a2: in BIT; | + | entity add2 is |
− | + | port (c1, a1, a2 : in BIT; | |
+ | c2, s2 : out BIT); | ||
end add2; | end add2; | ||
architecture struct_1 of add2 is | architecture struct_1 of add2 is | ||
begin | begin | ||
− | s2 <= ((not c1) and (not a1) and a2) or | + | s2 <= ((not c1) and (not a1) and a2) or |
− | + | ((not c1) and a1 and (not a2)) or | |
− | + | ( c1 and (not a1)and (not a2) ) or | |
− | + | (a1 and a2 and c1); | |
− | c2 <= (a1 and c1) or (a2 and c1) or (a1 and a2); | + | c2 <= (a1 and c1) or (a2 and c1) or (a1 and a2); |
− | end struct_1;</source> | + | end struct_1; |
+ | </source> | ||
----- | ----- |
Версия 22:54, 18 сентября 2012
- Заголовок
- Вспомнить все...
- Автор
- Зайцев В.С.
- Нижний колонтитул
- Спец курс (Избранные главы VHDL)/Вспомним VHDL
- Дополнительный нижний колонтитул
- Зайцев В.С., 00:27, 29 сентября 2015
Содержание |
Total Recall
Слайд:Языки описания аппаратуры
- С начала 70-х годов стала актуальна проблема создания стандартного средства документации схем и алгоритмов дискретных систем переработки информации, пригодных как для восприятия человеком, так и для обработки в ЭВМ.
- Этим средством явились языки VHDL и Verilog
- Стандартность (лучше плохой, чем никакого)
- Многоаспектность и многоуровневость
- Схемы
- Тестовые окружения
- Диапазон детализации
- Человеко-машинность
- Язык описания
- Средство документирования
- Было много предшественников
- «МОДИС », «Автокод», «Модис-В78», «MPL», «OCC-2», «Форос», «Алгоритмы», «Пульс», «Симпатия»
- CDL, DDL, ISPS, CONLAN, HILO
VHDL ссылки и литература
Все примеры взяты с сайта БГУИР
Сайт БГУИР с материалами по VHDL
Слайд: Entity
library ieee; use ieee.std_logic_1164.all; entity xc is port ( clk : in std_logic; d : out std_logic); end xc;
Слайд: Architecture
architecture beh of trig is begin -- beh end beh;
Слайд: Process
trig_process: process (clk, rst) begin -- process trig_process if rst = '0' then -- asynchronous reset (active low) data_out <= '0'; elsif clk'event and clk = '1' then -- rising clock edge data_out <= data_in; end if; end process trig_process;
Слайд: When Else
t1 <= not t1 when clk'event and clk = '1' else t1;
Данная запись является компактным описанием счетного триггера, но она не соответствует стандарту синтезируемого подмножества. Поэтому не все системы синтеза её поддерживают. Например, Leonardo Spectrum синтезирует данную конструкцию, а в ранних версиях Synopsys`а эта запись не поддерживалась.
Примеры кода на VHDL
Слайд:Работа с редактором EMACS
Emacs (Ема́кс, Е́макс, также И́макс) — семейство многофункциональных расширяемых текстовых редакторов.
Слайд: Первый запуск
Команда для запуска
emacs
Слайд: Горячие клавиши
Слайд: Возможности :step
- Знает и подскажет базовые конструкции
- Подсветка синтаксиса
- Анализ существующего кода и добавление уже написанных "слов"
- Автоматическая генерация кода простейшего тестового окружения
- Добавление декларации component
- Добавление декларации instance
- Добавление декларации signal
- Возможность работы с консолью
- Возможность работы с с несколькими окнами одновременно
- И многое, многое другое полезное.
Слайд: Работа с системой моделирования QuestaSim от Mentor Graphics :step
- Где моделировать?
- QuestaSIM
- Язык VHDL, Verilog, SystemC, SystemVerilog
- Смешанное моделирование (все что выше + Spice)
- Автоматизация (поддерживаются скрипты TCL)
- Работа по сети (JobSpy сервер)
- Мощнейший инструмент верификации
- Покрытие кода
- Покрытие переходов
- Проверка значений
- Поддержка пакетов и стандарта верификации OVM
- Пакет моделирования подключается и в MentorGraphics и в Cadence
Слайд: Запуск QuestaSim
Так выглядит окно прогрмаммы QuestaSim
Слайд: Команды QuestaSim :step
- Запуск
- vsim
- Создание библиотеки
- vlib
- Компиляция кода
- vcom
- Запуск моделирования
- vsim name_run_project
- Добавление сигналов
- add wave
- Запуск исполнения и просмотр результата
- run