БАЛАШ_ПОЛ_работа с ACT_HDL (1274895), страница 2
Текст из файла (страница 2)
Для продолжения работы над проектом необходимо нажать иконку HDE, выбрать в появившемся окне язык VHDL и, нажав ОК, перейти к окну
Рис. 1.4. Окно Мастера процесса проектирования (Design Flow Manager )
Мастера Новых Исходных Файлов (New Source File Wizard). Мастер позволяет создать шаблон VHDL описания цифрового устройства с указанием его портов и подключенных библиотек.
Создадим в качестве примера VHDL описание D — триггера (D — Flipflop(DFF)) с синхронизацией по переднему фронту синхроимпульса (Rising Edge Flipflop)
С игнал на выходе Q D-триггера соответствует сигналу на входе D в момент появления переднего фронта синхроимпульса С и появляется на выходе Q с задержкой, например в 5 нс. Сигнал на инверсном выходе Q также появляется с задержкой 5 нс.
Н ажав кнопку Далее (Next) на первом окне Мастера Новых Исходных Файлов (рис. 1.5 а), переходим к следующему окну Мастера (рис. 1.5 б), в окошках которого необходимо набрать имя файла VHDL описания (пусть это имя REDFF_1.vhd), имя устройства (entity) (пусть это REDFF_1) и имя архитектуры устройства(пусть это REDFF_behavior_1).
а б
Рис. 1.5. Окна Мастера нового исходного файла (New Source File Wizard):
а – первое окно; б – второе окно
Очередное нажатие кнопки Далее (Next) приводит к окну (рис. 1.6 а) , в котором задаются порты (ports) устройства.
а б
Рис. 1.6. Окна Мастера нового исходного файла – Порты (New Source File Wizard - Ports): а – первое окно; б – второе окно
Далее необходимо нажать кнопку New и в следующем окне (рис. 1.6 б) по очереди ввести имена, указать направления сигналов (входные - in, выходные - out, …) и типы портов (кнопка Type). Выбираем тип сигналов STD_LOGIC .
После нажатия кнопки Готово (OK) в окне Редактора HDL получим шаблон VHDL описания D-триггера в файле с именем REDFF_1.vhd.
library IEEE;
use IEEE.STD_LOGIC_1164.all; -- подключение пакета
entity REDFF_1 is -- имя устройства REDFF_1
port( -- далее следует список портов
D : in STD_LOGIC; -- D-триггера
C : in STD_LOGIC;
Q : out STD_LOGIC; - - Q соответствует прямому
- - выходу Q D-триггера
Qbar : out STD_LOGIC -- Qbar соответствует инверс-
); -- ному выходу Q D-триггера
end REDFF_1;
architecture REDFF_behavior_1 of REDFF_1 is
begin
-- это поле для описания
-- enter your statements here -- -- архитектуры D-триггера
end REDFF_behavior_1;
Дополним шаблон файла VHDL в окне Редактора HDL содержательным описанием архитектуры D-триггера. Приведем поведенческое описание работы D-триггера с использованием параллельного оператора process языка VHDL.
architecture REDFF_behavior_1 of REDFF_1 is -- описание
-- архитектуры REDFF_behavior_1 устройства REDFF_1
begin
process (C) begin
if (C'event and C = '1') then -- выделение переднего фронта
-- сигнала С
Q <= D after 5 ns; --назначение сигнала Q с задержкой 5 нс
Qbar <= not(D) after 5 ns; -- назначение сигнала Qbar с
end if; -- задержкой 5 нс
end process;
end REDFF_behavior_1;
Редактор HDL упрощает составление описания, позволяя:
-
автоматически завершать ключевые слова (например, Entity),
-
автоматически переносить шаблон оператора в окно Редактора HDL из Помощника по языку (Language Assistant). Для этого после ввода имени шаблона необходимо нажать Ctr+Enter.
Правильность VHDL описания проверяется в процессе его компиляции (compile). Для этого необходимо выбрать выпадающее меню Design, а затем пункт Compile (или нажать F11). Если ошибок нет, то в нижнем окне консоли (Console) системы Active-HDL появится сообщение – компиляция прошла успешно.
# Compile success 0 Errors 0 Warnings Analysis time : 1.0 [s]
П
ри наличии ошибок в этом окне появится надпись красного цвета, поясняющая характер и место ошибки (номер строки). Одновременно в окне Просмотр каталогов проекта (Design Browser) перед именем файла появляются различные значки ( ? – файл не транслирован, - файл не содержит ошибок, ! – файл содержит ошибки ).
После исправления ошибок компиляцию необходимо повторить и затем сохранить файл проекта (File → Save).
1.2. Испытательный стенд (VHDL Test Bench)
Испытательный Стенд (Test Bench) – специальная программа на VHDL, образующая верхний иерархический уровень модели. Эта программа задает необходимую для проверки проектируемого устройства последовательность сигналов и подключает графическое окно просмотрщика временных диаграмм выходных сигналов (Waveform Viewer).
К созданию испытательного стенда необходимо приступать после написания и успешной компиляции текста VHDL описания цифрового устройства. Создавать тест в студенческой версии актив-hdl приходится вручную
Для этого создайте пустой файл
(FILE - New- VHDL source
Последовательно нажимая кнопку далее пройдите все фазы создания проекта
На экране редактора текстов появится пустое поле.
Средствами текстового редактора WORDPAD
Скопируйте описание entity D-триггера
И вставьте его в текст 4 раза
Получится текст
library IEEE;
use IEEE.STD_LOGIC_1164.all; -- подключение пакета
entity REDFF_1 is -- имя устройства REDFF_1
port( -- далее следует список портов
D : in STD_LOGIC; -- D-триггера
C : in STD_LOGIC;
Q : out STD_LOGIC; - - Q соответствует прямому
- - выходу Q D-триггера
Qbar : out STD_LOGIC -- Qbar соответствует инверс-
); -- ному выходу Q D-триггера
end REDFF_1;
library IEEE;
use IEEE.STD_LOGIC_1164.all; -- подключение пакета
entity REDFF_1 is -- имя устройства REDFF_1
port( -- далее следует список портов
D : in STD_LOGIC; -- D-триггера
C : in STD_LOGIC;
Q : out STD_LOGIC; - - Q соответствует прямому
- - выходу Q D-триггера
Qbar : out STD_LOGIC -- Qbar соответствует инверс-
); -- ному выходу Q D-триггера
end REDFF_1;
library IEEE;
use IEEE.STD_LOGIC_1164.all; -- подключение пакета
entity REDFF_1 is -- имя устройства REDFF_1
port( -- далее следует список портов
D : in STD_LOGIC; -- D-триггера
C : in STD_LOGIC;
Q : out STD_LOGIC; - - Q соответствует прямому
- - выходу Q D-триггера
Qbar : out STD_LOGIC -- Qbar соответствует инверс-
); -- ному выходу Q D-триггера
end REDFF_1;
library IEEE;
use IEEE.STD_LOGIC_1164.all; -- подключение пакета
entity REDFF_1 is -- имя устройства REDFF_1
port( -- далее следует список портов
D : in STD_LOGIC; -- D-триггера
C : in STD_LOGIC;
Q : out STD_LOGIC; - - Q соответствует прямому
- - выходу Q D-триггера
Qbar : out STD_LOGIC -- Qbar соответствует инверс-
); -- ному выходу Q D-триггера
end REDFF_1;
Начинайте редактировать этот текст
1.в первой копии добавьте к имени REDFF_1 суффикс TB
и уберите текст после IS до end и после end добавите к имени
суффикс TB
получится
library IEEE;
use IEEE.STD_LOGIC_1164.all; -- подключение пакета
entity REDFF_1_TB is -- имя теста REDFF_1_TB
end REDFF_1_TB;
2.из второй копии
сделайте описание архитектуры теста и список его сигналов из списка портов – добавив слово signal к имени порта и убрав направление порта
в конце убрав end-
получится продолжение
library IEEE;
use IEEE.STD_LOGIC_1164.all; -- подключение пакета
architecture BEH of REDFF_1_TB is 1
-- далее следует список сигналов
signal D : STD_LOGIC;
signal C : STD_LOGIC;
signal Q : STD_LOGIC; - - Q соответствует прямому
- - выходу Q D-триггера
signal Qbar : STD_LOGIC; --
3.из третьей копии сделайте описание компонента заменив entity
на component , убрав IS и добавив после end component
component REDFF_1 -- имя компонента REDFF_1
port( -- далее следует список портов
D : in STD_LOGIC; -- D-триггера
C : in STD_LOGIC;
Q : out STD_LOGIC; - - Q соответствует прямому
- - выходу Q D-триггера
Qbar : out STD_LOGIC -- Qbar соответствует инверс-
); -- ному выходу Q D-триггера
end component REDFF_1;
4.из четвертой копии сделайте конкретизацию компонента,
Вставив Begin, добавив имя конкретизации UUT и список имен портов
Получится
Begin
UUT: REDFF_1 -- имя компонента REDFF_1
Port map( D ,C,Q,Qbar ); ---
End;-- test
Cохранив файл под именем допустим REDFF_1 _TB
Мы получим такое же описание теста как в примере автоматического его построения, приведенном ниже.
Если же генерацию входных сигналов в тесте осуществлять
Средствами VHDL то перед End; надо описать процессы ,генерирующие нужные входные наборы.
Например
CLK : Process begin
C<=’0’;wait for 10 ns;
C<=’1’;wait for 10 ns;
End process;
Din :Process begin