当我在Quartus II中配置pll_reconfig模块时,设计中的generate for语句必须为不同的实例指定不同的字符串参数(文件名)。 我试过这些代码:
genvar i;
generate
for (i=0; i<2; i=i+1) begin:u
rom #($sformatf("mif%d.mif",i)) U(
//signals connected.
);
end
endgenerate
据说代码不可合成。 如何在生成块中指定变量字符串参数?
答案 0 :(得分:1)
我有一个类似的问题,但在一个不支持$ sformatf的系统上。我的解决方案有点脏,但可以帮助别人:
genvar i;
generate
for (i=0; i<10; i=i+1)
begin
mymodule #(.NAME("NAME0" + i) instance(.RESET(mreset) ... );
end
endgenerate
我认为,这可以通过将字符串“NAME0”视为一个数字(一个40位数字)来实现。通过添加i,您只需将值增加i,结果就是最后一个ASCII char更改。幸运的是'0'+我给你'1','2','3'等
明显的缺陷是这只适用于0-9,但有一个简单的扩展使用divide和modulo算术:
mymodule #(.NAME("NAME00" + (256 * (i / 10)) + (i % 10) ) ) ...
作为旁注,我使用字符串连接{“NAME”,i}遇到了问题,因为Verilog将i视为32位值,因此字符串最终为:
NAME 1
由于额外的'不需要的'24位,相当于3个空字符