作者:汪文祥 邢金璋
来源:华章科技

FPGA是一种分外的集成电路,这意味着它首先是一种集成电路。现在的集成电路绝大多数都是晶体管集成电路,大家日常打仗最多的是CMOS晶体管集成电路。

晶体管集成电路是什么?普通来说,便是用金属导线把许许多多由晶体管构成的逻辑门、存储单元连接成一个电路,具备一定的逻辑功能。
不过,各位读者设计数字逻辑电路时,是否进行过用导线连接晶体管的实验?显然没有。大家一样平常是用一种硬件描述措辞(比如VerilogHDL)写写代码,然后运行综合软件(比如Vivado),电路就设计出来了。
这一流程并不是各种课程实验中所独占的,它实在与现在工业界常见的ASIC设计流程是同等的。FPGA的设计流程一样平常有5个步骤:
电路设计。代码编写。功能仿真。综合实现。上板调试。01 电路设计首先,须要根据需求规格制订电路设计方案。例如,需求是设计一个MIPS CPU,我们要把这个需求一步步分解、细化,得到一个能够知足需求的电路设计方案。
我们要决定分成几个流水级,这里放几个触发器,那里放几个运算器,它们之间怎么连接,全体电路的状态转换行为是若何的,等等。
常日,我们将电路设计细化到寄存器传输级(Register Transfer Level,RTL)就可以了,无须精确到逻辑门级别或是晶体管级别。
02 代码编写代码编写阶段的事情是把第1步中完成的电路设计方案用硬件描述措辞(Hardware Description Language,HDL)表述出来,成为一种EDA工具能够看得懂的形式。
03 功能仿真功能仿真阶段的事情是对第2步中用HDL措辞描述出来的设计进行功能仿真验证。所谓功能仿真验证,便是通过软件仿真仿照的办法查看电路的逻辑功能行为是否符合最初的设计需求。
常日我们给电路输入指定的勉励,不雅观察电路输出是否符合预期,如果不符合则表明电路逻辑功能有缺点。这种缺点要么是由于第1步的电路设计就有缺点,要么是第2步编写的代码不符合电路设计。
创造功能缺点后须要返回前面相应的步骤进行改动,然后再按照流程一步步推进。如此不断迭代,直到不再创造缺点,就可以进入下一阶段了。
须要指出的是,由于我们对电路是在RTL级建模,因此功能仿真阶段不考虑电路的延迟。
04 综合实现
综合实现阶段完成从HDL代码到真实芯片电路的转换过程。这个过程类似于编译器把高等措辞转换成目标机器的二进制代码的过程。
这个阶段分为综合和实现两个子阶段。
综合阶段将HDL描述的设计编译为由基本逻辑单元连接而成的逻辑网表,不过此时的网表还不是终极的门级电路网表。实现阶段才会将综合出的逻辑网表映射为FPGA中的详细电路,即将逻辑网表中的基本逻辑单元映射到FPGA芯片内部固有的硬件逻辑模块上(称为“布局”)。随后,基于布局的拓扑,利用FPGA芯片内部的连线资源,将各个映射后的逻辑模块连接起来(称为“布线”)。如果全体综合实现过程没有发生非常,EDA工具将天生一个比特流(Bitstream)文件。普通来说,这个比特流文件描述的便是终极的电路,但这个文件只有FPGA芯片能读得懂。
05 上板调试俗话说:“是骡子是马拉出来遛遛”。不管功能仿真得多精确,终极还是要看实际电路能否正常事情。
在上板调试阶段,首先要将综合实现阶段天生的比特流文件下载到FPGA芯片中,随后运行电路不雅观察其事情是否正常,如果发生问题就要调试、定位出错的缘故原由。
小结一下,上面先容的FPGA一样平常设计流程给出了总的脉络,以便读者先建立一个精确的整体观点。FPGA设计流程中还包含很多细节,可参考《CPU设计实战》一书。
关于作者:汪文祥,工学博士,龙芯中科技能株式会社首席工程师,中国科学院大学岗位教授。紧张研究方向为处理器体系构造设计、处理器验证及打算机系统性能剖析优化等,参与了多项国家“核高基”、863 和 973 项目,在国内外各种期刊会议揭橥文章十余篇,申请专利数十项,授权专利十余项。
邢金璋,硕士毕业于中国科学院打算技能研究所,2015年加入龙芯中科技能株式会社,从事处理器核构造设计事情,是龙芯小、中系列处理器核演进版本的紧张构造设计者之一。近年来,积极参与“龙芯杯”全国大学生打算机系统能力培养大赛的技能支持、培训等事情。
本文摘编自《CPU设计实战》,经出版方授权发布。
延伸阅读《CPU设计实战》
推举语:深入阐发CPU设计与开拓的关键环节;从零开始逐步构建一个功能完善的CPU;全面培养CPU设计的工程化思维与实战能力。









