Материал: Разработка и прототипирование цифровых устройств на языках VHDL и Verilog. Барабанов В.Ф., Гребенникова Н.И

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

Источник: https://studfile.net/preview/16568813/