基于dsp_builder的算法在FPGA上的实现
基于dsp_builder的算法在FPGA上的实现
一、摘要
结合dsp_builder、matlab、modelsim和quartus ii等软件完成算法的FPGA实现。
二、实验平台
硬件平台:DIY_DE2
软件平台:quartus ii9.0 + ModelSim-Altera 6.4a (Quartus II 9.0) + dsp_builder9.0 + matlab2010b
三、软件平台的准备
1、软件的匹配
根据altera的官方文档,可以看到quartus ii、modelsim、dsp_builder和matlab的版本匹配信息。如图1所示。
http://www.altera.com/support/ip/dsp/ips-dsp-version.html
图1 软件版本匹配
一般情况下,quartus ii、modelsim和dsp_builder版本一定要匹配,而matlab版本高于规定的版本也可以,但这样做有可能会出现某些模块不能使用的情况。
2、软件的安装
安装与破解dsp_builder的步骤可以参看“清风醉明月”同学的文章,链接如下:
需要说明的是:
针对dsp_builder9.0版本的matlab版本应为2007b,而我的是2010b,虽说是兼容的,但是仍出现了些问题,如高级库的一些组件无法显示,如图2所示。最好的解决办法还是按照建议,使版本完全匹配。
图2 某些功能无法使用
四、例程
通过一个正弦波的例程阐述dsp_builder的使用流程。可参看潘松著《EDA技术与VHDL》(第3版)第9章的例程。
1、建立simulink设计模型
在matlab中,新建立一个simulink模型,如图3所示。
图3 建立的simulink模型
2、simulink模型仿真(系统级,即算法级)
设置好参数后,运行仿真,双击scope可以看到仿真波形,如图4所示。
图4 simulink仿真波形
3、SignalCompiler使用方法
在simulink中完成仿真验证后,就需要把设计转到硬件上加以实现。这是整个DSP builder设计中最关键的一步,据此可以获得针对FPGA的VHDL RTL代码。如图5所示。
图5 SignalCompiler
4、使用modelsim进行RTL级仿真
这一步,其实是对由.mdl文件转换的VHDL文件进行仿真验证,可以通过添加TestBench组件实现。如图6所示。
图6 TestBench
另外,Launch GUI选型,勾选的话,则直接启动modelsim进行仿真;不勾选的话,可以通过modelsim的Tools菜单下的TCL——>Execute Macro...查找工程文件夹下的sinwave_add.tcl文件进行仿真。
5、使用Quartus II实现时序仿真
上一步是功能仿真,即modelsim中的前仿真。这是进一步验证时序仿真的正确与否,即后仿真。这一步,需要说明几点:
(1)Quartus II 9.1之前的软件自带仿真组件,而之后软件不再包含此组件。
(2)可以用modelsim实现后仿真,验证时序仿真。
6、FPGA的验证
将设计下载到FPGA,进行验证。通过示波器验证波形的正确与否。
五、总结
上面的流程涉及到的各个部分的具体使用,可以参看altera的dsp_builder官方文档。
dsp_builder的介绍:http://www.altera.com.cn/literature/hb/dspb/hb_dspb_intro.pdf
dsp_builder的基本库:http://www.altera.com.cn/literature/hb/dspb/hb_dspb_std.pdf
dsp_builder的高级库:http://www.altera.com.cn/literature/hb/dspb/hb_dspb_adv.pdf
转载自:http://www.cnblogs.com/sunev/archive/2012/11/17/2774836.html
基于dsp_builder的算法在FPGA上的实现的更多相关文章
- 基于dsp_builder的算法在FPGA上的实现(转自https://www.cnblogs.com/sunev/archive/2012/11/17/2774836.html)
一.摘要 结合dsp_builder.matlab.modelsim和quartus ii等软件完成算法的FPGA实现. 二.实验平台 硬件平台:DIY_DE2 软件平台:quartus ii9.0 ...
- FPGA上如何求32个输入的最大值和次大值:分治
上午在论坛看到个热帖,里头的题目挺有意思的,简单的记录了一下. 0. 题目 在FPGA上实现一个模块,求32个输入中的最大值和次大值,32个输入由一个时钟周期给出.(题目来自论坛,面试题,如果觉得不合 ...
- 目标反射回波检测算法及其FPGA实现 之三:平方、积分电路及算法的顶层实现
目标反射回波检测算法及其FPGA实现之三: 平方.积分电路及算法的顶层实现 前段时间,接触了一个声呐目标反射回波检测的项目.声呐接收机要实现的核心功能是在含有大量噪声的反射回波中,识别出发射机发出的激 ...
- 目标反射回波检测算法及其FPGA实现 之二:互相关/卷积/FIR电路的实现
目标反射回波检测算法及其FPGA实现之二: 互相关/卷积/FIR电路的实现 前段时间,接触了一个声呐目标反射回波检测的项目.声呐接收机要实现的核心功能是在含有大量噪声的反射回波中,识别出发射机发出的激 ...
- 目标反射回波检测算法及其FPGA实现(准备篇): 用Verilog-HDL状态机控制硬件接口
基于FPGA的目标反射回波检测算法及其实现(准备篇) :用Verilog-HDL状态机控制硬件接口 前段时间,开发了一个简单的目标反射回波信号识别算法,我会分几篇文章分享这个基于FPGA的回波识别算法 ...
- 目标反射回波检测算法及其FPGA实现 之一:算法概述
目标反射回波检测算法及其FPGA实现之一:算法概述 前段时间,接触了一个声呐目标反射回波检测的项目.声呐接收机要实现的核心功能是在含有大量噪声的反射回波中,识别出发射机发出的激励信号的回波.我会分几篇 ...
- 云中的机器学习:FPGA 上的深度神经网络
人工智能正在经历一场变革,这要得益于机器学习的快速进步.在机器学习领域,人们正对一类名为“深度学习”算法产生浓厚的兴趣,因为这类算法具有出色的大数据集性能.在深度学习中,机器可以在监督或不受监督的方式 ...
- 基于Caffe的DeepID2实现(上)
小喵的唠叨话:小喵最近在做人脸识别的工作,打算将汤晓鸥前辈的DeepID,DeepID2等算法进行实验和复现.DeepID的方法最简单,而DeepID2的实现却略微复杂,并且互联网上也没有比较好的资源 ...
- QT:用QSet储存自定义结构体的问题——QSet和STL的set是有本质区别的,QSet是基于哈希算法的,要求提供自定义==和qHash函数
前几天要用QSet作为储存一个自定义的结构体(就像下面这个程序一样),结果死活不成功... 后来还跑到论坛上问人了,丢脸丢大了... 事先说明:以下这个例子是错误的 #include <QtCo ...
随机推荐
- Don't Be a Subsequence
问题 F: Don't Be a Subsequence 时间限制: 1 Sec 内存限制: 128 MB提交: 33 解决: 2[提交] [状态] [讨论版] [命题人:] 题目描述 A sub ...
- Reference resources
CentOS7 (精简操作指令) http://www.centoscn.com/CentOS/help/2016/0429/7147.html
- AGC 025 B - RGB Coloring
B - RGB Coloring Time limit : 2sec / Memory limit : 1024MB Score : 700 points Problem Statement Taka ...
- python3-关于GitHub的最基本操作
阅读目录 介绍 什么是GitHub? 创建存储库 创建一个分支 做一个提交 打开拉取请求 合并拉取请求 一.介绍 Hello World项目是计算机编程历史悠久的传统.这是一个简单的练习,可以让你在学 ...
- java读写文件及保留指定位小数
1)先上代码: public static void main(String[] args)throws IOException{ double[][] B=new double[1043][2102 ...
- Redis核心解读
http://www.wzxue.com/redis核心解读/
- sql server线程等待信息
http://www.cnblogs.com/lyhabc/articles/3236984.html http://blog.csdn.net/isoleo/article/details/4547 ...
- C#分析URL参数获取参数和值得对应列表(二)
不错博客: [C#HttpHelper]官方产品发布与源码下载---苏飞版http://www.sufeinet.com/thread-3-1-1.html http://blog.csdn.net/ ...
- isNaN使用的注意事项
NaN是JavaScript的特殊值,表示 Not a Number 用法: isNaN(numValue); 如果值是 NaN, 那么 isNaN 函数返回 true ,否则返回 false . 注 ...
- 关于接口 RandomAccess
今天看到java.util.Collections这个工具类中的 public static <T> void fill(List<? super T> list, T obj ...