(1)FIR ip核仿真

(2)FIR 多通道应用

(3)多通道fir ip核需要注意的复位问题

=======================================================================

(1)FIR ip核仿真

=======================================================================

关于FIR的modelsim仿真一直困惑着我。今天终于解决了。
在生成IP核时,会生成两个相应的文件夹XX_ip和XX_ip_sim,“XX”表示IP核的命名。在下面的文件夹中,我的IP命名为fir2。

打开XX_ip_sim文件夹,里面有不同仿真工具的支持文件,其中mentor就是modelsim的。把modelsim的仿真路径

修改到mentor文件夹下。仿真路径所调用的文件来自xx_ip_sim文件夹下的文件。当然是可以自己修改的。

打开mentor文件夹,里面就是相应的Tcl文件,不过在我们应用时要做一些修改。把顶层文件修改为自己编写的tb文件。文件

也要入在xx_ip_sim文件夹下。

3、在modelsim的tool菜单下选择Tcl,运行msim_setup文件。

4、运行dev_com

5、运行com

6、运行elab_debug

如果重新生成了IP核,只需要运行com和elab_debug即可,不需要每次都编译库文件的。

==================================================================

(2)FIR多通道仿真应用

===================================================================

IP核的设置如下:

测试脚本如下:

module fir_i2_20m_4ch_4x_tb;
parameter CLK_CYCLE = 4'd10;
reg clk =0;
reg rst =0;

reg [15:0] din1=0;
reg [15:0] din2=0;
reg [15:0] din3=0;
reg [15:0] din4=0;

reg [1:0] cnt =0;
reg [15:0] din =0;
reg in_valid =0;
reg in_sop =0;
reg in_eop =0;
wire [69:0] dout;
wire [34:0] dout_i;
wire [34:0] dout_q;
wire out_chanl;
assign dout_i = dout[34:0];
assign dout_q = dout[69:35];
initial
begin
#0
clk =0;
rst =1;
#(3*CLK_CYCLE)
rst =0;
end

always #(CLK_CYCLE/2) clk = ~clk;
always @( posedge clk )
begin
if( rst )
begin
cnt <= 2'd0;

end
else
begin
cnt <= cnt + 1'b1;
end
end

always @( posedge clk )
begin
if( & cnt )
begin
din1 <= din1 + 1;
din2 <= din2+2;
din3 <= din3;
din4 <= din4;

end
end
always @( posedge clk )
begin
if( rst )
begin
in_valid <= 1'b0;
in_sop <= 1'b0;
in_eop <= 1'b0;
din <= 0;
end
else
begin
case( cnt )
2'd0 :
begin
in_valid <= 1'b1;
in_sop <= 1'b1;
in_eop <= 1'b0;
din <= din1;

end
2'd1 :
begin
in_valid <= 1'b1;
in_sop <= 1'b0;
in_eop <= 1'b0;
din <= din2;

end
2'd2 :
begin
in_valid <= 1'b1;
in_sop <= 1'b0;
in_eop <= 1'b0;
din <= din3;

end
2'd3 :
begin
in_valid <= 1'b1;
in_sop <= 1'b0;
in_eop <= 1'b1;
din <= din4;

end
default:
begin
in_valid <= 1'b0;
in_sop <= 1'b0;
in_eop <= 1'b0;
din <= 0;

end
endcase
end

end

reg [1:0] ast_sink_error= 2'd0;
wire [1:0] ast_source_error;
fir_i2_20m_4ch_4x_ip fir_i2_20m_4ch_4x_ip_inst (
.clk (clk), // clk.clk
.reset_n (~rst), // rst.reset_n
.ast_sink_data (din), // avalon_streaming_sink.data
.ast_sink_valid (in_valid), // .valid
.ast_sink_error (ast_sink_error), // .error
.ast_sink_sop (in_sop), // .startofpacket
.ast_sink_eop (in_eop), // .endofpacket
.ast_source_data (dout), // avalon_streaming_source.data
.ast_source_valid (out_valid), // .valid
.ast_source_error (ast_source_error), // .error
.ast_source_sop (out_sop), // .startofpacket
.ast_source_eop (out_eop), // .endofpacket
.ast_source_channel (out_chanl) // .channel
);

endmodule

在仿真中只给出一通道的信号

在仿真中分别给出一,二通道的信号。

结论:在四通道插四的仿真中,IP核会把1,2通道分在一起,3,4通道分在一起。out_chanl也只是一位的。

=============================================================================

(3)多通道fir ip核需要注意的复位问题

=============================================================================

在复位状态in_valid不能与in_sop(或in_eop)同时为高,否则在运算中会出现错误。

最新文章

  1. Samba快速配置
  2. EX14 彩票中奖 (lottery.pas/c/cpp)
  3. VS2010工程文件减肥
  4. 转:超链接a标签display属性的block和inline-block的用法说明
  5. SpringMVC学习笔记
  6. Android学习----发行版本
  7. g++ error: expected ‘)’ before ‘*’ token
  8. Matrix (二维树状数组)
  9. CMD修改IP地址
  10. .NET并行计算和并发:Task
  11. vs2015 打开项目自动运行 npm install
  12. Java WebMail
  13. nginx常用参数设置
  14. ArcGIS案例学习笔记2_2_等高线生成DEM和三维景观动画
  15. Spring点滴九:Spring bean的延迟初始化
  16. openstack 部署笔记--glance
  17. Hadoop 部分截图
  18. POJ2777(线段树裸题)
  19. ajax 遍历json一维数组
  20. .NET开源MSSQL、Redis监控产品Opserver之安全配置

热门文章

  1. 8 并发编程-(线程)-多线程与多进程的区别&amp;Thread对象的其他属性或方法
  2. ABAP-FTP通用操作
  3. DateFormat工具类
  4. Oracle进程中的 LOCAL=NO 和 LOCAL=YES
  5. ArcGIS案例学习笔记3_2
  6. conductor FAQ
  7. EasuyUI前后台传参
  8. Java.sql.SQLException: 无效的列类型: 1111
  9. Neuron network
  10. 132. Palindrome Partitioning II (String; DP)