一个奇怪的信号重定义问题
时间:10-02
整理:3721RD
点击:
我用了40个Altera提供的双口RAM做了一个RAM组,在写入时用case语句给要写入的RAM赋值,但是编译时说'address2_a' already exists; must not be redefined as a named block,问题是我只定义了一个address2_a寄存器啊。
部分源代码是:
LineRam line2(
address2_a,
address2_b,
clk,
data2_a,
data2_b,
wren2_a,
wren2_b,
q2_a,
q2_b);
其中地址数据读写允许是寄存器型,输出数据是线网型。
case(iaddress_a[9:5])
1:
begin
address1_a<=iaddress_a[4:0];
data1_a<=idata_a;
wren1_a<=1;
address21_a<=iaddress_a[4:0];
data21_a<=idata_a;
wren21_a<=1;
end
2:
begin:
address2_a<=iaddress_a[4:0];
data2_a<=idata_a;
wren2_a<=1;
address22_a<=iaddress_a[4:0];
data22_a<=idata_a;
wren22_a<=1;
end
iaddress_a是模块的输入地址,高5位用来区别是哪一个RAM,低5位是要写入的地址。
谢谢各位。
部分源代码是:
LineRam line2(
address2_a,
address2_b,
clk,
data2_a,
data2_b,
wren2_a,
wren2_b,
q2_a,
q2_b);
其中地址数据读写允许是寄存器型,输出数据是线网型。
case(iaddress_a[9:5])
1:
begin
address1_a<=iaddress_a[4:0];
data1_a<=idata_a;
wren1_a<=1;
address21_a<=iaddress_a[4:0];
data21_a<=idata_a;
wren21_a<=1;
end
2:
begin:
address2_a<=iaddress_a[4:0];
data2_a<=idata_a;
wren2_a<=1;
address22_a<=iaddress_a[4:0];
data22_a<=idata_a;
wren22_a<=1;
end
iaddress_a是模块的输入地址,高5位用来区别是哪一个RAM,低5位是要写入的地址。
谢谢各位。
检查一下模块例化的名称是否与所定义信号名称重名
终于发现问题了,begin后面多了个:,困扰了我一天。谢谢啊
