微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于for循环的疑问

关于for循环的疑问

时间:10-02 整理:3721RD 点击:
在一个模块中有多处用到了for循环,但使用相同的累计数变量,会怎么样呢?例如下面这样,定义了一个变量m,在两个for循环中使用。大概是按照C语言的思路来的,之前一直没有想过这个问题,觉得这个m也没有什么真实含义,就是赋值的时候写起来方便罢了。仿真和上板测试也都能够通过。今天看书的时候发现了这个问题,在想之前是不是太侥幸了,同一个变量不应该出现在多个过程块?
求达人指点!

  1. integer m;

  2. always @ (posedge clk)
  3. begin
  4.    if (!rst) begin
  5.       ...
  6.    end
  7.    else begin
  8.       for (m = 0; m < 4; m = m + 1)
  9.       begin
  10.          a[m] <= XXX;
  11.          ......
  12.       end
  13.    end
  14. end

  15. always @ (posedge clk)
  16. begin
  17.    if (!rst) begin
  18.       ...
  19.    end
  20.    else begin
  21.       for (m = 0; m < 4; m = m + 1)
  22.       begin
  23.          b[m] <= XXX;
  24.          ......
  25.       end
  26.    end
  27. end

复制代码

触发条件一模一样,无影响。如果不同就小心了。


比如一个条件是m<4,一个是m<8,就不可以,是吗?还是always@(),括号里的不一样?

我认为这个for循环如果在testbench中要小心用,特别是带时间参数的for语句,因为有执行时间的概念; 在综合代码中完全没必要太在意,for 语句只要没有上下两层for循环用相同的变量就没问题,for语句是要被替换为并行语句的,两个不同块中的同一for变量值不会交替执行增减,所以不会有问题,我的好多设计中都是一个变量在若干个块中用,没发现问题

感觉应该没事,每一个都是独立过程,而且都有初始化。


非常感谢!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top