ImageVerifierCode 换一换
格式:DOC , 页数:36 ,大小:2.97MB ,
资源ID:2522865      下载积分:3 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2522865.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     索取发票    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(vhdl课程设计简单处理器的设计与仿真.doc)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

vhdl课程设计简单处理器的设计与仿真.doc

1、前言11、设计任务22、设计说明32.1 处理器原理图及其组成32.2数据传输及加减法的实现32.3处理器所支持的指令及功能说明、指令的编码规则42.4指令执行的时序控制43.处理器指令实现的功能及其具体描述63.1 mv Rx,Ry63.2 mvi Rx,#D73.3 add Rx,Ry和sub Rx,Ry84单元模块设计说明、VHDL代码及其仿真104.1寄存器RX104.2 寄存器A114.3 加/减法器addsub124.4 寄存器G134.5 指令寄存器IR144.6 计数器upcount154.7 复用器multi164.8 控制单元control184.9 控制指令输入转换模块2

2、64.10 16*16点阵显示控制模块275 处理器各个模块的连接及处理器功能仿真295.1处理器各个模块的连接295.2处理器功能仿真295.2.1立即数赋给寄存器R0295.2.2立即数赋给寄存器R1295.2.3 寄存器R0的值赋给寄存器R2295.2.4 寄存器R1的值赋给寄存器R3295.2.5立即数赋给寄存器R4295.2.6 寄存器R0加上R4赋给R0305.2.7 寄存器R1加上R4赋给R1305.2.6 寄存器R0加上R4赋给R0305.2.7立即数赋给寄存器R5305.2.8 寄存器R4减去R5赋给R4305.2.9 寄存器R4减去R0赋给R4306 处理器实现的功能与操作

3、说明316.1 处理器实现的功能316.2 处理器相关的操作说明317 课程设计总结328附录.34前言VHDL 的英文全名是 Very-High-Speed Integrated Circuit Hardware Description Language,诞生于 1982 年。1987 年底,VHDL被 IEEE 和美国国防部确认为标准硬件描述语言。 VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个

4、系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。与其他硬件描述语言相比,VHDL具有以下特点:(1)功能强大、设计灵活VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。VHDL还支持各种设计方法,既支持自底向上的设计,又支持自

5、顶向下的设计;既支持模块化设计,又支持层次化设计。(2)支持广泛、易于修改由于VHDL已经成为IEEE标准所规范的硬件描述语言,目前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。(3)强大的系统硬件描述能力VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。VHDL支持预定义的和自

6、定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。(4)独立于器件的设计、与工艺无关设计人员用VHDL进行设计时,不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。当设计描述完成后,可以用多种不同的器件结构来实现其功能。(5)很强的移植能力VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。(6)易于共享和复用VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可以使设计

7、成果在设计人员之间进行交流和共享,减少硬件电路设计。1、设计任务用VHDL设计一个简单的处理器,并完成相关的仿真测试。 2、设计说明2.1 处理器原理图及其组成图1是一个处理器的原理图,它包含了一定数量的寄存器、一个复用器、一个加法/减法器(Addsub),一个计数器和一个控制单元。图1 简单处理器的电路图2.2数据传输及加减法的实现数据传输实现过程:16位数据从DIN输入到系统中,可以通过复用器分配给R0R7和A,复用器也允许数据从一个寄存器传通过Bus送到另外一个寄存器。加法和减法的实现过程:复用器先将一个数据通过总线放到寄存器A中,然后将另一个数据放到总线上,加法/减法器对这两个数据进行

8、运算,运算结果存入寄存器G中,G中的数据又可根据要求通过复用器转存到其他寄存器中。2.3处理器所支持的指令及功能说明、指令的编码规则表1是该处理所支持的指令表1 操作功能说明mv Rx, RyRx Ry将 Ry 寄存器的值复制到 Rx 寄存器mvi Rx, #DRx Data将 Data 值 存入 Rx寄存器add Rx, RyRx Rx + Ry先将 Rx 和 Ry寄存器的值相加,再把相加的值存入 Rx寄存器sub Rx, RyRx Rx - Ry先将 Rx 和 Ry 寄存器的值相减,再把相减的值存入 Rx 寄存器所有指令都按9位编码(取自DIN的高9位)存储在指令寄存器IR中,编码规则为I

9、IIXXXYYY,III表示指令,XXX表示Rx寄存器,YYY表示Ry寄存器。立即数#D是在mvi指令存储到IR中之后,通过16位DIN输入的。如表2所示表22.4指令执行的时序控制有一些指令,如加法指令和减法指令,需要在总线上多次传输数据,因此需要多个时钟周期才能完成。控制单元使用了一个两位计数器来区分这些指令执行的每一个阶段。当Run信号置位时,处理器开始执行DIN输入的指令。当指令执行结束后,Done信号置位,表3列出四个指令在执行过程中每一个时间段置位的控制信号。图2列出了处理器的状态转换图表3: 时间指令T0T1T2T3(mv):I0(mvi):I1(add):I2(sub):I3I

10、RinIRinIRinIRinRYout,RXin,DoneDINout,RXin,DoneRXout,AinRXout,Ain-RYout,Gin,AddsubRYout,Gin,Addsub-Gout,RXin,DoneGout,RXin,Done“00”IRin“10”Add/sub“01”mv“11”Add/sub“01”Add/sub“01”mvi“10”Add/sub图2,处理器状态转换图3.处理器指令实现的功能及其具体描述3.1 mv Rx,Ry实现的功能:将寄存器Rx的值赋给寄存器Ry(以mv R0, R5为例)(1 )计数器为“00”时,指令寄存器的置位控制信号输入端IRin

11、=1有效,将DIN输入的数据的高9位锁存。置位的控制信号如图3加粗黑线所示。图3(2)计数器为“01”时,首先控制单元根据设计器为“00”时输入的指令,向复用器发出选通控制信号,复用器根据该控制信号让R5的值输出到总线上,然后控制单元控制寄存器R0将总线上的值锁存,完成整个寄存器对寄存器的赋值过程。置位的控制信号和数据流如图4加粗黑线所示。图43.2 mvi Rx,#D实现的功能:将的立即数#D赋给寄存器Rx(以mv R0, #D为例)(1)计数器为“00”时,指令寄存器的置位控制信号输入端IRin=1有效,将DIN输入的数据的高9位锁存。置位的控制信号如图5加粗黑线所示。图5(2)计数器为“

12、01”时,首先控制单元根据设计器为“00”时输入的指令,向复用器发出选通控制信号,复用器根据该控制信号让DIN的值输出到总线上,然后控制单元控制寄存器R0将总线上的值锁存,完成整个立即数对寄存器的赋值过程。置位的控制信号和数据流如图6加粗黑线所示。图63.3 add Rx,Ry和sub Rx,Ry实现的功能:将寄存器Ry的值加上/减去寄存器Rx的值并赋给寄存器Rx(以add/sub R0,R1为例)。(1)计数器为“00”时,指令寄存器的置位控制信号输入端IRin=1有效,将DIN输入的数据的高9位锁存。置位的控制信号如图7加粗黑线所示。图7(2)计数器为“01”时,首先控制单元根据设计器为“

13、00”时输入的指令,向复用器发出选通控制信号,复用器根据该控制信号让R0的值输出到总线上,然后控制单元控制寄存器A将总线上的值锁存。置位的控制信号和数据流如图8加粗黑线所示。图8(3)计数器为“10”时,首先控制单元根据设计器为“00”时输入的指令,向复用器发出选通控制信号,复用器根据该控制信号让R1的值输出到总线上,然后控制单元控制加法/减法器addsub将寄存器A的值和总线上的值相加/相减并输出,接着寄存器G将加法/减法器addsub的计算结果锁存。置位的控制信号和数据流如图9加粗黑线所示。图9(4)计数器为“11”时,首先控制单元向复用器发出选通控制信号,复用器根据该控制信号让寄存器G的

14、值输出到总线上,寄存器R0将总线上的值进行锁存,完成整个寄存器与对寄存器见加减法的运算过程。置位的控制信号和数据流如图10加粗黑线所示。图104单元模块设计说明、VHDL代码及其仿真4.1寄存器RX寄存器R0R7用于数据的存储。当时钟输入clock的上升沿到来且RXin=1时,将数据输入端datain15.0的数据锁存到寄存器中并从数据输出端dataout15.0输出;当RXin=0时,输出端保持原来的值不变。图11寄存器RX的VHDL代码: library ieee;use ieee.std_logic_1164.all;entity RX isport(RXin,clock : in st

15、d_logic;datain :in std_logic_vector(15 downto 0);dataout:out std_logic_vector(15 downto 0) );end RX;architecture behave of RX is signal databuffer:std_logic_vector(15 downto 0);beginprocess(clock,RXin,datain,databuffer)beginif (clockevent and clock=1) then if (RXin=1) then databuffer=datain; else da

16、tabuffer=databuffer;end if;else databuffer=databuffer;end if;dataout=databuffer;end process;end behave;4.2 寄存器A寄存器A用于数据的存储,当时钟输入clock的上升沿到来且Ain=1时,将数据输入端datain15.0的数据锁存到寄存器中并从数据输出端dataout15.0输出;当RXin=0时,输出端保持原来的值不变。当处理加减法时,将时间T1时总线送过来的数据暂存,当T2时,将T1时存储在A中的数据与总线传输过来的数据在Addsub中进行加减运算,并将结果并输出到寄存器G中。图12寄

17、存器A的VHDL代码:library ieee;use ieee.std_logic_1164.all;entity A isport(Ain,clock : in std_logic;datain :in std_logic_vector(15 downto 0);dataout:out std_logic_vector(15 downto 0) );end A;architecture behave of A is signal databuffer:std_logic_vector(15 downto 0);beginprocess(clock,Ain,datain,databuffer

18、)beginif (clockevent and clock=1) then if (Ain=1) then databuffer=datain; else databuffer=databuffer;end if;else databuffer=databuffer;end if;dataout=databuffer;end process;end behave;4.3 加/减法器addsub加/减法器addsub用于处理两个输入的数据datain215.0 和datain115.0,当控制端Addsub=1时,两个数据输入端datain215.0 和datain115.0相加并从数据输出端

19、dataout15.0输出;当控制端Addsub=0时,数据输入端datain215.0 减去datain115.0,结果从数据输出端dataout15.0输出。图 13加/减法器addsub的VHDL代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity addsub isport(Addsub : in std_logic;datain1 :in std_logic_vector(15 downto 0);datain2 :

20、in std_logic_vector(15 downto 0);dataout:out std_logic_vector(15 downto 0) );end addsub;architecture behave of addsub is signal databuffer:std_logic_vector(15 downto 0);beginprocess(Addsub,datain1,datain2,databuffer)begin if (Addsub=1) then databuffer=datain2+datain1; elsif (Addsub=0) then databuffe

21、r=datain2-datain1;else databuffer=databuffer;end if;dataout=databuffer;end process;end behave;4.4 寄存器G寄存器G用于加减运算结果的存储,当时钟输入clock的上升沿到来且Gin=1时,将数据输入端datain15.0的数据锁存到寄存器中并从数据输出端dataout15.0输出;当RXin=0时,输出端保持原来的值不变。图14寄存器G的VHDL代码:library ieee;use ieee.std_logic_1164.all;entity G isport(Gin,clock : in std

22、_logic;datain :in std_logic_vector(15 downto 0);dataout:out std_logic_vector(15 downto 0) );end G;architecture behave of G is signal databuffer:std_logic_vector(15 downto 0);beginprocess(clock,Gin,datain,databuffer)beginif (clockevent and clock=1) then if (Gin=1) then databuffer=datain; else databuf

23、fer=databuffer;end if;else databuffer=databuffer;end if;dataout=databuffer;end process;end behave;4.5 指令寄存器IR指令寄存器IR用于对输入的16为指令进行处理,取其高9位。当时钟输入clock的上升沿到来且IRin=1时,取数据输入端datain15.0的高9位将其锁存到寄存器中并从数据输出端dataout8.0输出;当RXin=0时,输出端保持原来的值不变。图15指令寄存器IR的VHDL代码library ieee;use ieee.std_logic_1164.all;entity IR

24、 isport(IRin,clock : in std_logic;datain :in std_logic_vector(15 downto 0);dataout:out std_logic_vector(8 downto 0) );end IR;architecture behave of IR is signal databuffer:std_logic_vector(8 downto 0);beginprocess(clock,IRin,datain,databuffer)beginif (clockevent and clock=1) then if (IRin=1) then da

25、tabuffer=datain(15 downto 7); else databuffer=databuffer;end if;else databuffer=databuffer;end if;dataout01101100不断循环;当clear=1时(清零端clear有效),对输出Q1.0异步清零,与时钟无关。图16计数器upcount的VHDL代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_signed.all;entity upcount isport(clear, clock : in std_logic;

26、Q : out std_logic_vector(1 downto 0);end upcount;architecture Behavior of upcount issignal count : std_logic_vector(1 downto 0);beginprocess (Clock)beginif (clockevent and clock=1) thenif clear=1 then -clear=1 clear is effectivecount = 00;else count= count+1;end if;end if;end process;Q=count;end Beh

27、avior;4.7 复用器multi复用器根据控制单元的控制信号将指定的输入数据输出到总线上。来自控制单元的控制信号为R0outR7out、Gout、DINout,输入数据位来自寄存器R0R7、寄存器A、数据输入端DIN,当控制信号的某一位为1时,将其对应的输入数据输出到总线上。图17复用器multi的VHDL代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity multi isport(R0in :in std_logic_v

28、ector(15 downto 0);R1in :in std_logic_vector(15 downto 0);R2in :in std_logic_vector(15 downto 0);R3in :in std_logic_vector(15 downto 0);R4in :in std_logic_vector(15 downto 0);R5in :in std_logic_vector(15 downto 0);R6in :in std_logic_vector(15 downto 0);R7in :in std_logic_vector(15 downto 0);DIN :in

29、std_logic_vector(15 downto 0);Gin :in std_logic_vector(15 downto 0);R0out :in std_logic;R1out :in std_logic;R2out :in std_logic;R3out :in std_logic;R4out :in std_logic;R5out :in std_logic;R6out :in std_logic;R7out :in std_logic;Gout :in std_logic;DINout :in std_logic;buswire:buffer std_logic_vector(

30、15 downto 0) );end multi;architecture behave of multi is signal select_signal:std_logic_vector(9 downto 0);signal databuffer:std_logic_vector(15 downto 0);beginselect_signaldatabufferdatabufferdatabufferdatabufferdatabufferdatabufferdatabufferdatabufferdatabufferdatabuffernull;end case;buswire=datab

31、uffer;end process;end behave;4.8 控制单元control控制单元根据计数器发出的脉冲和DIN输入的操作指令对整个系统的其他模块进行控制,完成指定的操作。图18控制单元control的VHDL代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity control isport(Run :in std_logic;Reset :in std_logic;DIN_IR_9 :in std_logic_ve

32、ctor(8 downto 0);count :in std_logic_vector(1 downto 0);IRin :out std_logic;Gout :out std_logic;DINout :out std_logic;R0in,R1in,R2in,R3in,R4in,R5in,R6in,R7in:out std_logic;R0out,R1out,R2out,R3out,R4out,R5out,R6out,R7out :out std_logic;Gin :out std_logic;Ain :out std_logic;Addsub :out std_logic;Done

33、:out std_logic;clear :out std_logic);end control;architecture behave of control is -type state is (state0,state1,state2,state3);-signal current_state,next_state:state;signal IR_buffer:std_logic_vector (8 downto 0);-signal temp0:std_logic_vector (2 downto 0);beginprocess(Run,reset,count)beginIR_buffe

34、r IRin=0; Gout=0;DINout=0;R0in=0;R1in=0;R2in=0;R3in=0;R4in=0;R5in=0;R6in=0;R7in=0;R0out=0;R1out=0;R2out=0;R3out=0;R4out=0;R5out=0;R6out=0;R7out=0;Gin=0;Ain=0;Addsub=0;Done=0;clear=0; IRin -ttttttttttttttttttttttttttttttttttttttttt if(IR_buffer(8 downto 6)=000) then - mv Rx,Ry state1 IRin=0; Gout=0;D

35、INout=0;R0in=0;R1in=0;R2in=0;R3in=0;R4in=0;R5in=0;R6in=0;R7in=0;R0out=0;R1out=0;R2out=0;R3out=0;R4out=0;R5out=0;R6out=0;R7out=0;Gin=0;Ain=0;Addsub=0;Done=0;clear R0out=1; - test1_signalR0inR1inR2inR3inR4inR5inR6inR7in null; end case; when001= R1outR0inR1inR2inR3inR4inR5inR6inR7in null; end case; when010= R2outR0inR1inR2inR3inR4inR5inR6inR7in null; end case; when011= R3outR0inR1inR2inR3inR4inR5inR6inR7in null; end case;

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服