网站大量收购独家精品文档,联系QQ:2885784924

触发器8位_VHDL.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于VHDL的8位除法器的实现 本文所采用的除法原理是:对于八位无符号被除数A,先对A转换成高八位是0低八位是A的数C,在时钟脉冲的每个上升沿C向左移动一位,最后一位补零,同时判断C的高八位是否大于除数B,如是则C的高八位减去B,同时进行移位操作,将C的第二位置1。否则,继续移位操作。经过八个周期后,所得到的C的高八位为余数,第八位为商。从图(1)可清楚地看出此除法器的工作原理。此除法器主要包括比较器、减法器、移位器、控制器等模块。 1 比较模块 设计中所用的八位比较器是由两个四位比较器级联而成的。比较器的原理是先对高位进行比较,如果不相等,则得出结论,否则,再对下一位进行比较。设计的四位比较器可以级联成任意位的比较器。比较器输出信号决定减法器是否进行减法运算。 2 运算控制模块 控制模块的主要在外部运算时钟和起始信号的作用下,产生控制其他模块所需的数据调用、运算同 步时钟以及乘法运算结束标志信号等。其VHDL语言描述如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ARICTL IS———除法运算控制器 PORT(CLK,START:IN STD_LOGIC; CLKOUT,RSTALL,ARIEND:OUT STD_LOGIC); END ARICTL; ARCHITECTURE BEHAV OF ARICTL IS SIGNALSIGN:STD_LOGIC_VECTOR(3DOWNTO0); BEGIN RSTALL=START; CLKOUT=CLK; PROCESS(CLK,START) BEGIN IF START=1THEN———高电平清零计数器 SIGN=0000; ELSIF CLKEVENT AND CLK=1THEN IF SIGN8 THEN———小于八则计数,等于八则表 明运算已经结束 SIGN=SIGN+1; END IF; END IF; END PROCESS; PROCESS(CLK,SIGN,START) BEGIN IF START=0THEN IF SIGN8 THEN———除法运算正在进行 ARIEND=0; ELSE ARIEND=1;———如果余数小于除数则运算结束, 否则,再进行一个周期的运算 END IF; ELSE ARIEND=0; END IF; END PROCESS; END BEHAV; 3 减法器 减法器接收比较器所输出的信号,如果AB,则进行减法,输出A-B,否则输出A,减法器的输出到移位器中进行循环。 4 移位器 这是除法器实现中的核心部分,主要实现数据的移位和最后结果的输出,其VHDL程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY REG16B IS PORT(CLK,CIN,LOAD,ARIEND:IN STD_LOGIC; A:IN STD_LOGIC_VECTOR(7 DOWNTO 0); D:IN STD_LOGIC_VECTOR(7 DOWNTO 0); QL,QH:OUTSTD_LOGIC_VECTOR(7 DOWNTO0)); END REG16B; ARCHITECTURE BEHAV OF REG16B IS SIGNALR16S:STD_LOGIC_VECTOR(15DOWNTO0); BEGIN PROCESS(CLK,LOAD,ARIEND) BEGIN IF(CLKEVENT AND CLK=1)THEN IF(ARIEND=0)THEN IF LOAD=1THEN———装载新数据 R16S(15DOWNTO0)(7DOWNTO0); ELSIF(LOAD=0)THEN R16S(15 DOWNTO 9)=D(6 DOWNTO 0); R16S(8 DOWNTO 1)=R16S(7 DOWNTO 0);———数据左移 R16S(0)=0;———最后一位补0 IF(CIN=1)THEN———如果比较器的输出为1,则第二位值为1 R16S(1)=1; END IF; END IF; ELSE IF(CIN=1)THEN———最后余数如果大于除数则再进行一次减法 R16S(15 DOWNTO 8)=D(7 DOWNTO 0); R16S(7 DOWNTO 0)=R16S(7 DOWNTO 0)+1;———商加1 END IF; END IF; END IF; END PROCESS; QH=R16S(15 DOWNTO 8);———余数的输出 QL=R1

您可能关注的文档

文档评论(0)

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

1亿VIP精品文档

相关文档