【发布时间】:2016-10-20 05:41:10
【问题描述】:
我制作了两个verilog 模块。第一个采用 9 位数字并返回 1 在其中第一次出现的位置。
module findPositionOf_1(
input [8:0] data,
output reg [3:0] position
);
always @(data)
begin
if(data==9'b0000_00000)
position=4'b0000;
else if(data[0]==1)
position=4'b0000;
else if(data[1]==1)
position=4'b0001;
else if(data[2]==1)
position=4'b0010;
else if(data[3]==1)
position=4'b0011;
else if(data[4]==1)
position=4'b0100;
else if(data[5]==1)
position=4'b0101;
else if(data[6]==1)
position=4'b0110;
else if(data[7]==1)
position=4'b0111;
else if(data[8]==1)
position=4'b1000;
end
endmodule
第二个模块返回第二次出现的 1。它调用第一个模块首先将该位更改为零,然后再次找到 1 的出现。
module findPositionOf_2nd_1(
input [8:0] r1_data,
output [3:0] position1
);
reg [3:0] pos,pos2;
reg [8:0] temp;
integer i;
always @(r1_data)
begin
findPositionOf_1 f1(.data(r1_data), .position(pos));
i=pos;
temp=r1_data;
temp[i]=0;
findPositionOf_1 f2(temp,pos2);
if(pos2==4'b0000)
position1=0;
else
position1=pos2;
end
endmodule
我在编译过程中遇到以下错误。请帮忙。
未找到检查器“findPositionOf_1”。实例化 'f1' 必须是 可见的检查器。 发现一个带有空主体的开始/结束块。这 在 SystemVerilog 中是允许的,但在 Verilog 中是不允许的。请 寻找任何杂散的分号。
【问题讨论】:
标签: verilog