书海网短评:
本书是以Xilinx公司全可编程FPGA和SoC为基础,针对新的设计工具软件——Vivado介绍FPGA设计理论与设计方法。全书分为8章,包括现代数字系统设计技术概论、可编程逻辑器件、VerilogHDL硬件描述语言、Vi
第3章
Verilog硬件描述语言
硬件描述语言(HardwareDescriptionLanguage,HDL)是一种国际上流行的描述数字电路和系统的语言,可以在EDA工具的支持下,快速实现设计者的设计意图。
常用的硬件描述语言有VerilogHDL和VHDL两种。本章介绍Verilog语言的语法和使用规则。
3.1硬件描述语言概述
VerilogHDL是由GDA(GatewayDesignAutomation)公司的PhilipR.Moorby于1983年首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorby推出商用仿真器VerilogXL,获得了巨大的成功,从而使得VerilogHDL迅速得到推广应用。1989年CADENCE公司收购了GDA公司,VerilogHDL成为该公司的独家专利。1990年CADENCE公司公开发表了VerilogHDL,成立OVI(OpenVerilogInternational)组织,并推动VerilogHDL的发展。IEEE于1995年制定了VerilogHDL的IEEE标准,即VerilogHDL13641995,2001年发布了VerilogHDL13642001,目前已发布VerilogHDL2003。
VHDL是VHSICHardwareDescriptionLanguage的缩写,其中VHSIC是VeryHighSpeedIntegratedCircuit的缩写,美国国防部为解决项目的多个承包人的信息交换困难和设计维修困难的问题,提出了VHDL构想,由TI、IBM和INTERMETRICS公司完成,并于1987年作为IEEE标准,即IEEEstd10761987[LRM87],后来又进行一些修改,成为新的标准版本,即IEEEstd10761993[LRM93]。
VHDL和VerilogHDL这两种语言的主要功能差别并不大,它们的描述能力也类似,相比于VerilogHDL,只是VHDL的系统描述能力稍强,而VerilogHDL的底层描述能力则更强。
3.1.1硬件描述语言特点
硬件描述语言(HDL)有不同于其他软件语言的特点:
(1)功能的灵活性。HDL支持设计者从开关、门级、RTL、行为级等不同抽象层次对电路进行描述,并支持不同抽象层次描述的电路组合为一个电路模型,HDL支持系统的层次化设计,支持元件库和功能模块的可重用设计。用HDL设计数字电路系统是一种贯穿于设计、仿真和综合的方法。
(2)HDL支持高层次的设计抽象,可应用于设计复杂的数字电路系统。HDL设计和传统的原理图输入方法的关系如同高级语言和汇编语言。原理图输入的可控性好、实现效率高,比较直观,但在设计大规模CPLD/FPGA时显得很烦琐,有时甚至无法理解。而设计者使用HDL进行设计,可以在非常抽象的层次上对电路进行描述,将烦琐的实现细节交由EDA工具辅助完成,实现“自顶向下”的层次化设计,缩短开发周期。
(3)HDL设计可不依赖厂商和器件,移植性好。设计者在设计时,只需在寄存器传输级(RTL级)对电路系统的功能和结构用HDL进行描述,电路系统如需实现在不同器件上,也不用重复设计,只需选择相应FPGA/CPLD芯片的综合、布局布线的库函数,由相应的设计工具对设计描述进行重新转换即可。
3.1.2层次化设计
随着现代控制、通信等电子行业的发展,数字电路复杂度也越来越高。集成电路制造业和EDA工具的快速发展,使复杂数字系统的设计实现成为可能。复杂系统的设计必然要使用层次化、结构化的设计方法,其设计思想就是“自顶向下”,即“化繁为简,逐步实现”,在数字系统的功能指标和端口基础上,将系统分解成多个子模块构成,然后对各个子模块作进一步分解,直到将模块分解到适中的实现复杂度或者可使用的EDA元件库中已有的基本元件实现为止,在设计的后期将各子模块组合起来构成一个系统。自顶向下设计示意图如图31所示。
图31自顶向下设计示意图
本章介绍Verilog语言,将按照“先框架,再细节”的模式,即先介绍VerilogHDL程序的基本结构,然后介绍常用的语法,最后进行一些数字系统设计练习。
3.2VerilogHDL程序的基本结构
Verilog语言作为一种用于设计数字系统的工具,可以完成以下功能:
(1)描述数字系统的逻辑功能;
(2)描述多个数字系统模块之间的连接,组合成为一个系统;
(3)建立测试激励信号文件,在仿真环境中,对设计好的系统进行调试验证。
根据对电路描述的抽象程度不同,Verilog语言描述有四个层次的模型类型:
(1)行为级或算法级:这是Verilog语言支持的最高抽象级别,设计者关注算法的实现,不关心具体的硬件实现细节,几乎可以使用Verilog语言提供的所有语句;
(2)寄存器传输级(RTL):通过描述模块内部状态转移的情况来表征该逻辑单元的功能,设计者关注数据的处理及其如何在线网上、寄存器间的传递;
(3)门级:调用已设计好的逻辑门基本单元(原语),如与门、或门、异或门等,描述逻辑门之间的连接,以实现逻辑功能;
(4)开关级:这是Verilog语言支持的最低抽象层次,通过描述器件中的晶体管、存储节点及其互连来设计模块。
上述四个抽象级别的特性、描述方法和相关的问题在表31中给出。
表31VerilogHDL的抽象等级
模型特性描述说明
行为级
功能模型利用两类过程语句表征:
(1)initial语句:常用于建立行为(仿真)模型,只运行一次;
(2)always:用于行为描述和RTL级编码,可持续运行。
具体内容见3.4节不是所有的行为模型都是可综合的
例:
always(AorBorCorDorSel)
begin
case(Sel)
2`b00:Z=A;
2`b01:Z=B;
2`b10:Z=C;
2`b11:Z=D;
default:Z=1`bx;
endcase
end
注意case语句与ifelseif语句的区别
RTL级
前言
由Xilinx公司发明的FPGA技术,按照摩尔定律已经历了30多年的发展历程,它的可编程特性使其成为电子产品设计和验证不可或缺的手段,在数字信号处理(DSP)系统和嵌入式系统等设计领域也得到日益广泛的应用。为了适应迅速发展的技术进步,培养出符合新时代要求的合格人才,近年来大学教育利用FPGA的可编程特性进行了广泛的探索,也取得了令人瞩目的成果,例如得到教育部认可的口袋实验板,以及贯穿式教育和工程实训等教改措施。
根据近期在多个大学进行数字系统和嵌入式系统工程实训的经历,结合国家对新型人才培养的要求,以及根据读者对利用FPGA设计现代数字系统的需求,选取目前流行的FPGA器件、设计工具和设计语言编写了此书。《FPGA现代数字系统设计——基于Xilinx可编程逻辑器件与Vivado平台(清华开发者书库)》选用Xilinx公司7系列全可编程FPGA和SoC,2017x最新版本的Vivado设计工具,以及在许多大学得到广泛应用的依元素公司开发的EGO1开发板,作为学生的口袋实验板随身携带,不仅可以使设计项目在FPGA硬件上运行,也可以通过实验验证、理解和运用所学知识。
VerilogHDL是设计者们喜爱的语言,与VHDL相比,更节省代码,更接近C语言,适合有C语言基础的读者学习,因此被业界广泛使用,也为《FPGA现代数字系统设计——基于Xilinx可编程逻辑器件与Vivado平台(清华开发者书库)》所采用。
《FPGA现代数字系统设计——基于Xilinx可编程逻辑器件与Vivado平台(清华开发者书库)》共8章。
第1章介绍现代数字系统设计概论,包括现代数字系统层次化的设计概念、多种描述方法和IP、SoC概念。本章使初学者对现代数字系统设计有一个整体的认识。
第2章介绍历代FPGA器件的结构特点、硬件资源和配置方法,为进一步的设计和优化奠定必要的器件基础。
第3章介绍VerilogHDL的基本语法和设计实例,是《FPGA现代数字系统设计——基于Xilinx可编程逻辑器件与Vivado平台(清华开发者书库)》的设计语言基础教程。
第4章介绍Vivado工具编程、仿真、综合和实现的设计流程,以及测试诊断工具和IP集成工具等。
第5章是比较深入的高级设计与综合技术,包括VerilogHDL的编程风格、综合优化、同步设计、高级综合与系统综合。本章是完成较复杂数字系统设计的重要设计知识与设计技巧。
第6章介绍在FPGA内实现DSP的方法,在FPGA内建DSP是现代DSP技术的最重要的发展方向。本章介绍在FPGA构建DSP的基本方法和SystemGenerator设计工具,给出使用SystemGenerator设计工具设计FIR数字滤波器的完整设计过程。
第7章介绍Zynq嵌入式系统设计技术,包括Zynq嵌入式处理器结构、AXI4总线,利用IP模块在Vivado构建硬件,在SDK中编写软件,协同开发流程。
第8章给出三个综合设计实例。
为了方便读者,《FPGA现代数字系统设计——基于Xilinx可编程逻辑器件与Vivado平台(清华开发者书库)》编写了VerilogHDL手册、EGO1开发板资料和参考文献供查阅。
《FPGA现代数字系统设计——基于Xilinx可编程逻辑器件与Vivado平台(清华开发者书库)》保留原书如下三个特点:
一是内容完整,包含设计理论、器件知识、设计语言、基本设计工具,还包括高级设计与综合技术、FPGA内构建DSP的设计方法、SOPC设计方法和综合设计实例。为初学者提供了完整的学习内容和丰富的参考资料。
二是注重读者的认识规律,由浅入深,循序渐进,既有深入的内容,又使初学者能很快入门;既有数字技术的理论知识,又有指导实践的实验实例。
三是书中涉及的所有程序均已经过调试,在教学过程中可以放心地使用和验证。
当然,现代数字系统设计涉及很广泛和深入的知识,不可能在一门课程中全部解决。我们希望能帮助初学者尽快入门,但更深入的研究和专门的设计知识需要在后续课程和设计实践中不断积累和完善。现代数字系统设计对理论和实践的综合要求都是比较高的,建议使用本教材的老师在介绍基本的设计基础后,尽量安排学生通过实验来发现和解决更多的问题,以提高实践能力。
《FPGA现代数字系统设计——基于Xilinx可编程逻辑器件与Vivado平台(清华开发者书库)》是采用Vivado2017版本的FPGA教材。选用《FPGA现代数字系统设计——基于Xilinx可编程逻辑器件与Vivado平台(清华开发者书库)》作为教材的高校教师可以到网站http://eelements.readthedocs.io/zh/ego1_v2.1/EGO1.html#id12获取实验的详细资料及演示资料(需获准)。
《FPGA现代数字系统设计——基于Xilinx可编程逻辑器件与Vivado平台(清华开发者书库)》由孟宪元和钱伟康教授共同完成编写和审稿。
由于FPGA技术发展迅速,设计工具的版本每年都有若干次更新,作者水平有限,编写时间仓促,书中的疏漏之处请读者予以指正。
感谢清华大学出版社对《FPGA现代数字系统设计——基于Xilinx可编程逻辑器件与Vivado平台(清华开发者书库)》的出版给予的关心和支持!
孟宪元
2019年2月









