我正在尝试制作一个取决于信号的计数器。该信号在两个周期内为高电平,在接下来的两个周期内为低电平,并且一直持续到结束为止。在高脉冲期间,计数应从0,1开始。当脉冲为低电平时,计数为“ x”,从下一个高电平开始,计数从2、3开始,然后从“ x”开始持续两个周期(仅当脉冲为高电平时才计数),然后再次为4、5。分配。
当我执行以下代码时,我总是得到1 2 x 1 2 x的计数。有帮助吗?
always@(posedge clk or posedge rst)
If(rst)
Count <= 0;
else
Count <= signal;
assign signal = pulse ? Count + 1: 'x;
我得到的不是1 2 x x1 2 x x。 1 2 x x 3 4 x x 5 6 x x等。感谢您的任何帮助。
答案 0 :(得分:0)
您只需要使计数寄存器更宽即可。现在,它只有一位,所以一旦到达(1 + 1 =)2,它就会翻转。如果扩大它,它将能够存储状态。
答案 1 :(得分:0)
当您将信号分配给x时,count将在下一个时钟周期获取该值。然后,当脉冲变高并且信号已知时,它将假定x表示零,然后将其加1,因此输出将为1。然后,在下一个周期,输出将为2。您需要做的是保留状态而不是重置状态。尝试在if (pulse)
之前添加count <= signal
。