Спец курс (Избранные главы VHDL)/Вспомним VHDL — различия между версиями
Vidokq (обсуждение | вклад) (→Слайд: Скрин каст) |
Vidokq (обсуждение | вклад) (→Слайд:Работа с редактором EMACS) |
||
(не показаны 25 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
+ | {{ИГСАПР_TOC}} | ||
<slideshow style="custis" headingmark="Слайд:" incmark=":step" scaled="true" > | <slideshow style="custis" headingmark="Слайд:" incmark=":step" scaled="true" > | ||
;title: '''Вспомнить все...''' | ;title: '''Вспомнить все...''' | ||
Строка 29: | Строка 30: | ||
[http://www.bsuir.by/vhdl/ Сайт БГУИР с материалами по VHDL] | [http://www.bsuir.by/vhdl/ Сайт БГУИР с материалами по VHDL] | ||
− | + | *[[File:Шпаргалка по VHDL.pdf]] | |
+ | *[[File:Шпаргалка по VHDL(типы данных).pdf]] | ||
[[Файл: Заставка_для_БГУИР.jpg]] | [[Файл: Заставка_для_БГУИР.jpg]] | ||
Строка 61: | Строка 63: | ||
trig_process: process (clk, rst) | trig_process: process (clk, rst) | ||
begin -- process trig_process | begin -- process trig_process | ||
− | if rst = '0' then | + | if rst = '0' then -- asynchronous reset (active low) |
data_out <= '0'; | data_out <= '0'; | ||
elsif clk'event and clk = '1' then -- rising clock edge | elsif clk'event and clk = '1' then -- rising clock edge | ||
Строка 68: | Строка 70: | ||
end process trig_process; | end process trig_process; | ||
</source> | </source> | ||
+ | |||
+ | |||
+ | |||
+ | {{Info| Далее подробнее}} | ||
|} | |} | ||
Строка 79: | Строка 85: | ||
=== Примеры кода на VHDL === | === Примеры кода на VHDL === | ||
+ | '''Логическое ИЛИ''' | ||
<slides split="-----" width="200"> | <slides split="-----" width="200"> | ||
Строка 93: | Строка 100: | ||
----- | ----- | ||
− | + | '''Схема посложнее''' | |
<source lang="vhdl"> | <source lang="vhdl"> | ||
entity add1 is | entity add1 is | ||
Строка 107: | Строка 114: | ||
----- | ----- | ||
− | + | '''Описание несколько схем в одном теле архитектуры''' | |
<source lang="vhdl"> | <source lang="vhdl"> | ||
entity add2 is | entity add2 is | ||
Строка 125: | Строка 132: | ||
----- | ----- | ||
− | + | '''Использование компонент для выполнения повторяющихся частей кода''' | |
<source lang="vhdl">entity mult_2 is | <source lang="vhdl">entity mult_2 is | ||
port (s1,s0,r1,r0 : in BIT; | port (s1,s0,r1,r0 : in BIT; | ||
Строка 149: | Строка 156: | ||
----- | ----- | ||
+ | '''Подключение различных компонент''' | ||
<source lang="vhdl"> | <source lang="vhdl"> | ||
entity adder_2 is | entity adder_2 is | ||
Строка 174: | Строка 182: | ||
----- | ----- | ||
+ | '''Иерархия в структуре проета''' | ||
<source lang="vhdl">entity vlsi_1 is | <source lang="vhdl">entity vlsi_1 is | ||
port (a2, a1, b2,b1,x:in BIT; | port (a2, a1, b2,b1,x:in BIT; | ||
Строка 207: | Строка 216: | ||
----- | ----- | ||
+ | '''Схема без иерархии''' | ||
<source lang="vhdl">entity YY is | <source lang="vhdl">entity YY is | ||
port (a2,a1,b2,b1, x : in BIT; | port (a2,a1,b2,b1, x : in BIT; | ||
Строка 222: | Строка 232: | ||
</source> | </source> | ||
----- | ----- | ||
+ | '''Паралельные операторы''' | ||
<source lang="vhdl">entity dd is | <source lang="vhdl">entity dd is | ||
port (x1,x2,x3,x4,x5,x6 : in BIT; | port (x1,x2,x3,x4,x5,x6 : in BIT; | ||
Строка 233: | Строка 244: | ||
end struct_1;</source> | end struct_1;</source> | ||
----- | ----- | ||
+ | '''Последовательные операторы''' | ||
<source lang="vhdl">entity vlsi_1 is | <source lang="vhdl">entity vlsi_1 is | ||
port (a, b : in integer range 0 to 3; | port (a, b : in integer range 0 to 3; | ||
Строка 254: | Строка 266: | ||
----- | ----- | ||
− | + | '''Использование функций''' | |
<source lang="vhdl">package multiplexer is | <source lang="vhdl">package multiplexer is | ||
procedure MX( | procedure MX( | ||
Строка 277: | Строка 289: | ||
</source> | </source> | ||
----- | ----- | ||
− | + | '''Несколько архитектур''' | |
− | + | ||
<source lang="vhdl">entity ANDOR is | <source lang="vhdl">entity ANDOR is | ||
port (x1, x2, x3 : in bit; | port (x1, x2, x3 : in bit; | ||
Строка 299: | Строка 310: | ||
----- | ----- | ||
'''Понятие сигнала''' | '''Понятие сигнала''' | ||
− | |||
<source lang="vhdl">entity ANDOR is | <source lang="vhdl">entity ANDOR is | ||
port( x1, x2, x3 : in bit; | port( x1, x2, x3 : in bit; | ||
Строка 315: | Строка 325: | ||
----- | ----- | ||
− | ''' | + | ''' Дельта-задержка ''' |
<source lang="vhdl">entity ANDOR is | <source lang="vhdl">entity ANDOR is | ||
Строка 332: | Строка 342: | ||
----- | ----- | ||
− | + | '''Последовательные операторы''' | |
− | + | ||
<source lang="vhdl"> entity VAR is | <source lang="vhdl"> entity VAR is | ||
end VAR; | end VAR; | ||
Строка 359: | Строка 368: | ||
</source> | </source> | ||
----- | ----- | ||
− | + | '''Тригер и логика''' | |
<source lang="vhdl">entity IFSTMT is | <source lang="vhdl">entity IFSTMT is | ||
port ( | port ( | ||
Строка 389: | Строка 398: | ||
</source> | </source> | ||
----- | ----- | ||
− | + | ''' Параллельные операторы''' | |
<source lang="vhdl"> entity call_parallel is | <source lang="vhdl"> entity call_parallel is | ||
Строка 409: | Строка 418: | ||
----- | ----- | ||
− | + | '''оператор when else''' | |
<source lang="vhdl">entity example_condition is | <source lang="vhdl">entity example_condition is | ||
port ( | port ( | ||
Строка 441: | Строка 450: | ||
end second;</source> | end second;</source> | ||
----- | ----- | ||
− | + | '''оператор with vs case''' | |
<source lang="vhdl">entity example_selection is | <source lang="vhdl">entity example_selection is | ||
port ( x1, x2, x3, x4 : in bit; | port ( x1, x2, x3, x4 : in bit; | ||
Строка 471: | Строка 480: | ||
</source> | </source> | ||
----- | ----- | ||
− | + | '''Тригер со сбросом''' | |
<source lang="vhdl">entity DFF is | <source lang="vhdl">entity DFF is | ||
port ( | port ( | ||
Строка 490: | Строка 499: | ||
----- | ----- | ||
− | + | '''Сдвиговый регистр на тригерах (структурное описание)''' | |
<source lang="vhdl"> entity SHIFT is | <source lang="vhdl"> entity SHIFT is | ||
port ( | port ( | ||
Строка 523: | Строка 532: | ||
----- | ----- | ||
− | + | '''Сумматор на N-разрядов''' | |
<source lang="vhdl">entity adder_N_comp is | <source lang="vhdl">entity adder_N_comp is | ||
port (a, b : in bit_vector (0 to 6); | port (a, b : in bit_vector (0 to 6); | ||
Строка 540: | Строка 549: | ||
signal c_in : bit_vector (0 to 5); | signal c_in : bit_vector (0 to 5); | ||
begin | begin | ||
− | p0: add1 | + | p0: add1 port map (b1 => a(0), b2 => b(0), c1 => c_in(0), s1 => s(0)); |
− | port map (b1 => a(0), b2 => b(0), c1 => c_in(0), s1 => s(0)); | + | p1: add2 port map (c1=>c_in(0), a1=>a(1), a2=>b(1), c2=>c_in(1), s2=>s(1)); |
− | p1: add2 | + | p2: add2 port map (c1=>c_in(1), a1=>a(2), a2=>b(2), c2=>c_in(2), s2=>s(2)); |
− | port map (c1=>c_in(0), a1=>a(1), a2=>b(1), c2=>c_in(1), s2=>s(1)); | + | p3: add2 port map (c1=>c_in(2), a1=>a(3), a2=>b(3), c2=>c_in(3), s2=>s(3)); |
− | p2: add2 | + | p4: add2 port map (c1=>c_in(3), a1=>a(4), a2=>b(4), c2=>c_in(4), s2=>s(4)); |
− | port map (c1=>c_in(1), a1=>a(2), a2=>b(2), c2=>c_in(2), s2=>s(2)); | + | p5: add2 port map (c1=>c_in(4), a1=>a(5), a2=>b(5), c2=>c_in(5), s2=>s(5)); |
− | p3: add2 | + | p6: add2 port map (c1=>c_in(5), a1=>a(6), a2=>b(6), c2=>c, s2=>s(6)); |
− | port map (c1=>c_in(2), a1=>a(3), a2=>b(3), c2=>c_in(3), s2=>s(3)); | + | |
− | p4: add2 | + | |
− | port map (c1=>c_in(3), a1=>a(4), a2=>b(4), c2=>c_in(4), s2=>s(4)); | + | |
− | p5: add2 | + | |
− | port map (c1=>c_in(4), a1=>a(5), a2=>b(5), c2=>c_in(5), s2=>s(5)); | + | |
− | p6: add2 | + | |
− | port map (c1=>c_in(5), a1=>a(6), a2=>b(6), c2=>c, s2=>s(6)); | + | |
end structural;</source> | end structural;</source> | ||
----- | ----- | ||
− | + | '''Оператор generate''' | |
<source lang="vhdl"> entity SHIFT is | <source lang="vhdl"> entity SHIFT is | ||
port ( | port ( | ||
Строка 593: | Строка 595: | ||
{{Гол|'''''Слово «Emacs» берет начало в аббревиатуре «Editor MACroS», наборе макросов для редактора TECO, написанном Столлманом и другими в 1976 году'''''}} | {{Гол|'''''Слово «Emacs» берет начало в аббревиатуре «Editor MACroS», наборе макросов для редактора TECO, написанном Столлманом и другими в 1976 году'''''}} | ||
+ | |||
+ | <s>[http://simhard.com/ftp/files/emacs-22.3-bin-i386.zip Скачать emacs emacs-22.3-bin-i386.zip]</s> или [https://ftp.gnu.org/gnu/emacs/windows/emacs-24.3-bin-i386.zip emacs-24.3-bin-i386.zip] | ||
+ | |||
+ | Для запуска распакуйте zip архив и запустите | ||
+ | |||
+ | .\emacs-23.1-bin-i386\emacs-23.1\bin\runemacs.exe | ||
+ | |||
+ | <!-- [http://vidokq.byethost7.com/mediawiki4intranet/video/emacs_totorial.wmv Небольшая демонстрация возможностей emacs(видео)]--> | ||
===Слайд: Первый запуск === | ===Слайд: Первый запуск === | ||
Команда для запуска | Команда для запуска | ||
Строка 724: | Строка 734: | ||
<slides split="-----" width="500"> | <slides split="-----" width="500"> | ||
− | [[Файл:Questa_adms_ex.jpg | + | [[Файл:Questa_adms_ex.jpg|Окно программы QuestaSim]] |
</slides> | </slides> | ||
Строка 740: | Строка 750: | ||
* Запуск исполнения и просмотр результата | * Запуск исполнения и просмотр результата | ||
** {{Сн|'''<big>run</big>'''}} | ** {{Сн|'''<big>run</big>'''}} | ||
+ | |||
===Слайд: Скрин каст=== | ===Слайд: Скрин каст=== | ||
− | [[File:Скрин_каст_по_работе_с_QuestaSim.flv]] | + | <!-- *[[File:Скрин_каст_по_работе_с_QuestaSim.flv]]--> |
+ | *[[File:Руководство_по_работе_с_QuestaSim.pdf]] | ||
+ | *[[File:Основные команды QuestaSim.pdf]] | ||
+ | |||
+ | ===Слайд: Основные приемы работы === | ||
+ | <slides split="-----" width="400" > | ||
+ | |||
+ | ''{{Ор|<big>'''Главное окно'''</big>}}'' | ||
+ | |||
+ | [[Файл:Окно_моделсим_10_се.jpg]] | ||
+ | ----- | ||
+ | ''{{Ор|<big>'''Выбор рабочей дирретории '''</big>}}'' | ||
+ | |||
+ | '''"File > Change Directory"''' | ||
+ | |||
+ | [[Файл:Окно_рабочая_дирректория_для_моделсима.jpg]] | ||
+ | ----- | ||
+ | ''{{Ор|<big>'''Создание библиотеки или выбор рабочей'''</big>}}'' | ||
+ | |||
+ | '''"File > New > Library"''' | ||
+ | |||
+ | [[Файл:Окно_создания_бибилиотеки.jpg]] | ||
+ | ----- | ||
+ | ''{{Ор|<big>'''Компиляция проекта'''</big>}}'' | ||
+ | |||
+ | '''"Compile > Compile"''' | ||
+ | |||
+ | [[Файл:Окно_компиляции_проекта.jpg]] | ||
+ | ----- | ||
+ | ''{{Ор|<big>'''Загрузка тестового окружения и запуск моделирования'''</big>}}'' | ||
+ | |||
+ | '''"Simulate > Start Simulation"''' | ||
+ | |||
+ | [[Файл:Запуск_тест_бенча.jpg]] | ||
+ | ----- | ||
+ | ''{{Ор|<big>'''Добавление сигналов для отрисовки и наблюдения'''</big>}}'' | ||
+ | |||
+ | '''"Add > To Wave > ..."''' | ||
+ | |||
+ | [[Файл:Окно_добавления_сигналов_для_отрисовки.jpg]] | ||
+ | ----- | ||
+ | ''{{Ор|<big>'''Запуск моделирования'''</big>}}'' | ||
+ | |||
+ | '''"Simulate > Run > Run..."''' | ||
+ | |||
+ | [[Файл:Окно_моделирования_работа_с_сигнали_выделение.jpg]] | ||
+ | |||
+ | ----- | ||
+ | ''{{Ор|<big>'''Перезапуск моделирования'''</big>}}'' | ||
+ | |||
+ | '''"Simulate > Run > Restart "''' | ||
+ | |||
+ | [[Файл:Окно_перезапуска_моделирвоания.jpg]] | ||
+ | |||
+ | ----- | ||
+ | ''{{Ор|<big>'''Работа с окном отображения сигналов'''</big>}}'' | ||
+ | |||
+ | [[Файл:Работа_с_окном_моделирвоания.jpg]] | ||
+ | ----- | ||
+ | ''{{Ор|<big>'''Разные фичи в окне моделирования'''</big>}}'' | ||
+ | |||
+ | [[Файл:Разные_фичи_в_окне_моделирования.jpg]] | ||
+ | |||
+ | </slides> | ||
+ | [[Категория:Лекции]] |
Текущая версия на 00:27, 29 сентября 2015
|
- Тест 1 по RFID системам
- Тест 2 по основам языка VHDL (начальный уровень)
- Тест 3 по языку VHDL (экспертный уровень)
- Тест 4 Среда моделирования
- Тест 5 Верификация VHDL-описания
- Тест 6 Основы языка SystemC
- Заголовок
- Вспомнить все...
- Автор
- Зайцев В.С.
- Нижний колонтитул
- Спец курс (Избранные главы 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
Слайд: When Else
t1 <= not t1 when clk'event and clk = '1' else t1;
Данная запись является компактным описанием счетного триггера, но она не соответствует стандарту синтезируемого подмножества. Поэтому не все системы синтеза её поддерживают. Например, Leonardo Spectrum синтезирует данную конструкцию, а в ранних версиях Synopsys`а эта запись не поддерживалась.
Примеры кода на VHDL
Логическое ИЛИ
Слайд:Работа с редактором EMACS
Emacs (Ема́кс, Е́макс, также И́макс) — семейство многофункциональных расширяемых текстовых редакторов.
Слово «Emacs» берет начало в аббревиатуре «Editor MACroS», наборе макросов для редактора TECO, написанном Столлманом и другими в 1976 году
Скачать emacs emacs-22.3-bin-i386.zip или emacs-24.3-bin-i386.zip
Для запуска распакуйте zip архив и запустите
.\emacs-23.1-bin-i386\emacs-23.1\bin\runemacs.exe
Слайд: Первый запуск
Команда для запуска
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