基本上我想插入一系列重复的块(其中包含逻辑+寄存器)。这些块将相互链接以形成链接。
我试过这段代码却失败了。我只是想帮助你指出我,是我的语法错误还是我实际上是从硬件逻辑明智地说出错误的想法。为什么我一直没有这样做。
module fullchip (dat_out, dat_in, clk);
output dat_out;
input dat_in, clk;
//wire cloud1_out;
wire [99:0] cloud_out;
integer i;
integer j;
//combi_logic cloud1(.combi_out(cloud1_out), .combi_in(dat_in), .clk(clk));
//combi_logic cloud2(.combi_out(dat_out), .combi_in(cloud1_out), .clk(clk));
combi_logic cloud[0](.combi_out(cloud_out[0]), .combi_in(dat_in), .clk(clk));
for (i=1; i<99; i=i+1)
{
j = i - 1;
combi_logic cloud[i](.combi_out(cloud_out[i], .combi_in(cloud_out[j]), .clk(clk));
}
combi_logic cloud[99](.combi_out(dat_out), .combi_in(cloud_out[i]), .clk(clk));
endmodule
答案 0 :(得分:1)
更正为粗体(有些情况下会添加额外的空格)
解释在斜体评论中
module fullchip (dat_out, dat_in, clk);
output dat_out;
input dat_in, clk;
wire [99:0] cloud_out;
genvar i; // 'integer' to 'genvar'
// remove 'integer j;'
generate // required for IEEE1364-2001, optional in IEEE1364-2005 & IEEE1800
for (i= 0 ; i <= 99; i=i+1) // range [0:99]
begin // Verilog syntax, not '{'
if (i==0) // cloud[0] --> cloud, for-loop handles indexing
combi_logic cloud(.combi_out(cloud_out[0]), .combi_in(dat_in), .clk(clk));
else if (i==99)//cloud[99] --> cloud, for-loop handles indexing us
combi_logic cloud(.combi_out(dat_out), .combi_in(cloud_out[ i-1 ]), .clk(clk));
else // cloud[i] --> cloud, for-loop handles indexing us
combi_logic cloud(.combi_out(cloud_out[i] ) , .combi_in(cloud_out[ i-1 ]), .clk(clk));
end // Verilog syntax, not '}'
endgenerate // match generate
endmodule
工作示例here。