原创 FPGA实践笔记(二)—FPGA的应用范围

2012-12-18 15:32 2639 7 8 分类: FPGA/CPLD 文集: FPGA实践笔记

    在比较早的时候,要实现某一特定的逻辑功能,需要用到很多通用的逻辑器件来实现功能。大家可以想象到一个板卡上堆满了一大堆的74LSXX 之类的芯片吗?在当时遇到这种情况,有两种解决方案:一,无可奈何的使用大堆通用逻辑器件。二,自己做ASIC,把这么多通用逻辑器件才能实现的功能集成在一个芯片上。鉴于这种情况,FPGA被发明出来,提供了第三种解决方案。

    现在FPGA的应用已经越来越广泛了。就我个人在通信设备行业工作的经验,谈谈我对FPGA应用范围的见解。因为博主没有在其他行业做过,可能总结出来有点以偏概全,希望大家见谅。

    FPGA的应用范围一般分为三类:

  一. IC设计中的一种验证平台。在数字IC设计流程中,既有基于PC/工作站/服务器上的对IC功能的软件仿真,也有基于FPGA的实际电路测试。基于软件的仿真脱离实际的硬件,仿真速度较慢。而基于FPGA的测试,由于电路已经实际下载到FPGA中,相当于是一个接近或者是相当于实际运行环境的一种测试,当然由于现在有些IC规模很大,跑的频率很高,所以即使是最高端的FPGA往往只能验证部分功能或者在低于设计频率的情况下降频实现。当数字IC设计工程师把电路/代码写好后,经过综合,布局布线后即可下载到FPGA里进行测试。

 二.  在较小批量的产品中替代专用芯片。 在一些产品中,由于种种原因买不到专用芯片或者专用芯片价格过于昂贵,那么在这种情况下可以考虑使用FPGA来替代专用芯片实现产品的功能。比如说在一些高性能的多路高清视频广播系统,或者是一些通信设备,比如说基站,接入设备(PON),路由器等也常常可见到FPGA的身影。

三. 在一些要求灵活的产品中也会出现FPGA的身影。在某些无线通信设备中,有一种技术叫SDR技术,即软件无线电技术,大致上要求收发设备(Transceiver)能够灵活支持多种制式,或者通过版本升级/修改即可实现对不同制式的接收而不用更换硬件。在这种情况下,作为实现基带处理功能的FPGA由于其灵活性(可编程性)在这方面比固定的专用芯片(ASIC)有着天生的优势。

    大致上就讲这么多,下次讲讲FPGA的使用特点,及他与MCU,DSP的不同之处。

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户377235 2013-12-5 16:18

感谢博主分享,受教了

用户403664 2013-5-30 09:29

被你刷屏了 干得好
相关推荐阅读
用户1501359 2015-06-15 00:19
小弟编写的FPGA设计经验总结感悟书籍:FPGA深度解析 准备上架销售,北航出版社出版
全书目录如下,从第九章开始为笔者对FPGA常用模块设计思想的深度阐述和解析,为作者从事逻辑设计之经验感悟与总结,希望大家多多指教 目录   第1章FPGA简介   1.1什么是...
用户1501359 2013-01-27 18:56
DSP硬件实现的优化(八)— saturation, rounding的原理和实现
    在数字信号处理系统中,大部分情况下数据都是用定点表示。但是由于DSP经常使用到乘法器,那么两个定点数相乘后的数的位宽将是两个操作数位宽之和。比如说A*B,A的位宽是(1,7,4),B的位宽是(...
用户1501359 2013-01-24 21:26
DSP硬件实现的优化(七)—硬件实现中的定点表示
    用硬件实现DSP基本上是基于定点的算法。什么叫做定 点呢?定点的意思就是小数点的位置是确定的,这是跟浮 点不同的地方。比如说,有一种常用的表示定点的方法, 比如说一个数的定点方...
用户1501359 2013-01-21 22:27
DSP硬件实现的优化(六)—多个M比特有符号数做累加运算时符号位的优化处理方法
    在通信系统中,经常会遇到多个数进行累加的情况。一般情况下,在更好的掌控时序的目标下,我们会选择用基于CSA结构的Wallace tree进行加法树压缩。基本上,参加运算的数都是有符号数,在这种...
用户1501359 2013-01-19 22:54
DSP硬件实现的优化(五)—输入数据带缺口时反馈环路的优化
    在通信数字信号处理中,经常会遇到带有反馈环路的设计。例如数字时钟恢复或者自适应均衡滤波器。该类设计的基础都是对输入数据进行滤波或者均衡,调相,而进行上述计算所用到的系数来自于该滤波器或者均...
用户1501359 2013-01-14 20:30
FPGA实践笔记(七)—verilog组合逻辑描述用assign或者always@(*)的区别和值得注意之处
    verilog描述组合逻辑一般常用的有两种:assign赋值语句和always@(*)语句。两者之间的差别有:     1. 被assign赋值的信号定义为wire型,被always@...
我要评论
1
7
关闭 站长推荐上一条 /3 下一条