1、accum_k==8'd16
等你发现计数器已经等于16,实际信号输出时已经又过了一个时钟周期了,相当于每竖颤逢17个数输出一次。
accum_k从0开始到14一共才是十五个,即accum_k==14时就应该输出并清零了。
2、else
accum_k <= 0
你的使能信号是怎么定义的?使能的作用应该是:有效时正常工作;无效时什么都不做,但保持原有状态(即寄存器的值)。使能无效时对仅仅计数器清零是不对的,如果要清零前历,累加器也应该一起清零,这样就成了reset,并不是使能的功能。因此,这句else画蛇添足
供参考
module Verilog(A,B,C,D,Y)input [3:0] A,B,C,D
output Y
wire [7:0] X
reg Y
assign X={A,3'b0}+{B,2'b0}+{C,1'茄纯b0}+D
always @(X)
begin
if ((X>8'h4)&&(X<=8'hf))
Y=1'b1
else
Y=1'b0
end
endmodule
该消纳塌程序经过仿真,结果正拿圆确。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)