在puartus 13.0与modelsim的联合仿真 fft ip核时出现的问题
这个报错我翻译了一下是,我顶层文件rom_FFT_top.v的source_exp和source_error位宽与仿真文件fft_ip.vo文件的端口位宽不匹配
,如何我改了好多次,我试着吧source_exp和source_error的位宽改的很大,都是报错,会出现其他的位宽报错
这是我的顶层代码
module rom_FFT_top
#(
parameter sampling_MAX = 8'd255
)
(
input Sys_Clk,
input Sys_rst_n,
output [7:0] q,
output ready,
output [1:0] source_error,
output source_sop,
output source_eop,
output source_valid,
output [7:0] source_exp,
output [7:0] source_real,
output [7:0] source_imag
);
reg [7:0] address_sig; //rom_ip核的计数参数
//reg inverse_FFT = 1'b0; //FFT_ip参数
//reg sink_valid = 1'b1;
reg [7:0] sampling; //采样数,sop和eop
wire sop;
wire eop;
always @(posedge Sys_Clk or negedge Sys_rst_n) //rom_ip核的计数
begin
if(Sys_rst_n==0)begin
address_sig<=1'd0;end
else begin
address_sig<=address_sig+1'b1;end
end
rom_ip rom_ip_inst //rom iP核的调用
(
.address ( address_sig ),
.clock ( Sys_Clk ),
.q ( q )
);
always @(posedge Sys_Clk or negedge Sys_rst_n) //sop和eop置1的条件
begin
if(Sys_rst_n == 1'b0)begin
sampling<=1'd0;end
else if(sampling == sampling_MAX)begin
sampling<=1'd0; end
else begin
sampling<=sampling+1'b1; end
end
assign sop = (sampling==1'd0)? 1'b1:1'b0;
assign eop = (sampling==sampling_MAX)? 1'b1:1'b0;
fft_ip fft_ip_inst
(
.clk (Sys_Clk) , //时钟
.reset_n (Sys_rst_n) ,//复位
.inverse (1'b0) ,//0—FFT,1-逆-FFT
.sink_valid (1'b1) ,//使能(输入有效)
.sink_sop (sop) ,//采样周期起始信号
.sink_eop (eop) ,//采样周期截至信号
.sink_real (q) ,//输入数据————实部
.sink_imag (8'd0) ,//输入数据————虚部
.sink_error (1'b0) ,//置0,错误信号
.sink_ready (ready) ,//置1时,输入数据有效
.source_ready(1'b1) ,//置1时,输出数据有效
.source_error(source_error) ,//1表示出现错误
.source_sop (source_sop) ,//输出周期起始信号
.source_eop (source_eop) ,//输出周期截至信号
.source_valid(source_valid) ,//使能(输出有效)
.source_exp (source_exp) ,//缩放因子
.source_real (source_real) ,//输出数据————实部
.source_imag (source_imag ) //输出数据————虚部
);
endmodule
我没办法打开vo文件,不能查看他需要的位宽,但是我的ip核设置里面的缩放因子是8位宽的,我理解的这个source_exp 就是缩放因子,并且我的代码里面这个source_error我定义的[1:0],报错上面提示我是定义的是1位宽,但是modelsim的仿真里面这两个数据都报错了,
我不是很能理解这个问题在哪,求解答