verilog教程(1) —— verilog进行FPGA设计的基本概念-Anlogic-安路社区-FPGA CPLD-ChipDebug

verilog教程(1) —— verilog进行FPGA设计的基本概念

Verilog HDL 语言的描述层级

Verilog HDL 语言描述能力综述使用 Verilog HDL 语言可以从 3 个描述级别的 5 个抽象层次等不同层次描述数字典路系统,具体包括系统级、算法级、寄存器传输级( Register Transfer LevelRTL)、门级和开关级。

系统级和算法级建模

系统级建模和算法级建模常用来从功能上描述系统的规格、仿真系统或核心算法的功能和特性。这类描述一般不涉及具体的实现细节,只是用 Verilog HDL 语言描述系统的功能, 但不考虑是否能通过 EDA 工具将设计转化成硬件设计,因此往往将其称为系统级或者算法级描述。 虽然 Verilog HDL 语言具备系统级和算法级描述能力,但和 MATLAB 或 C++、SystemC等高级语言相比仍存在很大的差距,同为硬件描述语言SystemVerilog比Verilog更适合。因此在实际开发中,设计人员很少应用 Verilog HDL 语言的系统 级和算法级建模能力。

RTL 级建模

RTL(Register Transfer Level,寄存器传输级)指:不关注寄存器和组合逻辑的细节(如使用了多少逻辑门,逻辑门之间的连接拓扑结构等),通过描述寄存器到寄存器之间的逻辑功能描述电路的HDL层次。 RTL级是比门级更高的抽象层次,使用RTL级语言描述硬件电路一般比门级描述简单高效得多。

门级和开关级建模

门级建模从逻辑门单元这一级描述电路的构建,开关级建模则从MOS管一级描述电路的构建。目前,可编程逻辑门数已达百万、千万门,对于大规模设计在这两类较低层次上设计电路,效率低下且非常容易出错;只有对于小规模的设计,特别是对性能要求非常高的设计,采用门级电路和开关级电路可以满足一些特殊要求。在大多数 Verilog HDL 程序开发中,基 于这两个层次的设计方法已被彻底抛弃。

使用 Verilog HDL 语言的 CPLD/FPGA 开发的设计方法和设计流程 

设计方法

Verilog 的设计多采用自上而下的设计方法(top-down)。即先定义顶层模块功能,进而分析要构成顶层模块的必要子模块;然后进一步对各个模块进行分解、设计,直到到达无法进一步分解的底层功能块。这样,可以把一个较大的系统,细化成多个小系统,从时间、工作量上分配给更多的人员去设计,从而提高了设计速度,缩短了开发周期。

20240405204840737-image

设计流程

20240405204912296-image

Verilog 的设计流程,一般包括以下几个步骤:

需求分析

工作人员需要对用户提出的功能要求进行分析理解,做出电路系统的整体规划,形成详细的技术指标,确定初步方案。例如,要设计一个电子屏,需要考虑供电方式、工作频率、产品体积、成本、功耗等,电路实现采用 ASIC 还是选用 FPGA/CPLD 器件等。

功能划分

正确地分析了用户的电路需求后,就可以进行逻辑功能的总体设计,设计整个电路的功能、接口和总体结构,考虑功能模块的划分和设计思路,各子模块的接口和时序(包括接口时序和内部信号的时序)等,向项目组成员合理分配子模块设计任务。

HDL描述

HDL描述即进行设计输入是将所设计的系统或电路用verilog HDL描述出来,对所需求的数字电路进行设计建模的过程。 

功能仿真(前仿真)

对verilog描述的电路模型进行功能上的仿真验证,查找设计的错误并修正。不考虑电路的时序是否满足,只是验证逻辑上的正确性。又叫作Behavioral Simulation(即行为仿真)

逻辑综合

  • 综合(synthesize)——就是将设计的verilog代码转换为RTL网表的过程。但不是所有的 Verilog 语句都是可以综合成逻辑单元的,例如时延语句。

布局布线

对映射后的网表进行布局布线生成最终网表,并在这一步之后生成FPGA的位流。

时序仿真(后仿真)

布局布线后,电路模型中已经包含了时延信息。利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。单元器件的不同、布局布线方案都会给电路的时序造成影响,严重时会出现错误。出错后可能就需要重新修改 RTL(寄存器传输级描述,即 Verilog 初版描述),重复后面的步骤。这样的过程可能反复多次,直至错误完全排除。

FPGA/CPLD 下载

完成上面所有步骤后,就可以通过FPGA开发工具将设计的数字电路目标文件下载到 FPGA/CPLD 芯片中,然后在电路板上进行调试、验证。

Verilog HDL 语言的可综合与仿真特性

 语句可综合的概念

综合就是将 HDL 语言设计转化为由与门、或门和非门等基本逻辑单元组成的门级连接。因此,可综合语句就是能够通过 EDA 工具自动转化成硬件逻辑的语句。 HDL 语言只是硬件描述语言,并不是“硬件设计语言 (Hardware Design Language)”,换句话说任何符合 HDL 语法标准的代码都是对硬件行为的一 种描述,但不一定是可直接对应成电路的设计信息。 以目前大部分 EDA 软件的综合能力来说,只有 RTL 或更低层次的行为描述才能 保证是可综合的。后面会讲到哪些不可综合,然而技术在进步,以前一些不可综合的,比如for循环,现在有些FPGA工具是可以综合的,因为FPGA开发工具厂家自己拓展了这个语法。

Verilog HDL 语句的仿真特性

由于 Verilog HDL 语言最初就是为了完成仿真而发明的,从语法数量讲,可综合的语句只是 Verilog HDL 语言中的一个较小的子集。 可综合设计是最重要的,只有可综合设计才能将用户的设计在硬件上实现,所有仿真语句都是为了验证可综合设计而存在的。 用最精简的语句描述最复杂的硬件是硬件描述语言的本质,但不可综合的仿真语句同样重要。 

请登录后发表评论

    没有回复内容