VHDL语言描述语句PPT课件_第1页
VHDL语言描述语句PPT课件_第2页
VHDL语言描述语句PPT课件_第3页
VHDL语言描述语句PPT课件_第4页
VHDL语言描述语句PPT课件_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VHDL语言描述语句 VHDL语言描述语句 一 VHDL语句分类 二 基本的VHDL顺序语句三 基本的VHDL并行语句四 常用组合单元电路VHDL设计五 常用时序单元电路VHDL设计 一 VHDL语句分类 按照功能分类 赋值语句 数据流控制语句 转向控制语句 Case when 顺序 If else 顺序 with selectwhen 并 When else 并 模块化设计语句 process component generate block for loop 子程序调用语句仿真语句 wait 按照语句的执行方式特点分为 并行语句 按动作特点 语句执行顺序与书写顺序无关 使用范围 进程语句外部的语句都是并行的 实际应用 对应于各自独立运行的逻辑电路 顺序语句 按动作特点 照语句书写顺序执行 使用范围 进程 函数和过程内部出现 实际应用 时序电路 数据流控制电路 VHDL顺序语句 黑龙江大学电子工程学院 EDA教研室 基本的VHDL顺序语句 VHDL中的顺序语句用于描述进程或子程序的内部功能 且只能出现在PROCESS FUNCTION PROCEDURE等语句中 可以用来设计时序电路 组合电路 主要作用 时序流控制 程序控制 条件和迭代等 行为描述代码 常用的顺序语句见下表 1 process 进程 2 信号和变量 3 IF语句 4 CASE语句 5 CASE语句和IF语句的比较 6 LOOP语句 7 WAIT语句 8 使用顺序代码设计组合逻辑电路 基本的VHDL顺序语句 5 3 1进程 PROCESS 语句语法说明 1 Process为过程语句 定义如下 进程标号 Process 触发信号1 触发信号2 定义区 Begin顺序语句 EndProcess 进程标号 注 方括号内容可以省略 触发信号将决定该过程是否执行 一个结构体当中可以有多个过程 多个进程语句之间是并行执行 进程内部属于顺序执行语句 2 进程语句 语法说明 进程标号 用于标识进程 可选 多个进程时 提高程序可读性 敏感信号列表 敏感信号发生变化 上升沿或者下降沿 进程被激活 从而执行内部顺序语句 注意 可以有多个敏感信号 用逗号隔开 任何一个变化都激活进程 否则进程挂起 进程声明区 用于定义进程内部的局部变量 信号不可在此声明 进程之间数据交流通过全局信号 顺序语句 进程内部语句顺序执行 用处 适合描述时序电路 也可用于组合逻辑电路的设计 例1 进程语句例程 带异步复位的D触发器 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYcydffISPORT d clk rst INSTD LOGIC q OUTSTD LOGIC ENDENTITYcydff ARCHITECTUREbehaveOFcydffISBEGINcydff inst PROCESS clk rst BEGINIF rst 1 thenq 0 elsIF clk 1 ANDclk LAST VALUE 0 ANDclk EVENT THENq d ENDIF ENDPROCESScydff inst ENDARCHITECTUREbehave 语法说明 时钟沿的VHDL描述方法总结 3种 clk eventandclk 1 clk eventandclk 0 clk 1 ANDclk EVENTANDclk LAST VALUE 0 clk 0 ANDclk EVENTANDclk LAST VALUE 1 rising edge clk falling edge clk Clk event 上升沿描述1 下降沿描述1 上升沿描述2 下降沿描述2 上升沿描述3 下降沿描述3 进程语句总结 进程仅在敏感信号发生变化时才执行 特点 进程内部 顺序语句 进程语句之间 并行 不同进程内不可以对同一信号赋值 即不可多重赋值 进程内信号和变量赋值效果不同 一个进程内不能同时扑捉同一个时钟信号的上升沿或者下降沿 例如下面语句是错误的 PROCESS clk BEGINIFrising edge clk then elsiffalling edge clk then endif endpeocess entitymulisport a b c selx sely INbit data out OUTBIT endmul ARCHITECTUREexOFmulISSIGNALtemp BIT BEGINp a PROCESS a b selx BEGINIF SELX 0 THENtemp a ELSEtemp b ENDIF ENDPROCESSp a p b PROCESS temp c sely BEGINIF SELy 0 THENdata out temp ELSEtemp c ENDIF ENDPROCESSp b endex 1 信号和变量异同 1 声明范围 信号 ENTITY ARCHITECTURE PACKAGE ALL 变量 顺序语句中 PROCESS 子程序 2 作用 动态数值传递 存储运算中间结果 变量 3 使用范围 全局 sig 局部 var 4 变量结果只能由信号传递到外部 5 动作特点 变量 立即更新 信号 process执行完毕才生效 允许多驱动源 仅最后一个有效 6 操作符 信号 变量 2 信号和变量 例2 ARCHITECTUREbehavioralOFexample duibiISSIGNALd0 d1 d2 d3 STD LOGIC 定义信号SIGNALq0 q1 STD LOGIC BEGINli 1 PROCESS d0 d1 d2 d3 BEGINd2 d0 信号量代入q0 d2ORd3 d2 d1 信号量代入q1 d2ORd3 ENDPROCESScduibi 1 li 2 PROCESS d0 d1 d3 VARIABLEm2 STD LOGIC BEGINm2 d0 变量赋值q0 m2ORd3 m2 d1 变量赋值q1 m2ORd3 ENDPROCESScduibi 2 ENDbehavioral 进程li 1的运行结果 q0 d1ORd3并且q1 d1ORd3进程li 2的运行结果 q0 d0ORd3而q1 d1ORd3 语法说明 进程当中的赋值 变量 立即更新 信号 process执行完毕赋值才生效 同时 进程中的信号赋值语句允许有多个不同的赋值驱动源 但仅最后一个驱动源有效 3 IF语句 IF语句IF语句是根据所指定的条件来确定执行哪些语句 适用于比较器 译码器等需要条件控制的逻辑电路设计 通常有以下三种类型 1 用作门阀控制时的IF语句书写格式为IF 条件 THEN顺序处理语句 ENDIF 例程 PROCESS clk BEGINIFclk eventandclk 1 THENq d qb NOTd ENDIF ENDPROCESS 2 用作选择控制时的IF语句书写格式为IF 条件 THEN顺序处理语句1 ELSE顺序处理语句2 ENDIF PROCESS a b en BEGINIF en 1 THENc a ELSEc b ENDIF ENDPROCESS 3 用作多选择控制时的IF语句书写格式为IF条件1THEN顺序处理语句1 ELSIF条件2THEN顺序处理语句2 ELSIF条件N 1THEN顺序处理语句N 1 ELSE顺序处理语句N ENDIF LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYmux4ISPORT input INSTD LOGIC VECTOR 3DOWNTO0 en INSTD LOGIC VECTOR 1DOWNTO0 y OUTSTD LOGIC ENDmux4 ARCHITECTUREaaOFmux4ISBEGINPROCESS input en BEGINIF en 00 THENy input 0 ELSIF en 01 THENy input 1 ELSIF en 10 THENy input 2 ELSEy input 3 ENDIF ENDPROCESS ENDaa 例2 例5 9 四选一数据选择器 IF语句应用例2 8 3优先编码器 74HC148 课堂练习 1 模10计数器 N位移位寄存器 右移 作业1 1 N位移位寄存器 左移 2 通用模n计数器 IF语句使用总结 If语句必须要有else 尤其组合逻辑嵌套计数不能太多 否则关键路径会很长 会严重影响性能 分支较多的if应想办法采用case代替 If条件判断不能太长 若逻辑比较复杂 尽量用新产生信号代替 注意if的优先级 尽量不使用 比较符 4 CASE语句CASE语句的一般格式为 CASE表达式ISWHEN值1 多条赋值语句 WHEN值2 语句2 WHENOTHERS 语句3 null unaffected ENDCASE 当需要对多个条件进行判断时 1 WHEN值 语句 单个值 2 WHEN值 值 值 值 语句 多个值的 或 3 WHEN值TO值 语句 取值范围 枚举 例5 10用CASE语句描述4选1电路 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYmux4ISPORT s1 s2 a b c d INSTD LOGIC z OUTSTD LOGIC ENDmux4 ARCHITECTUREaOFmux4ISSIGNALs STD LOGIC VECTOR 1DOWNTO0 BEGINSZZZZZ X ENDCASE ENDPROCESS ENDa 覆盖全部条件 不能有重复条件 只能在最后出现 1 条件表达式 整数 枚举 数组 2 相当于THEN 3 分支入口条件必须唯一 且取值在表达式范围内 4 分支入口选择 并行 与书写顺序无关 5 OTHERS 必须列出条件表达式的所有可能 NULL Case语句的条件没有优先级 综合后是一个并行多路选择器 注意 如果if语句太长 应该尽可能用case语句代替 适用于编写组合逻辑电路 译码器 编码器等 语法说明 5 语句与 语句比较 1 有优先级的电路 用IF语句 2 CASE语句可提高程序可读性 经常用来设计状态机电路 6 LOOP及相关语句用途 当一段代码需要多次重复执行时 LOOP语句的语法结构有以下两种 顺序语句 使用范围 进程 函数 过程 FOR LOOP 循环固定次数 label FOR循环变量IN范围LOOP顺序处理语句 ENDLOOP 循环标号 2 WHILE LOOP 循环执行直到某个条件不再满足 label WHILE 条件 LOOP顺序处理语句 ENDLOOP 循环标号 6 LOOP及相关语句 3 NEXT 跳出本次循环 label NEXT loop label when条件表达式 4 EXIT 结束整个循环操作 label EXIT loop label when条件表达式 例 FORIIN0TO LOOPtemp tempXORcdata i ENDLOOP FORIIN0TO LOOP 不可综合 静态参数 循环次数必须为确定值或者用属性语句来定义 例 VARIABLEsum temp INTEGER 0 VARIABLEi INTEGER 0 BEGINsum example WHILE i 100 LOOPsum temp sum temp i i i 1 ENDLOOPsum example ENDPROCESS 6 3 NEXT语句NEXT语句主要用于LOOP语句的内部循环控制 有条件或无条件地跳出本次循环 开始下一次循环 NEXT语句的一般格式为 1 NEXT 2 NEXTLOOP标号 3 NEXTLOOP标号WHEN条件表达式例 CTEST1 FORmIN0TO50LOOP 外循环CTEST2 FORnIN1TO40LOOP 内循环 NEXTCTEST1WHENm n NEXT语句的执行条件 ENDLOOPCTEST2 ENDLOOPCTEST1 6 4EXIT语句退出 EXIT 语句也是LOOP语句中使用的循环控制语句 执行EXIT语句 将结束循环状态 从LOOP语句中跳出 终止LOOP语句的执行 EXIT语句的一般格式为 1 EXIT 2 EXITLOOP标号 3 EXITLOOP标号WHEN条件表达式 FORiIN0TO31LOOPNEXTWHENccontrol 0 跳到下一次循环 temp tempXORcdata i ENDLOOP FORiINdata RANGELOOPCASEdata i ISWHEN 0 count count 1 WHENothers EXIT 跳出当前循环 使LOOP循环结束 ENDCASE ENDLOOP 1 利用LOOP EXIT语句设计一个连 0 检测器对输入矢量中连续出现的零的个数进行统计 从矢量左端开始统计 课堂练习 2 课堂练习 2 2 利用loop语句描述一个n位的逐级进位加法器 7 WAIT语句 1 作用 替代PROCESS敏感信号列表 2 WAIT语句语法格式 WAIT 无限等待 仿真 WAITFORtime 时间到 仿真 不可综合 WAITUNTILsignal condition 条件满足 可综合 WAITONsignal1 signal2 敏感信号发生变化 可综合 7 1 WAIT语句说明作用 仿真复位信号的产生 reset proc processbeginreset 1 waitforreset period reset 0 wait endprocess 7 2 WAITFOR语句 作用 常用于描述仿真激励信号 产生时钟信号 例 constantclk period time 10nsclk process processbeginclk 0 waitforclk period 2 clk 1 waitforclk period 2 ENDPROCESS 或者 Clk process process clk beginclk NOTclkAFTERperiod 2 endprocess 7 3WAITUNTIL使进程语句进入等待状态 直到UNTIL之后的条件满足后才激活 例 带同步复位端的D出触发器PROCESSBEGINWAITUNTIL clk eventandclk 1 if rst 1 thenoutput 0 elsifclk eventandclk 1 thenoutput input endif endprocess 7 4WAITONWAITON语句使进程进入等待状态 直到ON之后信号状态发生变化才被激活 相当于进程的敏感信号列表 WAITONclk reset 相当于在进程敏感信号列表中写clk reset 注意 对于进程语句 WAITON和敏感信号列表只能二选一 不可同时存在 敏感信号列表形式 PROCESS clk reset Begin顺序语句Endprocess WAITON语句形式 PROCESSBeginWAITONclk reset顺序语句Endprocess WAITON语句 例 带异步复位的8位寄存器 PROCESSBEGINWAITONclk rst IFrst 1 THENoutput 0 ELSIFc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论