




已阅读5页,还剩88页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一 VHDL的主要构件 VHDL语言 参数部分 程序包 接口部分 设计实体 描述部分 结构体 VHDL语言基础 EDA技术的基础知识 Example entityname VHDL大小写不敏感 Library Package 1 实体 Entity 描述此设计功能输入输出端口 Port 在层次化设计时 Port为模块之间的接口在芯片级 则代表具体芯片的管脚 A 3 0 B 3 0 equal Entityeqcomp4isport a b instd logic vector 3downto0 equal outstd logic endeqcomp4 端口的模式 输入 Input 输出 Output 双向 Inout 可代替所有其他模式 但降低了程序的可读性 一般用于与CPU的数据总线接口缓冲 Buffer 与Output类似 但允许该管脚名作为一些逻辑的输入信号 可以返回到实体内部 端口说明 PORT 端口名 端口名 方向数据类型 端口名 端口名 方向数据类型 端口方向 实体 IN OUT INOUT BUFFER LINKAGE 2 结构体 Architecture 描述实体硬件的互连关系 数据的传输和变换以及动态行为 语法结构 ARCHITECTURE结构体名OF实体名IS 结构体说明语句 BEGIN 功能描述语句 END结构体名 结构体有三种描述方式行为描述 behavioral 数据流描述 dataflow 结构化描述 structural 行为描述 Architecturebehavioralofeqcomp4isbegincomp process a b beginifa bthenequal 1 elseequal 0 endif endprocesscomp endbehavioral 高层次的功能描述 不必考虑在电路中到底是怎样实现的 数据流描述描述输入信号经过怎样的变换得到输出信号 Architecturedataflow1ofeqcomp4isbeginequal 1 whena belse 0 enddataflow1 Architecturedataflow2ofeqcomp4isbeginequal not a 0 xorb 0 andnot a 1 xorb 1 andnot a 2 xorb 2 andnot a 3 xorb 3 enddataflow2 当a和b的宽度发生变化时 需要修改设计 当宽度过大时 设计非常繁琐 结构描述 architecturestructofeqcomp4isbeginU0 xnor2portmap a 0 b 0 x 0 U1 xnor2portmap a 1 b 1 x 1 U2 xnor2portmap a 2 b 2 x 2 U3 xnor2portmap a 3 b 3 x 3 U4 and4portmap x 0 x 1 x 2 x 3 equal endstruct 类似于电路的网络表 将各个器件通过语言的形式进行连接 与电路有一一对应的关系 一般用于大规模电路的层次化设计时 三种描述方式的比较 3 库 程序包和配置 设计库 IEEE库 预定义库 隐含打开 STD库 STANDARD 隐含说明 TEXTIO 用USE说明 WORK库 资源库 用LIBRARY 其它库 STD LOGIC 1164STD LOGIC ARITHSTD LOGIC UNSIGNEDNUMERIC STDNUMERIC BITMATH REALMATH COMPLEXVITAL TIMINGVITAL PRIMITIVE 1 库 程序包 程序包放在库中 使用时用USE语句说明 库 程序包说明语句 2 配置 一个实体可以有多个结构体描述 但是在进行仿真和综合时 只能一个实体对应一个确定的结构体 配置语句用来确定结构体 语句格式 CONFIGURATION配置名OF实体名IS FOR被选结构体名 ENDFOR END配置名 二 VHDL的数据对象和数据类型 1 VHDL的数据对象 类似于一种容器 接受不同数据类型的赋值 常数信号变量 数据对象 常数 Constant 固定值 不能在程序中被改变增强程序的可读性 便于修改程序在综合后 连接到电源和地可在Library Entity Architecture Process中进行定义 其有效范围也相应限定常数说明 Constant常数名 数据类型 表达式例 Constantdata bus width integer 8 ConstantROM Size Integer 16 FFFF 数据对象 变量 Variable 临时数据 没有物理意义只能在Process和Function中定义 必须在进程和子程序的说明性区域说明 并只在其内部有效要使其全局有效 先转换为Signal 用 进行赋值变量说明 variable变量名 数据类型例 variableIn fetch Boolean variableresult std logic 0 变量赋值 整体赋值 temp 10101010 temp x AA 逐位赋值 temp 7 1 多位赋值temp 7downto4 1010 数据对象 信号 Signals 代表连线 Port也是一种信号在Entity中和Architecture中定义用 进行赋值保留字 SIGNAL信号说明 signal信号名 数据类型 例 signalcount bit vector 3downto0 0011 signalEnable Bit signalCLK CLEAR Bit 1 信号举例 LIBRARYieee USEieee std logic 1164 all ENTITYsimpISPORT a b c d INStd Logic g OUTStd Logic ENDsimp ARCHITECTURElogicOFsimpISSIGNALe f Std Logic BEGINe aorb f not cord g eandf ENDlogic 信号赋值 SIGNALtemp Std Logic Vector 7downto0 整体赋值 temp 10101010 temp x AA 逐位赋值 temp 7 1 多位赋值 temp 7downto4 1010 信号和变量的作用范围 ARCHITECTURE 信号和变量的区别 2 VHDL的数据类型 1 标准数据类型 编程者可直接使用 预定义类型在VHDL标准程序包STANDARD中定义 在应用中自动包含进VHDL的源文件 不需要USE语句显示调用 数据类型如下 1 整数 INTEGER 在VHDL语言中 整数的表示范围为 2147483647 2147483647 即从 231 1 到 231 1 2 实数 REAL 实数的定义值范围为 1 0E 38 1 0E 38 实数有正负数 书写时一定要有小数点 例如 1 0 2 5 1 0E 38 3 位 BIT 用来表示数字系统中的信号值 位值用字符 0 或者 1 将值放在引号中 表示 与整数中的1和0不同 1 和 0 仅仅表示一个位的两种取值 4 位矢量 BIT VECTOR 位矢量是用双引号括起来的一组数据 例如 001100 X 00bb 在这里位矢量前面的X表示是十六进制 使用位矢量时必须注明位宽 即数组中元素个数和排列 例如 SIGNALs1 BIT VECTOR 15DOWNTO0 5 布尔量 BOOLEAN 一个布尔量具有两种状态 真 或者 假 没有数值的含义 也不能进行算术运算 它能进行关系运算 例如 它可以在if语句中被测试 测试结果产生一个布尔量TRUE或者FALSE 6 字符 CHARACTER 用单引号括起来 如 a 区分大小写 字符包括从a到z中的任一个字母 从0到9中的任一个数以及空格或者特殊字符 如 等等 包集合standard中给出了预定义的128个ASC 码字符 7 字符串 STRING 由双引号括起来的一个字符序列 也称字符矢量或字符串组 字符串常用于程序的提示和说明 字符串举例如下 VATIABLEstring 1 STRING 0TO3 string 1 abcd 8 时间 TIME 是一个物理量数据 包含整数和单位两部分 而且整数和单位之间至少应留一个空格的位置 例如55sec 2min等 在包集合STANDARD中给出了时间的预定义 其单位为fs ps ns s ms sec min和hr 例如 20 s 100ns 3sec 在系统仿真时 时间数据特别有用 用它可以表示信号延时 从而使模型系统能更逼近实际系统的运行环境 9 错误等级 SEVERITYLEVEL 用来表征系统的状态 共有4种 note 注意 warning 警告 error 出错 failure 失败 在系统仿真过程中可以用这4种状态来提示系统当前的工作情况 从而使设计人员随时了解当前系统工作的情况 并根据系统的不同状态采取相应的对策 10 大于等于零的整数 自然数 NATURAL 正整数 POSITIVE 这两种数据是整数的子类 NATURAL类数据为取0和0以上的正整数 而POSITIVE则只能为正整数 2 用户自定义数据类型格式 type数据类型名is数据类型定义 可以由用户定义的数据类型有 枚举 ENUMERATED 类型 整数 INTEGER 类型 实数 REAL 浮点数 FLOATING 类型 数组 ARRAY 类型 枚举类型 把数据类型中的各个元素都列举出来 方便 直观 提高了程序可阅读性 书写格式为 Type数据类型名称is 元素1 元素2 其中 数据类型名称和元素都是一个标识符 例如 Typecoloris blue green yellow red 数据类型名称是color 元素1 元素2 是 blue green yellow red 枚举类型中所列举的元素在程序编译过程中通常是自动编码 编码顺序是默认的 左边第一个元素编码为0 以后的依次加1 编码过程中自动将每一个元素转变成位矢量 位矢量的长度由所列举元素个数决定 如上例四个元素 位矢量的长度为2 编码默认值为 blue 00 green 01 Yellow 10 red 11 初始值默认为第一个值 枚举类型应用举例 交通灯控制器 任务和要求 在十字路口的两个方向上各设一组红灯 绿灯和黄灯 显示顺序为 其中一个方向绿灯 黄灯 红灯 另一个方向是红灯 黄灯 绿灯 其中绿灯 黄灯 红灯的持续时间分别是20S 5S 25S 程序如下 IEEE STD LOGIC 九态数值模型如下 U 初始值 X 不定态 1 逻辑1 0 逻辑0 Z 高阻态 W 弱信号不定 L 弱信号0 H 弱信号1 不可能情况 3 IEEE标准数据类型 std logic 和 std logic vector 三 VHDL语言的操作符和表达式 VHDL运算符 逻辑运算符AND OR NAND NOR XOR NOT关系运算符 算术运算符 并置 连接 运算符 1 逻辑运算符在VHDL语言中 共有6种逻辑运算符 他们分别是 NOT取反 AND与 OR或 NAND与非 NOR或非 XOR异或 这6种逻辑运算符可以对 STD LOGIC 和 BIT 等逻辑型数据 STD LOGIC VECTOR 逻辑型数组及布尔数据进行逻辑运算 必须注意 运算符的左边和右边 以及代入的信号的数据类型必须是相同的 2 算术运算符VHDL语言中有5类算术运算符 他们分别是 求和操作符 加 减 求积操作符 乘 除 MOD 求模 REM 取余 符号操作符 正 负 混合操作符 指数 ABS 取绝对值 移位操作符 SLL 逻辑左移 SRL 逻辑右移 SLA 算术左移 SRA 算术右移 ROL 逻辑循环左移 ROR逻辑循环右移 3 关系运算符VHDL语言中有6种关系运算符 他们分别是 等于 不等于 大于 大于等于 4 并置运算符 连接 SIGNALg h i STD LOGIC SIGNALc d e STD LOGIC VECTOR 1TO0 d i NOTh 元素与元素并置 形成长度为2的数组a c d 数组与数组并置 形成长度为4的数组 5 VHDL操作符的优先顺序 运算符优先级NOT ABS 最高优先级 MOD REM 正号 负号 SLL SLA SRL SRA ROL ROR AND OR NAND NOR XOR XNOR最低优先级 四 VHDL基本语句 1 顺序描述语句 1 信号赋值语句和变量赋值语句 目标信号 表达式 目标变量 表达式 2 If语句 语句格式 if条件1then第1组顺序语句 elseif条件2then第2组顺序语句 elseif条件nthen第n组顺序语句 else第n 1组顺序语句 endif IF语句的应用 八 三优先级编码器真值表输入输出d7d6d5d4d3d2d1d0q2q1q00 xxxxxxx11110 xxxxxx110110 xxxxx1011110 xxxx10011110 xxx011111110 xx0101111110 x00111111110000 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYpriority encoderISPORT d INSTD LOGIC VECTOR 7DOWNTO0 q OUTSTD LOGIC VECTOR 2DOWNTO0 ENDpriority encoder ARCHITECTUREexample ifOFpriority encoderISBEGIN PROCESS d BEGINIF d 7 0 THENq 111 ELSIF d 6 0 THENq 110 ELSIF d 5 0 THENq 101 ELSIF d 4 0 THENq 100 ELSIF d 3 0 THENq 011 if语句的另外两种形式 1 if then语句 格式如下 if条件then顺序语句 endif 2 if then else语句 格式如下 if条件then顺序语句 Else顺序语句 endif 3 case语句 CASE语句用于描述条件电路 但与IF语句不同 IF语句实现的是优先权电路 而CASE语句实现的是平衡电路 CASE语句常用于描述总线 译码器和平衡编码器的结构 CASE语句的一般格式如下 语法如下 CASE条件表达式ISWHEN条件表达式的值 顺序处理语句 WHEN条件表达式的值 顺序处理语句 ENDCASE WHEN中的条件有下述四种方式 WHEN值 顺序处理语句 WHEN值 值 值 顺序处理语句 若干可列的值 WHEN值TO值 顺序处理语句 某个区间的值 WHENOTHERS 顺序处理语句 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYmux4ISPORT a b d0 d1 d2 d3 INSTD LOGIC q OUTSTD LOGIC ENDmux4 例 用CASE语句设计四选一电路 ARCHITECTUREexample caseOFmux4ISSIGNALsel INTEGERRANGE0TO3 BEGINPROCESS a b d0 d1 d2 d3 BEGINsel 0 IF a 1 THENsel sel 1 ENDIF IF b 1 THENselqqqq d3 ENDCASE ENDPROCESS ENDexample case CASE语句设计的四选一电路实现 上述程序所描述的是一个平衡结构的四选一电路 用IF语句设计四选一电路 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYmux4ISPORT a b d0 d1 d2 d3 INSTD LOGIC q OUTSTD LOGIC ENDmux4 ARCHITECTUREexample ifOFmux4ISBEGINPROCESS a b d0 d1 d2 d3 BEGIN IF a 0 ANDb 0 THENq d0 ELSIF a 1 ANDb 0 THEq d1 ELSIF a 0 ANDb 1 THENq d2 ELSIF a 1 ANDb 1 THENq d3 ENDIF ENDPROCESS ENDexample if 用IF语句设计四选一电路是权电路 2 并行描述语句 1 进程内部所有的语句都是顺序执行的 2 进程和进程之间是并行执行的 3 进程的启动由PROCESS语句的敏感信号量表中的信号量触发 也可以由WAIT语句触发 1 进程语句 进程名 process 敏感信号表 变量说明语句 begin一组顺序语句 endprocess 进程名 当进程中没有敏感信号表时 进程语句中必须有其他形式的敏感信号激励 而当进程中有敏感信号表时 进程语句中不允许再出现wait waitfor waituntil和waiton中的任何一种敏感信号激励语句 否则出错 用进程设计D触发器 LIBRARYIEEEUSEIEEE STD LOGIC 1164 ALL ENTITYdff4ISPORT clk d clr pset INSTD LOGIC q OUTSTD LOGIC ENDdff4 ARCHITECTURErtlOFdff4ISBEGIN clr pset PROCESS clk pset clr BEGINIF clr 0 THENq 0 ELSIF pset 0 THENq 1 ELSIF clk EVENTANDclk 1 THENq d ENDIF ENDPROCESS ENDrtl 利用进程语句设计一位加法器LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYhalf adderISPORT a b INSTD LOGIC sum carry OUTSTD LOGIC ENDhalf adder ARCHITECTUREbehavOFhalf adderISBEGINPROCESS a b BEGINsum aXORbAFTER5nS carry aANDbAFTER5nS ENDPROCESS ENDbehav 进程语句的启动 进程语句有两种工作状态 等待状态和执行状态 当敏感信号表中的信号没有变化时 进程处于等待状态 当敏感信号表中的信号有变化时 进程处于执行状态 将顺序执行进程中的语句 当最后一个语句执行完后 就返回进程语句的开始 等待下一次敏感信号表中的信号变化 4 时间等待WAITFOR时间表达式 例如 WAITFOR20nS 同步点在延时20nS后 WAITONclk interruptFOR5nS 当信号clk或interrupt变化5nS后启动进程 2 并发信号赋值语句 信号赋值语句在进程内部出现时 是顺序描述语句 在进程之外出现时 以并发语句的形式出现 是并行执行的 执行顺序与书写顺序无关 LIBRARYIEEEUSEIEEE STD LOGIC 1164 ALL ENTITYgateISPORT a b INSTD LOGIC x y z OUTSTD LOGIC ENDgate ARCHITECTUREbehaveOFgateISBEGINx aANDb y aORb z aXORb ENDbehave 例 产生右图电路符号的VHDL程序 3 条件信号赋值语句 目标信号 表达式1when条件1else表达式2when条件2else表达式3when条件3else 表达式n 1when条件n 1else表达式n LIBRARYIEEEUSEIEEE STD LOGIC 1164 ALL ENTITYand gateISPORT a b INSTD LOGIC x OUTSTD LOGIC ENDand gate ARCHITECTURErtlOFand gateISBEGINx 0 whena 0 andb 0 elsex 0 whena 0 andb 1 elsex 0 whena 1 andb 0 else 1 ENDrtl 4 选择信号赋值语句 with表达式select目标信号 表达式1when条件1 表达式2when条件2 表达式3when条件3 表达式nwhen条件n LIBRARYIEEEUSEIEEE STD LOGIC 1164 ALL ENTITYmmux4ISPORT d0 d1 d2 d3 INSTD LOGIC sel instd logic vector 1downto0 q OUTSTD LOGIC ENDmmux4 ARCHITECTURErtlOFmmux4ISBEGINwithselselectq d0when 00 d1when 01 d2when 10 d3whenothers ENDrtl COMPONENT语句COMPONENT元件名 GENERIC说明 参数说明 仅整型可综合 PORT端口说明 ENDCOMPONENT 映射语句标号名 元件名 GENERICMAP 类属关联表 PORTMAP 端口映射 标号名在结构体中必须是唯一的 5 元件例化语句 映射方式 参数映射关系和端口映射关系有两种 位置映射和名称映射 1 位置映射方法PORTMAP a 0 b 0 x 0 PORT a b INSTD LOGIC c OUTSTD LOGIC 元件说明语句 2 名称映射方法U0 xnor2PORTMAP a a 0 c x 0 b b 0 在端口元素中定义输入 在端口元素中定义输出 VHDL组件示例 2输入与门X AB的VHDL程序 ENTITYand gateISPORT A B INBIT X OUTBIT ENDENTITYand gate ARCHITECTUREandfunctionOFand gateISBEGINX AANDB ENDARCHITECTUREandfunction ENTITYOR gateISPORT A B INBIT X OUTBIT ENDENTITYOR gate ARCHITECTUREORfunctionOFOR gateISBEGINX AORB ENDARCHITECTUREORfunction 2输入或门X A B的VHDL程序 任何一个VHDL程序都可以改变成一个组件 并可随时应用到更大的程序中 使用的关键字是COMPONENT和SIGNAL COMPONENT描述预先定义的逻辑 并将其存储在库中的软件包中 而SIGNAL是逻辑电路内部的连接 和输入输出有区别 输入 输出使用端口语句在实体中定义 而信号在结构体 ARCHITECTURE 内部用信号语句定义 采用VHDL组件的程序如下 ENTITYand or gateISPORT IN1 IN2 IN3 IN4 INbit OUT3 OUTbit ENDENTITYand or gate ARCHITECTURELogicoperatiOFnd or gatISCOMPONENTAND gateISPORT A B INbit X OUTbit ENDCOMPONENTAND gate COMPONENTOR gateISPORT A B INbit X OUTbit ENDCOMPONEN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河道沉积物分析与治理方案
- 期货从业资格之期货投资分析高分题库附答案详解(能力提升)
- 2025年宣城市公安局招聘警务辅助人员287人笔试高频难、易错点备考题库及参考答案详解1套
- 2025年上海工艺美术职业学院招聘(5人)考前自测高频考点模拟试题附答案详解(精练)
- 2025年高考真题【学生专用】附答案详解
- 2024年安全监察人员考试彩蛋押题及1套完整答案详解
- 园林古建筑设施修缮与改善方案
- 桥梁钢筋与预应力施工方案
- 2025年电工通关题库(网校专用)附答案详解
- 浙江宁波余姚市规划测绘设计院招聘编外员工8人笔试高频难、易错点备考题库及完整答案详解1套
- 第一章 勾股定理 单元测试卷(含部分解析)-2025-2026学年北师大版八年级数学上册
- 2025年四川省高等职业教育单独考试招生语文试卷
- (2025年标准)以捐代购协议书
- 颈部引流管的护理
- 2025至2030中国门诊外科中心行业项目调研及市场前景预测评估报告
- 中医护理拔罐技术应用
- 地铁光电缆基础知识培训课件
- 矿山支护工培训课件
- 整本书阅读教学课件
- 2025东莞市公安局长安分局警务辅助人员招聘考试笔试试题(含答案)
- 急性ST段抬高型心肌梗死的护理课件
评论
0/150
提交评论