循环的综合

      循环语句可以减少代码量,使得代码更加精简;但是可能会导致综合问题,因此在运用循环语句要非常小心。

 Xilinx建议是对于一些简单的信号连接方式变化,用循环语句是可接受的。如下面这一段只是实现多位输入信号到输出信号的位翻转(重映射):

reg[3:0] dout;
integer i;
always@(posedge clk)
begin
    for(i=0;i<=3;i=i+1)
       dout[3-i] <= din[i]
end

 而如果是需要推断出硬件结构,并不建议(但我觉得是可以写的,只要按规范也是可以综合的)。

always@(posedge clk)
begin
   for(i=0;i<= 3;i=i+1)
     begin

        if(en([i])
            dout[i] <= i;
     end
end

 

     周期性行为中迭代的次数在仿真前能由编译器确定(即迭代次数是固定的并且与数据无关),这种循环称为静态的或是数据独立的。

    如果循环次数是由运算中的某个变量决定的,这种循环则称为与数据相关的。具有数据依赖性的循环可能对内嵌的定时控制(如事件表达式)具有依赖性

     那些没有内部定时控制的非静态循环是有问题的,是不可综合的。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值