关于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 ...
随机推荐
- linux系统安装中文支持,解决中文乱码问题
怎么设置Linux系统中文语言,这是很多小伙伴在开始使用Linux的时候,都会遇到一个问题,就是终端输入命令回显的时候中文显示乱码.出现这个情况一般是由于没有安装中文语言包,或者设置的默认语言有问题导 ...
- Haskell语言学习笔记(53)Data.Sequence
Data.Sequence Prelude> import Data.Sequence as Seq Prelude Seq> :set -XOverloadedLists Prelude ...
- Ansible介绍/安装/入门
http://docs.ansible.com/ansible/ https://galaxy.ansible.com/ Ansible是一个IT自动化工具. 它可以配置系统,部署软件,并编排更先进的 ...
- Hadoop 集群的一些问题
1.创建用户hadoop adduser hadoop passwd hadoop usermod -a -G hadoop hadoop chown -R hadoop:hadoop /data ...
- MySql log_bin
[MySql log_bin] 1.查看 log_bin 是否启用. 默认情况下,mysql server 不启用 binlog(验证方法1: 执行"show variables" ...
- GridView自定义分页样式(上一页,下一页,到第几页)
今天要为网站做一个文章列表,发现GridView的分页样式很难看,于是结合网上的例子,自己做了一个.不是很美观,不过还是很实用的,先看下效果吧,如图(1). 图(1)GridView分页效果 自定义G ...
- tortoise svn 请求的名称有效,但是找不到请求的类型的数据
可能是博客园出bug了,现在无法放图,间断重复刷新十多次依然如故,弃之 这个问题是在安装完svn服务器(visual svn)后复制url,tortoise svn import 粘贴url后 出现的 ...
- Partition List双色问题链表版
[抄题]: Given a linked list and a value x, partition it such that all nodes less than x come before no ...
- [leetcode]340. Longest Substring with At Most K Distinct Characters至多包含K种字符的最长子串
Given a string, find the length of the longest substring T that contains at most k distinct characte ...
- [leetcode]250. Count Univalue Subtrees统计节点值相同的子树
Given a binary tree, count the number of uni-value subtrees. A Uni-value subtree means all nodes of ...