刚学verilog,帮忙看下我写的发生脉冲的程序有没有什么问题?
发布网友
发布时间:2024-10-21 12:54
我来回答
共2个回答
热心网友
时间:2024-11-11 12:31
1.语法错误,在always中不能用非阻塞赋值“=”,需要改为<=赋值。
2.最好加一个reset信号,可以用来赋初值,你的TEMP就没有赋初值。
3.用if语句一定要有对应的else语句,否则会产生锁存器。
我先改下,没有编译,可能有语法错误,应该问题不大。
mole pwmint(clkin,srst,pwm_int,pwm_pro);
input clkin;
input srst;
input pwm_pro;//使能信号
output pwm_int;
reg pwm_int;
reg [8:0] TEMP;
always @(posedge clkin or posedge srst) begin
if(srst)begin
pwm_int <= 1'b0;
TEMP <= 9'd0;
end
else if(pwm_pro) begin
TEMP<=TEMP+1'b1;
if (TEMP==9'b111111100)
pwm_int<=1'b1;
else if(TEMP==9'b111111101) begin
pwm_int<=1'b0;
TEMP<=1'b0;
end
else
;
end
else
;
end
endmole
如果你在synplify_pro中综合,else ;语句没有问题,如果你在别的软件中综合有问题,可以取消。
热心网友
时间:2024-11-11 12:31
使能信号无效时应该也有个动作