Skip to main content

Verilog简介

1. Verilog扫盲

Verilog(全称Verilog HDL)是一种硬件描述语言,可以用来设计数字电路、集成电路。主要用来写专用集成电路(ASIC)。宿主软件有Quartus、ModelSim、Vivado ID等,其实,VS Code也能写Verilog,不过,Verilog语法比较复杂,还是建议用专业软件写。

还有一种硬件描述语言为VHDL,它们并不是同一个概念,相较来说,Verilog语法更简洁,VHDL语法更复杂。并且,Verilog的语法并不那么严格。

Verilog在描述电路和建立模型的方面非常强大,体现在它能从多个层次对数字系统描述和建模。你可以用3种不同的方式设计建模:行为级描述、数据流描述和结构化方式。主要有两类数据类型:wire(线网)和寄存器(reg),前者表示物理元件之间的连线,寄存器表示抽象的数据存储元件。模块实例化的特点,使得Verilog可以描述复杂的系统层次。

Veirilog支持其他编程语言接口(PLI)进行扩展,PLI允许外部函数访问Verilog模块内部信息,提供更丰富的测试方法。并且,在设计逻辑功能时,设计者不需要考虑制造工艺、温度等因素。

2. ASIC简介

与通用集成电路(如微处理器)不同,ASIC (特殊应用集成电路)的设计是为了完成特定的功能。一般ASIC的ROM和RAM都在出厂前经过掩膜(MASK,指程序数据已经做成光刻版,在单片机生产的过程中把程序做进去,在硅片上选定的区域中对一个不透明的图形模板遮盖,继而下面的腐蚀或扩散将只影响选定的区域以外的区域),而OTP(One-Time Programmable Memory,一次性可编程存储器)作为ASIC的一种存储器,用于存储固定的数据或配置信息,一旦编程后,内容不可更改。

这些特点使得ASIC具有根据需求定制化,品种多,批量少,供货周期长,比通用集成电路相比体积更小,重量更轻,功耗更低,并且更可靠。

3. Verilog实现

  • FPGA/CPLD一类的可编程逻辑器件
  • 半定制/全定制ASIC(门阵列ASIC/标准单元ASIC/全定制ASIC)
  • 混合ASIC(CPU/RAM/锁相环/乘法器)

4.Verilog设计方法

采用自顶向下方法。模块层次为:顶层模块-子模块-叶单元

首先进行需求分析,整体规划电路系统,确定初步方案。考虑ASIC还是FPGA/CPLD器件。

然后开始功能划分。总体设计逻辑功能,设计整个电路的功能、接口和总体结构,考虑功能模块的划分和设计思路,各子模块的接口和时序。

开始利用文本编辑器设计建模,做文本描述。这一步也是写Verilog的主要步骤。保存为.v文件。

测试和验证。使用测试工具进行测试,进行功能仿真。测试结果符合预期,则说明Verilog建模正确。但是,这里的仿真验证只是验证逻辑无误。

然后进行逻辑综合,综合是在标准单元库和特定的设计约束的基础上,将设计的高层次描述(Verilog建模)转换为门级网表。以此产生物理电路门级结构。但是,诸如时延语句就不能综合为逻辑单元。

接着进行布局布线,根据综合得出的门级网表和约束文件,利用厂家的基本标准单元苦逼,对门级电路进行布局布线。Verilog描述的这一个栈转换为标准单元库组成的数字电路。

生产之前,做最后一次仿真,即时序仿真。利用模型中已经包含的时延信息和布局布线中获得的精确参数,用仿真软件验证电路的时序。

然后,就是通过开发工具将设计的数字电路目标文件下载到FPGA/CPLD器件上,也就是烧录,从而进行测试