简单微处理器设计实验报告_第1页
简单微处理器设计实验报告_第2页
简单微处理器设计实验报告_第3页
简单微处理器设计实验报告_第4页
简单微处理器设计实验报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录目录1表目录2图目录31文档说明(Introduction)52描述习惯(Conventions)63微处理器各功能模块.73.1 概述73.2 结构框图73.2.1 ALUpart73.2.2 controlpart.103.2.3 CPU123.3 功能列表133.3.1 ALUpart.133.3.2 controlpart.143.3.2.1 状态转移图143.4 工作环境介绍.153.4.1 设计代码.153.4.2 测试平台.153.4.3 电路综合环境173.4.4 后仿真环境.173.5 功能验证结果183.5.1 前仿真结果.183.5.2 后仿真结果.203.6 综合结

2、果.21表目录表1ALU8模块I/O接口表2通用寄存器堆模块I/O接口表3alupart输入输出I/O口列表表4控制器模块I/O接口表5IRRAM模块I/O接口表6Control-part结构整体I/O接口表7CPU整体模块I/O接口表8ALU指令集表9添加的JUMP指令4图目录图1ALU8模块框图图2通用寄存器RAM模块框图图3ALUpart模块框图图4控制器模块框图图5IRRAM模块框图图6Control-part结构框图图7CPU结构框图图8ALUpart状态转移图图9controlpart状态转移图图10CPU计算5!的全图图11controllpart执行一条指令的波形图图12con

3、trol执行非跳转指令的状态机波形图13control执行跳转指令的状态机波形图14ALUpart执行一条指令的波形图图15ALUpart执行指令状态机的波形图16综合的Timingreport图17综合的Areareport图18门级仿真5!的波形结果图19门级仿真产生的延时1 文档说明(Introduction)本文档描述了简单微处理器的总体设计,如功能、模块结构、关键时序等等。本设计参照了课程设计文档的系统原理框图和功能列表,根据需求作了一些改动,将累加器A合并到ALU单元中,将寄存器Rn合并到通用寄存器RAM(8*8)中;将程序计数器和指令寄存器合并到控制模块controller中等。

4、指令方面,添加了Acc非零时跳转指令JNZ。IC课程设计_微处理器设计_实验报告第40组2 描述习惯(Conventions)在文档写作中黑色字体表明已经确定的内容,尚未完全确定的内容以蓝色字体表示,有疑问或需要醒目标示的内容则以红色字体表示。代码方面,使能信号习惯采用低电平有效。213微处理器各功能模块3.1概述8位微处理器的硬件系统主要包括运算器ALU、控制器CON、指令存储器IRRAM(64*8)、通用寄存器堆RAM(8*8)等逻辑部件。能够通过控制器读取指令集,8位数据进行运算和操作。本次设计有独立的控制模块和运算模块,通用寄存器堆合并到ALU模块中,IRRAM合并到CON控制模块中。

5、仿真周期采用10ns。微处理器的指令系统通过指令码实现,根据其格式的不同,可分为算术、逻辑、数据转移、跳转指令等。在功能列表部分将做详细介绍。本次课程设计实现了阶乘5!以验证处理器的运算类指令。已成功实现RTL级设计、功能仿真、综合、门及仿真。3.2结构框图clk|rst3.2.1ALUpartAcc7.0一(carry:,Data7.0ALU8LH-xrtrDOvyMUD图1ALU8模块框图ALU模块是运算*II块,有3个状态,从controller中读取数据和使能信号等,根据选通信号op判断当前要进行的指令操作。先读取Rn_rd和reg_add,状态并不跳转,等待直到data_le低有效,

6、读取到立即数data时,状态跳转到运算状态,再通过case语句进行相应运算操作。SIGNALBITSI/OSIGNALDESCRIPTIONclk1H时钟信号rst11I复位信号Rn_rd1I读Rn使能信号,低有效Reg_add3pRn在RAM中的地址Rn8II寄存器,暂存中间运算数据Rn_wr1O写使能信号,低有效op4p运算功能选择信号data81I立即数data_le1I读立即数使能信号,低有效busy1OALU8忙,低有效carry1O进位彳吉号,carry=1时JCaddrAcc8O运算器结果RAM(8*8),储存中间数据Rn,结构框图:通用寄存器堆表1ALU8模块I/O接口图2w

7、n RAccJd.RAMn_array(8*8)*.clk|rstRn addr2.0.7咨通用寄存器RAM模块框图SIGNALBITSI/OSIGNALDESCRIPTIONclk1I时钟信号rst1I复位信号Rn_rd1I读Rn使能信号,低有效Reg_add3I要操作的操作数Rn在RAM中的地址Rn8O寄存器,暂存中间运算数据Rn_wr1I写使能信号,低有效Acc8I运算器运算结果卜表为输入输出接口:表2通用寄存器堆模块I/O接口Rstalu_partRAMn_array(8*8)Reg_add2.0Rn rdrt w n RclkbusyRstALU8carry图3ALUpart模块框图

8、Acc7.0Alu8和RAMn_array两个模块组成ALUpart部分。两个模块通过Rn_wr信号,Rn和A进行交互。当需要进行读操作时,在外部(相对于alupart模块)使能信号Rn_rd下,alu通过地址Rn_addr读取出需要的Rn;当需要进行写操作时,alu8使信号Rn_wr低有效,再经过一个周期,将当前中间运算结果A写入到地址Rn_addr对应的Rn中去。ALU8模块中包含了16种运算(不包含跳转),也包含了累加功能块A,从controlpart读取选通信号op和数据data,从RAMn_array读取Rn。RAM(8*8)中存放Rn,通过control的使能Rn_rd,经地址Rn

9、_addr2.0将数据读到ALU8中去,利用ALU8给白RRn_wr信号将A写到RAM(8*8)中去。表3alupart输入输出I/O口列表SIGNALBITSI/OSIGNALDESCRIPTIONclk1H时钟信号rst1I复位信号Rn_rd1I读Rn使能信号,低有效Reg_add3IIRn在RAM中的地址op4I运算功能选择信号data8p立即数data_le1II读立即数使能信号,低有效busy1OALU8忙,低有效carry1O进位彳吉号,carry=1时JCaddrAcc8O运算器结果3.2.2controlpart控制器controller结构框图:daa aeRLM.2ldaa

10、 GeR图4控制器模块框图控制器是整个设计中关键的模块,本课程设计中控制器包含了用信号形式表示的IR寄存器和程序计数器。控制器从ALU模块中读取Acc用于判断零跳转JZ和非零跳转JNZ,读取carry用于判断进位跳转JQ读取busy即alu_free用于判断alu正处于空闲状态,握手信号使时序正确。同时,控制器给ALUpart提供data,data_le,reg_add(Rn_add),reg_add_le(Rn_le),op等信号。控制器与指令寄存器通过IR_le,IR,IRRAM_add进行交互。用程序计数器counter来计量IRRAM_add,当IR_le低有效时,用IRR暂存读取的I

11、RRAM_add地址上的指令IR,不同时刻IR代表指令op、Rn_reg或者数据data。表4控制器模块I/O接口SIGNALBITSI/OSIGNALDESCRIPTIONclk1H时钟信号rst11I复位信号IR8I程序输入IR_le1p读入指令使能IRRAM_add6O指令寄存器IRRAM地址Rn_rd1O读Rn使能信号,低有效Reg_add3ORn在RAM中的地址op4O运算功能选择信号data8O立即数datale1O读立即数使能信号,低有效alufree1IALU单兀空闲,低后效carry1I进位彳吉号,carry=1时JCaddrAcc|8|I|运算器结果指令存储器IRRAM(6

12、4*8)结构框图:图5IRRAM模块框图在本课程设计中,IRRAM预先存储着要操作的指令代码,也包括数据。将在典型代码分析中详细说明。SIGNALBITSI/OSIGNAL DESCRIPTIONclk1I时钟信号rst1I复位信号IR8O程序输入le(IR_le)1O读指令使能add(IRRAM_add)6I指令寄存器IRRAM地址表5IRRAM模块I/O接口|k-RstIk-RstAlu_free carryControl_partIRRAM(64*8)Reg_add2.0 |reg_add_le Acc7.0图6 Control-part结构框图SIGNALBITSI/OSIGNAL D

13、ESCRIPTIONclk1I时钟信号rst1I复位信号Rn_rd1O读Rn使能信号,低有效Reg_add3ORn在RAM中的地址op4O运算功能选择信号data8O立即数data_le1O读立即数使能信号,低有效alu_free1IALU单兀空闲,低后效carry1I进位彳吉号,carry=1时JC addrAcc8I运算器结果表6 Control-part结构整体I/O接口3.2.3 CPUCPU整体结构框图:Acc_out7:0RAMn_array(8*8 )data7.0 TataHe Acc7. 0controlleralu_ partOp3.0rw hr luillhr hr-O

14、7TAALU8Acc7.0图7CPU结构框图表7CPU整体模块I/O接口SIGNALBITSI/OSIGNALDESCRIPTIONclk1I时钟信号rst1I复位信号Acc8O输出结果由于时间仓促,本次课设没有做汇编器和I/O界面输入,程序指令已预先存储到IRRAM中。只需时钟clk和复位信号rst经仿真即可得到运算结果。3.3功能列表3.3.1ALUpart表8ALU指令集指令op功能描述算术指令ADDA,Rn0001把Rn的值加到A上ADDA,#data0010把立即数的值加到A上ADDCA,Rn0011连同进位一起把Rn的值加到A上SUBBA,Rn0100连同借位一起从A中减去寄存器的

15、值SUBBA,#data0101连同借位一起从A中减去立即数的值逻辑运算指令ANLA,Rn0110Rn对A进行逻辑与运算ANLA,#data0111立即数对A进行逻辑与运算;ORLA,Rn1000Rn对A进行逻辑或操作ORLA,#data1001立即数对A进行逻辑或操作XRLA,Rn1010Rn对A进行逻辑异或操作一XRLA,#data1011立即数对A进行逻辑异或操作CLRA1100清空A的值CPLA1101对A的值取反数据传输指令MOVA,Rn1110把Rn的值传输给AMOVA,#data1111把立即数传输给AMOVRn,A0000把A传输给Rn寄存器指令操作中涉及到Rn的需要对RAMn

16、_array进行读或者写操作,读操作需要提前写好Rn的值,写操作需要经过两个周期(Rn_wr置低到RAMn_array在Rn_wr使能下读入A进行写操作各需一个周期)的才能实现。涉及data的可直接在本周期完成。正常情况下指令的顺序是,控制器在第一个周期先给ALU模块op和Rn_addr,第二个周期等待ALU接受数据,第三个周期给出data和data_le,因此Rn有足够的时间提前准备好。IDLE图8ALUpart状态转移图Alu模块设定了3个状态:空闲状态00,用于接收数据,当Rn_le低有效日读入Rn_add,不跳转,当data_le低有效时状态跳转到01。状态01为运算状态,根据op判断

17、将要进行的运算,从RAMn_array中读取数据,或者写入A,或者用输入的data对A进行操作。状态01无条件跳转到状态10,因为01中的运算操作在一个周期内即可完成,10存在是给RAMn_array留一个周期进行写操作。由于Acc结果需要即时改变,实现时用到一个中间信号A跟踪Aco与控制模块握手的busy信号在01状态即赋值为高,因为非阻塞赋值在下一时钟有效沿才实现,即10状态时busy为高,即alu不忙(可能忙的是RAMn_array),控制模块controller可以继续给alu操作信号。3.3.2controlpart3.3.2.1状态转移图Con模块状态转移图如下,可见每个指令,控制

18、部分最短只需4个周期。状态000,为空闲状态,当IR_le='0'andAlu_free='0'时读入指令IR,在根据IR7来判断将要跳转的下一个状态。当IR7='1'时,指令为jump类指令,状态由000跳转到001;当IR7='0'时,指令为数据操作类指令,状态由000跳转到010。并且程序计数器加一,指令存储器中指针也指向下一条指令。由于IRRAM中设定IR_le一直低有效,故跳转状态条件没有写出IR_le='0'。状态001和010纯是等待时间,没有操作。这2个状态存在是在等待指令指向下一行,方便在下一个状

19、态中读取指令中的数据或者跳转地址。状态011是jumpstate,从IR中读取跳转地址,并让程序计数器指向下一条指令。然后跳转到101等待进行下一条指令操作。状态100是读数据data状态,000状态已将reg_add和op读取出来传给ALU,此时在100状态,将立即数data读出,传给ALUIo然后跳转到101等待ALU一个周期跳转到000,状态转到000后,若ALU尚未运算完毕(alu_free='1),则继续停留在idle状态。Alu_free='°V010&IR7=0-工*Datawait图9controlpart状态转移图下表为本课程设计中涉及到的j

20、ump指令,功能已将列出。程序中用IR7来表征指令是否为跳转指令,1表示是跳转指令。表9添加的JUMP指令分支跳转指令IR(7)&opJMPaddr10001无条件跳转JCaddr10010在进位carry=1的情况卜跳转到地址JZaddr10011在累加器ACC等于0的情况卜跳转到地址JNZaddr10100在累加器ACC不等于0的情况不跳转到地址3.4 工作环境介绍3.4.1 设计代码/home/cas1098/CPUgate/controll.vhd/home/cas1098/CPUgate/IRRAM.vhd/home/cas1098/CPUgate/ControlPart.v

21、hd/home/cas1098/CPUgate/alu8.vhd/home/cas1098/CPUgate/RAMn.vhd/home/cas1098/CPUgate/alupart.vhd/home/cas1098/CPUgate/CPU.vhd3.4.2 测试平台/home/cas1098/CPUgate/tb.vhd-功能仿真与门级仿真的测试程序测试CPU功能的n!程序预先写进了IRRAM之内指令集程序如下movedata=5toAmoveAtoR0moveAtoR3A=A-2moveAtoR2moveAtoR1moveR3toAA=A+R0;moveAtoR3moveR1toAA=A-

22、1moveAtoR1JNZto001100moveR3toAmoveAtoR0A=A-1moveAtoR1moveAtoR2JNZto001100moveR3toA-jmp机器指令如下caseaddiswhen"000000"=>IR<="01111000”;-movedata=5toAwhen"000001"=>IR<="00000101”;when"000010"=>IR<="00000000”;-moveAtoR0when"000011"=&g

23、t;IR<="00000000”;when"000100"=>IR<="00000011”;-moveAtoR3when"000101"=>IR<="00000000”;when"000110"=>IR<="00101000"-A=A-2when"000111"=>IR<="00000010"when"001000"=>IR<="00000010&qu

24、ot;-moveAtoR2when"001001"=>IR<="00000000"when"001010"=>IR<="00000001"-moveAtoR1when"001011"=>IR<="00000000"when"001100"=>IR<="01110011"-moveR3toAwhen"001101"=>IR<="00000000&qu

25、ot;when"001110"=>IR<="00011000"-A=A+R0;when"001111"=>IR<="00000000"when"010000"=>IR<="00000011"-moveAtoR3when"010001"=>IR<="00000000"when"010010"=>IR<="01110001"-moveR1to

26、Awhen"010011"=>IR<="00000000”;when"010100"=>IR<="00101000”;-A=A-1when"010101"=>IR<="00000001”;when"010110"=>IR<="00000001”;-moveAtoR1when"010111"=>IR<="00000000”;when"011000"=>IR<

27、="10100000”;-JNZto001100when"011001"=>IR<="00110000"when"011010"=>IR<="01110011"-moveR3toAwhen"011011"=>IR<="00000000"when"011100"=>IR<="00000000"-moveAtoR0when"011101"=>IR<=&

28、quot;00000000"when"011110"=>IR<="01110010"-moveR2toAwhen"011111"=>IR<="00000000"when"100000"=>IR<="00101000"-A=A-1when"100001"=>IR<="00000001"when"100010"=>IR<="00000001&

29、quot;-moveAtoR1when"100011"=>IR<="00000000"when"100100"=>IR<="00000010"-moveAtoR2when"100101"=>IR<="00000000"when"100110"=>IR<="10100000"-JNZto001100when"100111"=>IR<="0011000

30、0"when"101000"=>IR<="01110011"-moveR3toAwhen"101001"=>IR<="00000000"when"101010"=>IR<="10001000"-jmptothisorderstablewhen"101011"=>IR<="10101000"whenothers=>IR<=x"ff"endcase;3

31、.4.3 电路综合环境/home/ic/library/typical.db#综合需要的库文件/home/cas1098/CPUgate/area.txt#综合出的面积报告/home/cas1098/CPUgate/timing.txt#综合出的时间报告/home/cas1098/CPUgate/cpugate.v#综合后产生的门级网表/home/cas1098/CPUgate/cpupost.sdf#综合产生的sdf文件/home/cas1098/CPUgate/CPU.db#综合产生的db文件3.4.4 后仿真环境/home/cas1098/CPUgate/umc18/umc18.v#门级

32、仿真需要的库文件3.5 功能验证结果3.5.1 前仿真结果Tpit*-.13fljOOC.3OCtB/.ii,,网,则口口网/_,ita,o.QQo魂口口肚忌土加衣新THHfl面""啊"啊""工iiiLniinwiHLinimiiuirriiiriiniim"un 就渝血E邨黑也送出Q;u: : 獗儆瓯Z LIII.1U11 ILJIII llll.J IIUllLIlin lllll lllLJIllUIJIL.ir.怖innnrwjmnmnnri皿工下皿hitmii魂嬲嬲灌麻蹶瞬逊瀛硼湖趣诵而曲iM而Iii附诉近枷而iihiiii

33、iii11%而面图10CPU计算5!的全图可以看到最后的输出的结果为ox78=120,正确的执行了5!的指令。完成了功能仿真。BJIEDiriKisfigll*心阳-IfLWOJWWCutsal:由mm即加也mijm岫网加口如立旭岫(山帆打加“加:附*加工久*AU.ftWl卡I:£-fa3niiiiilin_rn_n_Q-dff4:m-oi-"*dBlL*IT-iJ-3i旧Mem%,IMtQ丁iRAMliHi河E理工二*DPahni.,m二-d口口上nr0r*nwbdi融ii9i1*m图11controllpart执行一条指令的波形图在controlpart模块执行指令时,

34、在判断了ALU_free(即busy信号)变为低电平后,controlpart模块开始译码指令IR(实际是内部寄存器IRR),op信号从E改为了5,reg_add_le(即Rn_rd信号)拉低到低电平表示使能。Reg_add(即Rn_addr信号)改变为0,空闲一周期后(等待指令计数器变化),通过IR,再t出data信号,将data_le拉低到低电平使能。完成了译码工作。图12 control执行非跳转指令的状态机波形状态机从0状态(ALU_free='0'跳转)->2状态(必然跳转)->4状态(必然跳转)->5状态(必然跳转)->0状态,一条指令E乍周

35、期即机器周期一共是5个clk周期。图13control执行跳转指令的状态机波形状态机从0状态(ALU_free='0'跳转)->1状态(必然跳转卜>3状态(必然跳转)->5状态(必然跳转)->0状态,一条指令工作周期一共是4个clk周期,因为alu没有工作,不需要等待图14ALUpart执行一条指令的波形图出现Rn_rd信号,之后ALU的busy信号变为1,同时op和data信号先后到达到cpu(data信号比op信号晚2个周期),执行的指令时f',通过内部判断为“movedatatoA”指令,在data信号使能2个周期之后,A被改写为data的

36、值。赋值的同时,busy的信号变为0.表示ALU处于空闲。图15ALUpart执行指令状态机的波形状态机从0状态(data_le='0'时跳车专)->1状态(必然跳转)->2状态(必然跳转)->0状态,一个周期一共是5个clk周期。因为alu执行的必然是非跳转指令。3.5.2后仿真结果SmwUHEG(D4VM2口351.1STIalLi/alu/U7Q3/T(RORZXl%口,2.31r.aJU-9(IPYK2J0.6B23弓fQU自lu/UET/2(OI33M1)口*犯334£alu/'a3u/u7aZ/T(CMI31I1)QJQ3.57fmu.-alu/rr790/?HATO3EX10.213.7Bralu/aluZU719/3UMS0.G7正臼4flu/alu/UBSZ/?(QtlZEBlXl04B4.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论