当前位置:文档之家› 多周期微处理器设计

多周期微处理器设计

微处理器系统设计课程设计版本v1.0专业:集成电路设计与集成系统班级:电路1303班姓名:周小朋学号:051360852016年6月20 ~ 2016年7月1日多周期微处理器设计注:非正式版,仅为初稿一、功能描述MIPS微处理器是典型的32位定长指令字RISC处理器,此次设计的微处理器是基于verilogHDL语言、兼容MIPS指令格式、带有I/O接口和中断处理电路、能够实现26条指令功能,并且可以在DE2开发板上进行下载验证的多周期CPU。

可以实现的指令包括,R型:add、addu、sub、subu、and、or、xor、nor、slt、sltu、sll、srl、sra、jr;I型:addi、addiu、lui、andi、ori、xori、lw、sw、beq、bne;J型:jal、jump。

并且可以实现一段流水灯程序,程序的样式为1)10101010->010*******切换间隔为0.5秒2)11110000->00001111,切换间隔为1秒。

两种样式通过按键控制。

二、设计方案1.总体设计方案此次设计是在前期课程已经设计好的单周期CPU上进行多周期CPU的设计,多周期指令的执行分为5个阶段:取指、译码、执行、访存、回写。

由于PC,指令存储器只能在需要时写入新值,因此必须有“写使能信号”控制。

可以用状态机来实现5个状态的转换以及控制信号的产生。

来控制此次设计要实现一段流水灯程序,总共有两组不同的花型切换。

可以先利用ori指令初始化第一组花型到两个寄存器,再利用SW指令将存到寄存器的花型读出存储到IO接口,通过LED显示,最后用J指令实现花型的循环,此即使第一组花型的实现。

接下来考虑按键切换到下一组花型,可以使用按键产生一个中断信号,当按下按键时,进入中断程序,在中断程序里边存储第二个花型及其花型切换与循环,实现方式与花型一相同。

时间的控制可以利用指令的条数进行控制,通过分频产生一个标准时钟,sw占用4个时钟周期,j型占用2个时钟周期,可以通过指令的条数来控制题目所需要的0.5s与1s。

花型跳转示意图如下:图1.流水灯实现示意图总体设计框图如下:图2.多周期CPU总体设计框图接口信号说明:信号名称方向说明备注Clk_50M IN DE2开发板提供的时钟频率Rst IN Cpu复位信号Int0 IN 中断0信号Int1 IN 中断1信号Led OUT Led的输出信号,即流水灯花型输出表1:多周期CPU接口信号说明2.详细设计方案2.1中断设计方案此次设计的处理器有两个中断,int0和int1,其中int0的优先级比int1高。

Cpu在响应中断之前,应该先保存中断的断点返回地址。

中断返回地址保存在专用寄存器中,int0保存在$26,int1保存在$27。

为了解决中断优先级和嵌套,引入屏蔽寄存器,如下图图3.中断屏蔽寄存器Int0相应条件为imask[0]==0,in1相应条件为imask[1]==0,imask[0]==0。

下来是入口地址的确定,响应中断时,可以修改PC为中断程序的地址,即中短入口地址。

最后通过JR指令返回程序断点。

结构框图如下:图4.中断结构框图当中断信号有效时,将intpc存入寄存器,并且修改PC的值为中断入口地址接口信号说明:信号名称方向说明备注Clock IN Cpu工作频率Wpc IN PC的写使能信号Int0 IN 中断0信号Int1 IN 中断1信号PC OUT 程序指针,中断时值为中断入口地址IntPC OUT 输出到寄存器的中断断点地址表2:中断接口信号说明2.2.IO接口设计方案此次设计的IO和与存储器采用统一编址的方式,地址空间如下图所示,图5.IO与RAM地址空间分配IO地址空间为:FF00H~FFFFH,存储器地址空间为:0000H~0FFFH。

当立即数的高8位为FF时,对IO进行读写,否则为存储器的读写。

IO的实现如下结构所示,LED_CTRL与KEY_ctrl分别为LED与键盘的片选信号图6.IO结构框图表3:IO接口信号说明三、指令分析3.1、指令功能分析1、R型指令分析此次实现的R型指令包括:add、addu、sub、subu、and、or、xor、nor、slt、sltu、sll、srl、sra、jr。

指令的[31:26]位为OP操作码,[25:21] 位为rs寄存器的地址,[20:16] 位为rt寄存器的地址、[15:11]位为rd寄存器的地址、[10:6] 位为移位操作移位的位数,[5:0]位为功能码。

表4 R型指令分析2、I型指令分析此次实现的I型指令包括:addi、addiu、lui、andi、ori、xori、lw、sw、beq、bne。

指令的[31:26]位为OP操作码,[25:21] 位为rs寄存器的地址,[20:16] 位为rt寄存器的地址、[15:0]位为立即数。

表5 I型指令分析3、J型指令分析此次实现的I型指令包括:jal、jump。

指令的[31:26]位为OP操作码,[25:0] 位为地址值。

表6 J型指令分析3.2指令执行过程分析图7.指令执行过程分析三、ROM与RAM替换调用DE2开发板的IPmemory资源,具体步骤如下J-type opjal000011jal 10000$31<-PC+4;goto 10000$31<-PC+4 ; PC <-(PC+4)[31..28],address,0,0;address=10000/4jump000010j 10000goto 10000PC <-(PC+4)[31:28],address,0,0;address=10000/4addressaddressaddress图8.调用IP核实现指令ROM图9.调用IP核实现指令ROM四、验证方案:1.cpu功能验证此次设计的仿真验证程序为:先运行主程序,接着调用加法子程序,完成对四个数加法得到结果并存储,涉及到的指令有lui、ori、addi、jal、add、lw、bne、sll、jr。

接着进行其他指令的验证,指令包括:sw、sub、subu、addu、xori、addiu、andi、or、xor、and、nor、sra、slt、sltujump。

数据存储器存储的数据如下:Ram[14]:000000A3; % 0+A3=A3Ram[15]:00000027; % A3+27=CARam[16]:00000079; % CA+79=143Ram[17]:000000115; % 143+115=258仿真验证时,子程序运行后加法的结果应为258。

程序具体的功能以及涉及到的寄存器、运算结果如下所示:5'h00=32'h3c01_0000; //00 lui main r1,05'h01=32'h3424_0050; //04 ori r4,r1,805'h02=32'h2005_0004; //08 addi r5,r0,45'h03=32'h0c00_0018; //0c jal call:jal sum5'h04=32'hac82_0000; //10 sw r2,0(r4)5'h05=32'h8c89_0000; //14 lw r9,0(r4)5'h06=32'h0124_4022; //18 sub sub r8,r9,r45'h07=32'h2005_0003; //1c addi r5,r0,35'h08=32'h01a5_ff21; //20 addu5'h09=32'h34a8_ffff; //24 ori r8,r5,0xffff5'h0A=32'h3908_5555; //28 xori r8,r8,0x55555'h0B=32'h240a_ffff; //2c addiu5'h0C=32'h312a_ffff; //30 andi r10,r9,0xffff5'h0D=32'h0145_3025; //34 or r6,r10,r55'h0E=32'h0148_4026; //38 xor r8,r10,r85'h0F=32'h0146_3824; //3c and r7,r10,r65'h10=32'h014a_4027; //40 nor5'h11=32'h0008_4400; //44 sll r8,r8,165'h12=32'h0008_4403; //48 sra r8,r8,165'h13=32'h0005_43c0; //4c sll r8,r5, 155'h14=32'h0008_43c2; //50 sll r8,r8,155'h15=32'h0008_432a; //54 slt5'h16=32'h0008_432b; //58 sltu5'h17=32'h0800_0017; //5c jump finish:dead loop5'h18=32'h0000_4020; //60 add r8,r0,r05'h19=32'h8c89_0000; //64 lw r9,0(r4)5'h1A=32'h2084_0004; //68 addi r4,r4,45'h1B=32'h0109_4020; //6c add r8,r8,r95'h1C=32'h20a5_ffff; //70 addi r5,r5,-15'h1D=32'h14a0_fffb; //74 bne r5,r0,loop5'h1E=32'h0008_1000; //78 sll r2,r8,05'h1F=32'h03e0_0008; //7c jr r31 return4.2,LED流水灯实现验证方案设计一段实现题目要求的流水灯的花型,程序如下:001 : 342400aa;002 : 34250155;003 : ac04ff00;004 : ac04ff00;005 : ac05ff00;006 : 08000003;007 : 342600f0;008 : 3427000f;009 : ac06ff00;00a : ac06ff00;00b : ac06ff00;00c : ac06ff00;00d : ac07ff00;00e : ac07ff00;00f : ac07ff00;010 : ac07ff00;011 : 08000009;4.2.1仿真验证通过modelsim进行仿真分析,验证led输出是否为aa~155,短信号后为f0,0f4.2.2下载到开发板进行验证此次下载用的开发板型号为DE2,用quartus进行综合布局布线以及下载,如下图所示:图10.DE2开发板图11.综合布局布线、生成下载文件图12.综合报告(占用的资源)图图13.管脚分配图14.下载成功四、结果分析:1、逻辑功能仿真分析在Modelsim中对设计仿真,对照验证方案对仿真结果进行指令功能分析。

相关主题