Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРМПП.doc
Скачиваний:
49
Добавлен:
07.02.2016
Размер:
8.14 Mб
Скачать

3 Структурное моделирование с помощью сапр aldec active-hdl

ЛАБОРАТОРНА РОБОТА № 3

Составим текст программы испытательного стенда на языке VHDL.

Файл TEST_74163.VHD - Программа испытательного стенда (test bench) ----------------------------------- -- TEST_74163.VHD - программа испытательного стенда (test bench) ----------------------------------- LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY SN74163_TB IS END SN74163_TB; ARCHITECTURE TB_ARCHITECTURE OF SN74163_TB IS COMPONENT SN74163 PORT( CLK : IN STD_LOGIC; CLR : IN STD_LOGIC; DATA_A : IN STD_LOGIC; DATA_B : IN STD_LOGIC; DATA_C : IN STD_LOGIC; DATA_D : IN STD_LOGIC; ENP : IN STD_LOGIC; ENT : IN STD_LOGIC; LOAD : IN STD_LOGIC; QA : OUT STD_LOGIC; QB : OUT STD_LOGIC; QC : OUT STD_LOGIC; QD : OUT STD_LOGIC; RCO : OUT STD_LOGIC ); END COMPONENT; SIGNAL CLK : STD_LOGIC; SIGNAL CLR : STD_LOGIC; SIGNAL DATA_A : STD_LOGIC; SIGNAL DATA_B : STD_LOGIC; SIGNAL DATA_C : STD_LOGIC; SIGNAL DATA_D : STD_LOGIC; SIGNAL ENP : STD_LOGIC; SIGNAL ENT : STD_LOGIC; SIGNAL LOAD : STD_LOGIC; SIGNAL QA : STD_LOGIC; SIGNAL QB : STD_LOGIC; SIGNAL QC : STD_LOGIC; SIGNAL QD : STD_LOGIC; SIGNAL RCO : STD_LOGIC; SIGNAL END_SIM: BOOLEAN:=FALSE; BEGIN UUT : SN74163 PORT MAP ( CLK => CLK, CLR => CLR, DATA_A => DATA_A, DATA_B => DATA_B, DATA_C => DATA_C, DATA_D => DATA_D, ENP => ENP, ENT => ENT, LOAD => LOAD, QA => QA, QB => QB, QC => QC, QD => QD, RCO => RCO ); STIMULUS: PROCESS BEGIN DATA_B <= '1'; DATA_C <= '0'; DATA_D <= '1'; CLR <= '0'; DATA_A <= '0'; LOAD <= '0'; ENP <= '0'; ENT <= '0'; WAIT FOR 100 NS; --0 FS CLR <= '1'; WAIT FOR 100 NS; --100 NS LOAD <= '1'; ENP <= '1'; ENT <= '1'; WAIT FOR 100 NS; --200 NS ENP <= '0'; WAIT FOR 100 NS; --300 NS ENP <= '1'; WAIT FOR 100 NS; --400 NS ENT <= '0'; WAIT FOR 100 NS; --500 NS ENT <= '1'; WAIT FOR 500 NS; --600 NS CLR <= '0'; WAIT FOR 100 NS; --1100 NS END_SIM <= TRUE; WAIT; END PROCESS; CLOCK_CLK : PROCESS BEGIN IF END_SIM = FALSE THEN CLK <= '0'; WAIT FOR 50 NS; --0 FS ELSE WAIT; END IF; IF END_SIM = FALSE THEN CLK <= '1'; WAIT FOR 50 NS; --50 NS ELSE WAIT; END IF; END PROCESS; END TB_ARCHITECTURE; CONFIGURATION TESTBENCH_FOR_SN74163 OF SN74163_TB IS FOR TB_ARCHITECTURE FOR UUT : SN74163 USE ENTITY WORK.SN74163(SN74163); END FOR; END FOR; END TESTBENCH_FOR_SN74163;

РИСУНОК 1- Логическая схема устройства

Выполним разметку логической схемы (РИС.1) и выделим на ней компоненты, требующие детального описания. В схеме используются внутренние сигналы: с, M0, M1, M2, DA, DB, DC,DD, M3A, M3B, M3C, M3D, R3B, R3C, R3D, R4B, R4C, R4D, R1, R2, XA, XD, XC, XD.

Список компонентов, для которых необходимо создать описание: MUX- схема 2Х2И-2ИЛИ (компоненті MA, MB, MC, MD);DFF- D-триггер с динамическим управлением задним фронтом (компоненты DFF_A, DFF_B, DFF_C, DFF_D);NOR5-логический элемент 5ИЛИ (компонент NOR).

РИСУНОК 2- Схема разметки логической схемы

Файл COMPONENTS.VHD- Описание компонентов структуры

-- D-тригер (DFF)

----------------------------------- library IEEE; use IEEE.STD_LOGIC_1164.all; entity dff is port( d : in STD_LOGIC; c : in STD_LOGIC; q : out STD_LOGIC; iq : out STD_LOGIC ); end dff; architecture dff of dff is signal data: std_logic:= '0'; begin process© begin if c'event and c='0' then data <= d; end if; end process; q<=data; iq<= not data; end dff;

-- логический элемент 5ИЛИ (NOR)

----------------------------------- library IEEE; use IEEE.STD_LOGIC_1164.all; entity nor5 is port( x1 : in STD_LOGIC; x2 : in STD_LOGIC; x3 : in STD_LOGIC; x4 : in STD_LOGIC; x5 : in STD_LOGIC; y : out STD_LOGIC ); end nor5; architecture nor5 of nor5 is begin y <= not (x1 or x2 or x3 or x4 or x5); end nor5;

-- схема 2Х2И-2ИЛИ (MUX)

----------------------------------- LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; ENTITY mux IS PORT( m1 : IN STD_LOGIC; m2 : IN STD_LOGIC; m3 : IN STD_LOGIC; m4 : IN STD_LOGIC; q : OUT STD_LOGIC ); END mux; ARCHITECTURE mux OF mux IS SIGNAL mux1 : STD_LOGIC; SIGNAL mux2 : STD_LOGIC; BEGIN mux1 <= m2 AND m1; mux2 <= m4 AND m3; q <= mux2 OR mux1; END mux;

В редакторе BDE осуществляем построение логической схемы счетчика. После компиляции документа получено эквивалентное описание на языке VHDL - файл SCHEME.VHD.

РИСУНОК 3- Блок-схема структуры устройства

Файл SCHEME.VHD - Описание структуры ------------------------------------------ library IEEE; use IEEE.std_logic_1164.all; entity SN74163 is port( clk : in STD_LOGIC; clr : in STD_LOGIC; data_a : in STD_LOGIC; data_b : in STD_LOGIC; data_c : in STD_LOGIC; data_d : in STD_LOGIC; enp : in STD_LOGIC; ent : in STD_LOGIC; load : in STD_LOGIC; qa : out STD_LOGIC; qb : out STD_LOGIC; qc : out STD_LOGIC; qd : out STD_LOGIC; rco : out STD_LOGIC ); end SN74163; architecture SN74163 of SN74163 is component dff port ( c : in STD_LOGIC; d : in STD_LOGIC; iq : out STD_LOGIC; q : out STD_LOGIC ); end component; component mux port ( m1 : in STD_LOGIC; m2 : in STD_LOGIC; m3 : in STD_LOGIC; m4 : in STD_LOGIC; q : out STD_LOGIC ); end component; component nor5 port ( x1 : in STD_LOGIC; x2 : in STD_LOGIC; x3 : in STD_LOGIC; x4 : in STD_LOGIC; x5 : in STD_LOGIC; y : out STD_LOGIC ); end component; signal c : STD_LOGIC; signal da : STD_LOGIC; signal db : STD_LOGIC; signal dc : STD_LOGIC; signal dd : STD_LOGIC; signal m1 : STD_LOGIC; signal m2 : STD_LOGIC; signal m3a : STD_LOGIC; signal m3b : STD_LOGIC; signal m3c : STD_LOGIC; signal m3d : STD_LOGIC; signal m0 : STD_LOGIC; signal r1 : STD_LOGIC; signal r2 : STD_LOGIC; signal r3b : STD_LOGIC; signal r3c : STD_LOGIC; signal r3d : STD_LOGIC; signal r4b : STD_LOGIC; signal r4c : STD_LOGIC; signal r4d : STD_LOGIC; signal xa : STD_LOGIC; signal xb : STD_LOGIC; signal xc : STD_LOGIC; signal xd : STD_LOGIC; begin U1 : mux port map( m1 => data_a, m2 => m1, m3 => m3a, m4 => m2, q => da ); m3a <= not(xa xor r1); m3b <= not(xb xor r3b); m3d <= not(xd xor r3d); m3c <= not(xc xor r3c); U14 : nor5 port map( x1 => xd, x2 => xc, x3 => xb, x4 => xa, x5 => r2, y => rco ); r2 <= not(ent); r3b <= r1 and r4b; r3c <= r1 and r4c; r3d <= r1 and r4d; r1 <= enp and ent; U2 : mux port map( m1 => data_b, m2 => m1, m3 => m2, m4 => m3b, q => db ); r4d <= not(xa or xb or xc); r4c <= not(xb or xa); r4b <= not(xa); U3 : mux port map( m1 => data_c, m2 => m1, m3 => m2, m4 => m3c, q => dc ); U4 : dff port map( c => c, d => dd, iq => xd, q => qd ); U5 : mux port map( m1 => m1, m2 => data_d, m3 => m2, m4 => m3d, q => dd ); c <= not(clk); m0 <= not(clr); m1 <= not(m0 or load); m2 <= not(m0 or m1); dff_a : dff port map( c => c, d => da, iq => xa, q => qa ); dff_b : dff port map( c => c, d => db, iq => xb, q => qb ); dff_c : dff port map( c => c, d => dc, iq => xc, q => qc ); end SN74163;

С помощью редактора временных диаграмм выполняем функциональное моделирование структуры устройства.

РИСУНОК 4- Временная диаграммаWAVE_STRUCTURAL.AWF. Результаты моделирования структуры.

Файл RUNTB_STRUCTURAL.DO - Командный файл моделирования структуры ----------------------------------- SetActiveLib -work comp -include "$DSN\src\COMPONENTS.VHD" comp -include "$DSN\src\SCHEME.VHD" comp -include "$DSN\src\TEST_74163.VHD" asim TESTBENCH_FOR_sn74163 wave wave -noreg clk wave -noreg clr wave -noreg data_a wave -noreg data_b wave -noreg data_c wave -noreg data_d wave -noreg enp wave -noreg ent wave -noreg load wave -noreg qa wave -noreg qb wave -noreg qc wave -noreg qd wave -noreg rco run 1200.00 ns

РИСУНОК 5- временная диаграмма изменения внутрених сигналов