目录
1.项目的需求分析
在开发项目之前,需要对任务进行需求分析,如对FPGA芯片的工作速率、器件的自身资源、成本、功耗等等。完成需求分析之后,就可以选择合适的设计方案(建议在vision上把项目的具体模块一一画出来)和器件了。
2.设计输入
根据项目的需求,通过veriolg HDL代码开发出能实现某种功能的电路。
3.功能仿真(RTL级仿真)
功能仿真(写test_bench文件),其实就是根据设计输入的代码,给输入信号一个激励,用来验证自己写的代码能不能实现需求,并判断有没有写出什么bug。
常用的仿真软件包括ViVado自带的仿真其和modelsim仿真器。我个人建议用modelsim仿真,因为它的仿真速率更快。
此外, 功能仿真是没有考虑电路的延迟信息的,只是对逻辑功能进行检测,并不保证上板运行的准确性。
4.逻辑综合
Synthesis(综合)是将高级语言(如Verilog或VHDL)描述的电路转换为可在FPGA上实现的低级语言(如逻辑门级网表或物理门级网表)。综合工具将高级语言描述的电路转换为逻辑门级网表或物理门级网表,以便在FPGA上实现
5.添加引脚约束文件
有两种方法可以添加引脚约束,一是利用Vivado中的IO Planning功能(需先对工程进行综合,在综合后选择打开Open Synthesis Design,然后在右下方的选项卡中切换到I/O Ports栏,在对应的信号后输入对应的FPGA引脚号),二是直接新建XDC约束文件(Add constrains)。
6.布局布线
lmplementation(实现)是将综合后的电路映射到FPGA的物理资源上。这个过程包括将逻辑门级网表或物理门级网表映射到FPGA的LUT、寄存器、IO等资源上,并生成FPGA的bitstream文件,以便在FPGA上加载和运行。
6.时序仿真
时序仿真,也称为后仿真(Run post-synthesis Timing simulation),它把布局布线的延时都考虑进去,并标注到网表中,是芯片延时信息的最真实,最准确的反映。
7.上板调试
时序仿真也可以不做,我一般都是先上板级调试,因为板级调试更容易发现问题。
在完成布局布线后,通过Gennerate Bitstrem 生成要下载到FPGA开发板的二进制代码。