VerilogHDL入门基础之门级建模

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

门级建模门级建模是指调用Verilog内部自定义的基本门元件(或者用户自定义基本元件)来对硬件电路进行结构描述门级建模方式采用的是一种特殊的模块调用方式。此时所调用的模块式Verilog内部预先定义好的基本门级元件或者用户自定义的基本元件,在这种建模方式下硬件电路将被描述成由一组基本门级元件的实例组成。内置基本门级元件VerilogHDL内含的基本门级元件有14中,包括and(与门)、nand(与非门)、or(或门)、nor(或非门)、xor(异或门)、xnor(异或非门)、buf(缓冲器)、not(非门)、bufif1(高电平使能缓冲器)、bufif0(低电平使能缓冲器)、notif1(高电平使能非门)、notif0(低电平使能非门)、pullup(上拉电阻)、pulldown(下拉电阻)基本门级元件的调用其语法格式为:门级元件名驱动强度说明#(门级延时量)实例名(端口连接表);对上述格式做如下说明:•门级元件名:就是前面列出的VerilogHDL内含的14种基本门级元件类型中的任意一种,它用于指明被当前模块调用的是哪一种门级基本元件。•驱动强度说明:这一项是可选项,它的格式为:(对高电平的驱动强度,对低电平的驱动强度)驱动强度说明用来对本次基本门级元件调用所引用的门级元件实例的输出端驱动能力加以说明。这是因为:在结构建模方式下,一条连线可能会由多个前级输出端同时驱动,该连线最终的逻辑状态将取决于各个驱动端的不同驱动能力,因此有必要对元件实例的输出驱动能力进行说明。对于门级元件,驱动强度分为对高电平(逻辑1)的驱动强度和对低电平(逻辑0)的驱动强度,因此驱动强度说明部分由对高电平的驱动强度和对低电平的驱动强度这两种成分组成。其中的每一种驱动强度成分可以是supply、strong、pull、weak和highz中的某一个等级。因此有如下关键字出现在驱动强度说明中:Supply1strong1pull1weak1highz1Supply0strong0pull0weak0highz0上面第一行中表示对高电平的驱动强度的五个等级,第二行中表示对低电平的驱动强度的五个等级。在基本门级元件实例语句的驱动强度说明中,对高电平的驱动强度和对低电平的驱动强度这两个成分在括号内的前后位置可以互换,比如:and(strong0,weak1)AND_1(out,in1,in2);and(weak1,strong0)AND_2(out,in1,in2);其中引入了两个与门实例AND_1和AND_2。这两个实例拥有相同的输出端驱动强度,高电平输出强度为weak,低电平输出强度为strong。如果基本门级元件实例语句中的驱动强度说明部分被省略,则默认的驱动强度为(strong0,strong1)。•#(门级延时量):这一项也可以是默认的,它说明了信号从门级元件实例的输入端流动到输出端时所经历的延迟时间长度。其中门级延时量是由若干个延时值组成的,当它只包含一个延时值时,其外部的圆括号可以省略。请读者注意:上述门级元件实例的门级延时量进行指定的方式与前面讲述的对模块参数值进行修改的第一种方式(使用带有参数值的模块实例语句)是相似的。这两种情况下,对应的实例语句中都出现了“#数量值”部分。该部分内容在模块实例语句中代表模块参数的新参数值;而在门级实例语句中则代表了门级元件实例输入输出端口间的门级延时量。在进行模块调用时不能采用像门级元件调用那样的方式指定延时量(只能利用specify块结构来指定延时量);而在进行基本门级元件调用时又不能像模块调用那样对参数值进行修改(只有用户自定义元件才能有参数值)•实例名:是为本次元件调用后生成的门级元件实例所取的第一个名称。与进行模块调用的情况不同,在进行基本门级元件调用时,实例名可以省略。在默认实例名的情况下,Verilog编译系统将自动以“元件名实例序号”的形式为门级元件实例取名•(端口连接表):与模块实例语句中的端口连接表类似,但是在进行基本门级元件调用时只能采用端口位置关联方式。而且与基本门级元件实例各个端口相连的信号端子只能是宽度为一位的表达式或变量标识符多输入门内置多输入门包括6种门级元件:and、nand、or、nor、xor、xnor。其格式为:门级元件名(输出端口,输入端口1,输入端口2,……,输入端口n)其中的门级元件名就是上面给出的六种多输入门名称之一,在端口列表中出现的第一个端口是输出端口,其后是多个输入端口。这六种门的真值表为:AND01XZ00000101xZX0xxzZ0xxxNAND01XZ01111110xXX1XxxZ1XxxOR01XZ001xX11111XX1XXZX1XXNOR01XZ010XX10000XX0XXZX0XXXOR01XZ001XX110XXXXXXXZXXXXXOR01XZ010XX101XXXXXXXZXXXX对多输入门进行调用的元件实例语句将采用如下形式:多输入门元件名驱动强度说明#(门级延时量)延时量(输出信号端子,输入信号端子1,输入信号端子2,…….,输入信号端子n);在上述元件实例语句格式中,与多输入门元件输出端相连的外部信号端子(即输出信号端子)必须出现在端口连接表的第一项中,与多输入门的各个输入端相连的外部信号端子则只能出现在端口连接表的后面几项内。这些输入信号端子将以此与多输入门的各个输入端相连。信号端子和元件端口之间的连接关系是采用“端口位置关联方式“来确定。多输出门内置多输出门包括两种门级元件:buf和not。这两种逻辑门的共同特点是:允许有多个输出,但只能有一个输入。这两种多输出门的元件模型可以表示为:门级元件名(输出端口1,输出端口2,……,输出端口n,……,输入端口)其中,门级元件名是元件名称buf和not之一;端口列表中的最后一项是输入端口,前面的其余端口为输出端口。它们的真值表如下:Bufnot00011110XXXXZXXX对输出门进行调用的元件实例语句将采用如下形式:多输出门元件名驱动强度说明#(门级延时量)实例名(输出信号端子1,输出信号端子2,……,输出信号端子n,输入信号端子);上述格式中,端口连接表中出现的最后一个信号端子将被连接到多输出门的输入端,而排在前面的其余信号端子将与多输出门的各个输出端依次相连。信号端子和元件端口之间的连接关系是采用“端口位置关联方式”来确定的。三态门内置三态门包括四种元件:bufif0、bufif1、notif0和notif1。这四种逻辑门用来对三态驱动器建模,它们都有一个数据输出端。一个数据输入端和一个控制输入端。这几种三态门的特点是:它们的数据输出可以实现三态输出。其元件模型可以表示为:门级元件名(数据输出端口,数据输入端口,控制输入端口)其中,门级元件名是前面给出的四种元件名称bufif0、bufif1、notif0和notif1之一;端口列表中的第一项是数据输出端口,第二项是数据输入端口,最后一项是控制输入端口。它们的真值表为:Bufif1控制输入01XZ数据输入0Z00/z0/z1Z11/z1/zXZXXXZZXXXBufif0控制输入01XZ数据输入00Z0/z0/z11Z1/z1/zXXZXXZXZXXNotif1控制输入01XZ数据输入0Z01/z1/z1Z10/z0/zXZXXXZZXXXBufif0控制输入01XZ数据输入01Z1/z1/z10Z0/z0/zXXZXXZXZXX真值表中有些项是不确定的,比如“0/z”表示输出状态既可以是0也可以是高阻态。调用三态门的元件实例语句如下:元件名驱动强度说明#(门级延时量)实例名(输出信号端子,输入信号端子,控制信号端子);上拉、下拉电阻上拉、下拉电阻包括两种元件:pullup和pulldown。上拉电阻和下拉电阻这两种门级元件都只有一个输出端口而没有输入端口。上拉电阻将置为1,下拉电阻将输出置为0.。其调用的语法格式如下:元件名驱动强度说明实例名(输出信号端子);上述格式中,端口连接表内只能出现一个信号端子(输出信号端子),该信号端子将被连接到元件实例的输出端口。由于上拉电阻只能输出逻辑状态1,下拉电阻只能输出逻辑状态0,所以在进行驱动强度说明时(在需要进行说明的情况下),对pullup元件只需指出对高电平的驱动强度,而对pulldown元件则只需指出对低电平的驱动强度。下面两条语句就分别对上拉电阻和下拉电阻进行了调用。Pullup(supply1)U1(power);Pulldown(pull0)U2(gnd);其中,第一条语句引入了上拉电阻的一个实例U1,该实例的输出端被连接到信号端子power;该输出端的驱动高强度为supply1。第二句,仿照可以分析,此处不再赘述。门级延时的说明门级延时反映的是信号变化从门级元件的任一输入端口流动到任一输出端口所经历的传输延时。门级延时可以分为如下几类。•上升延时:表示信号从“0”、“x”或“z”状态变化到“1”状态时受到的门传输延时。•下降延时:表示信号从“1”、“x”或“z”状态变化到“0”状态时受到的门传输延时。•截止延时:表示信号从“0”、“x”或“1”状态变化到“z”状态时受到的门传输延时。•到不定态的延时:表示信号从“0”、“1”或“z”状态变化到“x”状态时受到的门传输延时。由于多输入门(and、nand、or、nor、xor、xnor)以及多输入门(buf、not)的输出不可能是高阻态“z”,所以多输入门和多输出门这两类元件没有“截止延时”这类门级延时;对于三态门(bufif0、bufif1、notif0、notif1),这类元件具有全部的四种门级延时;对于上拉电阻和下拉电阻,这类元件不存在任何形式的门级延时。在对门级元件进行调用时,可以对元件实例的门级延时进行说明,这是通过元件实例语句内的“门级延时说明”部分来实现的。如果“门级延时说明”部分被省略,则门级延时默认是零延时。元件实例语句内的“门级延时说明”部分的格式为:#(门级延时量);“门级延时量”是由一个或多个延时值组成的,它可以有“基本表示方式”和“‘最小延时‘、‘最大延时’、‘典型延时’“的表示方法。(1)门级延时量的基本表示方法在这种表示方式下,”门级延时量“内可以包含1个、2个或3个延时量,下面分别对这三种具有不同延时值个数的情况进行说明:①当门级延时量只包含一个延时值时,即当门级延时说明部分是”#d“形式时(其中d是一个给定的延时值),延时值”d“将同时代表实例的”上升延时值“、”下降延时值“、”截止延时值“和”到不定态的延时值“。②当门级延时量包含两个延时值时,即当门级延时说明部分是“(#,d1,d2)”形式时(其中d1,d2是两个给定的延时值),元件实例的“上升延时值”将由延时值d1指定;“下降延时值”将由d2指定;而“截止延时值”和“到不定态延时值”将由d1和d2中较小者指定。③当门级延时量包含两个延时值时,即当门级延时说明部分是“(#,d1,d2,d3)”形式时(其中d1,d2,d3是两个给定的延时值),元件实例的“上升延时值”将由延时值d1指定;“下降延时值”将由d2指定;“截止延时值”将由d3指定,而“到不定态延时值”将由d1,d2和d3中较小者指定。(2)”最小延时“、”典型延时“、”最大延时“的表示方式其具有的格式如下:#(d1_min:d1_typ:d1_max,d2_min:d2_typ:d2_max,d3_min:d3_typ:d3_max)在上述格式中,门级延时值包含了三部分(d1、d2和d3三部分),这三部分之间用逗号隔开;而每一部分由三个延时值组成,这些延时值之间由冒号分隔。四种延时值与上述三部分之间的关系见下表:最小延时典型延时最大延时上升延时D1_min

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功