verilog中的warning
所对应的程序:
module modula(clk,rst,din,dout);
input clk;
input rst;
input din;
output dout;
reg dout;
reg[1:0] q;
reg[1:0] x;
reg[1:0] y;
reg[3:0] f;
always@(posedge clk)
begin
if(rst==1)
begin
q<=0;
x<=0;
end
else
begin
case(q)
0:
begin
q<=1;
f[1]<=1;
f[3]<=0;
x[1]<=din;
y<=x;
end
1:
begin
q<=2;
f[0]<=1;
f[2]<=0;
end
2:
begin
q<=3;
f[1]<=0;
f[3]<=1;
x[0]<=din;
end
3:
begin
q<=0;
f[0]<=0;
f[2]<=1;
end
endcase
end
end
always@(f or y)
begin
case(y)
00:dout=f[0];
01:dout=f[1];
10:dout=f[3];
default:dout=f[2];
endcase
end
endmodule
当出现这个编译warning 对应的仿真也出现Warning: Ignored node in vector source file. Can't find corresponding node name "f[3]" in design.请问是什么问题?
看了半天没看出来
想问下你这个模块功能是什么?
QPSK调制,f为载波,取其中的四个点,得到四种相位,只要是X1X0就代表0度,1X0X就代表90度,X0X1就代表180度,0X1X就代表270度,1和0分别代表1和-1
注意代码的格式
always@(f or y)
begin
dout=f[2];
case(y[1:0])
2'b00:dout=f[0];
2'b01:dout=f[1];
2'b10:dout=f[3];
default:dout=f[2];
endcase
end
建议看看代码的编写风格
因为 y不会等于10
最多等于3,
我想你第57行是想写2。
恩!谢谢建议!
恩!前面应该加b表示二进制~
还有小编细心呀,
我看了半天也没有注意到
module modula
(
clk,
rst,
din,
dout
);
input clk;
input rst;
input din;
output dout;
reg dout;
reg [1:0] q;
reg [1:0] x;
reg [1:0] y;
reg [3:0] f;
always@(posedge clk)
begin
if(rst==1)
begin
q <= 2'd0;
x <= 2'd0;
f <= 4'd0;
x <= 2'd0;
end
else
begin
case(q)
0:
begin
q <= 2'd1;
f[1] <= 1'b1;
f[3] <= 1'b0;
x[1] <= din;
y <= x;
end
1:
begin
q <= 2'd2;
f[0] <= 1'b1;
f[2] <= 1'b0;
end
2:
begin
q <= 2'd3;
f[1] <= 1'b0;
f[3] <= 1'b1;
x[0] <= din;
end
3:
begin
q <= 2'd0;
f[0] <= 1'b0;
f[2] <= 1'b1;
end
endcase
end
end
always@(*)
begin
case(y)
2'b00:dout = f[0];
2'b01:dout = f[1];
2'b10:dout = f[3];
default:dout = f[2];
endcase
end
endmodule