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

关于verilog中gerenate for的疑问

时间:10-02 整理:3721RD 点击:
请教各位大神,如果使用gerenate for语句,for的循环次数不是固定的,而是一个输入变量,这种情况可以综合吗?
  assign pK = g_din[0][95:88];
  generate
   genvar i;
   if((match_en == 1) &&(gauss_hit != 0)) begin
    for(i = 0; i < pK; i = i + 1) begin
     if(i == gauss_hit) begin
      assign diff_mu_r = (img_din[24:16] > g_din[i][87:80])?(img_din[24:16] - g_din[i][87:80])g_din[i][87:80]-img_din[24:16]);
      assign diff_mu_g = (img_din[15:8] > g_din[i][79:72])?(img_din[15:8] - g_din[i][79:72])g_din[i][79:72]-img_din[15:8]);
      assign diff_mu_b = (img_din[7:0] > g_din[i][71:64])?(img_din[7:0] - g_din[i][71:64])g_din[i][71:64]-img_din[7:0]);
      always@(posedge clk) begin
...

用的vavido

只要是综合时可以确定的值都可以。例如,parameter 定义的。


是由外部引脚输入的,这里是ddr中数据的某几位来确定,这些数据是迭代更新的,这样是不是就不能综合了,那需要嵌套case语句吗?
generate
  if() begin
       case()
         2'b00:
               for() begin:
               ...
         2'b01:
               for() begin:
               ...
         ...
这样嵌套使用可以吗



    是由外部引脚输入的肯定不行,你想象力太丰富了。循环生成语句只不过是在综合时把gerenate for和endgerenate之间的语句展开了。

至于语法你可以看相关资料。



    感谢,以前没怎么用过generate,那在generate和for之间插入if 和case语句 应该没问题吧,就是说for语句嵌套在case里面.

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

网站地图

Top