|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 midaier 于 2015-10-15 10:16 编辑
刚做个仿真,出现了一个很奇怪的现象,不知道怎么回事就来求助大家了。
代码如下,功能也就是将输入的I/Q数据进行低通滤波之后对滤波器输出数据进行截位:
- ch2lpf12m ch2lpf12m_inst0(
- .clk(clk_122p88),
- .reset_n(fir_reset_n),
- .ast_sink_data(indata_i),
- .ast_sink_valid(1'd1),
- .ast_source_ready(1'd1),
- .ast_sink_error(2'd0),
- .ast_source_data(source_data_i),
- .ast_sink_ready(ast_sink_ready_i),
- .ast_source_valid(source_valid_i),
- .ast_source_error()
- );
- ch2lpf12m ch2lpf12m_inst1(
- .clk(clk_122p88),
- .reset_n(fir_reset_n),
- .ast_sink_data(indata_q),
- .ast_sink_valid(1'd1),
- .ast_source_ready(1'd1),
- .ast_sink_error(2'd0),
- .ast_source_data(source_data_q),
- .ast_sink_ready(ast_sink_ready_q),
- .ast_source_valid(source_valid_q),
- .ast_source_error()
- );
- assign source_data_i_r0 = (source_data_i[34]==1'b0)?(source_data_i+35'h10000):(source_data_i+35'h0ffff);
- assign source_data_q_r0 = (source_data_q[34]==1'b0)?(source_data_q+35'h10000):(source_data_q+35'h0ffff);
- //对实部信号、虚部信号进行采样输出
- always @(posedge clk_122p88)
- begin
- if(source_valid_i == 1'b1)
- begin
- source_data_i_r <= {source_data_i_r0[34],source_data_i_r0[31:17]};
- source_data_q_r <= {source_data_q_r0[34],source_data_q_r0[31:17]};
- end
- else
- begin
- source_data_i_r <= source_data_i_r;
- source_data_q_r <= source_data_q_r;
- end
- end
复制代码 对应的testbench如下,产生一个122.88M的时钟信号及输入的I/Q数据信号indata_i/q:
- parameter cycle = 8138;
- initial
- begin
- clk_122p88 = 1'b0;
- reset_n = 1'b0;
- # 20000 reset_n = 1'b1;
- $display("Running testbench");
- end
- always #(cycle/2) clk_122p88 = ~clk_122p88;
- initial
- begin
- forever
- begin
- @(posedge clk_122p88);
- indata_i = $random;
- indata_q = $random;
- end
- end
复制代码 仿真结果非常奇怪,输出source_data_i/q_r仍然携带了一些无用的信号,但是明明源代码中使用source_valid_i对滤波器输出数据进行了采样,可是没起到什么作用。并且那些无效的数据也不是在时钟上升沿变化的。
代码中以时钟沿为触发条件对输出source_data_i/q_r信号进行赋值,可仿真图形中显示输出的该信号数据值的变化并不是在时钟上升沿(也不在下降沿),似乎和时钟没什么关系。为此我在testbench中将截位前的数据接出来在testbench中,以时钟上升沿为触发条件进行截位,查看波形一切正常。但是对应的那个always快放在源文件中进行仿真,输出的时序图却出现了异常(不是偶然现象,我试过很多次了,真是见鬼了)
不方便上图,要不然大家可以更清楚些了,不知道我有没有把结果描述清楚。
有图了,如下:
仿真时序
|
|