我收到错误"受影响的对象重复的组件指示符i4在行:25偏移:13和行:25偏移:13"。由于指定的位置都相同,我无法对此问题进行排序。请帮助我。
这是我正在使用的代码。
`timescale 1ns / 1ps
module delay_output(
input cclk3,
input [7:0] delay_out1,
output reg[7:0] delayout1
);
reg [7:0] temp1;
reg [7:0] temp2;
reg [7:0] temp3;
reg [7:0] temp4;
delay_outsig(
.cclk4(cclk4),
.delay_out2(delayout1)
);
always @(posedge cclk3) begin
temp1 <= delay_out1;
temp2 <= temp1;
temp3 <= temp2;
temp4 <= temp3;
delayout1<= temp4;
end
endmodule
答案 0 :(得分:0)
由于我不知道您使用的是哪种工具,我只是在猜测。
我发现的一个问题是使用delayout1
指示符:
module
声明中,指定为output reg [7:0]
类型。wire
而不是reg
。因此,我只需从reg
声明中删除output
,使其成为
output [7:0] delayout1
并查看是否可以解决错误。如果有帮助,请告诉我。
除了上述内容之外,我意识到您还要在delayout1
块内分配always
,delayout1
需要reg
为delayout1
。
因此reg
不能同时成为reg
和的问题不是delay_out2
。假设delay_outsig
实例的always
端口是输出,delay_outsig
块和delayout1
实例之间存在冲突 - 两者中的哪一个应该驱动{ {1}}?
除此之外,delay_outsig
模块的实例化缺少实例名称,并且未定义cclk4
(感谢Greg注意到这一点)。
简而言之,代码存在以下问题:
delay_outsig
实例需要一个名称。例如,您可以将行更改为delay_outsig delay_outsig_inst1 (
,以便为实例指定名称delay_outsig_inst1
。delay_outsig
实例和always
块之间存在驱动程序冲突。您需要决定两者中哪一个应该控制delayout1
。也许您需要为另一个驱动程序使用单独的名称,并以某种方式将两者结合起来。delayout1
如果是由实例驱动,则应为导线;如果由reg
块驱动,则为always
。cclk4
(这可能是拼写错误,应该是cclk3
吗?)在更高级别查看您的代码(即猜测您真正想要做什么),我想知道您是否需要拥有delay_outsig
实例或者是否要删除这四行并查看模块是否已经满足您的需求。