关于FIR的modelsim
(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的更多相关文章
- quartus ip核破解
在证书文件中添加一段: FEATURE 6AF7_0012 alterad 2035.12 permanent uncounted E75BE809707E VENDOR_STRING="i ...
- fpga ip
原文地址:altera FIR ip核 license破解作者:王永刚Aether 在证书文件中添加一段: FEATURE 6AF7_0012 alterad 2035.12 permanent un ...
- 基于FPGA的音频信号的FIR滤波(Matlab+Modelsim验证)
1 设计内容 本设计是基于FPGA的音频信号FIR低通滤波,根据要求,采用Matlab对WAV音频文件进行读取和添加噪声信号.FFT分析.FIR滤波处理,并分析滤波的效果.通过Matlab的分析验证滤 ...
- modelsim 仿真xilinx fir ip
到现在不管fir ip 用的对不对,但是在使用modelsim是可以仿真fir ip的. 具体步骤: 1.仿真库,添加到modelsim目录配置文件: 2.将这个文件中的: :List of dyna ...
- 转载论文关于fir滤波器的fpga实现
摘 要 本文讨论的FIR滤波器因其具有严格的线性相位特性而得到广泛的应用.在工程实践中,往往要求信号处理具有实时性和灵活性,本论文研究FIR的FPGA解决方案正体现了电子系统的微型化和单片化. 本论文 ...
- Vivado 与 Modelsim 联合仿真
1 编译库 用命令行 用vivado工具 vivado 有很多 IP核的接口 已经与 ISE的核 不太一样了,比如fir ,接口就是这样的: fir_lp fir_lp_ip( .aclk ( ...
- fir.im Weekly - 关于 iOS10 适配、开发、推送的一切
"小程序"来了,微信变成名副其实的 Web OS,新一轮的Web App 与Native App争论四起.程序员对新技术永远保持灵敏的嗅觉和旺盛的好奇心,@李锦发整理了微信小程序资 ...
- fir.im Weekly - iOS / Android 动态化更新方案盘点
动态化更新是 App 开发必然面对的问题.在 iOS 环境下,Apple 开发者们像是" 带着手铐脚镣跳舞" ,相比之下 Android 开发者会轻松一点,有很多相关的开源框架帮助 ...
- fir.im Weekly - APP 性能监测优化 二三事
每一个成功的 App,都拥有强大的性能体验.本期 fir.im Weekly 整理了微信读书.美团外卖. 天猫.美团点评技术团队的关于性能监测优化方面策略和工具的分享,一起来看看. 微信读书 iOS ...
随机推荐
- 编写ios和android共用的c/c++库时 使用iconv的问题(转)
因为在项目中需要同时维护ios和Android,不同的代码不利于开发的便捷和以后的维护,所以在最近的一个项目中,两种手机应用的通信部分打算使用c/c++库来统一编写,ios调用.a静态库,androi ...
- Spring在代码中获取properties文件属性
这里介绍两种在代码中获取properties文件属性的方法. 使用@Value注解获取properties文件属性: 1.因为在下面要用到Spring的<util />配置,所以,首先要在 ...
- Java Thread.interrupt interrupted
Java Thread.interrupt @(Base)[JDK, 线程, interrupt] 原文地址,转载请注明 下面这个场景你可能很熟悉,我们调用Thread.sleep(),conditi ...
- DataFrame 取值
通过 DataFrame[ ]方式,取得得都是行, [ ] 中,添加过滤条件 data = pd.DataFrame( np.arange(16).reshape(4,4), index=['OP', ...
- javascript 函数对象
http://hi.baidu.com/gdancer/blog/item/a59e2c12479b4e54f919b814.html jQuery的一些写法就是基于这篇文章的原理的.. 函数 ...
- 如何使用Python画地图数据
http://blog.csdn.net/wen_fei/article/details/78355699
- 精确除法:from __future__ import division
在python中做除法运算,使用1/2运行结果为0,为取结果的整数部分 如果用1.0/2或1/2.0运行结果为0.5,按照浮点数的位数取结果 但是实际应用中我们需要取除法的精确结果,我们就可以在运行前 ...
- selinux介绍及关闭selinux指南
selinux简介 SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的 实现,是 Linux历史上最杰出的新安全子系统.NSA是在Linux ...
- 二叉树的锯齿形层次遍历 · Binary Tree Zigzag Level Order Traversal
[抄题]: 给出一棵二叉树,返回其节点值的锯齿形层次遍历(先从左往右,下一层再从右往左,层与层之间交替进行) [思维问题]: 不知道反复切换要怎么做:用boolean normalOrder当作布尔型 ...
- ROS两种workspace :overlay rosbuild_ws->catkin_ws->ROS库,
概念 ROS里面有一系列概念,作为初学者,最先接触的概念无非是node, package和workspace. node node是ROS里面最小的执行单位,你可以把node看成是一个main函数,当 ...