лабы / Лабораторная работа 2
.docxФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
Федеральное государственное образовательное бюджетное учреждение
высшего профессионального образования
«Санкт-Петербургский государственный университет телекоммуникаций
им. проф. М. А. Бонч-Бруевича»
_________________________________________________________________
Кафедра: «Программной инженерии и вычислительной техники»
Дисциплина: «Микропроцессорные устройства»
Исследование работы ПЦУ
Отчёт по лабораторной работе №2
Выполнил: ст. группы РТ-01
Принял: Анохин Ю.В.
Санкт-Петербург
2022
Лабораторная работа № 2.
Исследование работы ПЦУ.
RS - триггер.
module tr_rs
(input wire s,r,
output wire q,nq);
wire p,np;
assign p = !(s & np);
assign np = !(r & p);
assign q=p;
assign nq=np;
endmodule
D – триггер.
module tr_d
(input wire clk,d,set,res,
output wire q);
reg p;
assign q=p;
always@ (negedge set, negedge res, posedge clk)
begin
if (!set)
p<=1'b1;
else if (!res)
p<=1'b0;
else if(clk)
p<=d;
end
endmodule
JK – триггер.
module tr_jk
(input wire clk, set, res, j, k,
output wire q);
reg p;
assign q=p;
always@ (negedge set, negedge res, posedge clk)
begin
if (!set)
p<=1'b1;
else if (!res)
p<=1'b0;
else if (clk)
case ({j,k})
2'b00: begin p<=p; end
2'b01: begin p<=1'b0; end
2'b10: begin p<=1'b1; end
2'b11: begin p<=!p; end
endcase
end
endmodule
Последовательный регистр.
module shift_rgstr
#(parameter N=8)
( input clk,
input d_in,
output d_out);
reg [N-1:0] d;
assign d_out = d[N-1];
always @ (posedge clk)
begin
d[N-1:1] <= d[N-2:0];
d[0] <= d_in;
end
endmodule
Регистр – защёлка.
module latch_rgstr
#(parameter N=4)
(input [N-1:0] d_in,
input clk,
output [N-1:0]d_out);
reg [N-1:0]q;
assign d_out=q;
always@ (posedge clk)
begin
q<=d_in;
end
endmodule
Буферный регистр.
module buf_rgstr
#(parameter N=4)
(input [N-1:0] d_in,
input clk, ena, res, rd,
output [N-1:0] d_out);
reg [N-1:0]w;
assign d_out=(rd)? (w) : (0);
always@ (posedge clk, negedge res)
begin
if (!res)
w<=0;
else if (clk)
begin
if (ena)
w<=d_in;
else
w<=w;
end
end
endmodule