FPGA的开发是指对可编程逻辑芯片(Field-Programmable Gate Array)进行软硬件设计和编程的过程。在FPGA开发中,通过使用硬件描述语言(HDL)像VHDL或Verilog来编写逻辑电路的功能描述,然后通过综合和布局布线工具将其映射到FPGA芯片上。
开发人员还可以使用高级编程语言(如C或C++)进行软件开发,并借助FPGA提供的软件开发工具或开发环境进行调试和验证。
FPGA的开发旨在实现特定的硬件功能,因此具有一定的灵活性和可重构性,使其能够适应不同的应用领域。通过FPGA开发,可以实现各种应用,包括数字信号处理、图像处理、网络通信、嵌入式系统等。
FPGA的开发流程主要遵循ASIC开发流程的发展:
1、设计输入
原理图输入:一种最直接的描述方式,在可编程芯片发展的早期应用比较广泛,它将所需的器件从元件库中调出来,画出原理图。这种方法虽然直观并易于仿真,但效率很低,且不易维护,不利于模块构造和重用。更主要的缺点是可移植性差,当芯片升级后,所有的原理图都需要作一定的改动。
HDL输入:利用文本描述设计,可以分为普通HDL和行为HDL。普通HDL有ABEL、CUR等,支持逻辑方程、真值表和状态机等表达方式,主要用于简单的小型设计。而在中大型工程中,主要使用行为HDL,其主流语言是Verilog HDL和VHDL。这两种语言都是美国电气与电子工程师协会(IEEE)的标准,其共同的突出特点有:语言与芯片工艺无关,利于自顶向下设计,便于模块的划分与移植,可移植性好,具有很强的逻辑描述和仿真功能,而且输入效率很高。 除了这IEEE标准语言外,还有厂商自己的语言。也可以用HDL为主,原理图为辅的混合设计方式,以发挥两者的各自特色。
IP核输入:任何实现一定功能的模块叫做IP(Intellectual Property),IP核可以形成一个项目。
2、功能仿真
功能仿真也称为前仿真,在编译之前对用户所设计的电路进行逻辑功能验证(此时没有延迟信息,仅对初步的功能进行检测)。仿真前,要先利用波形编辑器和HDL等建立波形文件和测试向量(即将所关心的输入信号组合成序列),仿真结果将会生成报告文件和输出信号波形,从中便可以观察各个节点信号的变化。如果发现错误,则返回设计修改逻辑设计。
3、综合优化
综合即是将较高级抽象层次的描述转化成较低层次的描述。综合优化根据目标与要求优化所生成的逻辑连接,使层次设计平面化,供FPGA布局布线软件进行实现。目前的层次来看,综合优化指将设计输入编译成由与门、或门、非门、RAM、触发器等基本逻辑单元组成的逻辑连接网表,而并非真实的门级电路。