时间:2024-07-29 来源:网络搜集 关于我们 0
FPGA是用来实现数字逻辑电路功能的芯片。目前市场上份额最大的有两家公司,为xilinx和altera(被intel收购)。
FPGA是基于查找表(LUT)结构的器件。FPGA为什么能实现数字电路功能,基于这一思想:设计者设计的数字电路,如果有n个输入,则最多有2的n次方个结果,如果将所有结果存在一个存储单元里面,就相当于实现了与非门的功能。
查找表本质上就是一个RAM,一般为4输入,也有6输入的,比如xilinx的7系列,更先进。
FPGA的原理,设计者通过原理图或者硬件描述语言描述了一个逻辑电路后,FPGA厂商提供的集成开发工具算出这个逻辑电路的所有结果,将真值表写入RAM中,这样每输入一个信号进行逻辑电路运算,都等于输入了一个地址进行查表,找到地址对应的内容,然后输出内容即可。比如有abcd4个输入,abcd为0001,输出y在真值表上是1。在查找表上,相当于,查找地址0001,找到地址对应的内容,内容结果是1。
从真值表上看,查找表与数字逻辑电路具有相同的功能,查找表执行速度更快,规模更大。
FPGA里面主要逻辑资源为可配置的逻辑块(CLB),用于实现时序和组合电路。每个CLB里面包含了查找表,触发器,算术逻辑进位,触发器。然后每个CLB还连接一个开关矩阵,用于访问布线资源。
FPGA里面还有IOB,BRAM,DCM,DCI,布线资源等内部功能模块,暂且不提。
要完整实现一个数字电路,过程为:
1.设计硬件电路
分为三步,1画原理图,2画pcb,3生产电路板和焊接元器件。
通俗的讲,就是如何在电路板上焊上FPGA和其它元器件,FPGA需要外围电路支持才能工作,比如电源,晶振,jtag接口等。画原理图就是设计电路板,需要哪些元器件,各元器件引脚怎么连接,连到哪儿。画pcb就是根据原理图,元器件放在什么位置,把元器件的引脚都画出来,到时候造出电路板可以把元器件焊上去,然后画走线,哪个元器件引脚连哪个元器件引脚,都画出来。电路板造出来,焊好元器件,通过了简单测试。
这时候就搭建好了实现数字电路功能的FPGA硬件平台。
2.设计软件功能
设计好数字电路功能后,需要把设计用某种形式表示出来,输入给EDA开发工具,常用方法是用硬件描述语言。用verilog HDL来编程,它是硬件描述语言,写好程序,综合优化,布局布线,通过后,生成执行文件,烧写进FPGA中执行,也就是调试。当然严格来说,需要进行功能仿真,综合后仿真,时序仿真,板级仿真,这些都暂且不提。如果程序写的够好,一般仿真就没问题。
因为是描述语言,比较高级,所以需要综合这个功能,把我们的描述转化成低层次的描述,也就是将设计输入编译成各种门,触发器,RAM等逻辑基本单元组成的逻辑连接网表。这个逻辑连接网表还没连线,所以不是真实的门级电路。真实的门级电路需要通过布局布线功能实现。最后就生成位数据流文件,也就是执行文件,通过JTAG接口烧写进FPGA。
因为主流FPGA可以反复烧写程序,一般也不内置存储器,所以断电后程序就没了,需要重新烧写。给它外部配上一个存储器,把程序存在存储器里,这样断电再上电,FPGA会自己读存储器里的程序,实现可持续的执行。