硬件描述语言及器件 VHDL基本语句学习PPT.ppt_第1页
硬件描述语言及器件 VHDL基本语句学习PPT.ppt_第2页
硬件描述语言及器件 VHDL基本语句学习PPT.ppt_第3页
硬件描述语言及器件 VHDL基本语句学习PPT.ppt_第4页
硬件描述语言及器件 VHDL基本语句学习PPT.ppt_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

vhdl的基本语句 1 顺序语句2 并发语句 顺序语句 vhdl语句是并发语言 大部分语句是并发执行的 但是在进程 过程 块语句和子程序中 还有许多顺序执行语句 顺序语句有两类 一类是真正的顺序语句 if语句 一类是可以做顺序语句 又可以做并发语句 具有双重特性的语句 赋值语句 process语句 顺序语句 1 process语句2 wait语句3 赋值语句4 if语句5 case语句6 loop语句7 null语句 wait语句 进程在仿真运行中总是处于执行状态或挂起状态 除了受敏感信号的控制外 进程状态的变化还受等待语句的控制 当进程执行到等待语句时 就将被挂起 并设置好再次执行的条件 wait语句的4种不同的条件 wait 无限等待waiton 敏感信号变化waituntil 条件满足waitfor 时间到 wait 未设置停止挂起条件的表达式 表示永远挂起 waiton信号表 又称为敏感信号等待语句 在信号表中列出的信号是等待语句的敏感信号 当处于等待状态时 敏感信号的任何变化将结束挂起 再次启动进程 signals1 s2 std logic processbegin waitons1 s2 endprocess 未列出敏感量 wait与敏感量不兼容 waiton语句示例 例6 1process a b beginy aandb endprocess processbeginy aandb waitona b endprocess 例6 2process a b beginy aandb waitona b endprocess 既使用敏感信号 又使用waiton语句 程序错误 两种程序写法不同 功能相同 waituntil条件表达式 相比waiton多了一种重新启动的条件 需同时按顺序满足以下两个条件 才能脱离挂起状态 1 表达式中所含信号发生改变 2 信号改变后 满足所设条件 signals1 std logic processbegin waituntils1 1 endprocess waituntil条件表达式 一般的 只有waituntil语句可以被综合器接受 其它格式只能在仿真其中使用 waituntil语句表达方式 1 waituntil信号 value 2 waituntil信号 eventand信号 value 例 1 waituntilclk 1 2 waituntilclock eventandclk 1 3 waituntilrising edge clk 以上都表示等待上升沿 具有相同的硬件结构 waitfor时间表达式 又称为超时等待语句 此语句中定义了一个时间段 从执行到wait语句开始 在此时间段内 进程处于挂起状态 当超过这一时间段后 进程自动回复执行 如 waitfor20nswaitfor a b c a b c为时间量 其它wait语句 多条件wait语句例 waitonnmi interruptuntil umi true or interrupt true for5us wait语句大部分情况适用于仿真 而仿真需要与实际硬件 芯片 相结合 故在工程实际中 较少使用wait语句 如需表示等待多少时间 则大部分情况可使用if语句 赋值语句 功能 将一个值或一个表达式的运算结果传递给某一个数据对象 赋值语句有两种 信号赋值 代入 语句和变量赋值语句 每个赋值语句由三部分组成 1 赋值目标2 赋值符号3 赋值源vhdl规定 赋值目标与赋值源必须严格一致 if语句 if语句根据指定的条件来确定语句执行顺序 共有3种类型 1 用于门闩控制的if语句 2 用于二选一控制的if语句 3 用于多选择控制的if语句 1 用于门闩控制的if语句 这种类型的if语句一般书写格式为 if条件thenendif 例6 6 libraryieee useieee std logic 1164 all useieee std logic arith all useieee std logic unsigned all entitydffisport clk instd logic d instd logic q outstd logic endentitydff architectureaofdffisbeginp1 process clk beginifclk eventandclk 1 thenq d endif endprocessp1 enda 2 用于二选一控制的if语句 这种类型的语句书写格式为 if条件then else endif 二选一电路vhdl语言实现 例6 7 libraryieee useieee std logic 1164 all useieee std logic arith all useieee std logic unsigned all entitymux2isport a b sel instd logic c outstd logic endentitymux2 可写为 process sel if语句条件表达式中出现的信号必为敏感信号 其它可忽略 architecturertlofmux2isbeginprocess a b sel beginifsel 1 thenc a elsec b endif endprocess endrtl 3 用于多选择控制的if语句 这种类型的if语句书写格式为 if条件1then elsif条件2then elsif条件nthen else endif 3 用于多选择控制的if语句 例6 8 libraryieee useieee std logic 1164 all useieee std logic arith all useieee std logic unsigned all entitymuxisport sel instd logic vector 1downto0 input instd logic vector 3downto0 y outstd logic endentitymux architectureaofmuxisbegin process sel beginifsel 00 theny input 0 elsifsel 01 theny input 1 elsifsel 10 theny input 2 elsey input 3 endif endprocess enda case语句 case语句常用来描述总线行为 编码器和译码器的结构 case语句可读性好 非常简洁 case语句的一般格式为 case选择信号iswhen条件选择值1 顺序语句1 when条件选择值2 顺序语句2 whenothers 顺序语句n endcase 使用case语句的vhdl程序 casesiswhen 00 yyyy d endcase 仿真结果 case语句与if语句区别 if语句是有序的 先处理最起始 最优先的条件 后处理次优先的条件 case语句是无序的 所有表达式值都并行处理 case语句中的条件表达式的值必须举穷尽 又不能重复 不能穷尽的条件表达式的值用others表示 使用case语句实现状态机 process reset clk variablestate integerrange0to3 beginifreset 0 thenstate 0 elsifclk eventandclk 1 thencasestateiswhen0 qqqqstate 0 endcase endbegin loop语句 loop语句使程序能进行有规则的循环 循环次数受迭代算法控制 loop语句常用来描述位片逻辑及迭代电路的行为 for循环变量形成的loop语句这种形式的loop语句的书写格式为 标号 for循环变量in离散范围loopendloop 标号 上述格式中 循环变量的值在每次循环中都会发生变化 离散范围表示循环变量在循环过程中的取值范围 使用for loop语句的vhdl程序 architecturebehaveoffuzhiissignalq std logic vector 3downto0 beginprocess clk beginifclk eventandclk 1 thenforiin3downto0loopq i a 3 i endloop endif endprocess y q endbehave libraryieee useieee std logic 1164 all useieee std logic arith all useieee std logic unsigned all entityfuzhiisport clk instd logic a instd logic vector 3downto0 y outstd logic vector 3downto0 endentityfuzhi while条件下的loop语句 书写形式为 标号 while条件loopendloop 标号 例pari while i 8 looptmp tmpxora i i i 1 endlooppari null语句 表示一个空操作 它不发生任何动作 null语句的格式为 null null语句常用在case语句中 表示所剩条件选择值下的操作行为 满足了case语句对条件选择值全部列举的要求 例casesiswhen0 qqnull endcase 其它顺序语句 next语句exit语句子程序调用语句return语句 vhdl语言是并行处理语言 能够进行并行处理的语句有 1 进程 process 语句 2 并发信号代入 concurrentsignalassignment 语句 3 条件信号代入 conditionalsignalassignment 语句 4 选择信号代入 selectivesignalassignment 语句 5 并发过程调用 concurrentprocedurecall 语句 6 块 block 语句 并发描述语句 进程语句是并行处理语句 即各个进程是同时处理的 在一个结构体中多个process语句是同时并发运行的 process语句具有如下特点 1 进程内部的所有语句都是顺序执行的 2 多进程之间 是并行执行的 并可访问构造体或实体中所定义的信号 3 进程的启动是由进程标识符process后的敏感信号来触发 也可用wait语句等待一个触发条件的成立 4 各进程之间的通信是由信号来传递的 进程语句 代入语句 信号代入语句 可以在进程内部使用 此时它作为顺序语句形式出现 代入语句 并发信号代入语句 也可以在构造体的进程之外使用 此时它作为并发语句形式出现 一个并发信号代入语句实际上是一个进程的缩写 并发信号代入语句可以仿真加法器 乘法器 除法器 比较器及各种逻辑电路的输出 因此 在代入符号 的右边可以用算术运算表达式 也可以用逻辑运算表达式 还可以用关系操作表达式来表示 并发信号代入语句 architecturebehavofa varisbeginoutput a i endbehav architecturebehavofa varisbeginprocess a i beginoutput a i endprocessendbehav 两者相同等待a i 变化 条件信号代入语句属于并发描述语句的范畴 可以根据不同的条件将不同的表达式的值代入目的信号量 条件信号代入语句书写的一般格式为 目的信号量 表达式1when条件1else表达式2when条件2else表达式3when条件3else 表达式n 1when条件n 1else表达式n 条件信号代入语句 在执行条件信号代入语句时 赋值条件按书写顺序逐项测试 一旦发现某一赋值条件得到满足 即将相应表达式的值赋给目标信号 并不再测试下面的赋值条件 换言之 各赋值子句有优先级的差别 按书写顺序从高到低排序 因为各赋值子句有优先级的差别 所以各赋值条件可以重叠 条件信号代入语句的执行过程 architecturertlofmux4issignalsel std logic vector 1downto0 beginsel b 例6 17 利用条件信号代入语句来描述的四选一逻辑电路 libraryieee useieee std logic 1164 all useieee std logic arith all useieee std logic unsigned all entitymux4isport a b instd logic i0 i1 i2 i3 instd logic q outstd logic endentitymux4 if语句只能在进程内部使用 因为它们是顺序的 条件信号代入语句中的else是一定要有的 而if语句则可以有也可以没有 条件信号代入语句不能进行嵌套 而if语句可以 用条件信号代入语句所描述的电路 与逻辑电路的工作情况比较贴近 组合逻辑电路用条件信号代入语句 时序逻辑电路用if语句 条件信号代入语句与if语句的比较 选择信号代入语句对选择条件表达式进行测试 当选择条件表达式取值不同时 将使信号表达式不同的值代入目的信号量 选择信号代入语句类似于case语句 选择信号代入语句的书写格式如下 with选择条件表达式select目的信号量 信号表达式1when选择条件1 信号表达式2when选择条件2 信号表达式nwhenothers 选择信号代入语句 当 选择条件表达式 满足某一个 选择条件 时 就将其对应的表达式的值赋给目的信号量 若 选择条件表达式 与所有 选择条件 均不相符时 就将others前的表达式的值赋给目的信号量 选择条件要覆盖所有可能的情况 若不可能一一指定 则要借助others为其他情况找一个 出口 选择条件必须互斥 不能出现条件重复或重叠的情况 选择信号代入语句说明 architecturertlofmux4issignalsel integerrange0to4 beginwithselselectq i0when0 i1when1 选择信号代入语句i2when2 i3when3 x whenothers sel 0whena 0 andb 0 else1whena 1 andb 0 else2whena 0 andb 1 else3whena 1 andb 1 else4 条件信号代入语句endrtl libraryieee useieee std logic 1164 all useieee std logic arith all useieee std logic unsigned all entitymux4isport a b instd logic i0 i1 i2 i3 instd logic q outstd logic endentitymux4 例6 18 利用选择信号代入语句来描述的四选一逻辑电路 libraryieee useieee std logic 1164 all useieee std logic arith all useieee std logic unsigned all entitymux4isport input instd logic vector 1downto0 i0 i1 i2 i3 instd logic q outstd logic endentitymux4 例6 19 利用case语句来描述的四选一逻辑电路 architecturertlofmux4isbeginprocess input begincaseinputiswhen 00 qqqqq x endcase endprocess endrtl 并发过程调用语句 调用规则如下 1 并发过程调用语句是个完整的语句 独立的行为表现形式 在语句前面可以加标号 2 并发过程调用语句应带in out inout参数 列于过程名后跟的括号内 3 并发过程调用可以有多个返回值 这些值通过过程中所定义的输出参数带回 过程调用举例 architecture结构体名of实体名isbeginbitvector to integer z x ftag q 过程参数定义 end在构造体中的并发过程调用语句是由过程信号敏感量的变化得到启动的 过程调用语句可以出现在进程语句中 如果一个进程的作用就是进行过程调用 那么与并发过程调用语句完全等效 在vhdl语言中除了顺序描述语句和并发描述语句之外 还有一些说明语句 定义语句和一些具体的规定 其它语句和有关规定的说明 在vhdl语言中使用的名字 如信号名 实体名 结构体名 变量名 各种进程标记 块标记等命名时 应遵守如下规则 1 构成名字的符号有英文字母 数字和 连字符 2 名字的最前面应该是英文字母 3 不能连续使用连字符 名字最后一个符号也不能用连字符 命名规则和注解的标记 命名规则 signalsel integer signalpci bus std logic vector 31downtoo signal8 bus 数字开头 是错误的名字signalpci bus 是非法符号signalpci bus 连字符在名称中不能连着使用signalpci bus 结尾不能用连字符 命名规则举例 程序注释 为了提高vhdl语言设计程序的可读性 像其他高级语言那样 在每一程序行后可以增加注释 注释从 符号开始 到该行末尾结束 注释文字不作eda工具进行逻辑综合的依据 不产生硬件电路结构 不描述电路行为 在综合 仿真 验证过程中 eda工具对注释行不进行处理 注释不是设计描述的有效部分 编译后存入数据库中的部分不含注释部分 举例 trant frame idle irdy devsel pci总线数据传输译码逻辑之一 元件例化语句 component component是结构体中基本的描述语句 此语句指定了本结构体中所调用的是哪一个现成的逻辑描述模块 component元件名 generic参数说明

温馨提示

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

评论

0/150

提交评论