吉林大学专用集成电路设计

上传人:新** 文档编号:571740158 上传时间:2024-08-12 格式:PPT 页数:152 大小:3.42MB
返回 下载 相关 举报
吉林大学专用集成电路设计_第1页
第1页 / 共152页
吉林大学专用集成电路设计_第2页
第2页 / 共152页
吉林大学专用集成电路设计_第3页
第3页 / 共152页
吉林大学专用集成电路设计_第4页
第4页 / 共152页
吉林大学专用集成电路设计_第5页
第5页 / 共152页
点击查看更多>>
资源描述

《吉林大学专用集成电路设计》由会员分享,可在线阅读,更多相关《吉林大学专用集成电路设计(152页珍藏版)》请在金锄头文库上搜索。

1、吉林大学专用集成电路设计Stillwatersrundeep.流静水深流静水深,人静心深人静心深Wherethereislife,thereishope。有生命必有希望。有生命必有希望参考教材参考教材1 1、专用集成电路、专用集成电路、专用集成电路、专用集成电路【美】【美】Michealjohnsebastiansmith著著虞惠华虞惠华汤庭鳌等译,电子工业出版社汤庭鳌等译,电子工业出版社国外电子与通信教材系列国外电子与通信教材系列2、VerilogHDL程序设计教程程序设计教程王金明编著,人民邮电出版社王金明编著,人民邮电出版社3、VerilogHDL高级数字设计高级数字设计美美Michae

2、lD.Ciletti著著4、VerilogHDL数字系统设计教程数字系统设计教程夏宇闻夏宇闻编著,北京航空航天大学出版社编著,北京航空航天大学出版社HDL语言与语言与ASIC原理原理课程简介:课程简介:HDL语语言言与与ASIC原原理理课课程程从从浅浅到到深深全全面面地地介介绍绍专专用用集集成成电电路路的的设设计计方方法法和和过过程程。由由于于本本课课程程的的课课时时有有限限,因因此此,对对于于多多个个教教材材的的内内容容进进行行选选择择和和取取舍舍,根根据据专专业业方方向向和和学学时时限限制制,选选择择了了参参考考教教材材中中部部分分章章节节内内容容组组成成了了HDLHDL语语言言与与ASI

3、CASIC原原理理作作为为本本课课程程的的教教学学内内容。容。希希望望通通过过本本课课程程的的学学习习,使使微微电电子子专专业业的的同同学学对对ASIC的的设设计计方方法法有有一一个个基基本本的的认认识识,为今后从事与该方向相关的工作打下一个基础。为今后从事与该方向相关的工作打下一个基础。HDLHDL语言与语言与语言与语言与ASICASIC原理原理原理原理课程主要内容:课程主要内容:第一部分第一部分绪论绪论第二部分第二部分VerilogHDL语言语言第三部分第三部分ASIC库设计库设计第四部分第四部分实践篇实践篇HDLHDL语言与语言与语言与语言与ASICASIC原理原理原理原理第一部分第一部

4、分绪论绪论1.1概述概述 专专用用集集成成电电路路ASICASIC(Application Application Specific Specific Integrated Integrated CircuitsCircuits)技技术术是是在在集集成成电电路路发发展展的的基基础础 上上 , 结结 合合 电电 路路 和和 系系 统统 的的 设设 计计 方方 法法 , 利利 用用ICCAD/EDA/ESDAICCAD/EDA/ESDA等等计计算算机机辅辅助助技技术术和和设设计计工工具具,发发展展而而来来的的一一种种把把实实用用用用电电路路或或电电路路系系统统集集成成化化的的设设计计方方法。法。

5、定定义义:将将某某种种特特定定应应用用电电路路或或电电路路系系统统用用集集成成电电路路的的设设计计方方法法制制造造到到一一片片半半导导体体芯芯片片上上的的技技术术称称为为ASICASIC技术。技术。 特特特特点点点点:体体体体积积积积小小小小,成成成成本本本本低低低低,性性性性能能能能优优优优,可可可可靠靠靠靠性性性性高高高高,保保保保密性强,产品综合性能和竞争力好。密性强,产品综合性能和竞争力好。密性强,产品综合性能和竞争力好。密性强,产品综合性能和竞争力好。1.1.1集成电路的发展历程集成电路的发展历程 19471947年年1212月月BellBell实实验验室室肖肖克克莱莱、巴巴丁丁、布

6、布拉拉顿顿发发明明了了第第一一只只点点接接触触金金锗锗晶晶体体管管,19501950年年肖肖克克莱莱、斯斯帕帕克克斯斯、迪迪尔尔发发明明单单晶晶锗锗NPNNPN结型晶体管。结型晶体管。 19521952年年5 5月月英英国国皇皇家家研研究究所所的的达达默默提提出出集成电路的设想。集成电路的设想。 19581958年年德德克克萨萨斯斯仪仪器器公公司司基基尔尔比比为为首首的的小小组组研研制制出出第第一一块块由由1212个个器器件件组组成成的的相相移移振荡和触发器集成电路。振荡和触发器集成电路。 这这就就是是世世界界上上最最早早的的集集成成电电路路,也也就就是是现代集成电路的雏形或先驱。现代集成电路

7、的雏形或先驱。 集集成成电电路路的的发发展展除除了了物物理理原原理理外外还还得得益益于于许许多多新新工艺的发明:工艺的发明: 50 50年美国人奥尔和肖克莱发明的年美国人奥尔和肖克莱发明的离子注入工艺;离子注入工艺;离子注入工艺;离子注入工艺; 56 56年美国人富勒发明的年美国人富勒发明的扩散工艺;扩散工艺;扩散工艺;扩散工艺; 60 60年卢尔和克里斯坦森发明的年卢尔和克里斯坦森发明的外延生长工艺;外延生长工艺;外延生长工艺;外延生长工艺; 60 60 60 60年年年年kangkangkangkang和和和和AtallaAtallaAtallaAtalla研制出第一个硅研制出第一个硅研制

8、出第一个硅研制出第一个硅MOSMOSMOSMOS管;管;管;管; 7070年年斯斯皮皮勒勒和和卡卡斯斯特特兰兰尼尼发发明明的的光光光光刻刻刻刻工工工工艺艺艺艺等等等等,使使晶晶体体管管从从点点接接触触结结构构向向平平面面结结构构过过渡渡并并给给集集成成电电路路工工艺艺提提供供了了基基本本的的技技术术支支持持。因因此此,从从从从70707070年年年年代代代代开开开开始始始始,第一代集成电路才开始发展并迅速成熟。第一代集成电路才开始发展并迅速成熟。第一代集成电路才开始发展并迅速成熟。第一代集成电路才开始发展并迅速成熟。 此此后后4040多多年年来来,ICIC经经历历了了从从SSI(Small S

9、SI(Small Scale Scale ntegreted)-MSI-LSI-VLSI-ULSIntegreted)-MSI-LSI-VLSI-ULSI的的发发展展历历程程。现现在在的的ICIC工工艺艺已已经经接接近近半半导导体体器器件件的的极极限限工工艺艺。以以CMOSCMOS数数字字ICIC为例,在不同发展阶段的特征参数见表为例,在不同发展阶段的特征参数见表1 11 1。表表1-1 1-1 集成电路不同发展阶段的特征参数主要特征集成电路不同发展阶段的特征参数主要特征主要特征主要特征SSISSIMSIMSILSILSIVLSIVLSIULSIULSIGSLGSL元件数元件数/ /片片10

10、10 109 9特征线宽特征线宽mm5-105-103-53-51-31-3 11201201001004040151510-1510-15结深结深 mm1.2-20.5-1.2 0.2-0.5 0.1-0.2硅片直径硅片直径inchinch 2 22-32-3 4-54-56 68 812121.1.2集成电路的分类集成电路的分类 可可以以按按器器件件结结构构类类型型、集集成成电电路路规规模模、使使用用基片材料、电路功能以及应用领域等方法划分。基片材料、电路功能以及应用领域等方法划分。 双极型双极型 TTL TTLECL NMOS NMOS 单片单片IC MOSIC MOS型型 PMOS P

11、MOS CMOS CMOS BiMOS BiMOS按按结结构构分分类类 BiMOSBiCMOSBiCMOS 混合混合IC IC 厚膜混合厚膜混合ICIC 薄膜混合薄膜混合IC IC 按规模分类按规模分类 SSI/MSI/LSI/VLSI/ULSI/GSI SSI/MSI/LSI/VLSI/ULSI/GSI 组合逻辑电路组合逻辑电路 数字电路数字电路 时序逻辑电路时序逻辑电路 按功能分类按功能分类 模拟电路模拟电路线性电路线性电路 非线性电路非线性电路 数模混合电路数模混合电路1.1.3ASIC的设计手段的设计手段 设计手段的演变过程设计手段的演变过程 ICIC的的设设计计方方法法和和手手段段经

12、经历历了了几几十十年年的的发发展展演演变变,从从最最初初的的全全手手工工设设计计发发展展到到现现在在先先进进的的可可以以全全自自动动实实现现的的过过程程。这这也也是是近近几几十十年年来来科科学学技技术术,尤尤其其是是电电子子信信息息技技术术发发展展的的结结果果。从从设设计计手手段段演演变变的的过过程程划划分分,设设计计手手段段经经历历了了手手工工设设计计、计计算算机机辅辅助助设设计计(ICCADICCAD)、电电子子设设计计自自动动化化EDAEDA、电电子子系系统统设设计计自自动动化化ESDAESDA以以及及用用户户现现场场可可编程器阶段。编程器阶段。 1原始手工设计:原始手工设计: 设设计计

13、过过程程全全部部由由手手工工操操作作,从从设设计计原原理理图图,硬硬件件电电路路模模拟拟,到到每每个个元元器器件件单单元元的的集集成成电电路路版版图图设设计计,布布局局布布线线直直到到最最后后得得到一套集成电路掩膜版,全部由人工完成。到一套集成电路掩膜版,全部由人工完成。 设设计计流流程程为为:设设计计原原理理图图,硬硬件件电电路路,电电路路模模拟拟,元元器器件件版版图图设设计计,版版图图布布局局布布线线,(分分层层剥剥离离,刻刻红红膜膜,初初缩缩精精缩缩,分分步步重重复)制版,流片,成品。复)制版,流片,成品。 2 2计算机辅助设计计算机辅助设计: 从从7070年年代代初初开开始始,起起初初

14、仅仅仅仅能能够够用用个个人人计计算算机机辅辅助助输输入入原原理理图图,接接着着出出现现SPICESPICE电电路路模模拟拟软软件件,逐逐渐渐开开始始ICCADICCAD的的发发展展,后后来来越越来来越越多多的的计计算算机机辅辅助助设设计计软软件件,越越来来越越强强的的计计算算机机辅辅助助设设计计功功能能,不不但但提提供供了了先先进进的的设设计计方方法法和和手手段段,更更推推动动ICCADICCAD技技术术向向自自动动化化设设计计发发展展。初初期期的的ICCADICCAD功功能能较较少少,只只能能对对某某些些功功能能进进行行辅辅助助设设计计,现现在在利利用用计计算算机机辅辅助助设设计计可可以以实

15、实现现的的功功能能大大致致包包括括:电电路路或或系系统统设设计计,逻逻辑辑设设计计,逻逻辑辑、时时序序、电电路路模模拟拟,版版图图设设计计,版版图图编编辑辑,反反向向提提取取,规规则则检检查查等等等等。 3 3用计算机辅助工程用计算机辅助工程CAECAE的电子设计自动化的电子设计自动化EDAEDA: CAECAE配配备备了了成成套套ICIC设设计计软软件件,为为ICIC设设计计提提供供了了完完备备、统统一一、高高效效的的工工作作平平台台。使使利利用用EDAEDA设设计计LSILSI和和VLSIVLSI成成为为可可能能。ICCADICCAD和和EDAEDA以以及及半半导导体体集集成成电电路路技技

16、术的发展使术的发展使ICIC设计发生两个质的飞跃:设计发生两个质的飞跃: (1 1)版版图图设设计计方方面面:除除了了传传统统的的人人机机交交互互式式方方法法对对全全定定制制版版图图进进行行编编辑辑、绘绘图图外外,定定制制,半半定定制制设设计思想的确立使自动半自动布局成为可能。计思想的确立使自动半自动布局成为可能。 (2 2)逻逻辑辑设设计计方方面面:逻逻辑辑综综合合软软件件的的开开发发,使使系系统统设设计计者者只只要要用用硬硬件件描描述述语语言言(如如VHDLVHDL语语言言)给给出出系系统统行行为为级级的的功功能能描描述述,就就可可以以由由计计算算机机逻逻辑辑综综合合软软件件处处理理,得得

17、到到逻逻辑辑电电路路图图或或网网表表,优优化化了了逻逻辑辑设设计结果。计结果。 EDA EDA设计流程:设计流程:系统设计,功能模拟,逻辑综合,系统设计,功能模拟,逻辑综合,时序模拟,版图综合,后模拟时序模拟,版图综合,后模拟。 4 4电子系统设计自动化电子系统设计自动化ESDAESDA ESDAESDA的的目目的的是是为为设设计计人人员员提提供供进进行行系系统统级级设设计计的的分分析析手手段段,进进而而完完成成系系统统级级自自动动化化设设计计,最最终终实实现现SOCSOC芯芯片片系系统统。但但ESDAESDA仍仍处处于于发发展展和和完完善善阶阶段段,尚尚需需解解决决建建立立系系统统级级仿仿真

18、真库库和和实实现现不同仿真工具的协同模拟。不同仿真工具的协同模拟。 利利用用ESDAESDA工工具具完完成成功功能能分分析析后后,再再用用行行为为级级综综合合工工具具将将其其自自动动转转化化成成可可综综合合的的寄寄存存器器级级RTLRTL的的HDLHDL描描述述,最最后后就就可可以以由由EDAEDA工工具具实实现现最最终的芯片设计。终的芯片设计。 ESDAESDA的的流流程程:系系统统设设计计,行行为为级级模模拟拟,功功能能模模拟拟,逻逻辑辑综综合合,时时序序模模拟拟,版版图图综综合合,后后模拟。模拟。然后由生产厂家制版,流片,成品。然后由生产厂家制版,流片,成品。 5 5可编程器件的可编程器

19、件的ASICASIC设计设计 可可编编程程ASICASIC是是专专用用集集成成电电路路发发展展的的另另一一个个有有特特色色的的分分支支,它它主主要要利利用用可可编编程程的的集集成成电电路路如如PROM,GAL,PLD,CPLD,FPGAPROM,GAL,PLD,CPLD,FPGA等等可可编编程程电电路路或或逻逻辑辑阵阵列列编编程程,得得到到ASICASIC。其其主主要要特特点点是是直直接接提提供供软软件件设设计计编编程程,完完成成ASICASIC电电路路功功能能,不不需需要要再通过集成电路工艺线加工。再通过集成电路工艺线加工。 可可编编程程器器件件的的ASICASIC设设计计种种类类较较多多,

20、可可以以适适应应不不同同的的需需求求。其其中中的的PLDPLD和和FPGAFPGA是是用用得得比比较较普普遍遍得得可可编编程程器器件件。适适合合于于短短开开发发周周期期,有有一一定定复复杂杂性性和和电电路路规规模模的的数数字字电电路路设设计计。尤尤其其适适合合于于从从事事电电子子系系统统设设计计的的工工程程人人员员利利用用EDAEDA工工具具进进行行ASICASIC设计。设计。 1.2 ASIC1.2 ASIC设计方法设计方法:集集成成电电路路制制作作在在只只有有几几百百微微米米厚厚的的原原形形硅硅片片上上,每每个个硅硅片片可可以以容容纳纳数数百百甚甚至至成成千千上上万万个个管管芯芯。集集成成

21、电电路路中中的的晶晶体体管管和和连连线线视视其其复复杂杂程程度度可可以以由由许许多多层层构构成成,目目前前最最复复杂杂的的工工艺艺大大约约由由6层层位位于于硅硅片片内内部部的的扩扩散散层层或或离离子子注入层,以及注入层,以及6层位于硅片表面的连线层组成。层位于硅片表面的连线层组成。就就设设计计方方法法而而言言,设设计计集集成成电电路路的的方方法法可可以以分分为为全全定定制制、半半定定制制和和可可编编程程IC设设计计三三种方式。种方式。 1.2.11.2.1全定制设计简述全定制设计简述 全全定定制制ASICASIC是是利利用用集集成成电电路路的的最最基基本本设设计计方方法法(不不使使用用现现有有

22、库库单单元元),对对集集成成电电路路中中所所有有的的元元器器件件进进行行精精工工细细作作的的设设计计方方法法。全全定定制制设设计计可可以以实实现现最最小小面面积积,最最佳佳布布线线布布局局、最最优优功功耗耗速速度度积积,得得到到最最好好的的电电特特性性。该该方方法法尤尤其其适适宜宜于于模模拟拟电电路路,数数模模混混合合电电路路以以及及对对速速度度、功功耗耗、管管芯芯面面积积、其其它它器器件件特特性性(如如线线性性度度、对对称称性性、电电流流容容量量、耐耐压压等等)有有特特殊殊要要求求的的场场合;或者在没有现成元件库的场合。合;或者在没有现成元件库的场合。 特特点点:精精工工细细作作,设设计计要

23、要求求高高、周周期期长长,设设计计成成本本昂贵。昂贵。 由由于于单单元元库库和和功功能能模模块块电电路路越越加加成成熟熟,全全定定制制设设计计的的方方法法渐渐渐渐被被半半定定制制方方法法所所取取代代。在在现现在在的的ICIC设设计计中,整个电路均采用全定制设计的现象越来越少。中,整个电路均采用全定制设计的现象越来越少。全定制设计要求:全定制设计要求:全定制设计要考虑工艺条件,根据电路的复杂全定制设计要考虑工艺条件,根据电路的复杂和难度决定器件工艺类型、布线层数、材料参数、和难度决定器件工艺类型、布线层数、材料参数、工艺方法、极限参数、成品率等因素。工艺方法、极限参数、成品率等因素。需要经验和技

24、巧,掌握各种设计规则和方法需要经验和技巧,掌握各种设计规则和方法,一般由专业微电子一般由专业微电子IC设计人员完成;设计人员完成;常规设计可以借鉴以往的设计,部分器件需常规设计可以借鉴以往的设计,部分器件需要根据电特性单独设计;要根据电特性单独设计;布局、布线、排版组合等均需要反覆斟酌调布局、布线、排版组合等均需要反覆斟酌调整,按最佳尺寸、最合理布局、最短连线、最便捷整,按最佳尺寸、最合理布局、最短连线、最便捷引脚等设计原则设计版图。引脚等设计原则设计版图。版图设计与工艺相关,要充分了解工艺规范,版图设计与工艺相关,要充分了解工艺规范,根据工艺参数和工艺要求合理设计版图和工艺。根据工艺参数和工

25、艺要求合理设计版图和工艺。1.2.2.1.2.2.半定制设计方法简述半定制设计方法简述 半半定定制制设设计计方方法法又又分分成成基基于于标标准准单单元元的的设设计计方方法法和基于门阵列的设计方法。和基于门阵列的设计方法。 基基基基于于于于标标标标准准准准单单单单元元元元的的的的设设设设计计计计方方方方法法法法是是:将将预预先先设设计计好好的的称称为为标标准准单单元元的的逻逻辑辑单单元元,如如与与门门,或或门门,多多路路开开关关,触触发发器器等等,按按照照某某种种特特定定的的规规则则排排列列,与与预预先先设设计计好好的的大大型型单单元元一一起起组组成成ASICASIC。基基于于标标准准单单元元的

26、的ASICASIC又又称称为为CBIC(Cell based IC)CBIC(Cell based IC)。 基基基基于于于于门门门门阵阵阵阵列列列列的的的的设设设设计计计计方方方方法法法法是是在在预预先先制制定定的的具具有有晶晶体体管管阵阵列列的的基基片片或或母母片片上上通通过过掩掩膜膜互互连连的的方方法法完完成成专专用用集成电路设计。集成电路设计。 半半定定制制主主要要适适合合于于开开发发周周期期短短,低低开开发发成成本本、投投资、风险小的小批量数字电路设计。资、风险小的小批量数字电路设计。1.2.3基于标准单元的设计方法基于标准单元的设计方法 该该方方法法采采用用预预先先设设计计好好的的

27、称称为为标标准准单单元元的的逻逻辑辑单单元元,如如门门电电路路、多多路路开开关关、触触发发器器、时时钟钟发发生生器器等等,将将它它们们按按照照某某种种特特定定的的规规则则排排列列成成阵阵列列,做做成成半半导导体体门门阵阵列列母母片片或或基基片片,然然后后根根据据电电路路功功能能和和要要求求用用掩掩膜膜版版将将所所需需的的逻辑单元连接成所需的专用集成电路。逻辑单元连接成所需的专用集成电路。单元库中所有的标准单元均单元库中所有的标准单元均采用定制方采用定制方法预先设计,法预先设计,如同搭积木或砌墙一样拼接起如同搭积木或砌墙一样拼接起来,通常来,通常按照等高不等宽的原则排列,留出按照等高不等宽的原则

28、排列,留出宽度可调的布线通道。宽度可调的布线通道。CBICCBIC的主要优、缺点的主要优、缺点: 用用预预先先设设计计、预预先先测测试试、预预定定特特性性的的标标准准单单元元库,省时、省钱、少风险地完成库,省时、省钱、少风险地完成ASICASIC设计任务。设计任务。设设计计人人员员只只需需确确定定标标准准单单元元的的布布局局以以及及CBICCBIC中中的互连。的互连。标准单元可以置放于芯片的任何位置。标准单元可以置放于芯片的任何位置。所有掩膜层是定制的;所有掩膜层是定制的;可内嵌定制的功能单元;可内嵌定制的功能单元;制造周期较短,开发成本不是太高。制造周期较短,开发成本不是太高。需要花钱购买或

29、自己设计标准单元库;需要花钱购买或自己设计标准单元库;要花较多的时间进行掩膜层的互连设计。要花较多的时间进行掩膜层的互连设计。 具具有有一一个个标标准准单单元元区区与与4 4个个固固定定功功能能块块的的基基于于单单元的元的ASICASIC示意图见图示意图见图1.21.2。CBIC的设计和版图规则:的设计和版图规则:版心面积较小,无冗余元件,但建库工作量大,版心面积较小,无冗余元件,但建库工作量大,所有掩膜层需定制,晶体管和互连由定制方法连接;所有掩膜层需定制,晶体管和互连由定制方法连接;可以内嵌定制的功能块;制造周期较短。可以内嵌定制的功能块;制造周期较短。 标准单元的版图结构见图标准单元的版

30、图结构见图1.31.3,两层金属的布局,两层金属的布局及布线见图及布线见图1.41.4。 图图1.3 1.3 标准单元的版图结构标准单元的版图结构单元按等高不等宽的方式排列成行,行间留出布线通道,金单元按等高不等宽的方式排列成行,行间留出布线通道,金属属1和金属和金属2采取互相垂直运行。上方和下方的最底层金属分采取互相垂直运行。上方和下方的最底层金属分别为别为VDD和和GAN(VSS)。在。在n阱区内进行阱区内进行P扩散形成扩散形成P沟沟MOS器件,在器件,在P阱区阱区N扩散形成扩散形成N沟沟MOS器件。器件。MOS器件的源漏之器件的源漏之间采用金属栅或者多晶栅。源、漏(栅)开引线孔,经金属间

31、采用金属栅或者多晶栅。源、漏(栅)开引线孔,经金属线互连构成电路。各单元与其它单元之间通过中心连接点的线互连构成电路。各单元与其它单元之间通过中心连接点的引线孔连接。在采用多层金属的结构中,金属层之间的连接引线孔连接。在采用多层金属的结构中,金属层之间的连接也是通过特定的过孔实现。也是通过特定的过孔实现。1.2.4基于门阵列的基于门阵列的ASIC 门门门门阵阵阵阵列列列列是是是是将将将将晶晶晶晶体体体体管管管管作作作作为为为为最最最最小小小小单单单单元元元元重重重重复复复复排排排排列列列列组组组组成成成成基基基基本本本本阵阵阵阵列列列列,做做做做成成成成半半半半导导导导体体体体门门门门阵阵阵阵

32、列列列列母母母母片片片片或或或或基基基基片片片片,然然然然后后后后根根根根据据据据电电电电路路路路功功功功能能能能和和和和要要要要求求求求用用用用掩掩掩掩膜膜膜膜版版版版将将将将所所所所需需需需的的的的逻逻逻逻辑辑辑辑单单单单元元元元连连连连接接接接成成成成所所所所需需需需的的的的专专专专用用用用集集集集成成成成电电电电路路路路。用用门门阵阵列列设设计计的的ASICASIC中中,只只有有上上面面几几层层用用作作晶晶体体管管互互连连的的金金属属层层由由设设计计人人员员用用全全定定制制掩掩膜膜方方法法确确定定,这这类类门门阵阵列列称称为为掩掩膜膜式式门门阵列阵列MGAMGA(masked gate

33、 arraymasked gate array)。)。门门阵阵列列中中的的逻逻辑辑单单元元称称为为宏宏单单元元,其其中中每每个个逻逻辑辑单单元元的的基基本本单单元元版版图图相相同同,只只有有单单元元内内以以及及单单元元之之间间的的互互连连是是定定制制的的。客客户户设设计计人人员员可可以以从从门门阵阵列列单单元元库库中中选选择择预预先先设设计计和和预预定定特特性性逻逻辑辑单单元元或或宏宏单单元元,进进行行定定制制的的互互连连设设计计。门门阵阵列列主主要要适适合合于于开开发发周期短,低开发成本的小批量数字电路设计。周期短,低开发成本的小批量数字电路设计。 MGA门阵列可以分为:门阵列可以分为:通通

34、道道式式门门阵阵列列基基本本单单元元行行与与行行之之间间留留有固定的布线通道,只有互连是定制的。有固定的布线通道,只有互连是定制的。无无通通道道门门阵阵列列(门门海海)无无预预留留的的布布线线区区,在门阵列掩膜层上面布线。在门阵列掩膜层上面布线。结结构构式式门门阵阵列列结结合合CBIC和和MGA的的特特点点,除除了了基基本本单单元元阵阵列列外外,还还有有内内嵌嵌的的定定制制功功能能模模块块。芯片效率高,价格较低,设计周期短。芯片效率高,价格较低,设计周期短。由由于于MGA的的门门阵阵基基本本单单元元是是固固定定的的,不不便便于于实实现现存存储储器器之之类类的的电电路路。在在内内嵌嵌式式门门阵阵

35、列列中中,留留出出一一些些IC区区域域专专门门用用于于实实现现特特殊殊功功能能。利利用用该该内内嵌嵌区域可以设计存储器模块或其它功能电路模块。区域可以设计存储器模块或其它功能电路模块。 1.2.5.可编程可编程ASIC 可可编编程程逻逻辑辑器器件件(PLDPLD,programable programable logic logic devicedevice)是是一一类类标标准准的的通通用用ICIC,对对这这类类器器件件编编程程也也可以实现可以实现ASICASIC功能。功能。 可编程逻辑器件的特点是:可编程逻辑器件的特点是: 无定制掩膜层或逻辑单元;无定制掩膜层或逻辑单元; 设计周期短;设计周

36、期短; 单独的大块可编程互连;单独的大块可编程互连; 由由可可编编程程阵阵列列逻逻辑辑,触触发发器器或或锁锁存存器器组组成逻辑宏单元矩阵。成逻辑宏单元矩阵。 适适合合于于短短开开发发周周期期,有有一一定定复复杂杂性性和和电电路路规规模模的的数数字字电电路路设设计计。尤尤其其适适合合于于从从事事电电子子系系统统设设计计的的工工程人员利用程人员利用EDAEDA工具进行工具进行ASICASIC设计。设计。 常用可编程器件类型:常用可编程器件类型:各各类类可可编编程程只只读读存存储储器器PROMPROM(programable programable read-read-only memoryonly

37、 memory); 通用阵列逻辑通用阵列逻辑GALGAL(generic array logicgeneric array logic)可可编编程程逻逻辑辑阵阵列列PLAPLA(programable programable logic logic arrayarray), ,由固定由固定“或或”阵列和可编程阵列和可编程“与与”阵列组成,熔丝型。阵列组成,熔丝型。 可可 编编 程程 阵阵 列列 逻逻 辑辑 PAL PAL ( programable programable array array logiclogic), ,由由固固定定“与与”阵阵列列和和可可编编程程“或或”阵阵列列组组成成,

38、有熔丝型和可擦写。有熔丝型和可擦写。可可编编程程逻逻辑辑器器件件PLDPLD(programable programable logic logic devicedevice)和和复复杂杂的的可可编编程程逻逻辑辑器器件件CPLDCPLD。适适合合于于短短开开发发周周期期,有有一一定定复复杂杂性性和和电电路路规规模模的的数数字字电电路路设设计计。尤尤其其适适合合于于从从事电子系统设计的工程人员利用事电子系统设计的工程人员利用EDAEDA工具进行工具进行ASICASIC设计。设计。1.2.6现场可编程门阵列现场可编程门阵列FPGA FPGAFPGA比比PLDPLD更更大大、更更复复杂杂,并并具具有

39、有现现场场可可编编程程特性。其基本特点:特性。其基本特点:无定制掩膜层;无定制掩膜层;基本逻辑单元和互连采用编程的方法实现;基本逻辑单元和互连采用编程的方法实现;核核心心电电路路是是规规则则的的可可编编程程基基本本逻逻辑辑单单元元阵阵列列,可以实现组合逻辑和时序逻辑;可以实现组合逻辑和时序逻辑;基本逻辑单元被可编程互连矩阵包围;基本逻辑单元被可编程互连矩阵包围;可编程可编程I/OI/O单元围绕着核心电路;单元围绕着核心电路; 设计的设计的ASIC一般都有冗余问题一般都有冗余问题;设计周期很短设计周期很短,但,但单片电路价格较高。单片电路价格较高。FPGA具有不同容量的系列产品,容量有万门具有不

40、同容量的系列产品,容量有万门级、十万门级、百万门级等多种。级、十万门级、百万门级等多种。1.3设计流程图例设计流程图例ASIC设计流程是指从电路输入到完成版图设计设计流程是指从电路输入到完成版图设计直到完成后仿真的整个过程:直到完成后仿真的整个过程:1.设计输入设计输入采用硬件描述语言(采用硬件描述语言(HDL)或电路)或电路图的输入方式输入电路原理图;图的输入方式输入电路原理图;2.逻辑综合逻辑综合采用采用HDL和逻辑综合工具产生网表,和逻辑综合工具产生网表,说明各逻辑单元的连接关系。说明各逻辑单元的连接关系。3.系统划分系统划分将大系统划分成若干个将大系统划分成若干个ASIC模块。模块。4

41、.布图前仿真布图前仿真检查设计功能是否正确。检查设计功能是否正确。5.布图规则布图规则在芯片上排列网表的模块。在芯片上排列网表的模块。6.布局布局决定模块中单元的位置。决定模块中单元的位置。7.布线布线单元与模块之间连线。单元与模块之间连线。8.提取提取确定互连的电阻和电容。确定互连的电阻和电容。9.布图后仿真布图后仿真检查加上互连线负载后的电路设检查加上互连线负载后的电路设计效果。计效果。1.4ASIC成本评述成本评述 ICIC设计需要根据电路功能和性能要求,设计需要根据电路功能和性能要求,选择电路形式、器件结构、工艺方案和设计规选择电路形式、器件结构、工艺方案和设计规则,尽量减小芯片面积、

42、降低设计成本、缩短则,尽量减小芯片面积、降低设计成本、缩短设计周期,最终设计出正确、合理的掩膜版图,设计周期,最终设计出正确、合理的掩膜版图,通过制版和工艺流片得到所需的集成电路。通过制版和工艺流片得到所需的集成电路。 从经济学的角度看,从经济学的角度看,ASICASIC的设计要求是的设计要求是在尽可能短的设计周期内,以最低的设计成本在尽可能短的设计周期内,以最低的设计成本获得成功的获得成功的ASICASIC产品。产品。 但是,由于但是,由于ASICASIC的设计方法不同,其设的设计方法不同,其设计成本也不同。计成本也不同。 全定制设计周期最长,设计成本贵,全定制设计周期最长,设计成本贵,设计

43、费用最高,适合于批量很大或者对产设计费用最高,适合于批量很大或者对产品成本不计较的场合。品成本不计较的场合。 半定制的设计成本低于全定制,但高半定制的设计成本低于全定制,但高于可编程于可编程ASICASIC,适合于有较大批量的,适合于有较大批量的ASICASIC设计。设计。 用用FPGAFPGA设计设计ASICASIC的设计成本最低,但的设计成本最低,但芯片价格最高,适合于小批量芯片价格最高,适合于小批量ASICASIC产品。产品。 现在的大部分现在的大部分ASICASIC设计都是以半定制设计都是以半定制和和FPGAFPGA形式完成的,所以我们仅就具有可形式完成的,所以我们仅就具有可比性的比性

44、的FPGAFPGA、MGAMGA和和CBICCBIC的设计成本进行的设计成本进行比较、分析。比较、分析。1.4.1ASIC工艺成本比较工艺成本比较半定制和半定制和FPGA可编程可编程ASIC设计的元件成设计的元件成本比较:本比较:CBIC元件成本元件成本MGA大于大于=大于等于大于等于=小于等于小于等于=等于等于!=!=不等于不等于取反取反1.4.VerilogHDL目前的应用情况目前的应用情况几年以来,几年以来,EDA界一直对在数字逻辑设计中界一直对在数字逻辑设计中究竟采用哪一种硬件描述语言争论不休,目前究竟采用哪一种硬件描述语言争论不休,目前的情况是两者不相上下。的情况是两者不相上下。Ve

45、rilogHDL是专门为复杂数字逻辑电路和系是专门为复杂数字逻辑电路和系统的设计仿真而开发的,本身就非常适合复杂统的设计仿真而开发的,本身就非常适合复杂数字逻辑电路和系统的仿真和综合。数字逻辑电路和系统的仿真和综合。另外目前另外目前VerilogHDL-A标准还支持模拟电路标准还支持模拟电路的描述。的描述。因此在混合信号的电路系统的设计中,它必因此在混合信号的电路系统的设计中,它必将会有更广泛的应用。将会有更广泛的应用。特大型(几百万门级以上)的系统级特大型(几百万门级以上)的系统级(System)设计设计,则则VHDL更为适合。更为适合。1.5采用采用VerilogHDL设计复杂数字电路的优

46、点设计复杂数字电路的优点传统的设计方法:传统的设计方法:-查用器件手册;查用器件手册;查用器件手册;查用器件手册;-选用合适的微处理器和电路芯片;选用合适的微处理器和电路芯片;选用合适的微处理器和电路芯片;选用合适的微处理器和电路芯片;-设计面包板和线路板;设计面包板和线路板;设计面包板和线路板;设计面包板和线路板;-调试;调试;调试;调试;-定型;定型;定型;定型;-设计复杂的系统(几十万门以上)极其困难。设计复杂的系统(几十万门以上)极其困难。设计复杂的系统(几十万门以上)极其困难。设计复杂的系统(几十万门以上)极其困难。现代的设计方法:现代的设计方法:-选用合适的选用合适的选用合适的选用

47、合适的EDAEDA仿真仿真仿真仿真工具;工具;工具;工具;-选用合适电路图输入和选用合适电路图输入和选用合适电路图输入和选用合适电路图输入和HDLHDL编辑工具;编辑工具;编辑工具;编辑工具;-逐个编写可综合逐个编写可综合逐个编写可综合逐个编写可综合HDLHDL模块;模块;模块;模块;-逐个编写逐个编写逐个编写逐个编写HDLHDL测试模块;测试模块;测试模块;测试模块;-逐个做逐个做逐个做逐个做VerilogHDLVerilogHDL电路逻辑访真;电路逻辑访真;电路逻辑访真;电路逻辑访真;-编写编写编写编写VerilogHDLVerilogHDL总测试模块;总测试模块;总测试模块;总测试模块;

48、-做系统电路逻辑总仿真;做系统电路逻辑总仿真;做系统电路逻辑总仿真;做系统电路逻辑总仿真;1.5采用采用Verilog HDL设计复杂数字电路的优点设计复杂数字电路的优点现代的设计方法(续前):现代的设计方法(续前):- -选用合适的基本逻辑元件库和宏库选用合适的基本逻辑元件库和宏库选用合适的基本逻辑元件库和宏库选用合适的基本逻辑元件库和宏库-租用或购买必要的租用或购买必要的租用或购买必要的租用或购买必要的IPIP核;核;核;核;-选用合适的综合器;选用合适的综合器;选用合适的综合器;选用合适的综合器;-进行综合得到门级电路结构;进行综合得到门级电路结构;进行综合得到门级电路结构;进行综合得到

49、门级电路结构;-布局布线,得到时延文件;布局布线,得到时延文件;布局布线,得到时延文件;布局布线,得到时延文件;-后仿真;后仿真;后仿真;后仿真;-定型,定型,定型,定型,FPGAFPGA编码或编码或编码或编码或ASICASIC投片投片投片投片1.5采用采用Verilog HDL设计复杂数字电路的优点设计复杂数字电路的优点1.6采用硬件描述语言采用硬件描述语言(Verilog HDL)的设计的设计流程简介流程简介-Top-Down Top-Down 设计思想设计思想 系系 统统 级级 设设 计计模模 块块 模模 块块 模模 块块 模模 块块 模模 块块模模 块块 模模 块块 C C 模模 块块

50、 模模 块块 模模 块块自顶向下自顶向下Top-down的设计流程的设计流程CPUALURAMSTATEIRACCUMPCCPUCPUALUPCACCUMSTATEIRRAM1整个设计的行为化建模和整个设计的行为化建模和功能正确性仿真功能正确性仿真2设计分至主要的部分且每个设计分至主要的部分且每个部分按部分按RTL行为级建模行为级建模*仿真每个部分仿真每个部分*对整个设计重仿真对整个设计重仿真3按库元件生成每个部分的按库元件生成每个部分的结构化模型结构化模型*每个主要部分重仿真每个主要部分重仿真*对整个设计重仿真对整个设计重仿真自底向上自底向上Bottom-up的设计流程的设计流程CPUALU

51、RAMSTATEIRACCUMPC32-bitAdderaddbitaddbitaddbitALUDecoder Add32Mult1-bitAdder1分析设计功能的正确性分析设计功能的正确性2整个设计建模和仿真整个设计建模和仿真3中间层元件建模和仿真中间层元件建模和仿真4最底层元件建模和仿真最底层元件建模和仿真用用E ED DA A设设计计数数字字系系统统的的流流程程 HDL HDL 设设 计计 文文 件件 HDL HDL 功功 能能 仿仿 真真 HDL HDL 综合综合 优优 化化 、布、布 局局 布布 线线布布 线线 后后 门门 级级 仿仿 真真 图图 1-6-3 HDL 1-6-3

52、HDL 设设 计计 流流 程程 图图 电电 路路 功功 能能 仿仿 真真 电电 路路 图图 设设 计计 文文 件件 电电 路路 制制 造造 工工 艺艺 文文 件件 或或 FPGA FPGA 码码 流流 文文 件件有有 问问 题题没没 问问 题题有有 问问 题题没没 问问 题题有有 问问 题题没没 问问 题题与与 实实 现现 逻逻 辑辑 的的 物物理理 器器 件件 有有 关关 的的 工工 艺艺技技 术术 文文 件件确定实现电路确定实现电路的具体库名的具体库名为什么要用为什么要用硬件描述语言来设计硬件描述语言来设计?电路的逻辑功能容易理解;电路的逻辑功能容易理解;电路的逻辑功能容易理解;电路的逻辑

53、功能容易理解;便于计算机对逻辑进行分析处理;便于计算机对逻辑进行分析处理;便于计算机对逻辑进行分析处理;便于计算机对逻辑进行分析处理;把逻辑设计与具体电路的实现分成两个独立把逻辑设计与具体电路的实现分成两个独立把逻辑设计与具体电路的实现分成两个独立把逻辑设计与具体电路的实现分成两个独立的阶段来操作;的阶段来操作;的阶段来操作;的阶段来操作;逻辑设计与实现的逻辑设计与实现的逻辑设计与实现的逻辑设计与实现的工艺无关工艺无关工艺无关工艺无关;逻辑设计的资源积累可以重复利用逻辑设计的资源积累可以重复利用逻辑设计的资源积累可以重复利用逻辑设计的资源积累可以重复利用(IPcoreIPcore);可以由多人

54、共同更好更快地设计非常复杂可以由多人共同更好更快地设计非常复杂可以由多人共同更好更快地设计非常复杂可以由多人共同更好更快地设计非常复杂的逻辑电路(几十万门以上的逻辑系统)。的逻辑电路(几十万门以上的逻辑系统)。的逻辑电路(几十万门以上的逻辑系统)。的逻辑电路(几十万门以上的逻辑系统)。 两者建模能力的比较两者建模能力的比较VHDLVITAL系统级系统级算法级算法级寄存器传输级寄存器传输级逻辑门级逻辑门级开关电路级开关电路级行为级行为级 的抽象的抽象 VerilogHDL VerilogHDL 与与 VHDL VHDL 建建 模模 能能 力力 的的 比比 较较Verilog1.7小结小结(1)采

55、用采用VerilogHDL设计方法比采用电路图输入设计方法比采用电路图输入的方法更有优越性,这就是为什么美国等先进的方法更有优越性,这就是为什么美国等先进工业国家在进入九十年代以后纷纷采用工业国家在进入九十年代以后纷纷采用HDL设设计方法的原因。在两种符合计方法的原因。在两种符合IEEE标准的硬件描标准的硬件描述语言中,述语言中,VerilogHDL与与VHDL相比更加基础、相比更加基础、更易学习,掌握更易学习,掌握HDL设计方法应从学习设计方法应从学习VerilogHDL设计方法开始。设计方法开始。VerilogHDL可用于复杂可用于复杂数字逻辑电路和系统的总体仿真、子系统仿真数字逻辑电路和

56、系统的总体仿真、子系统仿真和具体电路综合等各个设计阶段。和具体电路综合等各个设计阶段。1.7小结小结(2)由于由于TOP_DOWN的设计方法是首先从系统设计的设计方法是首先从系统设计入手,从顶层进行功能划分和结构设计。系统的入手,从顶层进行功能划分和结构设计。系统的总体仿真是顶层进行功能划分的重要环节,这时总体仿真是顶层进行功能划分的重要环节,这时的设计是与工艺无关的。由于设计的主要仿真和的设计是与工艺无关的。由于设计的主要仿真和调试过程是在高层次完成的所以能够早期发现结调试过程是在高层次完成的所以能够早期发现结构设计上的错误,避免设计工作的浪费,同时也构设计上的错误,避免设计工作的浪费,同时

57、也减少了逻辑仿真的工作量。自顶向下的设计方法减少了逻辑仿真的工作量。自顶向下的设计方法方便了从系统级划分和管理整个项目,使得几十方便了从系统级划分和管理整个项目,使得几十万门甚至几百万门规模的复杂数字电路的设计成万门甚至几百万门规模的复杂数字电路的设计成为可能,并可减少设计人员,避免不必要的重复为可能,并可减少设计人员,避免不必要的重复设计,提高了设计的一次成功率。设计,提高了设计的一次成功率。1.7小结小结(3)从底向上的设计在某种意义上讲可以看作从底向上的设计在某种意义上讲可以看作上述上述TOP_DOWN设计的逆过程。虽然设计设计的逆过程。虽然设计也是从系统级开始,即从设计树的树根开也是从

58、系统级开始,即从设计树的树根开始对设计进行逐次划分,但划分时首先考始对设计进行逐次划分,但划分时首先考虑的是单元是否存在,即设计划分过程必虑的是单元是否存在,即设计划分过程必须从存在的基本单元出发,设计树最末枝须从存在的基本单元出发,设计树最末枝上的单元要么是已经制造出的单元,要么上的单元要么是已经制造出的单元,要么是其它项目已开发好的单元或者是可外购是其它项目已开发好的单元或者是可外购得到的单元。得到的单元。1.7小结小结(4)自顶向下的设计过程中在每一层次划分时自顶向下的设计过程中在每一层次划分时都要对某些目标作优化,都要对某些目标作优化,TOP_DOWN的的设计过程是理想的设计过程,设计

59、过程是理想的设计过程,它的缺点是它的缺点是得到的最小单元不标准,制造成本可能很得到的最小单元不标准,制造成本可能很高。高。从底向上的设计过程全采用标准基本从底向上的设计过程全采用标准基本单元,通常比较经济,但有时可能不能满单元,通常比较经济,但有时可能不能满足一些特定的指标要求。复杂数字逻辑电足一些特定的指标要求。复杂数字逻辑电路和系统的设计过程通常是这路和系统的设计过程通常是这两种设计方两种设计方法的结合法的结合,设计时需要考虑多个目标的综,设计时需要考虑多个目标的综合平衡。合平衡。1.8思考题思考题1.什么是硬件描述语言?它的主要作用是什么是硬件描述语言?它的主要作用是什么?什么?2.目前

60、世界上符合目前世界上符合IEEE标准的硬件描述语标准的硬件描述语言有哪两种?它门各有什么特点?言有哪两种?它门各有什么特点?3.简单叙述一下利用简单叙述一下利用EDA工具并采用硬件描工具并采用硬件描述语言(述语言(HDL)的设计方法和流程。)的设计方法和流程。4.采用硬件描述语言设计方法的优点是什么采用硬件描述语言设计方法的优点是什么?有什么缺点?有什么缺点?第二讲第二讲Verilog语法的基本概念语法的基本概念Verilog HDL Verilog HDL 的抽象级别的抽象级别行为级:行为级:行为级:行为级:有关行为有关行为有关行为有关行为和技术指和技术指和技术指和技术指标模块,标模块,标模

61、块,标模块,容易理解容易理解容易理解容易理解开关级:开关级:开关级:开关级:有关物理有关物理有关物理有关物理形状和布形状和布形状和布形状和布局参数的局参数的局参数的局参数的模块,非模块,非模块,非模块,非常难理解常难理解常难理解常难理解RTLRTL级:有关级:有关级:有关级:有关逻辑执行步骤逻辑执行步骤逻辑执行步骤逻辑执行步骤的模块,较难的模块,较难的模块,较难的模块,较难理解理解理解理解门级门级门级门级 :有:有:有:有关逻辑部件关逻辑部件关逻辑部件关逻辑部件互相连接的互相连接的互相连接的互相连接的模块,很难模块,很难模块,很难模块,很难理解理解理解理解 抽象级别和综合与仿真的关系抽象级别和

62、综合与仿真的关系行为仿真:行为仿真:行为仿真:行为仿真:行为的验证和验证模块分割的合理性行为的验证和验证模块分割的合理性行为的验证和验证模块分割的合理性行为的验证和验证模块分割的合理性前仿真前仿真前仿真前仿真:即即即即RTLRTL级仿真,检查有关模块逻辑执行级仿真,检查有关模块逻辑执行级仿真,检查有关模块逻辑执行级仿真,检查有关模块逻辑执行步骤是否正确。步骤是否正确。步骤是否正确。步骤是否正确。逻辑综合:逻辑综合:逻辑综合:逻辑综合:把把把把RTLRTL级模块转换成门级级模块转换成门级级模块转换成门级级模块转换成门级 。后仿真:后仿真:后仿真:后仿真:用门级模型做验证,检查门的互连逻辑其用门级

63、模型做验证,检查门的互连逻辑其用门级模型做验证,检查门的互连逻辑其用门级模型做验证,检查门的互连逻辑其功能是否正确。功能是否正确。功能是否正确。功能是否正确。布局布线:布局布线:布局布线:布局布线: 在门级模型的基础上加上了布线延时在门级模型的基础上加上了布线延时在门级模型的基础上加上了布线延时在门级模型的基础上加上了布线延时布局布线后仿真:布局布线后仿真:布局布线后仿真:布局布线后仿真:与真实的电路最接近的验证。与真实的电路最接近的验证。与真实的电路最接近的验证。与真实的电路最接近的验证。2.1verilog模块的基本概念模块的基本概念我们将通过几个简单的我们将通过几个简单的VerilogH

64、DL程程序,从中了解序,从中了解Verilog模块的特性模块的特性行为级行为级例例2.1二选一多路器二选一多路器modulemodulemuxtwo(out,a,b,sl);(out,a,b,sl);inputa,b,sl;inputa,b,sl;outputout;outputout;Regout;Regout;always(sloraorb)always(sloraorb)if(!sl)out=a;if(!sl)out=a;elseout=b;elseout=b;endmoduleendmodule二选一多路器如何工作?二选一多路器如何工作?abslout结构级结构级例:例:2.2带有与非

65、门的二选一多路器带有与非门的二选一多路器modulemuxtwo(out,a,b,sl);modulemuxtwo(out,a,b,sl);inputa,b,sl;inputa,b,sl;outputout;outputout;notnotu1u1(ns1ns1,sl sl););););andand#1u2#1u2(selasela,a a,nslnsl););););andand#1u3#1u3(selbselb,b b,sl sl););););oror#2u4#2u4(outout,selasela,selbselb););););endmoduleendmodulenotnot等是等

66、是等是等是VerilogVerilog语言的保留字语言的保留字语言的保留字语言的保留字如何把例如何把例2.1自动转换为例自动转换为例2.2的描述模块?的描述模块?outabslselbselansl综合的概念综合的概念如果我们在编写如果我们在编写Verilog模块时,不但符模块时,不但符合语法,还符合一些基本规则,就可以通合语法,还符合一些基本规则,就可以通过计算机上运行的工具把过计算机上运行的工具把例例2.1自动转换为自动转换为例例2.2的描述模块,这个过程叫做的描述模块,这个过程叫做综合综合(Synthesis)。)。例例2.2的描述模块非常容易与某种工艺的基本的描述模块非常容易与某种工艺

67、的基本元件逐一对应起来,再通过布局布线工具元件逐一对应起来,再通过布局布线工具自动的把它转变为某种具体工艺的电路布自动的把它转变为某种具体工艺的电路布线结构。线结构。请大家思考:如何实现这种转变?请大家思考:如何实现这种转变?下面再看几个简单的模块,目下面再看几个简单的模块,目的是初步了解的是初步了解Verilog语法最重要的语法最重要的几个基本概念:几个基本概念:并行性、层次结构并行性、层次结构性、可综合性和测试平台性、可综合性和测试平台(testbench)。)。例例2.3三位加法器三位加法器moduleadder(count,sum,a,b,cin); input2:0a,b;input

68、cin;outputcount;output2:0sum;assigncount,sum=a+b+cin;endmodule这个例子通过连续赋值语句描述了一个名为这个例子通过连续赋值语句描述了一个名为adder的三位加法器可以根据两个三比特数的三位加法器可以根据两个三比特数a、b和进和进位(位(cin)计算出和()计算出和(sum)和进位()和进位(count)。)。从例从例子中可以看出整个子中可以看出整个VerilogHDL程序是嵌套在程序是嵌套在module和和endmodule声明语句里的。声明语句里的。例例2.42.4比较器比较器module compare ( equal,a,b )

69、;module compare ( equal,a,b ); output equal; / output equal; /声明输出信号声明输出信号equalequal input 1:0 a,b; / input 1:0 a,b; /声明输入信号声明输入信号a,ba,b assign equal= assign equal=(a= =ba= =b)?)?1 1:0;0;/*/*如果如果a a、b b 两个输入信号相等两个输入信号相等, ,输出为输出为1 1。否则为。否则为0*/0*/endmoduleendmodule 这个程序通过连续赋值语句描述了一个名为这个程序通过连续赋值语句描述了一个

70、名为comparecompare的比较器。对两比特数的比较器。对两比特数 a a、b b 进行比较,如进行比较,如a a与与b b相等,则输出相等,则输出equalequal为高电平,否则为低电平。为高电平,否则为低电平。在这个程序中在这个程序中,/*.*/,/*.*/和和/./.表示注表示注释部分释部分, ,注释只是为了方便程序员理解程序注释只是为了方便程序员理解程序, ,对编译对编译是不起作用的。是不起作用的。例例2.5 2.5 三态驱动器(三态驱动器(1 1)module trist2(out,in,enable);module trist2(out,in,enable); output

71、 out; output out; input in, enable; input in, enable; bufif1 mybuf(out,in,enable); bufif1 mybuf(out,in,enable);endmoduleendmodule 这个程序描述了一个名为这个程序描述了一个名为trist2trist2的三态驱动器。的三态驱动器。程序通过调用一个在程序通过调用一个在VerilogVerilog语言提供的原语库中语言提供的原语库中现存的三态驱动器实例元件现存的三态驱动器实例元件bufif1bufif1来实现其逻辑功来实现其逻辑功能。这个调用过程也称为库元件能。这个调用过程

72、也称为库元件bufif1bufif1的实例化,的实例化,在本模块中他被具体化为在本模块中他被具体化为mybufmybuf。例例2.62.6三态驱动器(三态驱动器(2 2)module trist1(out,in,enable);module trist1(out,in,enable); output out; output out; input in, enable; input in, enable; mytri tri_inst(out,in,enable);mytri tri_inst(out,in,enable); /调用由调用由mytrimytri模块定义的实例元件模块定义的实例元件

73、tri_insttri_instendmoduleendmodulemodule mytri(out,in,enable);module mytri(out,in,enable); output out; output out; input in, enable; input in, enable; assign out = enable? in : bz; assign out = enable? in : bz;endmoduleendmodule 在这个例子中存在着两个模块。模块在这个例子中存在着两个模块。模块trist1trist1调用由模调用由模块块mytrimytri定义的实例元件

74、定义的实例元件tri_insttri_inst。模块。模块trist1trist1是顶层模是顶层模块。模块块。模块mytrimytri则被称为子模块。则被称为子模块。小小结结1.VerilogHDL程序是由程序是由模块模块构成的。每个模块的内容构成的。每个模块的内容都是嵌在都是嵌在module和和endmodule两个语句之间。每个两个语句之间。每个模块实现特定的功能。模块是可以进行层次嵌套的。模块实现特定的功能。模块是可以进行层次嵌套的。正因为如此正因为如此,才可以将大型的数字电路设计分割成不才可以将大型的数字电路设计分割成不同的小模块来实现特定的功能同的小模块来实现特定的功能,最后通过顶层

75、模块调最后通过顶层模块调用子模块来实现整体功能。用子模块来实现整体功能。2.每个模块要进行每个模块要进行端口定义端口定义,并说明输入输出口并说明输入输出口,然后然后对模块的功能进行行为逻辑描述。对模块的功能进行行为逻辑描述。3.VerilogHDL程序的书写格式自由程序的书写格式自由,一行可以写几个一行可以写几个语句语句,一个语句也可以分写多行。一个语句也可以分写多行。4.除了除了endmodule语句外语句外,每个语句和数据定义的最后每个语句和数据定义的最后必须有必须有分号分号。5.可以用可以用/*.*/和和/.对对VerilogHDL程序的程序的任何部分作任何部分作注释注释。一个好的。一个

76、好的,有使用价值的源程序都有使用价值的源程序都应当加上必要的注释应当加上必要的注释,以增强程序的可读性和可维护以增强程序的可读性和可维护性。性。思考题思考题1.构成模块的关键词是什么?构成模块的关键词是什么?2.什么叫综合?通过综合产生的是什么?产生的什么叫综合?通过综合产生的是什么?产生的结果有什么用处?结果有什么用处?3.仿真是什么?为什么要进行仿真?仿真可以在仿真是什么?为什么要进行仿真?仿真可以在几个层面上进行几个层面上进行?每个层面的仿真有什么意义每个层面的仿真有什么意义?4.模块的端口是如何描述的?模块的端口是如何描述的?5.在引用实例模块的时候,如何在主模块中连接在引用实例模块的

77、时候,如何在主模块中连接信号线?信号线?第三讲第三讲常用常用Verilog语法之一语法之一-模块的结构、数据类型和变量、模块的结构、数据类型和变量、基本的运算符号基本的运算符号-3.1模块的结构模块的结构Verilog的基本设计单元是的基本设计单元是“模块模块”(block)。一个模块是。一个模块是由两部分组成的,一部分描述接口,另一部分描述逻辑功由两部分组成的,一部分描述接口,另一部分描述逻辑功能,即定义输入是如何影响输出的。下面举例说明:能,即定义输入是如何影响输出的。下面举例说明:从上面的例子可以看出,从上面的例子可以看出,Verilog结构完全嵌在结构完全嵌在module和和endmo

78、dule声明语句之间,每个声明语句之间,每个Verilog程序包括四个主要程序包括四个主要部分:部分:端口定义、端口定义、I/O说明、内部信号声明、功能定义。说明、内部信号声明、功能定义。abcdmodule block(a,b,c,d); input a,b; output c,d; assign c=a|b; assign d=a&b;endmodule 3.1.1模块的端口定义模块的端口定义模块的端口声明了模块的输入输出口。其格式如下:module 模块名模块名(口口1,口,口2,口,口3,口,口4,);3.1.2模块内容模块内容(1)模块的内容包括模块的内容包括I/O说明、内部信号声明

79、、功能定义。说明、内部信号声明、功能定义。1.I/O说明的格式如下:说明的格式如下:输入口:输入口:input端口名端口名1,端口名,端口名2,,端口名端口名i;/(共有共有i个输入口个输入口)输出口:输出口:output端口名端口名1,端口名,端口名2,,端口名端口名j;/(共有共有j个输出口个输出口)I/O说明也可以写在端口声明语句里。其格式如下:说明也可以写在端口声明语句里。其格式如下:modulemodule_name(inputport1,inputport2,outputport1,outputport2);3.1.2模块内容模块内容(2)2.内部信号说明:在模块内用到的和与端口有

80、关的内部信号说明:在模块内用到的和与端口有关的wire和和reg变量的声明。变量的声明。如:如:regwidth-1:0R变量变量1,R变量变量2;wirewidth-1:0W变量变量1,W变量变量2;3.功能定义功能定义:模块中最重要的部分是逻辑功能定义部分。有三种方模块中最重要的部分是逻辑功能定义部分。有三种方法可在模块中产生逻辑。法可在模块中产生逻辑。1)用“assign”声明语句如:assigna=b&c;2)用实例元件如:and#2and_inst(q,a,b); 采用实例元件的方法象在电路图输入方式下,调入库元件一样。要求每个实例元件的名字必须是唯一的,以避免与其他调用与门(and

81、)的实例混淆。3)用“always”块如:always(posedgeclkorposedgeclr)beginif(clr)q=0;elseif(en)q=d;end采用“assign”语句是描述组合逻辑组合逻辑最常用的方法之一。而“always”块既可用于描述组合逻辑组合逻辑也可描述时序逻辑时序逻辑。上面的例子用“always”块生成了一个带有异步清除端的D触发器。3.1.2 模块内容模块内容(3)3.1.3理解要点理解要点如果用如果用Verilog模块实现一定的功能,首先应该清楚哪模块实现一定的功能,首先应该清楚哪些是同时发生的些是同时发生的,哪些是顺序发生的。哪些是顺序发生的。上面三个

82、例子分别上面三个例子分别采用了采用了“assign”语句、实例元件和语句、实例元件和“always”块。这三块。这三个例子描述的逻辑功能是同时执行的。个例子描述的逻辑功能是同时执行的。也就是说,如果把也就是说,如果把这三项写到一个这三项写到一个VeriIog模块文件中去,它们的次序不会模块文件中去,它们的次序不会影响逻辑实现的功能。这三项是同时执行的,也就是并发影响逻辑实现的功能。这三项是同时执行的,也就是并发的。的。然而,然而,在在“always”模块内,逻辑是按照指定的顺序模块内,逻辑是按照指定的顺序执行的。执行的。“always”块中的语句称为块中的语句称为“顺序语句顺序语句”,因为,因

83、为它们是顺序执行的。它们是顺序执行的。请注意,两个或更多的请注意,两个或更多的“always”模模块也是同时执行的,但是模块内部的语句是顺序执行的。块也是同时执行的,但是模块内部的语句是顺序执行的。看一下看一下“always”内的语句,你就会明白它是如何实现功内的语句,你就会明白它是如何实现功能的。能的。if.elseif必须顺序执行,否则其功能就没有任何必须顺序执行,否则其功能就没有任何意义。如果意义。如果else语句在语句在if语句之前执行,功能就会不符合要语句之前执行,功能就会不符合要求!为了能实现上述描述的功能,求!为了能实现上述描述的功能,“always”模块内部的模块内部的语句将按

84、照书写的顺序执行。语句将按照书写的顺序执行。3.1.4要点总结要点总结Verilog的初学者一定要深入理解并记住以下的初学者一定要深入理解并记住以下4点:点:1.在在Verilog模块中所有过程块(如:模块中所有过程块(如:always块)块)、连续赋值语句连续赋值语句、实例引用都是并行的;、实例引用都是并行的;2.他们表示的是一种通过变量名连接的关系;他们表示的是一种通过变量名连接的关系;3.在同一模块中这三种出现的顺序没有关系;在同一模块中这三种出现的顺序没有关系;4.只有连续赋值语句只有连续赋值语句assign和实例引用语句可和实例引用语句可以独立于过程快而存在于模块的功能定义以独立于过

85、程快而存在于模块的功能定义部分。部分。3.2数据类型及其常量及变量数据类型及其常量及变量VerilogHDL中总共有十九种数据类型中总共有十九种数据类型,数数据类型是用来表示数字电路硬件中的数据储存据类型是用来表示数字电路硬件中的数据储存和传送元素的。和传送元素的。在本教材中我们先只介绍四个在本教材中我们先只介绍四个最基本的数据类型最基本的数据类型,它们是:它们是:reg型、型、wire型、型、integer型、型、parameter型型VerilogHDL语言中也有语言中也有常量常量和和变量变量之分。之分。它们分别属于以上这些类型。它们分别属于以上这些类型。3.2.1.常量常量在程序运行过程

86、中在程序运行过程中,其值不能被改变的量称其值不能被改变的量称为常量。下面首先对在为常量。下面首先对在VerilogHDL语言中语言中使用的数字及其表示方式进行介绍。使用的数字及其表示方式进行介绍。一数字一数字(1)整数)整数:在在VerilogHDL中中,整型常量即整常数有以下四种进制表示整型常量即整常数有以下四种进制表示形式形式:1)二进制整数)二进制整数(b或或B)2)十进制整数)十进制整数(d或或D)3)十六进制整数)十六进制整数(h或或H)4)八进制整数)八进制整数(o或或O)数字表达方式有以下三种数字表达方式有以下三种:1)这是一种全面的描述方式。这是一种全面的描述方式。2)在这种描

87、述方式中在这种描述方式中,数字的位宽采用缺省数字的位宽采用缺省位宽位宽(这由具体的机器系统决定这由具体的机器系统决定,但至少但至少32位位)。3)在这种描述方式中在这种描述方式中,采用缺省进制十进制。采用缺省进制十进制。位宽指明了数字的精确位数。例如位宽指明了数字的精确位数。例如:一个一个4位二进制数的数位二进制数的数字的位宽为字的位宽为4,见下例见下例:8b10101100/位宽为位宽为8的数的二进制表示的数的二进制表示,b表示二进制表示二进制一数字一数字(2)x和和z值值:在数字电路中在数字电路中,x代表不定值代表不定值,z代表高阻值。一个代表高阻值。一个x可以用来定可以用来定义十六进制数

88、的四位二进制数的状态义十六进制数的四位二进制数的状态,八进制数的三位八进制数的三位,二进二进制数的一位。制数的一位。z的表示方式同的表示方式同x类似。类似。z还有一种表达方式是可还有一种表达方式是可以写作以写作?。见下例见下例:4b10x0/位宽为位宽为4的二进制数从低位数起第二位为不定值的二进制数从低位数起第二位为不定值4b101z/位宽为位宽为4的二进制数从低位数起第一位为高阻值的二进制数从低位数起第一位为高阻值12dz/位宽为位宽为12的十进制数其值为高阻值的十进制数其值为高阻值(第一种表达第一种表达)12d?/位宽为位宽为12的十进制数其值为高阻值的十进制数其值为高阻值(第二种表达第二

89、种表达)8h4x/位宽为位宽为8的十六进制数其低四位值为不定值的十六进制数其低四位值为不定值一数字一数字(3)负数)负数:一个数字可以被定义为负数一个数字可以被定义为负数,只需在位宽只需在位宽表达式前加一个减号表达式前加一个减号,减号必须写在数字减号必须写在数字定义表达式的最前面。定义表达式的最前面。注意减号不可以注意减号不可以放在位宽和进制之间也不可以放在进制放在位宽和进制之间也不可以放在进制和具体的数之间。见下例和具体的数之间。见下例:-8d5/这个表达式代表这个表达式代表5的补数(用八的补数(用八位二进制数表示位二进制数表示)8d-5/非法格式非法格式一数字一数字(4)下划线下划线(un

90、derscore_):下划线可以用来分隔开数的表达以提高程序可读性。下划线可以用来分隔开数的表达以提高程序可读性。但但不可以用在位宽和进制处不可以用在位宽和进制处,只能用在具体的数字之只能用在具体的数字之间间。见下例。见下例:16b1010_1011_1111_1010 /合法格式合法格式8b_0011_1010/非法格式非法格式当常量不说明位数时,默认值是当常量不说明位数时,默认值是32位位例:例:1032d1032b10101=32d1=32b1在在VerilogHDL中用中用parameter来定来定义常量义常量,即用即用parameter来定义一个标来定义一个标识符代表一个常量识符代表

91、一个常量,称为符号常量称为符号常量,即即标识符形式的常量标识符形式的常量,采用标识符代表一采用标识符代表一个常量可提高程序的可读性和可维护个常量可提高程序的可读性和可维护性。性。二参数二参数(Parameter)型型parameter是参数型数据的确认符,确认符后跟着一个用逗是参数型数据的确认符,确认符后跟着一个用逗号分隔开的赋值语句表。在每一个赋值语句的右边必须是一号分隔开的赋值语句表。在每一个赋值语句的右边必须是一个常数表达式。个常数表达式。也就是说,该表达式只能包含数字或先前已定义过的参数。见下列:parametermsb=7;/定义参数msb为常量7parametere=25,f=29

92、;/定义二个常数参数parameterr=5.7;/声明r为一个实型参数parameterbyte_size=8,byte_msb=byte_size-1;/用常数表达式赋值parameteraverage_delay=(r+f)/2;/用常数表达式赋值二参数二参数(Parameter)型型3.2.2变量变量(1)变量即在程序运行过程中其值可以改变的变量即在程序运行过程中其值可以改变的量量,在在VerilogHDL中变量的数据类型有很中变量的数据类型有很多种多种,这里只对常用的几种进行介绍。这里只对常用的几种进行介绍。网络数据类型表示结构实体网络数据类型表示结构实体(例如门例如门)之间的物理连

93、接。网络类型的变量不能储之间的物理连接。网络类型的变量不能储存值,而且它必需受到驱动器存值,而且它必需受到驱动器(例如门或连例如门或连续赋值语句,续赋值语句,assign)的驱动。如果没有驱动的驱动。如果没有驱动器连接到网络类型的变量上,则该变量就器连接到网络类型的变量上,则该变量就是高阻的,即其值为是高阻的,即其值为z。3.2.2变量变量(2)常用的网络数据类型包括常用的网络数据类型包括wire型和型和tri型。型。这两种变量都是用于连接器件单元,它们这两种变量都是用于连接器件单元,它们具有相同的语法格式和功能。具有相同的语法格式和功能。之所以提供这两种名字来表达相同的概之所以提供这两种名字

94、来表达相同的概念是为了与模型中所使用的变量的实际情念是为了与模型中所使用的变量的实际情况相一致。况相一致。wire型变量通常是用来表示单个型变量通常是用来表示单个门驱动或连续赋值语句驱动的网络型数据,门驱动或连续赋值语句驱动的网络型数据,tri型变量则用来表示多驱动器驱动的网络型变量则用来表示多驱动器驱动的网络型数据。型数据。3.2.2变量变量(3)3.2.2变量变量(4)如果如果wire型或型或tri型变量没有定义逻辑强度型变量没有定义逻辑强度(logicstrength),在多驱动源的情况下,逻辑,在多驱动源的情况下,逻辑值会发生冲突从而产生不确定值。下表为值会发生冲突从而产生不确定值。下

95、表为wire型和型和tri型变量的真值表型变量的真值表(注意注意:这里假设两个驱这里假设两个驱动源的强度是一致的动源的强度是一致的)。wire/tri01xz00xx01x1x1xxxxxz01xz一一wire型型wire型数据型数据常用来表示用于以常用来表示用于以assign关键字关键字指定的组合逻辑信号。指定的组合逻辑信号。Verilog程序模块中输入输出信号类型缺省程序模块中输入输出信号类型缺省时自动定义为时自动定义为wire型。型。wire型信号可以用作任何方程式的输入,也型信号可以用作任何方程式的输入,也可以用作可以用作“assign”语句或实例元件的输语句或实例元件的输出。出。wi

96、re型信号格式如下:型信号格式如下:wiren-1:0数据名数据名1,数据名数据名2,数据名数据名i;/共有共有i条总线,每条总线内有条总线,每条总线内有n条线路条线路或或wiren:1数据名数据名1,数据名数据名2,数据名数据名i;wire是是wire型数据的确认符,型数据的确认符,n-1:0和和n:1代表代表该数据的位宽,即该数据有几位。最后跟着的是该数据的位宽,即该数据有几位。最后跟着的是数据的名字。如果一次定义多个数据,数据名之数据的名字。如果一次定义多个数据,数据名之间用逗号隔开。声明语句的最后要用分号表示语间用逗号隔开。声明语句的最后要用分号表示语句结束。看下面的几个例子。句结束。

97、看下面的几个例子。wirea;/定义了一个一位的定义了一个一位的wire型数据型数据wire7:0b;/定义了一个八位的定义了一个八位的wire型数据型数据wire4:1c,d;/定义了二个四位的定义了二个四位的wire型数据型数据一一wire型型二二reg型型寄存器是数据储存单元的抽象。寄存器是数据储存单元的抽象。寄存器数据类型的关键字是寄存器数据类型的关键字是reg。通过赋值语句可以改变寄存器储存的值,通过赋值语句可以改变寄存器储存的值,其作用与改变触发器储存的值相当。其作用与改变触发器储存的值相当。reg类型数据的缺省初始值为不定值类型数据的缺省初始值为不定值x。reg型数据常用来表示用

98、于型数据常用来表示用于“always”模块模块内的指定信号,常代表触发器。内的指定信号,常代表触发器。通常,在设计中要由通常,在设计中要由“always”块通过使块通过使用行为描述语句来表达逻辑关系。用行为描述语句来表达逻辑关系。在在“always”块内被赋值的每一个信号都块内被赋值的每一个信号都必须必须定义成定义成reg型。型。二二reg型型reg型数据的格式如下:regn-1:0数据名数据名1,数据名数据名2,数据名数据名i;或或regn:1数据名数据名1,数据名数据名2,数据名数据名i;reg是reg型数据的确认标识符,n-1:0和n:1代表该数据的位宽,即该数据有几位(bit)。最后跟

99、着的是数据的名字。如果一次定义多个数据,数据名之间用逗号隔开。声明语句的最后要用分号表示语句结束。看下面的几个例子:regrega;/定义了一个一位的名为rega的reg型数据reg3:0regb;/定义了一个四位的名为regb的reg型数据reg4:1regc,regd;/定义了两个四位的名为regc和regd的reg型数据对于对于reg型数据,其赋值语句的作用就象改变一型数据,其赋值语句的作用就象改变一组触发器的存储单元的值。组触发器的存储单元的值。在在Verilog中有许多构造中有许多构造(construct)用来控制用来控制何时或是否执行这些赋值语句。这些控制构造何时或是否执行这些赋值

100、语句。这些控制构造可用来描述硬件触发器的各种具体情况,如触可用来描述硬件触发器的各种具体情况,如触发条件用时钟的上升沿等,或用来描述具体判发条件用时钟的上升沿等,或用来描述具体判断逻辑的细节,如各种多路选择器。断逻辑的细节,如各种多路选择器。reg型数据的缺省初始值是不定值。型数据的缺省初始值是不定值。reg型数据型数据可以赋正值,也可以赋负值。可以赋正值,也可以赋负值。二二reg型型注意:注意:*reg型型只表示只表示被定义的信号被定义的信号将用在将用在“always”块内块内,理解这一点很重要。,理解这一点很重要。并不是说并不是说reg型信号一定是寄存器或触发型信号一定是寄存器或触发器的输

101、出。器的输出。虽然虽然reg型信号常常是寄存器或触发器的型信号常常是寄存器或触发器的输出,但并不一定总是这样。在本课中输出,但并不一定总是这样。在本课中我们还会对这一点作更详细的解释。我们还会对这一点作更详细的解释。三三memory型型VerilogHDL通过对通过对reg型变量建立数组来对存储器建型变量建立数组来对存储器建模,可以描述模,可以描述RAM型存储器,型存储器,ROM存储器和存储器和reg文文件。数组中的每一个单元通过一个数组索引进行寻件。数组中的每一个单元通过一个数组索引进行寻址。址。在在Verilog语言中语言中没有多维数组存在。没有多维数组存在。memory型数据型数据是通过

102、扩展是通过扩展reg型数据的地址范围来生成的。其格式型数据的地址范围来生成的。其格式如下:如下:regn-1:0存储器名存储器名m-1:0;或或 regn-1:0存储器名存储器名m:1;在这里,在这里,regn-1:0定义了存储器中每一个存储单元定义了存储器中每一个存储单元的大小,即该存储单元是一个的大小,即该存储单元是一个n位的寄存器。存储器位的寄存器。存储器名后的名后的m-1:0或或m:1则定义了该存储器中有多少个则定义了该存储器中有多少个这样的寄存器。最后用分号结束定义语句。这样的寄存器。最后用分号结束定义语句。下面举例说明:下面举例说明:reg7:0mema255:0;这个例子定义了一

103、个名为这个例子定义了一个名为mema的存储器,的存储器,该存储器有该存储器有256个个8位的存储器。该存储位的存储器。该存储器的地址范围是器的地址范围是0到到255。注意:对存储器进行地址索引的表达式注意:对存储器进行地址索引的表达式必须是常数表达式。必须是常数表达式。三三memory型型尽管尽管memory型数据和型数据和reg型数据的定义型数据的定义格式很相似,但要注意其不同之处。如格式很相似,但要注意其不同之处。如一个由一个由n个个1位寄存器构成的存储器组是位寄存器构成的存储器组是不同于一个不同于一个n位的寄存器的。见下例:位的寄存器的。见下例:regn-1:0rega;/一个一个n位的

104、寄存器位的寄存器regmeman-1:0;/一个由一个由n个个1位寄存位寄存器构成的存储器组器构成的存储器组三三memory型型一个一个n位的寄存器可以在一条赋值语句里进行赋值,位的寄存器可以在一条赋值语句里进行赋值,而一个完整的存储器则不行。而一个完整的存储器则不行。见下例:rega=0;/合法赋值语句mema=0;/非法赋值语句如果想对如果想对memory中的存储单元进行读写操作,必中的存储单元进行读写操作,必须指定该单元在存储器中的地址。须指定该单元在存储器中的地址。下面的写法是正确的。mema3=0;/给memory中的第3个存储单元赋值为0。进行寻址的地址索引可以是表达式,这样就可以

105、进行寻址的地址索引可以是表达式,这样就可以对存储器中的不同单元进行操作。对存储器中的不同单元进行操作。这里只对以上几种常用的数据类型和常数进行了介绍,其余的在以后的章节的示例中用到之处再逐一介绍。三三memory型型(注意)(注意)3.3.运算符及表达式运算符及表达式VerilogHDL语言的运算符范围很广,其运算符按语言的运算符范围很广,其运算符按其功能可分为以下几类其功能可分为以下几类:算术运算符算术运算符(+,,/,)赋值运算符赋值运算符(=,=,=)逻辑运算符逻辑运算符(&,|,!)条件运算符条件运算符(?:)位运算符位运算符(,|,&,)移位运算符移位运算符()拼接运算符拼接运算符(

106、)其它其它在在VerilogHDL语言中运算符所带的操作数是不同的,按语言中运算符所带的操作数是不同的,按其所带操作数的个数运算符可分为三种其所带操作数的个数运算符可分为三种:单目运算符单目运算符(unaryoperator):可以带一个操作数,操作数放在运算符的右边。二目运算符二目运算符(binaryoperator):可以带二个操作数,操作数放在运算符的两边。三目运算符三目运算符(ternaryoperator):可以带三个操作,这三个操作数用三目运算符分隔开。见下例见下例:clock=clock;/是一个单目取反运算符,clock是操作数。c=a|b;/是一个二目按位或运算符,a和b是操

107、作数。r=s?t:u;/?:是一个三目条件运算符,s,t,u是操作数3.3.1.基本的基本的算术算术运算符运算符在在VerilogHDL语言中,算术运算符又称为二进制运语言中,算术运算符又称为二进制运算符,共有下面几种:算符,共有下面几种:+(加法运算符加法运算符,或正值运算符或正值运算符,如如regaregb,3)(减法运算符,或负值运算符,如减法运算符,或负值运算符,如rega3,3)(乘法运算符,如乘法运算符,如rega*3)/(除法运算符,如除法运算符,如5/3)%(模运算符,或称为求余运算符,要求两侧均为整模运算符,或称为求余运算符,要求两侧均为整型数据。如型数据。如73的值为的值为

108、1)在进行在进行整数除法整数除法运算时,运算时,结果值要略去小数部分,只取整结果值要略去小数部分,只取整数部分数部分。而进行。而进行取模运算时,结果值的符号位采用模运算取模运算时,结果值的符号位采用模运算式里第一个操作数的符号位。式里第一个操作数的符号位。见下例。见下例。模运算表达式模运算表达式结果结果说明说明10%31余数为余数为111%32余数为余数为212%30余数为余数为0即无余数即无余数-10%3-1结果取第一个操作数的符结果取第一个操作数的符号位号位,所以余数为所以余数为-111%32结果取第一个操作数的符结果取第一个操作数的符号位号位,所以余数为所以余数为2.注意:在进行算术运算

109、操作时,如果某一个操作数有不确注意:在进行算术运算操作时,如果某一个操作数有不确定的值定的值x,则整个结果也为不定值,则整个结果也为不定值x。3.3.1.基本的算术运算符基本的算术运算符3.3.2.位位运算符运算符VerilogHDL作为一种硬件描述语言作为一种硬件描述语言,是针对硬件电路是针对硬件电路而言的。在硬件电路中信号有四种状态值而言的。在硬件电路中信号有四种状态值1,0,x,z.在电路中在电路中信号进行与或非时,反映在信号进行与或非时,反映在VerilogHDL中则是相应的操中则是相应的操作数的位运算。作数的位运算。VerilogHDL提供了以下五种位运算符:提供了以下五种位运算符:

110、/取反取反&/按位与按位与|/按位或按位或/按位异或按位异或/按位同或按位同或(异或非异或非)说明说明:位运算符中除了位运算符中除了是单目运算符以外是单目运算符以外,均为二目运算符均为二目运算符,即即要求运算符两侧各有一个操作数要求运算符两侧各有一个操作数.位运算符中的二目运算符要求对两个操作数的相应位进行位运算符中的二目运算符要求对两个操作数的相应位进行运算操作。运算操作。下面对各运算符分别进行介绍下面对各运算符分别进行介绍:1)取反取反运算符运算符是一个单目运算符是一个单目运算符,用来对一用来对一个操作数进行按位取反运算。个操作数进行按位取反运算。其运算规则见右表其运算规则见右表:举例说明

111、举例说明:rega=b1010;/rega的初值为的初值为b1010rega=rega;/rega的值进行取反的值进行取反运算后变为运算后变为b01011001xx3.3.2.位运算符位运算符3.3.2.位运算符位运算符2)按位与按位与运算符运算符&按位与运算就是将两个操作数的相应位进行与按位与运算就是将两个操作数的相应位进行与运算运算,其运算规则见下表:&01x0000101xx0xx3)按位或按位或运算符运算符|按位或运算就是将两个操作数的相应位进按位或运算就是将两个操作数的相应位进行或运算。行或运算。其运算规则见下表:|01x001x1111xx1x3.3.2.位运算符位运算符3.3.2

112、.位运算符位运算符4)按位异或按位异或运算符运算符(也称之为也称之为XOR运算符运算符)按位异或运算就是将两个操作数的相应位进行按位异或运算就是将两个操作数的相应位进行异或运算。异或运算。其运算规则见下表:01x001x110xxxxx3.3.2.位运算符位运算符5)按位同或按位同或运算符运算符按位同或运算就是将两个操作数的相应位先进行按位同或运算就是将两个操作数的相应位先进行异或运算再进行非运算。异或运算再进行非运算。其运算规则见下表:01x010x101xxxxx不同长度的数据进行位运算不同长度的数据进行位运算两个长度不同的数据进行位运算时,系统会自动的将两者按右端对齐.位数少的操作数会在

113、相应的高位用0填满,以使两个操作数按位进行操作.3.3.2.位运算符位运算符3.4小结(小结(1)1.在在Verilog模块中所有的过程块(如:模块中所有的过程块(如:always块)块)、连续赋值语句、实例引用都是并行、连续赋值语句、实例引用都是并行的。的。2.他们表示的是一种通过变量名互相连接的关他们表示的是一种通过变量名互相连接的关系。系。3.在同一模块中各个过程块,各条连续赋值语在同一模块中各个过程块,各条连续赋值语句和各条实例引用语句这三者出现的先后句和各条实例引用语句这三者出现的先后顺序没有关系。顺序没有关系。4.只有连续赋值语句(即用关键词只有连续赋值语句(即用关键词assign

114、引出引出的语句)和实例引用语句(即用已经定义的语句)和实例引用语句(即用已经定义过的模块名引出的语句),可以独立于过过的模块名引出的语句),可以独立于过程块而存在于模块的功能定义部分。程块而存在于模块的功能定义部分。5.被实例引用的模块,其端口可以通过不同名被实例引用的模块,其端口可以通过不同名的连线或寄存器类型变量连接到别的模块的连线或寄存器类型变量连接到别的模块相应的输入输出端口。相应的输入输出端口。6.在在always块内被赋值的每一个信号都必须定块内被赋值的每一个信号都必须定义成义成reg型。型。3.4小结(小结(2)思考题思考题1.模块由几个部分构成?模块由几个部分构成?2.端口分为几种?端口分为几种?3.模块的功能描述可以由哪几类语句或语句块模块的功能描述可以由哪几类语句或语句块组成?它们出现的顺序会不会影响功能的描组成?它们出现的顺序会不会影响功能的描述?述?4.最基本的最基本的Verilog变量有几种类型?变量有几种类型?5.在在always块中被赋值的变量必须是什么类型块中被赋值的变量必须是什么类型的?的?

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号