没有合适的资源?快使用搜索试试~ 我知道了~
首页FPGA设计原则及技巧详解-完整版.pdf
FPGA设计原则及技巧详解-完整版.pdf
需积分: 35 22 下载量 10 浏览量
更新于2023-03-03
评论 1
收藏 774KB PDF 举报
主要对FPGA的设计原则及技巧进行了较为详细的讲解。 全文一共32页,涉及FPGA的介绍、开发流程、注意事项、设计指导性原则、设计思想与技巧等内容。
资源详情
资源评论
资源推荐
1 电子发烧友运营战队整理
http://bbs.elecfans.com/
FPGA 设计原则及技巧详解
1
目录
FPGA 是什么 ............................................................................................................................................... 2
FPGA 开发流程及编程思想 .................................................................................................................... 8
典型 FPGA 开发流程与注意事项 .......................................................................................................... 9
基于 FPGA 的 SOC 设计方法 ............................................................................................................... 11
学习 FPGA100 个值得注意的要点 ..................................................................................................... 12
FPGA 设计指导性原则 ........................................................................................................................... 21
FPGA 设计思想与技巧 ........................................................................................................................... 28
2
FPGA 是什么
1. FPGA 与单片机的区别?
单片机和 FPGA 的区别,本质是软件和硬件的区别。单片机设计属软件范畴;它的硬
件(单片机芯片)是固定的,通过软件编程语言描述软件指令在硬件芯片上的执行;FPGA
设计属硬件范畴,它的硬件(FPGA)是可编程的,是一个通过硬件描述语言在 FPGA 芯片
上自定义集成电路的过程;二者最大的区别:单片机(无论哈佛总线结构或者冯诺依曼结
构)均为取出指令->执行,指令是顺序执行的(即使是中断,其发生后的中断服务程序也
是顺序执行的);而 FPGA(包括 CPLD)是基于逻辑门和触发器的,它是并行执行方式,即
当 CLOCK 上升沿到来时,所有的触发器都会动作,它没有取出指令->执行这种操作,数
字电路中所有逻辑门和触发器(D,SR 等)均可以实现,它适合真正意义上的并行任务处
理。
2. 单片机、FPGA、DSP、ASIC 的区别
1)ASIC 原本就是专门为某一项功能开发的专用集成芯片,集成度很低,成本很低,
可是够用了。后来 ASIC 发展了一些,称为半定制专用集成电路,相对来说更接近 FPGA,
甚至在某些地方,ASIC 就是个大概念,FPGA 属于 ASIC 之下的一部分。
2)FPGA 基本就是高端的 CPLD,数字电路。这种器件是用逻辑门来表述性能的。本
身他就是一堆的逻辑门,与非门、或非门、触发器(可以用与非门形成吧)等基本数字器
件,编程决定了有多少器件被使用以及它们之间的连接。通过硬件描述语言把它转成电路
连接,从最基本的逻辑门层面上连接成电路(参见数字电路书上那些全加器触发器什么
的)。应该说,虽然看起来像一块 CPU,其实是完全硬件实现的。它是在 PAL、GAL、EPLD
等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半
定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的
缺点。 FPGA 在抗干扰,速度上有很大优势。
后来因为写代码麻烦,对控制部分比较薄弱,本来跟其他 CPU 配合使用,即麻烦的算
法 CPU 提交给 FPGA,FPGA 算完把结果再返回给 CPU。可是这样外围电路就变得麻烦。
于是提出了 SOC 设计方法,就是直接在 FPGA 里写一个 CPU 出来,既然 FPGA 万能,
做个 CPU 自然毫无压力。
这其中还有软核和硬核的区别,不过除了性能,使用方法大同小异。所谓 IP 核,就是
把各种专用集成电路用硬件描述语言描述,然后烧到 FPGA 里形成专门的电路,这样就不
必另外搭芯片了,所有的电路在一片 FPGA 里面形成。
3)DSP 实际应该称为 DSPs,即用于 DSP 处理的专用芯片。跟普通计算机的区别一方
面是他是哈佛结构的,也就是数据和程序空间分开(普通计算机是冯诺依曼结构)。另一方
面他有流水线结构,不过现在其他也有了,见贤思齐。再一方面他有专用的硬件算法电
路,用以完成 DSP 运算,比如最基本的乘法累加。上过 DSP 的就知道,蝶形算法 FFT 什么
的,拆成最基本单元就是乘法累加,把这部分加速了,整体性能就有非常大的提高。DSP
对于流媒体的处理能力远远的优于通用 CPU。所以你看现在手机 CPU,至少语音部分都是
3
用 DSP 的。后来 DSP 概念也复杂化,各家都把一个控制核心整合到 DSP 里面,比如现在
的智能手机芯片。可以看一下高通或者 TI 的片,基本是一个 ARM 核控制整体运算,一个
DSP 处理语音编解码,一个 GPU 负责图像运算,一个基带和天线处理模块负责通信,再加
一些七七八八的东东比如 GPS 模块什么的。
4)单片机就是一个百搭的通用 CPU,是集成在单一芯片上的微型计算机系统,麻雀
虽小可是五脏俱全,也有运算器、控制器、存储器、总线及输入输出设备,采用也是存储
程序执行的方式,对单片机的编程就是对其中的 ROM 写入程序,在加电后 ROM 中的程序
会像计算机内存中的程序一样得到逐条的执行。单片机计算速度和性能有限,但在一些基
本控制上搓绰绰有余。
单片机提供各种接口来对整体进行控制,相当一个总调度,当然,简单的功能一片
CPU 独立工作也就完成了。原来的 51 系列就是一堆 IO 口,后来慢慢的把常用的 PWM,AD
之类的功能加入了单片机。主要包括用了无数年仍然牛逼各大学必教的 51 系列,还有
AVR,PIC,ARM,HOTEK……其实 ARM9 以后,已经说不清 ARM 算哪类了,目前的架构来
看,更接近 DSP。
单片机和嵌入式通过主函数或者操作系统来实现任务调度的途径来响应各种外部条件
触发,并通过软件输出相应的状态来实现电子系统的正常工作。FPGA 是通过纯硬件来实
现各种激励的相应的。
3. FPGA 与 DSP 的比较
DSP 和 FPGA 是嵌入式开发处理器的三大巨头之二,很多刚刚接触嵌入式的朋友都会
心存疑问,到底 DSP 和 FPGA 哪个牛一点,学哪种好一点?FPGA 与 DSP 相比较,哪个更
有前途?今天,我就以自己的经验,和大家通俗介绍一下吧:
FPGA 是英文 Field Programmable Gate Array(现场可编程门阵列)的缩写,它是在
PAL、GAL、PLD 等可编程器件的基础上进一步发展的产物,是专用集成电路(ASIC)中集
成度最高的一种。FPGA 采用了逻辑单元阵列 LCA(Logic Cell Array)这样一个新概念,内
部包括可配置逻辑模块 CLB(Configurable Logic Block)、输出输入模块 IOB(Input Output
Block)和内部连线(Interconnect)三个部分。用户可对 FPGA 内部的逻辑模块和 I/O 模块
重新配置,以实现用户的逻辑。它还具有静态可 重复编程和动态在系统重构的特性,使得
硬件的功能可以像软件一样通过编程来修改。作为专用集成电路(ASIC)领域中的一种半
定制电路,FPGA 既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺
点。可以毫不夸张的讲,FPGA 能完成任何数字器件的功能,上至高性能 CPU,下至简单的
74 电路,都可以用 FPGA 来实现。FPGA 如同一张白纸或是一堆积木,工程师可以通过传
统的原理图输入法,或是硬件描述语言自由的设计一个数字系统。通过软件 仿真,我们可
以事先验证设计的正确性。在 PCB 完成以后,还可以利用 FPGA 的在线修改能力,随时修
改设计而不必改动硬件电路。使用 FPGA 来开发数字电 路,可以大大缩短设计时间,减少
PCB 面积,提高系统的可靠性。
DSP(digital singnal Processor)是一种独特的微处理器,有自己的完整指令系统,是
以数字信号来处理大量信息的器件。一个数字信号处理器在一块不大的芯片内包括有控制
单元、运算单元、各种寄存器以及一定数量的存储单元等等,在其外围还可以连接若干存
储器, 并可以与一定数量的外部设备互相通信,有软、硬件的全面功能,本身就是一个微
型计算机。DSP 采用的是哈佛设计,即数据总线和地址总线分开,使程序和数据 分别存储
在两个分开的空间,允许取指令和执行指令完全重叠。也就是说在执行上一条指令的同时
4
就可取出下一条指令,并进行译码,这大大的提高了微处理器的速 度 。另外还允许在程
序空间和数据空间之间进行传输,因为增加了器件的灵活性。其工作原理是接收模拟信
号,转换为 0 或 1 的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片
中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速
度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益
重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。由于
它运算能力很强,速度很快,体 积很小,而且采用软件编程具有高度的灵活性,因此为从
事各种复杂的应用提供了一条有效途径。根据数字信号处理的要求,
上面都是一些基本概念的介绍,下面我就来通俗介绍一下,在 DSP 里,你是一个软件
设计者,硬件已经完全固化,你所要做的,就是在这个固定的硬件平台实现其功能的最优
化,一般 TI 的 DSP 涉及最多的是一些基本的 BIOS 操作系统之间的任务调度,以及算法改
进与优化等待, DSP 的关键优势包括其对于新型及复杂算法时的更短的开发时间,以及能
够运行多种算法的灵活性。
而对于 FPGA 来说,你是一个硬件设计者,FPGA 就是一张白纸,上面写什么,画什么
都取决于你。同样一片 FPGA,菜鸟和高手实现的功能会是天壤之别,FPGA 的最大优势在
于硬件实现已及通过并行处理实现的效率增益。使用 FPGA,您大多的时间并非进行算法
设计与优化,而是逻辑设计与时序约束等等。
下面再举一个最通俗的例子,同样使用 FPGA 与 DSP,对图像进行处理,这里的算法
采用中值滤波,中值滤波是数字图像处理中十分常见也是非常有用的一种图像处理算法,
其基本步骤如下:
中值滤波法将每一象素点的灰度值设置为该点某邻域窗口内的所有象素点灰度值的中
值.
实现方法:
1:通过从图像中的某个采样窗口取出奇数个数据进行排序
2:用排序后的中值取代要处理的数据即可
中值的计算在于对滑动窗口内像素的排序操作。要进行排序,就必须对序列中的数据
像素做比较和交换,数据元素之间的比较次数是影响排序速度的一个重要因素。传统的排
序串行算法是基于冒泡排序法,若窗口内像素为 m 个,则每个窗口排序需要做 m(m-2)/2
次像素的比较操作,时间复杂度为 O(M 平方) 。此外,常规的滤波算法使窗口每移动一
次,就要进行一次排序,这种做法实际上包含了大量重复比较的过程。若一幅图像的大小
为 N*N ,则整个计算需要 O(M 平方)时间,当窗口较大时计算量很大,较费时。
以下是采用 TI C6000 系列的 DM642 上,采用内联函数优化过的中值滤波算法
void IMG_median_Row( const unsigned short *restrict i_data, int n, unsigned short
*restrict o_data)
{
const int *line0, *line1, *line2;
int *line_y;
剩余32页未读,继续阅读
ting_qifengl
- 粉丝: 2105
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- stc12c5a60s2 例程
- Android通过全局变量传递数据
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0