74lvc161用verilog写模块关于同步置位与异步清零的问题!

2025-05-06 12:00:03
推荐回答(4个)
回答(1):

蛮简单的,图不知道有没有上传成功。CT即EP,ET都是计数时能端,都接高电平。CP为计数输入端。LD为预置使能端,这里不用,置高电平。QA,QB,QC.QD为输出端。十进制即为从0-9九种状态。RD是异步清零端,就是任何时候当RD为0时,QA,QB.QC.QD回到0重新开始计数。故让计数到10的时候,QD,QC,QB,QA为1010时,让RD为0 ,于是用一个与非门。当到1010时,经与非门后送到RD,清零。重新开始计数。

回答(2):

always@(negedge CR,posedge CP,negedge CEP,negedge CET)
怎么这么多条件呢,这里是有问题的。
同步置位:在相同的触发条件下同时置位。
异步清零:在不同的触发条件下各自清零。

回答(3):

always@(negedge CR,posedge CP,negedge CEP,negedge CET)
改成always@(negedge CR or posedge CP or negedge CEP or negedge CET)

回答(4):

module lesson_11(cr,pe,cer,cet,cp,d,q,tc);//74LV161,P292

input cp;//时钟,上升沿有效
input cr;//清零,低有效
input pe;//置数,低有效
input cer,cet;//使能端,低有效
input[3:0] d;

output[3:0] q;
output tc;//进位信号

reg[3:0] q;
reg tc;

always @ (posedge cp or negedge cr)

if(!cr) begin q <= 0; tc <= 0;end
else if(!cer | !cet) begin
if(!pe) q <= d;
else if(q==4'b1111) tc <= 1;
else begin
q <= q + 1'b1;
tc <=0;
end
end

endmodule