下载

0下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 EDA设计基本时序电路

EDA设计基本时序电路.doc

EDA设计基本时序电路

性感女人儿
2019-05-10 0人阅读 举报 0 0 0 暂无简介

简介:本文档为《EDA设计基本时序电路doc》,可适用于IT/计算机领域

基本时序电路一、触发器及其应用实例 对触发器及时钟信号的VHDL描述一、设计任务:设计一个D触发器。二、算法设计:用if语句进行描述。三、源程序dffvhdlibraryieee useieeestdlogicallentitydffisport(d,clk:instdlogicq:outstdlogic)endarchitecturertlofdffissignalqtemp:stdlogicbeginprocess(clk)beginifclk'eventandclk=''then 本句是对触发时钟进行描述时用得最多的一种语句。qtemp<=dendifq<=qtempendprocessendrtlif语句中用信号属性even来判断时钟触发事件是否发生用clk=''规定触发时钟的上沿为有效触发沿。语句“ifclk'eventandclk=''then”的含义是:若有触发时钟信号产生且当触发时钟的上沿出现时容许触发器读入输入数据。如果上述事件没有发生则不容许触发器读入输入数据而读入输入数据的规则由后续语句规定。若规定触发器是下沿触发则触发时钟描述语句为“ifclk'eventandclk=''then”。图是D触发器的仿真波形图。由图可以看出触发器的默认起始状态值为''在第一个触发脉冲的上沿出现时刻电路系统把数据''写入触发器。在第二个触发脉冲的上沿出现时刻电路系统仍把数据''写入触发器但由于触发器原状态为'',写入数据仍为'',所以触发器保持''状态不变。在第三个触发脉冲的上沿出现时刻输入数据变为''电路系统把数据''写入触发器。以后尽管有触发脉冲的上沿出现但是输入值为''不变所以触发器保持''状态。图 D触发器的仿真波形图实例锁存器一、设计任务:设计一个锁存器。二、算法设计:用条件涵盖不完整的if语句实现锁存器。 三、源程序latchvhdlibraryieee useieeestdlogicallentitylatchisport(kz,din:instdlogicq:outstdlogic)endarchitectureaoflatchissignalqtemp:stdlogicbeginp:process(kz,din)beginifkz=''thenqtemp<=dinendifq<=qtempendprocessend四、源程序说明.用条件涵盖不完整的if语句可以实现锁存器。这个结果提示我们在用if条件语句进行设计时要明确设计的任务是什么若设计的不是锁存器则必须使条件涵盖完整以避免错误引入锁存器。.若本例描述的锁存器中的控制信号kz是一个异步信号而且输入信号较高就有可能在输出形成冒险干扰应注意克服。.图是锁存器正常工作时的仿真波形图。二、计数器及其应用实例 二进制(M=)计数器一、设计任务:设计一个二进制(M=)计数器。一般把计数器的模值M=n、状态编码为自然二进制数的计数器简称为二进制计数器。二、算法设计:用if语句描述二进制(M=)计数器。三、源程序countvhdlibraryieee useieeestdlogicalluseieeestdlogicunsignedallentitycountisport(clk:inbitoc:outbity:outintegerrangeto)endarchitectureaofcountissignalq:integerrangetobeginprocess(clk)beginif(clk'eventandclk='')thenq<=qendififq=thenoc<=''elseoc<=''endify<=qendprocessend程序中oc是计数器进位输出端。用整数数据类型设计二进制计数器是很方便的。若要M=只要把整数数据范围改为:integerrangeto。实例 BCD码进同步计数器一、设计任务:设计一个BCD码进同步计数器。个位显示~十位显示~均用位二进制数表示。二、算法设计:个位计数器的模M=十位计数器的模M=。用if语句描述该计数器。三、源程序counttbvhdlibraryieee useieeestdlogicalluseieeestdlogicunsignedallentitycounttbisport(clk,clr:instdlogicoc:outstdlogicy,y:outstdlogicvector(downto))endarchitectureaofcounttbissignalq:stdlogicvector(downto)signalk:stdlogicvector(downto)signalj,j:stdlogicbeginp:process(clk) beginifclr=''thenq<="" 清零。elsif(clk'eventandclk='')thenifq=""thenq<="" elseq<=qendifendify<=qendprocessp:process(clk)beginifclr=''thenk<=""清零。elsif(clk'eventandclk='')thenifq=""thenifk=""thenk<="" elsek<=kendifelsek<=kendifendify<=kifq=""andk="" thenj<=''elsej<=''endifoc<=j endprocessend两级计数器的模M=M*M。本程序描述的计数器是一个同步计数器由于十位计数器和个位计数器使用同一个时钟所以程序中使用q=””条件对十位计数器的时钟作用时刻进行控制。四、仿真结果实例一热态位编码计数器一、设计任务:设计一个一热态位(onehot)编码的四进计数器。该计数器类型也可称为“循环出(或)计数器”或“循环计数器”。其特点是对每一个计数状态采用一个触发器。二、算法设计 用if语句描述一热态位编码四进计数器。 三、源程序hotcountvhdlibraryieee useieeestdlogicallentityhotcountisport(clk:instdlogicy:outstdlogicvector(downto))endarchitectureshiftofhotcountissignalq:stdlogicvector(downto)beginprocess(clk)beginif(clk'eventandclk='')thenif(q=""orq=""orq=""orq="")thenq<=q()q()q()q()elseq<=""endifendifendprocessy<=qend本电路具有自启动功能。一旦电路进入非法状态之后电路会自动恢复合法状态。由仿真波形可以看出开机时电路进入“”非法状态之后电路会自动跳出该非法状态而恢复合法状态“”。四、时序仿真结果:三、移位寄存器及其应用实例串入串出移存器一、设计任务:设计一个位串入串出移存器。二、算法设计:用if语句及数组赋值语句描述位串入串出移存器。三、源程序shiftvhdlibraryieee useieeestdlogicallentityshiftisport(clk,din:instdlogicfo:outstdlogic)endarchitectureaofshiftissignald:stdlogicvector(downto)beginprocess(clk)beginif(clk'eventandclk='')thend()<=dind(downto)<=d(downto)fo<=d()endifendprocess

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

评分:

/14

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利