#142. 异步复位的寄存器
异步复位的寄存器
题目描述
在前面的例子中,复位信号只能在触发信号的触发边沿才能起作用,也就是说如果没有触发边沿就无法对电路复位,这大大限制了复位的功能,因此还有一种经常使用的复位方式,称为异步复位。
为了使复位信号不依赖于时钟边沿,则复位信号也应该放在always进程块的敏感变量列表中。复位信号高电平有效和低电平有效在编码时稍有不同,对于高电平有效的复位信号来说,可以写成如下形式:
always@(posedge clk or posedge reset)
begin
if(reset) …
else …
end
如果是低电平有效的复位信号,则应写成如下形式:
always@(posedge clk or negedge reset)
begin
if(~reset) …
else …
end
试创建Verilog模块,实现一个时钟上升沿触发的,支持高电平有效的异步复位功能的8bit寄存器,寄存器复位值为0。
输入格式
2个 1bit 位宽的信号 clk、areset 1个 8bit 位宽的信号 d
输出格式
1个 8bit 位宽的信号 q
示例代码
module top (
input clk,
input areset, // active high asynchronous reset
input [7:0] d,
output reg [7:0] q
);
// Write your code here
endmodule