always@(posedge clk_div or negedge rst_n) //???? begin if(!rst_n) {t_h,t_l}<=8'd0; else if(ST) {t_h,t_l}<=8'd0; else if((t_h==4'd5)&(t_l==4'd9)) begin {t_h,t_l}<={t_h,t_l}; end else if(t_l==4'd9) begin t_h<=t_h+1'b1; t_l<=4'd0; end else begin t_h<=t_h; t_l<=t_l+1'b1; end end assign t3=((t_h==4'd0)&(t_l==4'd4)); assign t2=((t_h==4'd2)&(t_l==4'd9)); assign t1=((t_h==4'd5)&(t_l==4'd9));
时间: 2024-03-08 21:49:41 浏览: 118
dff.zip_dff vpr_flip flop_flowernjz_it_read55n
在这段代码中,可能存在一个语法错误。在Verilog中,当我们使用花括号来同时赋值多个信号时,需要使用逗号来分隔不同的信号,而不是使用逗号。因此,将if语句中的花括号改为括号即可解决这个问题。修改后的代码如下所示:
```
always@(posedge clk_div or negedge rst_n) begin
if(!rst_n) begin
t_h <= 8'd0;
t_l <= 8'd0;
end else if(ST) begin
t_h <= 8'd0;
t_l <= 8'd0;
end else if((t_h==4'd5)&(t_l==4'd9)) begin
t_h <= t_h;
t_l <= t_l;
end else if(t_l==4'd9) begin
t_h <= t_h+1'b1;
t_l <= 4'd0;
end else begin
t_h <= t_h;
t_l <= t_l+1'b1;
end
end
assign t3 = ((t_h==4'd0)&(t_l==4'd4));
assign t2 = ((t_h==4'd2)&(t_l==4'd9));
assign t1 = ((t_h==4'd5)&(t_l==4'd9));
```
修改后的代码中,if语句中的花括号改为了括号,并在每个分支后面使用了begin和end关键字,以明确各个分支的作用域。同时,assign语句中的逗号保持不变,因为在assign语句中使用花括号是合法的。
阅读全文