循环计数_Verilog设计中该不该用for循环?

在Verilog设计中,for循环的使用引起了一些争议。虽然有的教师建议避免使用for循环,倾向于计数器展开,但Xilinx官方示例中for循环仍常见。实际上,for循环在特定情况下是有益的,如代码有规律时配合generate for提升效率,或者在需要多次实例化模块时。然而,这也可能导致调试困难。在实现软件式的延迟计时,硬件计数器是更好的选择。对于RAM/Regfile的构建,for循环也能提高编码效率。注意合理运用,以平衡效率和调试便捷性。
摘要由CSDN通过智能技术生成

verilog中到底应不应该用for循环呢?我听我们老师说不让用for循环,要用计数器展开,但是我看的很多xilinx官方demo中for循环使用还是很频繁啊,像下面图片中alway块中,复位后竟然可以将存储器全部复位为0,i得变化不是根据时钟走吗?如果不是,那是根据什么变化?

知乎网友提问

先说结论,可以用,但是分时候,不会用的时候别乱用。

你老师说的计数器xx,可能是让你写计数器的时候别用for循环,软硬件编程思维的不同。写一个计数器表示一段延时,软件编程的思维肯定的是用for循环,软件的执行是顺序执行,也就是一直处于这个循环中,直到不满足循环计数条件而跳出循环。

而硬件中的计数器实现直接就是一组D触发器,根据计数器的使能,加上在时钟边沿触发变化,再加上一个清零端(还可以加置位端)。软件和硬件这两个可以说,完全不是一个东西。

always @(posedge clk or negedge rst_n)begin  if(!rst_n)    cnt <= 3'd0;  else if(cnt_clear)    cnt <= 3'd0;  else if(cnt_en)    cnt <= cnt + 1'd1;end

如果我想实现软件思维的delay一段时间怎么做,直接用上面的计数器做一个fla

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值