Вы находитесь на странице: 1из 6

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

ХАРЬКОВСКИЙ НАЦИОНАЛЬНЫЙ УНИВЕРСИТЕТ РАДИОЭЛЕКТРОНИКИ

Кафедра АПВТ

ОТЧЕТ

по лабораторной работе №1 на тему:

«РАЗРАБОТКА СТРУКТУРНЫХ VERILOG-МОДЕЛЕЙ УСТРОЙСТВ»

по курсу «Технологии проектирования компьютерных систем»

Вариант № 3

Выполнили: Проверила:
ст. гр. КИ–16–5 Шевченко О.Ю.
Носов В.С.
Бойченко Д.С.
Левцун Д.К.

Харьков 2019
2
1.1 Цель работы
Научиться разрабатывать, тестировать и верифицировать Verilog-модели
стандартных цифровых устройств.

1.2 Порядок выполнения работы


Задание 1: Согласно варианту задания (1)записать вентильную Verilog-модель устройства. 
Создать проект в программе Active-HDL, ввести код структурной модели устройства.
Выполнить компиляцию и моделирование, используя окно Waveform. Используя инструмент
, показать задержки элементов на временной диаграмме. Сохранить полученную временную
диаграмму.
Схема для задания:

Код структурной модели устройства:


module zadanie1 ( output cout,sum, input a,b,cin);
wire y0,y1,y2,y3,y4;
xor #5 (y0, a,b);
and #10 (y1,a,b);
and #10 (y2,b,cin);
and #10 (y3,a,cin);
xor#5 (sum,y0,cin);
or#3(y4,y1,y2);
or#3(cout,y4,y3);

endmodule
3
Результаты моделирования:

Задание 2: Согласно варианту задания (1) разработать Verilog-модель


устройства уровня передачи данных. Для верификации полученной модели
построить testbench, который подавал бы все возможные входные наборы для
тестируемой схемы. Выполнить моделирование с помощью программы Active-
HDL.
Код устройства уровня передачи данных:
module zadanie2 (cout,sum,a,b,cin);
output cout,sum;
input a,b,cin;
assign sum=(a^b)^cin;
assign cout = ((a&b)|(b&cin))|(cin&a);
endmodule

Код testbench:
`timescale 1 ns / 1 ps
module stimulus_simple;
reg A,B,CIN;
wire COUT,SUM;
zadanie2 MOD1(COUT,SUM,A,B,CIN);
initial
begin
A = 1'b0; B = 1'b0; CIN = 1'b0;
#17 CIN = 1'b1;
#17 CIN = 1'b0; B=1'b1;
#17 CIN = 1'b1;
#17 CIN = 1'b0;A=1'b1;B=1'b0;
#17 CIN = 1'b1;
#17 CIN = 1'b0;B=1'b1;
#17 CIN = 1'b1;
#10 $finish;
end
endmodule
4
Результаты моделирования:

Задание 3: Согласно варианту задания (2) разработать смешанную Verilog


(см. п 1.2.3). Выполнить моделирование с помощью программы Active-HDL.

Код устройства:
module zadanie3
(input Clk, Clr,
output reg Z0,
output Z1,Z2);
wire w3,w4,w5;
reg w1;
// dataflow
assign w3=w1|~Z0;
assign Z2=~w3;
assign w5=~(w3&w4);
assign w4=Z0|~w1;
assign Z1=~w1;
// pow
always @(posedge Clk, negedge Clr)
if (~Clr) Z0=0;
else Z0=w5;
always @(posedge Clk, negedge Clr)
if (~Clr) w1=0;
else w1=~w1;
endmodule
5
Результаты моделирования:

Задание 4: Согласно варианту разработать поведенческую модель счетчика. Проверить


правильность функционирования с помощью Waveform.

Код счетчика:
module counter
#(parameter SIZE = 'd8)
( input CLK, RESET,
output reg [SIZE-1:0] COUNTER);
always @(negedge CLK or negedge RESET) begin
if (RESET) COUNTER = 'd0;
else COUNTER = COUNTER + 'd1;
end
endmodule
Результаты моделирования:

Задание 5: Построить модель регистра с параллельной загрузкой. Проверить


правильность функционирования с помощью Waveform.
6

Код рагистра:
module shift_reg (input C, R, Shift, input [3:0] D, output reg [3:0] Q);
always @(posedge C)
if (R) Q = 4'b1;
else if (Shift) Q = {Q[0], Q[3:1]};
else Q = D;
endmodule

Код testbench:
`timescale 1 ns / 1 ps
reg [3:0]D, C,R,SHIFT;
wire [3:0]Q;
shift_reg MOD1(C,R,SHIFT,D,Q);
initial
begin
R = 1'b0; C = 1'b0;
#10 C = 1'b1; R = 1'b1;
#10 C = 1'b0; R = 1'b0;
#10 C = 1'b1; SHIFT = 1'b1;
#10 C = 1'b0;
#10 C = 1'b1;
#10 C = 1'b0;
#10 C = 1'b1;
#10 $finish;
end
endmodule

Результаты моделирования:

1.3 Выводы
На данной лабораторной работе были рассмотрены и реализованы
вентильные, dataflow, модели устройств описанные смешанным стилем, а
также поведенческие модели счетчиков и регистров.