软件版本:无
操作系统:WIN10 64bit
硬件平台:适用所有系列FPGA
板卡获取平台:https://milianke.tmall.com/
登录“米联客”FPGA社区 http://www.uisrc.com 视频课程、答疑解惑!
1概述
本节主要讲解Verilog的基本设计方法及设计流程。
2基本设计方法
Verilog的设计方法有两种,一种采用自上而下的设计方法,另一种采用自下向上的设计方法。自上而下的设计方法先定义顶层模块功能,进而分析要构成顶层模块的必要子模块,然后对各个子模块进行分解、设计,直到到达无法进一步分解的下层模块。这个方法,可以把一个大的系统,分成多个小系统,从时间、工作量上分配给更多的人员进行设计,从而提高了设计效率,缩短了相应的开发时间。
自下向上的设计方法,与自上向下的设计方法思路相反,先从下层模块进行设计,然后仿真与验证。最后联合各级模块组装成一个大的系统。
通常在系统较复杂,子模块较多,需要多人进行联合设计、仿真验证的大系统都是采用自上向下的设计方法。先由系统架构工程师分析系统架构,按照需求划分功能模块,定义模块接口,最后将功能模块分配到具体工程师进行设计。一般当系统规模较小,需要的设计人员较少,设计时一般采用自下向上的设计方法。
3设计流程
Verilog 的设计流程,通常包括以下几个步骤,如图所示:
下面分小节说明各个流程的具体内容。
3.1 需求整理
设计工程师需要对用户提出的功能要求进行理解分析,规划整个系统的功能模块,整理详细的技术指标,确定初步方案。例如,设计一个以太网通信路由器,需要考虑FPGA的时钟工作频率,考虑大致的FPGA逻辑资源消耗评估,以太网PHY芯片的型号选择,电源芯片的选择,各板级芯片的供电设计,产品的PCB走线设计,综合物料成本考虑等等。
3.2 功能划分
分析了用户的功能需求后,接下来就可以进行逻辑功能的设计,设计整个电路的功能、接口和结构,按照自上向下或自下向上的设计方法,进行各个模块的功能设计,设计各子模块的接口和时序,向各工程师进行合理分配子模块设计任务。
3.3 Verilog设计
可以使用喜欢的文本编辑工具,也可以用专用的 Verilog HDL 编程环境进行设计开发,对所需求的模块进行设计建模。
3.4 仿真验证
对建模文件进行编译,对RTL电路进行功能上的仿真验证(前仿真),排除设计的一般错误并进行修正。前仿真验证并没有考虑到具体信号的延迟信息,时序上的问题不能仿真出来,仅验证逻辑上功能的正确性。
3.5 逻辑综合
综合(synthesize),就是在标准单元库和特定的设计约束的基础上,将设计的高层次描述(Verilog 建模)转换为门级网表的过程。逻辑综合的目的是产生物理电路门级结构,并在逻辑、时序上进行一定程度的优化,寻求逻辑、面积、功耗的平衡,增强电路的可测试性。
3.6 布局布线
由综合出的网表与相应的约束文件,利用FPGA厂家提供的各种基本标准单元库,对门级电路进行布局布线。到了这一步就将 Verilog 设计的数字电路转换成由FPGA厂家标准单元库组成的数字电路。
3.7 时序仿真
布局布线后,电路模型中就有了时延信息。结合在布局布线中获得的精确延迟参数,用专业仿真软件验证电路的时序功能。单元器件的不同、布局布线方案不同都会给电路的时序造成不同的影响,严重时会出现时序错误。出错后可能就需要重新修改 RTL,然后重复后面的步骤。这样的过程可能反复多次,直至所有错误完全排除。
3.8 位流生成和调试
完成上面所有步骤后,就可以通过FPGA厂家开发工具将工程生成位流文件,然后下载到 FPGA/CPLD 芯片中,最后在电路板上进行调试、验证。