第章基本逻辑门电路设计VHDL.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第章基本逻辑门电路设计VHDL

方法2:使用PROCESS语句 ARCHITECTURE ART2 OF DECODER IS BEGIN PROCESS(INP) BEGIN OUTP=(OTHERS=‘1’) --对输出所有位全赋0 OUTP(COVN_INTEGER(INP))=‘1’ --仅对其中的一位赋值 END PROCESS; END ART2 3. 8-3线优先编码器 下面我们用三种方法设计8-3线优先编码器。 8-3线优先编码器,输入信号为y0、y1、y2、y3、y4、y5、y6和y7,输出信号为OUT0、OUT1和OUT2。输入信号中y0的优先级别最低,依次类推,y7的优先级别最高。 【例5.1.3】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ENCODER IS PORT (y0,y1,y2,y3,y4,y5,y6,y7:IN STD_LOGIC; OUT0,OUT1,OUT2:OUT STD_LOGIC); END ENCODER; 2.时序进程 时序进程是指负债状态机运转和在时钟驱动下负债状态转换的进程。状态机是随外部时钟信号,以同步时序方式工作的。因此状态机中必须包含一个对工作始终信号敏感的进程,作为状态机的“驱动泵”,这就是时序进程。一般情况下,时序进程可以不负责下一状态的具体取值,它只是将代表次态的信号next_state中的内容送入现态的信号current_state中,而信号next_state中的内容完全由其他的进程根据实际情况来决定 5.4.5 摩尔状态机的设计 Mealy型状态机的输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的,不依赖时钟的同步。Moore状态机的输出仅为当前状态的函数,这类状态机在输入发生变化后,还必须等待时钟的到来,时钟使状态发生变化时才导致输出的变化,所以必米立机要多等待一个时钟周期,摩尔状态机结构示意图如图5-14。 IF X=‘0’THEN NEXT_STATE=S0; ELSE NEXT_STATE=S2; END IF; WHEN S2= Z=‘1’; IF X=‘0’THEN图5-15. 摩尔状态机仿真图 NEXT_STATE=S2; ELSE NEXT_STATE=S3; END IF; WHEN S3= Z=‘0’; IF X=‘0’THEN NEXT_STATE=S3; ELSE NEXT_STATE=S1; END IF; END CASE; SYNCH: --同步进程 PROCESS(CLOCK) BEGIN IF CLOCK’EVENT AND CLOCK=‘1’THEN CURRENT_STATE=NEXT_STATE; END IF; END PROCESS; END MOORE1; 摩尔状态机仿真图如图 5-15所示。 5.4.6 米勒状态机的VHDL设计 米勒型状态机的输出不仅是当前状态的函数,也是输入信号的函数。其真值表如表5.2所示。 米勒状态机结构示意图如图5-16 END IF; END PROCESS; --写操作进程 WRITE_RAM:PROCESS(CLOCK) BEGIN IF (CLOCKEVENT AND CLOCK=‘1’) THEN IF (WE=‘1’) THEN RAMTMP(CONV_INTEGER(WADD))=DATA; END IF; END IF; END PROCESS; --读指针修改 READ_POINIER:PROCESS(ACLR,CLOCK) BEGIN IF (ACLR=‘0’) THEN RADD=(OTHERS=‘0’); ELSIF (CLOCKEVENT AND CLOCK=‘1’) THEN IF (RE=‘1’) THEN IF (RADD=WORDS) THEN RADD=(OTHERS=‘0’); ELSE RADD=RADD+‘1’; END IF; END IF; END IF; END PROCESS; --读操作进程 READ_RAM:PROCESS(CLOCK) BEGIN IF (CLOCKEVENT AND CLOCK=‘1’) THEN IF (RE=‘1’) THEN Q=RAMTMP(CONV_INTERGER(RADD)); END

文档评论(0)

docman126 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7042123103000003

1亿VIP精品文档

相关文档