component code_AND2 Port (a: in STD_LOGIC;
b: in STD_LOGIC; res: out STD_LOGIC);
end component ;
component code_OR2
Port (a: in STD_LOGIC;
b:in STD_LOGIC;
c:out STD_LOGIC); end component ;
component my_XOR3
Port (a: in STD_LOGIC;
b:in STD_LOGIC;
c:in STD_LOGIC; res: out STD_LOGIC);
end component ;
signal x1: STD_LOGIC; signal x2: STD_LOGIC;
begin
c1: code_AND2 port map(
a => x, b => y,
res => x1); c2: code_OR2 port map(
a => y, b => z,
res => x2);
c3: my_XOR3 port map(
a => x1, b => x2,
66
c => c,
res => res);
end Behavioral;
Код тестовой оболочки на языке VHDL:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY test_lab2 IS
END test_lab2;
ARCHITECTURE behavior OF test_lab2 IS
COMPONENT code_lab2
PORT(x: IN std_logic; y: IN std_logic; z: IN std_logic; c: IN std_logic; res: OUT std_logic);
END COMPONENT;
signal x: std_logic := '0'; signal y: std_logic := '0'; signal z: std_logic := '0'; signal c: std_logic := '0';
signal res : std_logic;
constant clock_period : time := 10 ns;
BEGIN
uut: code_lab2 PORT MAP ( x => x, y => y, z => z, c => c, res => res);
stim_proc: process begin
x <= '0'; y <= '0'; z <= '0'; c <= '0'; wait for 20 ns;
67
x <= '0'; y <= '0'; z <= '0'; c <= '1'; wait for 20 ns; x <= '0'; y <= '0'; z <= '1'; c <= '0'; wait for 20 ns; x <= '0'; y <= '0'; z <= '1'; c <= '1'; wait for 20 ns; x <= '0'; y <= '1'; z <= '0'; c <= '0'; wait for 20 ns; x <= '0'; y <= '1'; z <= '0'; c <= '1'; wait for 20 ns; x <= '0'; y <= '1'; z <= '1'; c <= '0'; wait for 20 ns; x <= '0'; y <= '1'; z <= '1'; c <= '1'; wait for 20 ns; x <= '1'; y <= '0'; z <= '0'; c <= '0'; wait for 20 ns; x <= '1'; y <= '0'; z <= '0'; c <= '1'; wait for 20 ns; x <= '1'; y <= '0'; z <= '1'; c <= '0'; wait for 20 ns; x <= '1'; y <= '0'; z <= '1'; c <= '1'; wait for 20 ns; x <= '1'; y <= '1'; z <= '0'; c <= '0'; wait for 20 ns; x <= '1'; y <= '1'; z <= '0'; c <= '1'; wait for 20 ns; x <= '1'; y <= '1'; z <= '1'; c <= '0'; wait for 20 ns; x <= '1'; y <= '1'; z <= '1'; c <= '1'; wait for 20 ns; wait;
end process;
END;
Результат моделирования:
68
ПРИЛОЖЕНИЕ 3
Пример выполнения задания лабораторной работы 3
Разработать модель цифровой схемы:
Код модели на языке Verilog HDL[4]: `timescale 1ns / 1ps
module dTrigger (input d, input clk, input reset, input s, output reg q, output reg qn);
always @ ( posedge clk or negedge reset) if (~reset)
begin
q <= 1'b0; qn <= 1'b1;
end else if (~s)
begin
q <= 1'b1; qn <= 1'b0;
end
else
begin
q <= d; qn <= ~d;
end endmodule
69
module top(input clk, input reset, output res);
wire q1n, q1;
dTrigger dTrigger_1 ( .d( q1n ), .clk( clk ), .reset( reset ), .s( 1'b1 ), .q( q1 ), .qn( q1n ) );
dTrigger dTrigger_2 ( .d( q1 ), .clk( clk ), .reset( reset ), .s( 1'b1 ), .q( reset ) );
endmodule
Код тестовой оболочки на языке Verilog HDL:
`timescale 1ns / 1ps
module top_tb; reg clk; reg reset; wire res;
top uut (.clk(clk),.rst(reset),.y(res));
initial begin clk = 0;
reset = 1;
#20 reset = 0; #100 reset = 1;
end
always
clk = #20 ~clk;
endmodule
Результат моделирования:
70