FPGA、CPLD、ASIC、DSP、单片机的区别
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. FPGA
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA 上进行测试,是现代IC设计验证的技术主流。
这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。
在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。
一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。
什么是FPGA?
简单来说,FPGA就是“可反复编程的逻辑器件”。
FPGA取自
Field Programmable Gate Array的首个字母,代表现场(Field)可编程(Programmable)逻辑阵列(Gate Array)。
由于在产品发售后您仍然可以对产品设计作出修改,因此我们可以顺利地对产品进行更新以及针对新的协议标准作出相应改进。
相对于对售后产品设计无法进行修改的ASIC和ASSP来说,这是FPGA特有的一个优势。
由于FPGA 可编程的灵活性以及近年来科技的快速发展,FPGA也正向高集成,高性能,低功耗,低价格的方向发展,并具备了与ASIC和ASSP 同等的性能,被广泛地使用在各行各业的电子及通信设备里。
FPGA与CPLD的区别
尽管很多人听说过CPLD,但是关于CPLD与FPGA之间的区别,了解的人可能不是很多。
虽然FPGA与CPLD都是“可反复编程的逻辑器件”,但是在技术上却有一些差异。
简单地说,FPGA就是将CPLD的电路规模,功能,性能等方面强化之后的产物。
一般而言,CPLD与FPGA之间的区别的如下所示(当然也有例外)。
FPGA的应用
那么在哪些产品中可以采用FPGA呢?
如下图所示,FPGA被广泛地使用在通讯基站、大型路由器等高端网络设备,以及显示器(电视)、投影仪等日常家用电器里。
FPGA已经从最早的只应用于辅助功能以及胶合逻辑(连接各种功能块以及集成电路的逻辑电路)的简单器件,发展到现今众多产品的核心器件。
FPGA的优势:
FPGA最大的优势特点就是能够缩短开发所需时间。
换句话说,通过使用FPGA,设计人员可以有效地利用每一分钟进行开发。
例如,在开发过程中使用FPGA与否,可以导致开发时间上1/2 ~1/3的差别。
这使得FPGA成为实现“少量多品种”以及“产品周期短”市场不可缺少的器件之一。
此外,我们将列举出FPGA其他的优势特点。
设计流程
FPGA的设计流程可分为几个主要步骤,因此您可能会问“难道每个步骤都要学习不同的设计软件吗?”,答案是不需要。
FPGA所有的项目开发都能够在同一个FPGA设计软件中完成。
并且设计软件还具备许多便利的功能,自动执行设计过程中所需要的设定。
注:FIFO(First Input First Output),先入先出队列
原理:FIFO队列不对报文进行分类,当报文进入接口的速度大于接口能发送的速度时,FIFO按报文到达接口的先后顺序让报文进入队列,同时,FIFO在队列的出口让报文按进队的顺序出队,先进的报文将先出队,后进的报文将后出队。
FIFO一般用于不同时钟域之间的数据传输,比如FIFO的一端是AD数据采集,另一端
是计算机的PCI总线,假设其AD采集的速率为16位 100K SPS,那么每秒的数据量为100K ×16bit=1.6Mbps,而PCI总线的速度为33MHz,总线宽度32bit,其最大传输速率为1056Mbps,在两个不同的时钟域间就可以采用FIFO来作为数据缓冲。
另外对于不同宽度的数据接口也可以用FIFO,例如单片机为8位数据输出,而DSP可能是16位数据输入,在单片机与DSP 连接时就可以使用FIFO来达到数据匹配的目的。
重要参数:
FIFO的宽度(THE WIDTH),指FIFO一次读写操作的数据位,就像MCU有8位和16位,ARM32位等等,FIFO的宽度在单片成品IC中是固定的,也有可选择的,如果用FPGA自己实现一个FIFO,其数据位,也就是宽度是可以自己定义的。
FIFO的深度(THE DEEPTH),指FIFO可以存储多少个N位的数据(若宽度为N)。
如一个
8位的FIFO,若深度为8,它可以存储8个8位的数据,深度为12 ,就可以存储12个8
位的数据,FIFO的深度可大可小,FIFO深度的计算并无一个固定的公式。
在FIFO实际工作中,其数据的满/空标志可以控制数据的继续写入或读出。
在一个具体的应用中不可能由一些参数精确算出所需的FIFO深度为多少,这在写速度大于读速度的理想状态下是可行的,但在实际中用到的FIFO深度往往要大于计算值。
一般来说根据电路的具体情况,在兼顾系统性能和FIFO成本的情况下估算一个大概的宽度和深度。
而对于写速度慢于读速度的应用,FIFO的深度要根据读出的数据结构和读出数据由那些具体的要求来确定。
满标志:FIFO已满或将要满时由FIFO的状态电路送出的一个信号,以阻止FIFO的写操作继续向FIFO中写数据而造成溢出(overflow)。
空标志:FIFO已空或将要空时由FIFO的状态电路送出的一个信号,以阻止FIFO的读操作继续从FIFO中读出数据而造成无效数据的读出(underflow)。
读时钟:读操作所遵循的时钟,在每个时钟沿来临时读数据。
写时钟:写操作所遵循的时钟,在每个时钟沿来临时写数据。
读指针:指向下一个读出地址。
读完后自动加1。
写指针:指向下一个要写入的地址的,写完自动加1。
读写指针其实就是读写的地址,只不过这个地址不能任意选择,而是连续的。
FIFO分类:根据FIFO工作的时钟域,可以将FIFO分为同步FIFO和异步FIFO。
同步FIFO 是指读时钟和写时钟为同一个时钟,在时钟沿来临时同时发生读写操作。
异步FIFO是指读写时钟不一致,读写时钟是互相独立的。
FIFO设计难点:产生可靠的FIFO读写指针和生成FIFO“空”/“满”状态标志。
FIFO设计的难点在于怎样判断FIFO的空/满状态。
为了保证数据正确的写入或读出,而不发生溢出或读空的状态出现,必须保证FIFO在满的情况下,不能进行写操作,在空的状态下不能进行读操作。
怎样判断FIFO的满/空就成了FIFO设计的核心问题。
由于同步FIFO几乎很少用到,这里只描述异步FIFO的空/满标志产生问题。
2. CPLD
CPLD(Complex Programmable Logic Device)复杂可编程逻辑器件。
3. ASIC
ASIC(Application Specific Integrated Circuit),专用集成电路,在集成电路界被认为是一种为专门目的而设计的集成电路。
4. DSP
DSP(digital singnal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。
DSP芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用来快速的实现各种数字信号处理算法。
其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。
它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。
它的强大数据处理能力和高运行速度,是最值得称道的两大特色。
5. 单片机(MCU)。