欢迎来到天天文库
浏览记录
ID:27428448
大小:1.20 MB
页数:38页
时间:2018-12-02
《对复杂电路行为的描述方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六讲VHDL语言对复杂电路行为的描述方法提纲提高抽象层次对事件模型的扩展进程(Process)语句并行进程进程+并行信号赋值语句循环语句进程的执行机制Wait语句VHDL的对象属性前述描述方法的综合运用:描述一个状态机总结提高抽象层次并行信号赋值语句可以方便地描述数字系统门级行为更高层的电路部件有着更复杂的行为输入/输出行为已经难以用并行信号赋值语句来描述描述中需要引入状态信息需要引入复杂数据结构我们需要引入功能更强的描述结构对事件模型的扩展组合逻辑电路的输入/输出特点输入信号上的事件引起逻辑电路进行重新计算重新计算的结果是在输出信号上有新的事件产生计算输出信号上的事件所对应
2、的值和时间是一个复杂的过程进程(Process)语句进程(Process)语句进程中的语句是顺序执行的进程体的结构是和常规的C语言的函数非常相似对变量作声明和引用采用if-then,if-then-else,case,for和while语句进程中可以包含信号赋值语句进程和其他并行信号赋值语句的关系是并行执行一个进程在仿真中的执行时间是0秒,进程的执行将产生未来的事件我们可以将一个进程等价地看作为一个复杂的信号赋值语句并行进程:一个全加器的例子全加器中的每一个部件都可以用一个进程来描述进程之间是并行执行的在这个意义上这些进程的行为和并行信号赋值语句是非常相似的进程之间通过信号来通
3、讯并行进程:一个全加器的例子并行进程:半加器进程+并行信号赋值语句:存储器读写举例进程+并行信号赋值语句:存储器读写举例(写操作)进程+并行信号赋值语句:存储器读写举例(写操作)进程+并行信号赋值语句:存储器读写举例一个进程可以看作是一个单独的并行信号赋值语句进程的外部行为和一个并行信号赋值语句是完全相同的进程描述了更加复杂的事件产生和处理的操作在仿真时进程和其他并行赋值语句是并行执行的。循环语句循环语句对for循环语句,循环次数控制是直接在语句中定义的for循环语句的循环次数控制仅局限在for语句中有效在for语句之外是无效的对while循环语句,退出循环的条件是由布尔表
4、达式来决定的进程的执行机制所有的进程在仿真的起始时刻都被执行一次因此进程端口表中的信号值和信号上的事件决定来进程初始化的结果我们可以将进程看作是具有外部接口和内部功能的逻辑部件在进程中可以定义变量,要注意变量和信号之间的不同进程的执行机制进程的执行机制进程的执行机制变量和信号的区别数值计算vs.时间-数值对的计算信号所对应的事件排序和delta延迟机制!变量和信号在进程中的运用信号与硬件电路中的连线相对应变量用于标识进程中运算的中间值实体(Entity)中定义的信号在进程中是可见的在进程中可以包含变量赋值和信号赋值语句进程的执行机制Wait语句Wait语句:波形的生成Wait语
5、句:波形的生成注意到上面的语句利用了进程“永久”执行的原理Wait语句:异步输入Wait语句在一个进程中可以包含多个wait语句一个进程中不可以同时包含wait语句和敏感表Wait语句以显式的方式来控制进程操作的暂停和恢复执行该语句可以用来表示数字系统中的同步和异步事件VHDL的对象属性(Attribute)可以通过下述表达式来获得VHDL对象的属性:object’attribute例如:一个信号所包含的属性该信号的哪些信息是有用的?某一事件的发生最近发生的事件到当前时刻的时间间隔在最近事件之前的信号值属性的分类数值属性返回一个常数函数属性调用一个函数,该函数返回一个数值信号属
6、性产生一个新的信号类型属性返回一个VHDL类型的属性范围属性返回一个范围值数值属性返回一个常数,例如typestatetypeis(state0,state1,state2state3);statetype’left=state0statetype’right=state3函数属性对属性的使用引起了一个函数调用,该函数有一个返回值if(Clk’eventandClk=‘1’)信号属性所对应的函数调用函数属性队列(array)属性函数范围属性返回一个队列的索引范围该属性使loop循环的编写变得容易信号属性利用信号属性得引用可以产生一个新的信号信号属性前述描述方法的综合运用:描述一
7、个状态机状态机的基本组成组合逻辑部分:输出计算和下一状态的计算时序逻辑部分:状态存储基于进程的描述方法前述描述方法的综合运用:描述一个状态机前述描述方法的综合运用:描述一个状态机输出与下一状态的计算comb_process:process(state,x)iswhenstate1=>Beginifx=‘1’thencasestateisnext_state<=state0;whenstate0=>z<=‘0’;ifx=‘0’thenelsenext_state<=state1;next_st
此文档下载收益归作者所有