微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog里面for不能嵌套么?

verilog里面for不能嵌套么?

时间:10-02 整理:3721RD 点击:

我搭建testbench的时候用for循环,总跑第二个for第一个不动为什么?
for(i=0;i<=3;i=i+1)
        begin
            #1 A=A+i;
         for(j=0;j<=3;j=j+1)
             begin
             #1 B=B+j;
             end
        end

for(j=0;j<=3;j=j+1)
              begin
                i=i+1;
                #1 B=B+j;
              end
你在内部的循环里面  i=i+1;
第一次for后 i = 2 了
程序执行是对的

你把第二个循环里的i改为j,这样才符合你的意思。这程序是对的,但不是你的原意。

第二个i = i+1要来做什么,
骚年,C没学过么



    那个是多于的我知道,上程序的时候着急没看,我不加还是第一个循环走不了



    第一个还是走不动,总在I=0处。

你在第二个循环里面,把每个变量都dispaly出来,看下

还有, i, j 的变量类型貌似也是需要的搞一下的

最好先给A,B 赋初值。

for(int i=0;i<=3;i=i+1)
        begin
            #1 A=A+i;
         for(int j=0;j<=3;j=j+1)
             begin
             #1 B=B+j;
             end
        end



    i,j是reg  verilog里面不知道可以不可以用int?



    复过初值了,只是这里没贴出来。

i和j可以使integer吧!

路过,顶一下



    你是对的。谢了



   
module fort (pout,po);output reg[6:0]pout,po;
reg [6:0] i,j;
//reg clk;
initial begin
  po =0;
  pout =0;
  end
// initial clk =0;
// always #5 clk = !clk;
always begin
for (i = 0;i < 6'b1000_00; i = i + 1)
   begin
    #1 po = po+i;
     for (j=0;j<6'b0000_11;j = j+1)
       #1 pout = pout + j;
   end
end
endmodule
小编我这样写的代码是没有问题的,不知道你用什么仿真的,我用的是modelsim 6.5,程序中使用initial同样可以,我的波形如图:

学习,学习,再学习!



    我用reg定义i不行啊。只能用integer。我的是modelsim6.5e

貌似这个写法,综合会有些问题吧。



    是测试的时候用的。



    你再试试吧,我也是用的6.5e但是我仿出结果了啊!

楼上几位正解

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

网站地图

Top