超高速集成电路硬件描述语言VHDL§8-1VHDL语言的基本.ppt

上传人:zhu****ei 文档编号:5404901 上传时间:2020-01-28 格式:PPT 页数:48 大小:370.31KB
返回 下载 相关 举报
超高速集成电路硬件描述语言VHDL§8-1VHDL语言的基本.ppt_第1页
第1页 / 共48页
超高速集成电路硬件描述语言VHDL§8-1VHDL语言的基本.ppt_第2页
第2页 / 共48页
超高速集成电路硬件描述语言VHDL§8-1VHDL语言的基本.ppt_第3页
第3页 / 共48页
点击查看更多>>
资源描述
第10章超高速集成电路硬件描述语言VHDL 8 1VHDL语言的基本组成 8 2VHDL数据类型和属性 8 3VHDL的行为描述 8 4VHDL的结构描述 小结 传统的电路系统设计方法的步骤从状态图的简化 写出最简逻辑表达式 到绘出电路原理图 这在不是较大的电路系统中 工程师可以用一定的时间 了解电路的原理 若电路系统非常庞大 工程师就不容易在电路原理图上了解电路的原理 而且对绘图者也是一项非常烦琐的工作 因此众多软件公司开发研制了具有自己特色的电路硬件描述语言 HardwareDescriptionLanguage HDL 这些硬件描述语言必然有很大的差异 工程师一旦选用某种硬件描述语言作为输入工具 就被束缚在这个硬件设计环境之中 不能在众多的软件工具中选择一个最佳组合作为自己的最优设计环境 因此 硬件设计工程师需要一种强大的 标准化的硬件描述语言 作为可相互交流的设计环境 美国国防部在20世纪80年代初提出了VHSIC VeryHighSpeedIntegratedCircuit 计划 其目标之一是为下一代集成电路的生产 实现阶段性的工艺极限以及完成10万门级以上的设计 建立一项新的描述方法 1981年提出了一种新的HDL 称之为VHSICHardwareDescriptionLanguage 简称为VHDL 这种语言的成就有两个方面 1 描述复杂的电路系统 2 VHDL成为硬件描述语言的标准 VHDL的主要优点是 1 覆盖面广 描述能力强 是一个多层次的硬件描述语言 即设计的原始描述可以是非常简练的描述 经过层层细化求精 最终成为可直接付诸生产的电路级或版图参数描述 整个过程都可以在VHDL的环境下进行 2 VHDL有良好的可读性 即可以被计算机接受 也容易被理解 用VHDL书写的原文件 即是程序 又是文档 即是技术人员之间交换信息的文件 又可作为合同签约者之间的文件 3 VHDL本身的生命期长 因为VHDL的硬件描述与工艺技术无关 不会因工艺变化而使描述过时 与工艺技术有关的参数可通过VHDL提供的属性加以描述 工艺改变时 只需修改相应程序中的属性参数即可 4 支持大规模设计的分解和已有设计的再利用 一个大规模设计不可能一个人独立完成 它将由多人 多项目组来共同完成 VHDL为设计的分解和设计的再利用提供了有力的支持 VHDL的主要优点是 5 VHDL已成为IEEE承认的一个工业标准 事实上已成为通用硬件描述语言 10 1VHDL的基本组成 VHDL可以把任意复杂的电路系统视作一个模块 一个模块可主要分为三个组成部分 每个模块中的程序包有IEEE标准的标准程序包或设计者自身设计的程序包 而且调用的数量不限 模块中的程序包是设计中的子程序和公用数据类型的集合 是构成设计工具的工具箱 工具箱中最基本的工具是数据类型包 调用此标准程序包的VHDL语言是 一 参数部分 程序包 例1 LIBRARYieee USEieee std logic 1164 all 这两句设置在VHDL程序的前面 表示以后在实体或结构体中要用到数据类型包中的数据类型 模块中仅有一个设计实体 它提供该设计模块的公共信息 是VHDL设计电路的最基本部分 VHDL设计的电路系统是可以分层次的 所以设计的模块系统实体即可以是顶层实体 又可以是最底层实体 二 接口部分 设计实体 ENTITYkxorIS PORT a1 b1 INstd logic c1 OUTstd logic ENDkxor 例2 实体部分的大写单词ENTITY IS PORT IN OUT和END为关键字 在ENTITY END之间表示实体内容 ENTITY后的字符串kxor表示实体的名称 即电路的符号名 端口 引脚 信息关键字PORT中的语句有三个端口 描述了信号的流向 分别是两个输入 IN 模式a1和b1 一个是输出 OUT 模式c1 端口信息除了输入输出之外 还可以是双向 缓冲器等 std logic表示信号取值的类型为标准逻辑位 除了标准逻辑位之外 还可以是实数 整数 无符号数 物理以及以上数据类型组成的记录和数组集合 信号类型也可以是设计者定义 三 描述部分 结构体 当异或门的符号和外部端口a1 b1和c1确定之后 就要确定实体的内部电路 使之与实体相对应 电路描述部分称之为结构体ARCHITECTURE 它描述实体硬件的互连关系 数据的传输和变换以及动态行为 一个实体可以对应多个结构体 每个结构体可以代表该硬件的某一方面特性 例如行为特性 结构特性 ARCHITECTUREkxor arcOFkxorIS 例3 BEGIN c1 NOTa1ANDb1 OR a1ANDNOTb1 ENDkxor arc 10 2VHDL数据类型和属性 VHDL硬件描述语言中涉及到了许多信号 变量和常量 它们用来保持一个数据 保持数据的信号 变量和常量 在VHDL中称为目标 每一个目标都有一个数据类型确定目标保持的那一类数据 VHDL是一种非常严格的数据类型化语言 规定每个信号 常量或变量和每个表达式有一个唯一的确定数据类型 一般说 在表达式中分配数值给目标时的数据类型不可以被混用 每个目标和表达式的类型静态地确定 在VHDL中有三类目标 信号 变量和常量 信号和变量可以赋予一系列的值 而常量一次仅被分配一个值 变量和信号又有不同 赋予信号的数值要到未来的某个时刻 信号才接受当前的数值 而赋予变量的数值 变量立即接受当前的数值 目标的一般形式如下 目标 是一个或多个代表着目标种类的字符串 多个目标时用 号分开 目标种类 信号 变量和常量 信号 它可以表示把元件的端口连接在一起的互连线 变量 用于对暂时数据的局部存储 变量只在进程和子程序内部定义 常量 对某些特定类型数据赋予的数值 表达式 表达式是为了规定目标的初始值 这是缺省部分 目标类型 为了规定目标的特征 VHDL含有很宽范围的数据类型 VHDL除了有基本的数据类型之外 设计者还可以建立自己新的数据类型 类型说明部分规定类型名和类型范围 它的一般形式是 TYPEIS 标量类型 复合类型 子类型 文件类型和寻址类型 标量类型包括所有的简单类型 如整数 实数等 复合类型包括数组和记录 寻址类型在一般编辑语言中等价为指针 文件类型用设计者定义的文件类型为设计者提供说明的文件对象 子类型主要是对现有类型加以限制 VHDL可用数据类型有五类 一 标量数据类型 标量数据类型是基本的数据类型 它包括整数类型 实数类型 物理类型和枚举类型 一个目标的数值有可能经常更换或者说是包含多个值 但一个目标一次只能被一种类型说明 物理类型要提供一个基本单位 然后在这个基本单位上定义多个或零个次级单位 每个次级单位都是基本单位的整数倍 枚举类型在形式上是定义括弧括起来的字符串文字表 一个字符串文字在枚举类型定义中只能出现一次 但允许同样一个字符串文字出现在不同的枚举类型的字符串文字表中 枚举类型的字符串文字表中的文字是由设计者定义的 这些字母可以是单个字母 也可以是一个字符串 例如BREAKFAST Lunch a等 下面举两个VHDL程序加深理解枚举类型的使用 PACKAGEmeals pkgISTYPEmealIS breakfast lunch dinner ENDmeals pkg 例2 USEwork meals pkg all ENTITYmealsISPORT previous meal INmeal next meal OUTmeal ENDmeals ARCHITECTUREmeals arcOFmealsISBEGINWITHprevious mealSELECTnext meal breakfastWHENdinner lunchWHENbreakfast dinnerWHENlunch ENDmeals arc 二 复合数据类型 复合类型是由数组类型和记录类型组成 它们的元素是标量类型的元素 数组类型是由相同的标量元素组成 即同构复合类型 数组可以是一维二维或多维 例如 TYPEmatrixISARRAY row column OFstd logic TYPEr maISARRAY 1TO10 1TO40 OFstd logic TYPEwordISARRAY 15DOWNTO0 OFBIT TYPEcolumnISRANGE1TO40 TYPErowISRANGE1TO10 CONSTANTROM BIT VECTOR 0TO15 ARCHITECTURErom arcOFromISBEGINPROCESS cs x1 x2 x3 x4 VARIABLEn NATURALRANGE0TO15 CONSTANTrom0 std logic vector 0TO15 0101010101010101 CONSTANTrom1 std logic vector 0TO15 0011001100110011 CONSTANTrom2 std logic vector 0TO15 0000111100001111 CONSTANTrom3 std logic vector 0TO15 0000000011111111 下面举一个VHDL程序说明一维数组实现16 4的ROM LIBRARYieee USEieee std logic 1164 all ENTITYromISPORT cs x1 x2 x3 x4 INstd logic d0 d1 d2 d3 OUTstd logic ENDrom BEGINIFcs 1 THENn 0 IFx1 1 THENn n 1 ENDIF IFx2 1 THENn n 2 ENDIF IFx3 1 THENn n 4 ENDIF IFx4 1 THENn n 8 ENDIF d0 rom0 n AFTER10ns d1 rom1 n AFTER10ns d2 rom2 n AFTER10ns d3 rom3 n AFTER10ns ELSEd0 Z AFTER10ns d1 Z AFTER10ns d2 Z AFTER10ns d3 Z AFTER10ns ENDIF ENDPROCESS ENDrom arc 在结构体说明区 ARCHITECTURE和BEGIN之间 被说明的目标 仅可以在此结构体中引用或在结构体中的任何进程语句中被引用 称此目标为局部信号 数据类型的全局化和局部化 前面已经讨论VHDL描述语言的组成是由程序包 实体 结构体 结构体中有进程 以及子程序而组成 不同的目标可以在指定的组成部分内加以说明 如果一个目标在实体说明部分被说明 那么在本实体和本实体内部的任何结构体和任何进程中都可以引用在实体中说明的目标 称为全局信号 VHDL中不同的目标和类型规定在不同的构造中可以被说明 信号 实体 结构体说明区 程序包和子程序 变量 进程语句说明区和子程序 常量 实体 结构体 进程语句说明区和程序包和子程序 标量类型 实体 结构体 进程语句说明区和程序包和子程序 复合类型 实体 结构体 进程语句说明区和程序包和子程序 文件类型 子程序和进程语句说明区 寻址类型 进程语句说明区 VHDL的属性 VHDL中的属性使得VHDL程序更加简明扼要 更加容易理解 VHDL的属性在时序程序中几乎处处可见 如值类属性的左边界 右边界 上下边界以及值类属性的长度 还可以检测信号上升沿和下降沿以及前一次发生的事件等等 VHDL的属性可归纳为 信号类属性 函数类属性 值类属性 类型类属性和范围类属性 本节介绍值类属性及函数信号类属性 TYPEbitISARRAY 63DOWNTO32 OFBIT VARIABLEleft range right range uprange lowrange INTEGER BEGINleft range bit LEFT returns63right range bit RIGHT returns32uprange bit HIGH returns63lowrange bit LOW returns32 值类属性 值类属性用于返回数组的边界或长度 首先举一例数组边界的例子说明类型属性 例8 TYPEbitISARRAY 0TO7 OFBIT TYPEbit1ISARRAY 8TO31 OFBIT VARIABLElen1 len2 INTEGER BEGINlen1 bit LENGTH return8len2 bit1 LENGTH return24 下面再举一个值类数组属性的例子 让其返回数组范围的总长度 例 它可用来检查一个信号的变化 并且变化刚刚发生 既推断出在信号上发生了一个跳变 函数信号属性 函数信号属性用来返回有关信号行为功能的信息 它反映一个信号是否正好有值的变化或事件的发生 如clk EVENT 这个属性为 EVENT 对检查时钟边沿触发是很有效的 下面举一个例子 说明函数信号属性的用法 IFclk 1 ANDclk EVENTTHENq d ENDIF 上述语句中用到了函数信号属性clk EVENT 说明如果时钟信号clk为高电平 并且事件刚刚发生 也就是说是时钟上升沿有效 此时q得到d的信号 10 3VHDL的行为描述 在VHDL硬件描述语言中 描述电路逻辑的程序称为行为描述 行为描述有并行行为描述 进程行为描述和顺序行为描述 三个行为即可以是相互独立 成为单一的行为描述体 又可以相互联系 成为混合描述体 如进程行为描述行为之间是并行行为 进程行为体的内部是顺序行为 一 VHDL的并行行为 在典型的编程语言如C或Pascal中 每个赋值语句按规定的次序 一个接在另一个之后顺序执行 执行的次序由源文件决定 在VHDL中 结构体的内部没有规定语句的次序 执行的次序仅由对语句中的敏感信号发生的事件决定 且语句是同时执行 产生其并行型 结构体中并行赋值语句的一般格式如下 该一般形式读作对象得到表达式的值 其作用是将表达式的信号值分配给对象 也就是说每当表达式的信号值变化时执行该语句 每个表达式都至少有一个敏感信号 每当敏感信号改变其值时 这个信号赋值语句就执行 在所有的并行语句中 两个以上的并行赋值语句在字面上的顺序并不表明它们的执行顺序 例如下面的两个结构体在功能上是等价的 ENTITYexeISPORT a1 a2 INBIT b1 b2 OUTBIT ENDexe ARCHITECTUREexe arc1OFexeISBEGINb1 a1ANDb2 b2 NOTa1ORa2 ENDexe arc1 ARCHITECTUREexe arc2OFexeISBEGINb2 NOTa1ORa2 b1 a1ANDb2 ENDexe arc2 另一种并行信号赋值语句是选择信号赋值语句 它们的每一个赋值语句都需要给出一个表达式 同时给出与该表达式的每个可能值相关联的信号 选择信号赋值语句的一般形式如下 WITHSELECTWHEN WHEN WHEN 一个典型的四路数据选择器的VHDL程序说明WITH一般形式的用法 ENTITYselsISPORT d0 d1 d2 d3 INBIT s ININTEGERRANGE0TO3 out1 OUTBIT ENDsels ARCHITECTUREsels arcOFselsISBEGINWITHsSELECTout1 d0WHEN0 d1WHEN1 d2WHEN2 d3WHEN3 ENDsels arc 仍以四路数据选择器为例 讨论另一个较为复杂的并行信号赋值语句的例子 以便更详细地说明并行概念 下面是四输入数据选择器的第二个VHDL程序 例 LIBRARYieee USEieee std logic 1164 all ENTITYmux4ISPORT I0 I1 I2 I3 A B INstd logic Q OUTstd logic ENDmux4 ARCHITECTUREmux4 arcOFmux4ISSIGNALsel INTEGER BEGINQ I0AFTER10nsWHENsel 0ELSEI1AFTER10nsWHENsel 1ELSEI2AFTER10nsWHENsel 2ELSEI3AFTER10ns sel 0WHENA 0 ANDB 0 ELSE1WHENA 1 ANDB 0 ELSE2WHENA 0 ANDB 1 ELSE3 ENDmux4 arc 二 VHDL的进程行为 VHDL除了并行行为之外 还有顺序行为 顺序行为执行的顺序是一个接在另一个之后严格执行 顺序行为的语句存在于VHDL程序中的进程行为之中 而进程行为之间是并行行为语句 进程行为语句的一般形式如下 PROCESSBEGINWAITON WAITUNTIL WAITFOR ENDPROCESS 进程行为的说明区定义该进程所需要的局部数据环境 它包括子程序说明 属性说明和变量说明等 在这里只给出变量说明的一个例子 变量说明的一般形式为 VARIABLE 下面进程说明区中说明了变量count 进程也可对变量赋值 PROCESSVARIABLEcount INTEGER 0 BEGINcount count 1 WAITFOR1000ns ENDPROCESS 整个实体模块中的每个进程行为语句 可以在任何时候被激活 所有被激活的进程是并行执行的 下面举一个3线 8线通用译码器程序的例子 说明进程语句如何工作 LIBRARYieee USEieee std logic 1164 all USEieee std logic arith all ENTITYdecoderISPORT sel INUNSIGNED 2DOWNTO0 dout OUTUNSIGNED 7DOWNTO0 ENDdecoder ARCHITECTUREdecoder arcOFdecoderISSIGNALsel1 INTEGER BEGINPROCESS sel BEGIN sel1dout 0 0 0 0 0 0 0 1 AFTER5ns WHEN1 doutdoutdoutdoutdoutdoutdout 1 0 0 0 0 0 0 0 AFTER5ns ENDCASE ENDPROCESS ENDdecoder arc 此例不像上例那样等待时间到1000ns以后再激活进程 而是只要sel的值一发生改变就激活进程 从第一句执行直到满足条件后再被挂起 下例是另一种激活进程的方式 ENTITYregISPORT d clk INBIT q1 q2 OUTBIT ENDreg ARCHITECTUREreg arcOFregISBEGIN PROCESSBEGINWAITUNTILclk 1 q1 d ENDPROCESS PROCESSBEGINWAITUNTILclk 0 q2 d ENDPROCESS ENDreg arc 进程行为语句之间是并行关系 进程行为语句内部是顺序关系 VHDL的每个结构体中可以有多个进程行为语句 它的关键之处是 三 VHDL的顺序行为 顺序行为语句可分为两大类 条件控制类 循环控制类 在这两类中选出六种IF CASE FOR WHILE LOOP EXIT和ASSERT进行讨论 IFTHEN ELSIFTHEN ELSIFTHEN ELSE ENDIF 1 IF语句 IF语句的一般形式为 ARCHITECTUREalarm arcOFalarmISBEGIN 下面举例说明IF条件语句的用法 例 用VHDL设计一家用告警系统的控制逻辑 它有来自传感器的三个输入信号smoke door water和准备传输到告警设备的三个输出触发信号fire alarm burg alarm water alarm以及使能信号en和alarm en VHDL程序描述如下 LIBRARYieee USEieee std logic 1164 all ENTITYalarmISPORT smoke door water INstd logic en alarm en INstd logic fire alarm burg alarm water alarm OUTstd logic ENDalarm PROCESS smoke door water en alarm en BEGINIF smoke 1 AND en 0 THENfire alarm 1 ELSEfire alarm 0 ENDIF IF door 1 AND en 0 AND alarm en 0 THENburg alarm 1 ELSEburg alarm 0 ENDIF IF water 1 AND en 0 THENwater alarm 1 ELSEwater alarm 0 ENDIF ENDPROCESS ENDalarm arc 2 CASE语句 CASE语句的一般形式 CASEISWHEN WHEN WHEN WHENOTHERS ENDCASE CASE语句是VHDL提供的另一种形式的控制语句 每当单个表达式的值在多个起作用的项中选择时 用此语句是较合适的 它根据所给表达式的值或域 选择 后面的执行语句 用CASE语句应该注意三个问题 一 是关键字WHEN的数量不作限制 但不容许两个语句用一个值 二 是所有WHEN后面的值在CASE语句中合起来的值域中的全部 三 是WHEN的次序可以任意排定 信号可被看作两个元件之间数据传输的通路 10 4VHDL的结构描述 实体主要描述元件 端口与信号 元件是硬件的描述 即门 芯片或者电路板 端口是元件与外界的连接点 数据通过端口进入或流出元件 而信号则是作为硬件连线的一种抽象描述 它即能保持变化的数据 又可以连接各个子元件 下面举例说明 调用元件语句 的用法 对一个硬件的结构进行描述 就是要描述它由哪些子元件组成 以及各个子元件之间的互连关系 结构描述比行为描述更加具体化 即 结构描述与硬件之间的关系要比行为描述与硬件之间的关系更明显 前面讨论 行为描述的基本单元是进程语句 而结构描述的基本单元则是 调用元件语句 首先用VHDL的行为描述设计半减器 ENTITYhalfsubISPORT A B INBIT T C OUTBIT ENDhalfsub PROCESS A B BEGINT AXORBAFTER10ns C NOTA ANDBAFTER10ns ENDPROCESS 下面再将或门的VHDL程序描述如下 ARCHITECTUREorgate arcOForgateISBEGINO1 A1ORB1 ENDorgate arc 下面将两个半减器 一个或门的端口 通过定义一些中间信号将其连接起来形成VHDL的结构描述 ENTITYorgateISPORT A1 B1 INBIT O1 OUTBIT ENDorgate 在下面举的全减器例子里可以看到定义了中间信号temp T temp c1和temp c2 ENTITYfullsubISPORT I1 I2 C IN INBIT FT C OUT OUTBIT ENDfullsub ARCHITECTUREfullsub arcOFfullsubISSIGNALtemp T temp c1 temp c2 BIT COMPONENThalfsubPORT A B INBIT T C OUTBIT ENDCOMPONENT COMPONENTorgatePORT A1 B1 INBIT O1 OUTBIT ENDCOMPONENT 图中虚线框各元件之间的连线命名 temp T将第一个半减器的差位输出连到第二个半减器的输入端 信号temp c1将第一个半减器的借位输出连至 或 门的一个输入端 信号temp c2将第二个半减器的借位输出连至 或 门的另一个输入端 用三个元件调用语句定义这三个连接关系 BEGINU0 halfsubPORTMAP I1 I2 temp T temp c1 U1 halfsubPORTMAP temp T C IN FT temp c2 U2 orgatePORTMAP temp c1 temp c2 C OUT ENDfullsub arc
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!