tb.vhd для опису симуляції проекту, вибравши тип файлу VHDL TestBench в меню NewSource. У файлі cicuit_tb.vhd схема проекту cicuit.vhd представлена ??у вигляді компонента. У процесі stim_proc задаються вхідні дії для X1, X2, X3, X4 згідно з таблицею 2. Значення вхідних портів змінюються через інтервал часу time_const, який потрібно вибирати так, щоб схема встигала реагувати на зміни вхідних даних.
Малюнок 14. Створення файлу симуляції проекту circuit_tb
Файл опису симуляції схеми проекту cicuit_tb.vhd:
USE ieee.std_logic_1164.ALL;
circuit_tb IScircuit_tb;
behavior OF circuit_tb IS
circuit (: IN std_logic ;: IN std_logic ;: IN std_logic ;: IN std_logic ;: INOUT std_logic ;: INOUT std_logic ;: INOUT std_logic ;: OUT std_logic ;: OUT std_logic
); COMPONENT;
InputsX1: std_logic:= 0 raquo ;; X2: std_logic:= 0 raquo ;; X3: std_logic:= 0 raquo ;; X4: std_logic:= 0 raquo ;;
BiDirsY4: std_logic; Y1: std_logic; Y3: std_logic;
OutputsY2: std_logic; Y5: std_logic;
time_const: time:=20 ns;
: circuit PORT MAP (= gt; X1,= gt; X2,= gt; X3,= gt; X4,= gt; Y4,= gt; Y1,= gt; Y3,= gt ; Y2,= gt; Y5
);
Stimulus process_proc: process
hold reset state for 10 ns.for 10 ns; lt;= 0 raquo ;; X2 lt;= 0 raquo ;; X3 lt;= 0 raquo ;; X4 lt;= 0 raquo ;; for time_const; lt;= 0 raquo ;; X2 lt;= 0 raquo ;; X3 lt;= 0 raquo ;; X4 lt;= 1 raquo ;; for time_const; lt;= 0 raquo ;; X2 lt;= 0 raquo ;; X3 lt;= 1 raquo ;; X4 lt;= 0 raquo ;; for time_const; lt;= 0 raquo ;; X2 lt;= 0 raquo ;; X3 lt;= 1 raquo ;; X4 lt;= 1 raquo ;; for time_const; lt;= 0 raquo ;; X2 lt;= 1 raquo ;; X3 lt;= 0 raquo ;; X4 lt;= 0 raquo ;; for time_const; lt;= 0 raquo ;; X2 lt;= 1 raquo ;; X3 lt;= 0 raquo ;; X4 lt;= 1 raquo ;; for time_const; lt;= 0 raquo ;; X2 lt;= 1 raquo ;; X3 lt;= 1 raquo ;; X4 lt;= 0 raquo ;; for time_const; lt;= 0 raquo ;; X2 lt;= 1 raquo ;; X3 lt;= 1 raquo ;; X4 lt;= 1 raquo ;; for time_const; lt;= 1 raquo ;; X2 lt;= 0 raquo ;; X3 lt;= 0 raquo ;; X4 lt;= 0 raquo ;; for time_const; lt;= 1 raquo ;; X2 lt;= 0 raquo ;; X3 lt;= 0 raquo ;; X4 lt;= 1 raquo ;; for time_const; lt;= 1 raquo ;; X2 lt;= 0 raquo ;; X3 lt;= 1 raquo ;; X4 lt;= 0 raquo ;; for time_const; lt;= 1 raquo ;; X2 lt;= 0 raquo ;; X3 lt;= 1 raquo ;; X4 lt;= 1 raquo ;; for time_const; lt;= 1 raquo ;; X2 lt;= 1 raquo ;; X3 lt;= 0 raquo ;; X4 lt;= 0 raquo ;; for time_const; lt;= 1 raquo ;; X2 lt;= 1 raquo ;; X3 lt;= 0 raquo ;; X4 lt;= 1 raquo ;; for time_const; lt;= 1 raquo ;; X2 lt;= 1 raquo ;; X3 lt;= 1 raquo ;; X4 lt;= 0 raquo ;; for time_const; lt;= 1 raquo ;; X2 lt;= 1 raquo ;; X3 lt;= 1 raquo ;; X4 lt;= 1 raquo ;;; process ;;
Для запуску процесу симуляції необхідно у вкладці Design, при зазначеному Simulation, виділити файл опису симуляції проекту cicuit_tb.vhd, а потім у вкладці Process запустити Simulate Behavioral Model.
Малюнок 15. Запуск симуляції проекту
Для перевірки правильності опису схеми слід порівняти тимчасову діаграму і значення таблиці 2. При перевірці потрібно враховувати вплив на проходження сигналу тимчасових затримок компонентів схеми.
Тимчасова діаграма для розглянутої схеми має вигляд:
Малюнок 16. Тимчасова діаграма роботи схеми
При перевірці видно, що робота схеми відповідає завданню.
Для верифікації також слід порівняти задану структурну схему з RTL уявлення синтезованої схеми. Для цього треба у вкладці Desigin, при обраному Implementation, виділити модуль верхнього рівня (circuit.vhd), а в закладці Process вибрати пункт View RTL Schematic:
Малюнок 17. Запуск RTL уявлення синтезованої схеми
Далі в діалозі вибрати пункт «Start with a schematic of the top-level block».
З RTL схеми видно, що синтезована схема відповідає вихідної.
Список літератури
1) Зотов В.Ю. Проектування цифрових пристроїв на основі ПЛІС фірми XILINX в САПР WebPACK ISE.- М .: Гаряча лінія-Телеком, 2003. - 624 с.
2) Бібіло П.Н. Основи мови VHDL: вид третій, доп.- М: Издательство ЛКИ, 2007 - 328 с.