verilog多位10进制计数器,verilog hdl语言入门教程

  

  FPGA的设计过程就是利用EDA开发软件和编程工具开发FPGA芯片的过程。FPGA的开发流程大致如图1-10所示,包括电路功能设计、设计输入、功能仿真、综合优化、综合后仿真、实现、布线后仿真、板级仿真、芯片编程调试。   

  

  图1-10 FPGA开发的一般流程   

  

  1.电路功能设计   

  

  在系统设计之前,首先要做的就是方案论证、系统设计、FPGA芯片选型等准备工作。系统工程师根据系统的指标和复杂程度等任务要求,权衡工作速度与芯片本身的资源和成本,选择合理的设计方案和合适的器件类型。一般采用自顶向下的设计方法,将系统分成若干个基本单元,然后每个基本单元又分成下一级基本单元,一直这样做,直到可以直接使用EDA组件库。   

  

  2.设计输入   

  

  输入是将设计的系统或电路以开发软件要求的某种形式表达出来,输入到EDA工具中的过程。常用的方法有硬件描述语言(HDL)和原理图输入法等。原理图输入法是最直接的描述方法,在可编程芯片的早期开发中被广泛使用。它从元件库中转移所需的器件,并将它们绘制到原理图中。这种方法虽然直观,易于模拟,但效率低,维护困难,不利于模块构建和重用。它的主要缺点是便携性差。芯片升级时,所有的原理图都需要修改。目前实际开发中应用最广泛的是HDL语言输入法。使用文本描述设计,可以分为普通HDL和行为HDL。普通HDL有ABEL,CUR等。它支持逻辑方程、真值表和状态机,主要用于简单的小规模设计。在大中型项目中,主要使用行为HDL,其主流语言有Verilog HDL和VHDL。两种语言都是IEEE标准,共同的突出特点是语言与芯片技术无关,有利于自顶向下的设计、模块划分和移植,移植性好,逻辑描述和仿真功能强,输入效率高。   

  

  3.功能仿真   

  

  功能仿真,也称预仿真,是在编译前对用户设计的电路的逻辑功能进行验证。此时仿真没有延时信息,只测试初步功能。仿真前,波形编辑器,HDL等。应该用于建立波形文件和测试向量(也就是说,目标输入信号应该组合成一个序列)。仿真结果会生成报告文件,输出信号波形,从中可以观察到各个节点的信号变化。如果发现错误,则修改逻辑设计。常用工具有Model Tech公司的ModelSim、Sysnopsys公司的VCS和Cadence公司的NC-Verilog和NC-VHDL。虽然功能仿真不是FPGA开发的必要步骤,但却是系统设计中最关键的一步。   

  

  4.综合   

  

  所谓综合,就是将较高抽象层次的描述转化为较低层次的描述。根据目标和要求对优化产生的逻辑连接进行优化,将层次化设计扁平化,使之可以用FPGA布局软件实现。就目前水平而言,综合优化是指将设计输入编译成由与门、或门、非门、RAM、触发器等基本逻辑单元组成的逻辑连接网表。而不是真正的门级电路。真正的门级电路需要利用FPGA厂商的版图功能,根据综合后生成的标准门级结构网表生成。为了转换成标准的门级网表,HDL的编程必须符合特定合成器所要求的风格。因为门级结构和RTL级HDL程序的综合是一项非常成熟的技术,所有的合成器都可以支持这一级别的综合。常用的综合工具有Synplicity公司的Synplify/Synplify Pro软件和各FPGA厂商推出的综合开发工具。   

  

  5.综合后仿真   

  

  综合模拟后,检查综合结果是否与原设计一致。在仿真中,通过综合生成的标准延迟文件被标记回综合仿真模型中,并且可以估计门延迟的影响。但是这一步无法估算线路延时,所以估算的结果和布线后的实际情况还是有一定差距的,不是很准确。目前的合成工具已经比较成熟,一般设计可以省略这一步。但如果布局后发现电路结构与设计意图不符,就要回去综合后仿真确认问题。功能仿真中引入的软件工具一般支持综合后仿真。   

  

  6.实现与布局布线   

  

  就是把合成的逻辑网表配置到具体的FPGA芯片上,布局是最重要的过程。布局是指将逻辑网表中的硬件原语和底层单元合理分配给芯片内部固有的硬件结构,这往往需要在速度最优和面积最优之间进行选择。布线是指根据版图的拓扑结构,利用芯片内部的各种布线资源,合理正确地连接各种元器件。目前FPGA的结构非常复杂,尤其是有时序约束的时候,需要使用时序驱动引擎进行布局布线。布线完成后,软件工具将自动生成报告,提供有关设计各个部分的资源利用率的信息。因为只有FPGA芯片厂商最了解芯片结构,所以布局布线必须采用芯片开发商提供的工具。   

  

  7.时序仿真与验证   

  

  时序仿真,也称为后仿真,是指将布局的延迟信息标记到设计网表,以检测是否存在时序违规(即不满足时序约束或器件的固有时序)   

规则,如建立时间、保持时间等)现象。时序仿真包含的延迟信息最全,也最精确,能较好地反映芯片的实际工作情况。由于不同芯片的内部延时不一样,不同的布局布线方案也给延时带来不同的影响。因此在布局布线后,通过对系统和各个模块进行时序仿真,分析其时序关系,估计系统性能,以及检查和消除竞争冒险是非常有必要的。在功能仿真中介绍的软件工具一般都支持综合后仿真。

  

8.板级仿真与验证

  

板级仿真主要应用于高速电路设计中,对高速系统的信号完整性、电磁干扰等特征进行分析,一般都用第三方工具进行仿真和验证。

  

9.芯片编程与调试

  

设计的最后一步就是芯片编程与调试。芯片编程是指产生使用的数据文件(位数据流文件,Bitstream Generation),然后将编程数据下载到FPGA芯片中。其中,芯片编程需要满足一定的条件,如编程电压、编程时序和编程算法等方面。逻辑分析仪(Logic Analyzer,LA)是FPGA设计的主要调试工具,但需要引出大量的测试引脚,且其价格昂贵。目前,主流的FPGA芯片生产商都提供了内嵌的在线逻辑分析仪(如Xilinx ISE中的ChipScope、Altera QuartusII中的SignalTapII以及SignalProb)来解决上述矛盾,它们只需要占用芯片少量的逻辑资源,具有很高的实用价值。

相关文章