FPGA现代数字系统设计(基于Xilinx可编程逻辑器件与Vivado平台)/清华开发者书库

FPGA现代数字系统设计(基于Xilinx可编程逻辑器件与Vivado平台)/清华开发者书库
作者: 编者:孟宪元//钱伟康
出版社: 清华大学
原售价: 79.00
折扣价: 60.83
折扣购买: FPGA现代数字系统设计(基于Xilinx可编程逻辑器件与Vivado平台)/清华开发者书库
ISBN: 9787302499138

作者简介

孟宪元 清华大学电子工程系教授,长期从事EDA相关技术和课程教学和科研工作,具有超过20年的FPGA技术研究和项目开发经历,亲历了FPGA技术的发展历程,积累了丰富实践经验,曾出版《新一代FPGA设计套件Vivado应用指南》等畅销教材。

内容简介

第3章 Verilog硬件描述语言 硬件描述语言(Hardware Description Language,HDL)是一种国际上流行的描述数字电路和系统的语言,可以在EDA工具的支持下,快速实现设计者的设计意图。 常用的硬件描述语言有Verilog HDL和VHDL两种。本章介绍Verilog语言的语法和使用规则。 3.1硬件描述语言概述 Verilog HDL是由GDA(Gateway Design Automation)公司的Philip R.Moorby于1983年首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorby推出商用仿真器VerilogXL,获得了巨大的成功,从而使得Verilog HDL迅速得到推广应用。1989年CADENCE公司收购了GDA公司,Verilog HDL成为该公司的独家专利。1990年CADENCE公司公开发表了Verilog HDL,成立OVI(Open Verilog International)组织,并推动Verilog HDL的发展。IEEE于1995年制定了Verilog HDL的IEEE标准,即Verilog HDL13641995,2001年发布了Verilog HDL13642001,目前已发布Verilog HDL 2003。 VHDL是VHSIC Hardware Description Language的缩写,其中VHSIC是Very High Speed Integrated Circuit的缩写,美国国防部为解决项目的多个承包人的信息交换困难和设计维修困难的问题,提出了VHDL构想,由TI、IBM和INTERMETRICS公司完成,并于1987年作为IEEE标准,即IEEE std 10761987[LRM87],后来又进行一些修改,成为新的标准版本,即IEEE std 10761993[LRM93]。 VHDL和Verilog HDL这两种语言的主要功能差别并不大,它们的描述能力也类似,相比于Verilog HDL,只是VHDL的系统描述能力稍强,而Verilog HDL的底层描述能力则更强。 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元件库中已有的基本元件实现为止,在设计的后期将各子模块组合起来构成一个系统。自顶向下设计示意图如图31所示。 图31自顶向下设计示意图 本章介绍Verilog语言,将按照“先框架,再细节”的模式,即先介绍Verilog HDL程序的基本结构,然后介绍常用的语法,最后进行一些数字系统设计练习。 3.2Verilog HDL程序的基本结构 Verilog语言作为一种用于设计数字系统的工具,可以完成以下功能: (1) 描述数字系统的逻辑功能; (2) 描述多个数字系统模块之间的连接,组合成为一个系统; (3) 建立测试激励信号文件,在仿真环境中,对设计好的系统进行调试验证。 根据对电路描述的抽象程度不同,Verilog语言描述有四个层次的模型类型: (1) 行为级或算法级: 这是Verilog语言支持的最高抽象级别,设计者关注算法的实现,不关心具体的硬件实现细节,几乎可以使用Verilog语言提供的所有语句; (2) 寄存器传输级(RTL): 通过描述模块内部状态转移的情况来表征该逻辑单元的功能,设计者关注数据的处理及其如何在线网上、寄存器间的传递; (3) 门级: 调用已设计好的逻辑门基本单元(原语),如与门、或门、异或门等,描述逻辑门之间的连接,以实现逻辑功能; (4) 开关级: 这是Verilog语言支持的最低抽象层次,通过描述器件中的晶体管、存储节点及其互连来设计模块。 上述四个抽象级别的特性、描述方法和相关的问题在表31中给出。 表31Verilog HDL的抽象等级 模型特性描述说明 行为级 功能模型利用两类过程语句表征: (1) initial语句: 常用于建立行为(仿真)模型,只运行一次; (2) always: 用于行为描述和RTL级编码,可持续运行。 具体内容见3.4节不是所有的行为模型都是可综合的 例: always (A or B or C or D or Sel) 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语句与ifelse if语句的区别 RTL级 典型的RTL为逻辑综合目的,可以描述组合电路的数据运算,也可描述在时钟沿之间组合逻辑的运行。数据流和行为结构连续赋值是数据流模型的基本结构,其中的表达式可利用大多数运算符。连续赋值在每个仿真周期会重新估值连续赋值中时间延迟将被综合工具忽略 例: module Mux2_1 (A,B,Sel,Out1); output Out1; input A,B,Sel; wire N1,N2; assign N1=(A & Sel); assign N2=(B & ~Sel); assign Out1=(N1 | N2); endmodule 可用assign out1=(A & Sel)|(B &~Sel); 隐含的连续赋值提供更简练的编码 续表 模型特性描述说明 门级 库、宏单元Verilog语言中,门级直接利用预先定义的门级原语构筑系统,门级模型含有行为仿真时序信息,但只适应小系统的应用,对多数系统设计而言太详尽和费时任何门级模块都是可综合的 例: module AND_OR(A,B,C,D,Z); input A,B,C,D; output Z; wire SIG1,SIG2; and (SIG1,A,B); and (SIG2,C,D); or (Z,SIG1,SIG2); … endmodule; 任何延时规定,综合时将被忽略 开关级CMOS开关电路用FPGA实现数字系统,一般不采用开关级描述 一般来说,设计的抽象程度越高,设计的灵活性就越好,和工艺的无关性就越高,随着抽象程度降低,设计的灵活性和工艺的无关性变差,可移植性变差。 遵循摩尔定律的发展规律,FPGA技术已经进入到异构多核处理器和异构并行计算的崭新阶段,本书以FPGA的发展阶段讲述器件的架构和特性,以Verilog语言作为硬件描述语言讲述数字系统的设计,保证设计功能通过仿真验证的正确性,在Vivado设计套件中通过RTL分析、综合和布局布线的实现等进程达到时序收敛,性能上满足设计要求,本书也介绍了有关同步设计的技巧和要点,高级综合等特性。DSP系统和嵌入式系统的设计流程和方法也作了介绍,最后以多个设计实例对前述的设计方法作了详尽的说明。 ? 内容全面 涵盖FPGA及Vivado的基本功能,及其在数字系统中的多种设计流程。 ? 技术前沿 基于当前的Vivado设计套件版本,论述了FPGA主流设计技术。 ? 易于实践 全书结合大量实例论述,图文并茂、操作性强,便于快速动手实践。