FPGA指的是一款特殊的集成电路,当下最常见的集成电路是晶体管集成电路,如CMOS晶体管集成电路。晶体管集成电路是用金属导线把很多的晶体管聚集组合成逻辑门,储存单元成为一个电路,拥有一定的逻辑功能。
通常情况,设计数字逻辑电路的时候没有进行过用导线连接晶体管的实验。而是用一种硬件描述语言敲代码,再去运行综合软件(像Vivado),这样电路设计就完成了。
这一流程与现在工业界常见的ASIC设计流程相同。FPGA的设计流程一般有5个步骤:
电路设计-代码编写-功能防真-综合实现-上板调试。
关于电路设计
第一步就是根据需求规格制定电路设计方案。明确了需求目标,再把这个需求一步步细化分解,得到电路设计方案。
这个方案种应该包含了决定分成多少个流水级/触发器/运算器,它们位置分别在哪里,相互如何连接,完整的电路状态转换是什么样的等。
一般仅需要把电路设计细化到寄存器传输级,不用精确到逻辑门级别/是晶体管级别。
关于代码编写
代码编写阶段的工作内容是完成上一步电路设计方案的实践,用硬件描述语言表述出来,让EDA工具读懂。
关于功能防真
功能防真阶段内容是接上一步表达的HDL语言描述出来的设计做出功能防真验证。主要是利用软件防真模拟去查看电路种的逻辑功能行为与最初的设计需求是否契合。
这一过程一般是主动输入指定的激励到电路,看电路输出与预期是否相差太大,不符合预期说明电路逻辑功能存在误差。可能因为第一步的电路设计发生误差,或者在第二步编写代码出现不符合的电路设计情况。
及时发现错误后可以及时修改,再继续进行流程。这样有利于每一步错误排查节省时间经历。
因为对电路是在RTL级建模,所以功能防真阶段可以不担心电路的延迟。
关于综合实现
综合实现阶段这一过程是HDL代码到真实芯片电路。就是编译器使高级语言转换成目标机器的二进制代码。
可以分为综合和实现两个子阶段。
综合阶段:HDL描述的设计编译为由基本逻辑单元连接而成的逻辑网表,不过此时的网表还不是最终的门级电路网表。
实现阶段:才会将综合出的逻辑网表映射为FPGA中的具体电路,即将逻辑网表中的基本逻辑单元映射到FPGA芯片内部固有的硬件逻辑模块上(称为“布局”)。随后,基于布局的拓扑,利用FPGA芯片内部的连线资源,将各个映射后的逻辑模块连接起来(称为“布线”)。
综合实现过程正常,EDA工具将生成一个比特流(Bitstream)文件。这个比特流文件描述的就是最终的电路,该文件只能FPGA芯片读懂。
关于上板调试
在上板调试阶段就要实践这个电路是否有用了,先把综合实现阶段生成的比特流文件保存到FPGA芯片中,然后运行电路看其工作是否正常,有发生问题就要调试、定位出错的原因。
综上,介绍的FPGA一般设计流程的脉络,以便大家先建立一个正确的FPGA设计流程整体概念。大家有云服务器、服务器、高防IP需求欢迎访问华纳云官网https://www.hncloud.com/联系我们哦!