1.概念
FPGA——Field Programmable Gate Array——现场可编程门阵列;通俗的来讲,就是一个可编程的集成电路,或者说控制器。
2.与其他控制器的区别
1)单片机、DSP等等:内部一些结构(乘法器、触发器等)的数量都是确定的;通过算法使其工作。
2)FPGA:可以通过编程改变内部的结构;可以构建出乘法器、触发器等等;并且是可多次改变。
3)ASIC:专用集成电路,也可以说是专用控制器,只能实现固定的功能,而且内部结构不可改变。
!!!:单片机、DSP等通过程序编程使其实现按照时间一条线的顺序实现功能。
FPGA、ASIC:构建特定电路结构,并行、多条时间线去执行一些功能。
3. FPGA原理
1)采用一种可以重复配置的结构—查找表(LUT)—来实现其数字逻辑结构的改变。 2)查找表本质上是一个RAM,例如4输入的LUT,可以看作有4位地址线的RAM。 3) 比如如果要实现Y=A&B&C
①.逻辑电路:
②.FPGA实现:首先使用EDA工具写出“Y=A&B&C”,EDA工具进行分析,得出A、B、C的组合与对应的Y值,真值表如下: 将结果写到查找表中,从而实现该代码的功能 输入的A、B、C相当于地址,通过A、B、C的地址读出的值赋值给Y。 4).FPGA内部有“软内核”和“硬内核”之分 “软内核”: “硬内核”:
4.开发步骤
RTL设计
仿真验证
逻辑综合
布局布线
时序收敛
硬件测试
5.编程语言
FPGA一般使用硬件描述语言---HDL、寄存器传输级语言RTL,也可以C、python等语言进行编程(不常用)。
主流的硬件描述语言:
VHDL :语法更加严谨
Verilong :语法更灵活,更像C语言
SystemVerilong:
6.工具软件
1.开发: Xilinx(赛灵思)的Vivado; Altera(阿尔特拉)的Quartus
2.仿真:Modelsim、QuestaSim
|