verilog处理器设计.docVIP

  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文档。上传文档
查看更多
verilog处理器设计.doc

实验练习 9 图1展示了一个数字系统,它包含了一16位的寄存器,一个多路转换器,一个加法器/减法器单元,一个计数器和一个控制单元。数据是通过16位的DIN输入口输入到系统中的。此数据可以通过16位宽的多路转换器被加载到各种寄存器如R0,……R7和A中。多路转换器还可以将数据从一个寄存器中转移到另一个寄存器中。在图中,多路转换器的输出线被称为总线,因为这个术语通常用于布线,使数据可以在一个系统中从一个位置传送到另一个。【通过使用多路转换器,可以首先将一个16位的数据放在总线上,并把这个数据加载到寄 存器A中进行加法或减法的运算。这样做好之后,第二个16位的数据也被放置在总线上,加法器/减法器单元就可以执行所要求的操作,并把结果保存在寄存器G中。】(第一个操作数经总线到达寄存器A中,第二个操作数在总线上,此时加法减法单元进行运算,将结果放置在寄存器G中。) 由控制单元控制下,该系统可以在每个时钟周期内执行不同的操作。当特定的数据被放置在总线上后,由控制单元决定哪一个寄存器来装载这个数据。例如,若控制器断言R0out和Ain的信号,多路复用器将把寄存器R0out中的内容放置到总线上,而这个数据将在下一个有效时钟边沿被送入寄存器A。 表一 在处理器中执行的指令 每条指令都可以用9位IIIXXXYYY的格式编码并存储在IR寄存器中,其中III表示指令,XXX给出了RX寄存器而YYY给出了RY寄存器。尽管四条指令的编码只需要两个位,我们还是使用了3位,因为在本练习的后面部分,一些其他的指令将被添加到处理器中。【因此,IR在16位的DIN输入中具有9位的连接】(这句翻译的不好,见图理解),如图1中所示。【对于mvi指令来说,YYY字段是没有意义的,并且在mvi指令被存储到IR后,立即数#D必须由16位的DIN输入口提供。】(即mvi指令中,立即数D不需要被放置在寄存器中,可以直接从16位DIN输入进行运算处理。) 一些如加法和减法等的指令,需要一个以上的时钟周期来完成,因为多个数据的传输必须通过总线。控制单元使用了如图1所示两位的计数器,是的这些指令可以单步执行。当输入运行信号时(Run input),处理器开始执行DIN输入的指令;当指令执行完毕后,处理器将输出完成信号。【表2表示了表1中每条指令执行的每个时间步长控制器发出的信号。】(即表2中可以看到表1中的那些指令,每个时钟周期执行完后,处理器发出的信号,是否完成?进行加法运算?以及一共需要几个时钟周期。)需要注意的事,唯一的控制信号断言在时间步长0的是IRin,所以其当前的时间步长没有在表中显示出来。 表2 每个指令/时钟步长的控制信号 第一部分: 使用以下的Verilog代码设计和实施图1所示的处理器: 1、为这个练习新建一个Quartus II工程。 2、生成所需的Verilog文件添加到工程中,并对电路进行编译。图2a是Verilog代码的参考框架,图2b是一些可应用与这个代码中的子电路模块。 3、使用功能仿真以验证代码的正确性。图3是一个经过功能仿真的设计正确的电路产生的输出的例子。这表明数据(2000)16下标从DIN被装入IR的时间为30ns。此模式代表指令mvi R0,#D中,D=5的值在时钟边沿上被装入R0所需时间为50ns。模拟仿真显示,指令mv R1,R0耗时90 ns,指令add R0,R1耗时110ns,指令sub R0,R0耗时190ns。需要注意的是,模拟结果显示DIN是一个4位的16进制数而IR的内容是一个3位的8进制数。 4、新建一个Quartus ii工程,该工程将被用于电路在Altera DE2板上的执行。这个项目应该包含一个顶层模块,它包含适当的用于Altera开发板的输入和输出端口。在这个顶层模块中实例化你的处理器。用开关SW15-0来模拟DIN的输入,用开关SW17表示控制运行信号(Run input)。此外,按钮KEY0用于复位,KEY1用于控制时钟。将处理器总线连接在LEDR15-0上,讲完成信号接在LEDR17上。 5、在工程中添加与DE2板相关的引脚文件。编译电路并下载到FPGA芯片中。 6、通过切换开关和观察LED等的亮灭来测试设计的功能。由于处理器的时钟输入由按钮开关控制,可以通过单步执行来观察电路的状态。 图2a Verilog代码框架 图 2b 子电路模块 图 3 处理器仿真 第二部分 在这部分中你需要设计如图4中所示的电路,其中的存储器模块和计数器将被连接到第一部分你所设计的处理器上。计数器用于读取存储器中连续地址中存放的内容,并将该数据作为一个流的指令提供给处理器。为了简化这个电路的设计和测试,我们为处理器和内存使用不同的的的时钟的信号PClock和MClock。 图4处理器与一个存储器和计数器的连接 1、新建一个Qua

文档评论(0)

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

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

版权声明书
用户编号:5212202040000002

1亿VIP精品文档

相关文档