转载自:知乎
首先附上传送门
Problem 90 Mux and DFF
牛刀小试
考虑下图所示的时序电路问题:
我们用3个包含触发器和多路选择器的子模块来实现图中电路。题目要求我们写出包含一个触发器和一个多路选择器的子模块。
答案与解析
module top_module (
input clk,
input L,
input r_in,
input q_in,
output reg Q);
wire temp;
assign temp = L ? r_in : q_in; //2 to 1 选择器
always @ (posedge clk ) //触发器
begin
Q <= temp;
end
endmodule
Problem 91 Mux and DFF
牛刀小试
考虑一个 n-bit 移位寄存器。
如上图所示,我们还是实现包含选择器和触发器的部分。
答案与解析
module top_module (
input clk,
input w, R, E, L,
output Q
);
wire temp1, temp2;
assign temp1 = E ? w:Q;
assign temp2 = L ? R:temp1;
//与上题类似,不做赘述
always @ (posedge clk)
begin
Q <= temp2;
end
endmodule
Problem 92 DFFS and gates
牛刀小试
如下图所示的状态机,假设D触发器在状态机启动之前初始化为0,实现该电路:
答案与解析
本题为门电路与触发器的结合,上图包含三个触发器、异或门、与门和或门。只需要注意后两个触发器输出是取反即可。
module top_module (
input clk,
input x,
output z
);
reg q1 = 0;
reg q2 = 0;
reg q3 = 0;
always @ (posedge clk)
begin
q1 <= x ^ q1;
end
always @ (posedge clk)
begin
q2 <= x & (~q2);
end
always @ (posedge clk)
begin
q3 <= x | (~q3);
end
assign z = ~(q1 | q2 | q3);
endmodule
Problem 93 Create circuit from truth table
牛刀小试
JK触发器的真值表如下图所示,仅使用D触发器和门电路来实现该JK触发器。其中Qold是D触发器在时钟上升沿之前的输出。
答案与解析
module top_module (
input clk,
input j,
input k,
output Q);
always @ (posedge clk)
begin
case ({j, k})
2'b00: Q <= Q;
2'b01: Q <= 1'b0;
2'b10: Q <= 1'b1;
2'b11: Q <= ~Q;
endcase
end
endmodule
Problem 94 Detect an Edge
牛刀小试
对于每个8bit的变量,检测这些信号什么时候从0变为1(类似检测上升沿),输出应该在0到1 变化之后才有值。
下图给我们展示了输入in[1]和输出pedge[1]的时序关系图:
解答与解析: 边沿检测的特性就是两边电平发生了变化,无非是0变1上升沿,1变0下降沿。
(具体可参考)
https://blog.csdn.net/qq\_31799983/article/details/81544707blog.csdn.net
具体的设计可以采用一个寄存器Q来存储上一个时钟沿的输入值D,当寄存器输出Q与输入D的值分别为1、0时,则检测到下降沿。
如图:
这就像本题代码, D就是in, Q就是temp。
module top_module (
input clk,
input [7:0] in,
output [7:0] pedge
);
reg [7:0] temp;
always @ (posedge clk)
begin
temp <= in; //temp始终比in晚一个周期
pedge <= ~temp & in; //当输出为1时检测到上升沿
//本题刚好与所示时序图相反,其中Q就相当于temp, D就相当于in,检测下降沿是对in取反就好。
end
endmodule
推荐阅读
- HDLBits:在线学习 Verilog (十八 · Problem 85-89)
- HDLBits:在线学习 Verilog (十七 · Problem 80-84)
- HDLBits:在线学习 Verilog (十六 · Problem 75 - 79)
- HDLBits:在线学习 Verilog (十五 · Problem 70 - 74)
- HDLBits:在线学习 Verilog (十四 · Problem 65-69)
关注此系列,请关注专栏FPGA的逻辑