(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)同时为高,否则在运算中会出现错误。

关于FIR的modelsim的更多相关文章

  1. quartus ip核破解

    在证书文件中添加一段: FEATURE 6AF7_0012 alterad 2035.12 permanent uncounted E75BE809707E VENDOR_STRING="i ...

  2. fpga ip

    原文地址:altera FIR ip核 license破解作者:王永刚Aether 在证书文件中添加一段: FEATURE 6AF7_0012 alterad 2035.12 permanent un ...

  3. 基于FPGA的音频信号的FIR滤波(Matlab+Modelsim验证)

    1 设计内容 本设计是基于FPGA的音频信号FIR低通滤波,根据要求,采用Matlab对WAV音频文件进行读取和添加噪声信号.FFT分析.FIR滤波处理,并分析滤波的效果.通过Matlab的分析验证滤 ...

  4. modelsim 仿真xilinx fir ip

    到现在不管fir ip 用的对不对,但是在使用modelsim是可以仿真fir ip的. 具体步骤: 1.仿真库,添加到modelsim目录配置文件: 2.将这个文件中的: :List of dyna ...

  5. 转载论文关于fir滤波器的fpga实现

    摘 要 本文讨论的FIR滤波器因其具有严格的线性相位特性而得到广泛的应用.在工程实践中,往往要求信号处理具有实时性和灵活性,本论文研究FIR的FPGA解决方案正体现了电子系统的微型化和单片化. 本论文 ...

  6. Vivado 与 Modelsim 联合仿真

    1 编译库 用命令行 用vivado工具 vivado 有很多 IP核的接口 已经与 ISE的核 不太一样了,比如fir ,接口就是这样的: fir_lp fir_lp_ip(    .aclk  ( ...

  7. fir.im Weekly - 关于 iOS10 适配、开发、推送的一切

    "小程序"来了,微信变成名副其实的 Web OS,新一轮的Web App 与Native App争论四起.程序员对新技术永远保持灵敏的嗅觉和旺盛的好奇心,@李锦发整理了微信小程序资 ...

  8. fir.im Weekly - iOS / Android 动态化更新方案盘点

    动态化更新是 App 开发必然面对的问题.在 iOS 环境下,Apple 开发者们像是" 带着手铐脚镣跳舞" ,相比之下 Android 开发者会轻松一点,有很多相关的开源框架帮助 ...

  9. fir.im Weekly - APP 性能监测优化 二三事

    每一个成功的 App,都拥有强大的性能体验.本期 fir.im Weekly 整理了微信读书.美团外卖. 天猫.美团点评技术团队的关于性能监测优化方面策略和工具的分享,一起来看看. 微信读书 iOS ...

随机推荐

  1. ABAP-SMARTFORMS

  2. Java LinkedList的实现原理

    LinkedList是Java List类型的集合类的一种实现,此外,LinkedList还实现了Deque接口.本文基于Java1.8,对于LinkedList的实现原理做一下详细讲解. (Java ...

  3. ubuntu upstart启动流程分析

    ubuntu自从6.10版本之后就使用了较新的upstart机制来进行系统的初始化. upstart是一种基于事件驱动的服务启动机制,可以使多个系统任务在保持依赖关系的前提下并发启动(据说这样这样启动 ...

  4. JAVA的String类的常用方法(转载)

    Java-String类的常用方法总结   一.String类String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的f ...

  5. 大型运输行业实战_day04_1_搭建ssm框架最容易犯的错误

    错误1.MapperScannerConfigurer中应该去扫描包,而不是接口 如果出现上述错误,报错如下,注意我们在看报错日志的时候一点要从 后往前看 错误2.没有配置别名,又要使用别名 命名不规 ...

  6. java小知识点简单回顾

    1.java的数据类型分为两种:简单类型和引用类型(数组.类以及接口).注意,java没有指针的说法,只有引用.简单类型的变量被声明时,存储空间也同时被分配:而引用类型声明变量(对象)时,仅仅为其分配 ...

  7. iOS下JS与OC互相调用(七)--Cordova 环境搭建

    Cordova大家可能比较陌生,但肯定听过 PhoneGap ,Cordova 就是 PhoneGap 被 Adobe 收购后所改的名字.它是一个可以让 JS 与原生代码互相通信的一个库,并且提供了一 ...

  8. (hash map)Two Sum, sorted(排序+双指针)closest,小于或大于的对数,组成不同的对数

    原版 sorted [抄题]: [思维问题]: 存sum - nums[i](补集),若出现第二次则调出 [一句话思路]: hashmap中,重要的数值当做key,角标当做value. [画图]: [ ...

  9. PostgreSQL+pgpool-II复制方案

    目录 PostgreSQL+pgpool-II复制方案 1. Pgpool-II介绍 2. pgpool-II安装 2.1 安装pgpool-II yum源,并安装pgpool-II 2.2 添加Pg ...

  10. php 下 html5 XHR2 + FormData + File API 上传文件

    FormData的作用: FormData对象可以帮助我们自动的打包表单数据,通过XMLHttpRequest的send()方法来提交表单.当然FormData也可以动态的append数据.FormD ...