您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 计组-微程序控制器设计报告
第1页/共10页实验10微程序控制器设计实验报告姓名:XXX学号:XXX专业:计算机科学与技术课程名称:计算机组成同组学生姓名:无实验时间:实验地点:指导老师:XXX一、实验目的和要求1.掌握微程序控制原理2.掌握微程序控制器的设计方法二、实验内容和原理实验内容:1.设计一个微程序控制单元并进行仿真实验原理:1.微程序的原理:在多时钟CPU设计的实验中,所有的控制信号均根据操作码以及所处的时钟周期,由组合逻辑的方式产生各个状态下的控制信号。微程序是将CPU每条指令和所有时钟的控制信号,预先以二进制形式写在控制存储器中。多时钟周期的每个状态都对应一组控制信号。每条指令都有若干个状态对应若干组控制信号。微指令按一定顺序存放在控制存储器中。第2页/共10页2.工作原理图3.微程序控制逻辑图第3页/共10页4.微指令及其控制码5.控制存储器内容三、主要仪器设备1.Spartan-III开发板1套2.装有ISE的PC机1台第4页/共10页四、操作方法与实验步骤实验步骤:1.创建新的工程和新的源文件2.编写verilog代码(包括以下模块top,MicroCtrl,pbdebounce,time_1ms)3.对程序进行波形仿真4.编写UCF引脚文件,通过编译。5..生成FPGA代码,下载到实验板上并调试,看是否与实现了预期功能实验代码:Top.vmoduletop(inputsystem_clk,inputclk_i,inputrst_i,output[3:0]anode4,output[7:0]segment4,outputreg[7:0]led);wireclk;wirerst;reg[2:0]pc;reg[5:0]opcode;wire[17:0]rom_out;pbdebouncep0(system_clk,clk_i,clk);pbdebouncep1(system_clk,rst_i,rst);initialbeginpc=0;endalways@(posedgeclkorposedgerst)beginif(rst==1)pc=0;elseif(rom_out[1:0]==0)pc=pc+1;第5页/共10页endalways@*begincase(pc)0:opcode=6'b000000;//R-type1:opcode=6'b100011;//LW2:opcode=6'b101011;//SW3:opcode=6'b000100;//BEQ4:opcode=6'b000010;//Jdefault:opcode=6'b000000;endcaseendMicroCtrlMicroCtrl(clk,rst,opcode,rom_out);displaydisplay(system_clk,rom_out[17:2],anode4,segment4);always@*beginled[1:0]=rom_out[1:0];led[2]=0;case(pc)0:led[7:3]=5'b10000;//R-type1:led[7:3]=5'b01000;//LW2:led[7:3]=5'b00100;//SW3:led[7:3]=5'b00010;//BEQ4:led[7:3]=5'b00001;//Jdefault:led[7:3]=5'b11111;endcaseendendmoduleMircoCtrl.vmoduleMicroCtrl(inputclk,inputrst,input[5:0]opcode,outputreg[17:0]rom_out);reg[3:0]mpc;initialbegin第6页/共10页mpc=0;endalways@*begincase(mpc)0:rom_out={16'h0851,2'b11};1:rom_out={16'h1800,2'b01};2:rom_out={16'h3000,2'b10};3:rom_out={16'h00C0,2'b11};4:rom_out={16'h0300,2'b00};5:rom_out={16'h00A0,2'b00};6:rom_out={16'hA000,2'b11};7:rom_out={16'h0500,2'b00};8:rom_out={16'h6006,2'b00};9:rom_out={16'h0009,2'b00};default:rom_out=0;endcaseendalways@(posedgeclkorposedgerst)beginif(rst==1)mpc=0;elsebegincase(rom_out[1:0])0:mpc=0;3:mpc=mpc+1;1:case(opcode)6'b000000:mpc=6;//R-type6'b100011:mpc=2;//LW6'b101011:mpc=2;//SW6'b000100:mpc=8;//BEQ6'b000010:mpc=9;//Jdefault:mpc=0;endcase2:case(opcode)6'b100011:mpc=3;//LW6'b101011:mpc=5;//SWdefault:mpc=0;endcaseendcaseendendendmodule第7页/共10页Display.vmoduledisplay(inputwireclk,inputwire[15:0]digit,//显示的数据outputreg[3:0]node,//4个数码管的位选outputreg[7:0]segment);//七段+小数点reg[3:0]code=4'b0;reg[15:0]count=15'b0;always@(posedgeclk)begincase(count[15:14])//与(count[1:0])的不同?起到分频的作用2'b00:beginnode=4'b1110;code=digit[3:0];end2'b01:beginnode=4'b1101;code=digit[7:4];end2'b10:beginnode=4'b1011;code=digit[11:8];end2'b11:beginnode=4'b0111;code=digit[15:12];endendcasecase(code)4'b0000:segment=8'b11000000;4'b0001:segment=8'b11111001;4'b0010:segment=8'b10100100;4'b0011:segment=8'b10110000;4'b0100:segment=8'b10011001;4'b0101:segment=8'b10010010;4'b0110:segment=8'b10000010;4'b0111:segment=8'b11111000;4'b1000:segment=8'b10000000;4'b1001:segment=8'b10010000;4'b1010:segment=8'b10001000;4'b1011:segment=8'b10000011;4'b1100:segment=8'b11000110;第8页/共10页4'b1101:segment=8'b10100001;4'b1110:segment=8'b10000110;4'b1111:segment=8'b10001110;default:segment=8'b00000000;endcasecount=count+1;endendmoduleTimer_1ms.vmoduletimer_1ms(inputwireclk,outputregclk_1ms);reg[15:0]cnt;initialbegincnt[15:0]=0;clk_1ms=0;endalways@(posedgeclk)if(cnt=25000)begincnt=0;clk_1ms=~clk_1ms;endelsebegincnt=cnt+1;endendmodulePbdebounce.vmodulepbdebounce(inputwireclk,inputwirebutton,outputregpbreg);reg[7:0]pbshift;wireclk_1ms;timer_1msm0(clk,clk_1ms);always@(posedgeclk_1ms)beginpbshift=pbshift1;//左移1位pbshift[0]=button;if(pbshift==0)pbreg=0;if(pbshift==8'hFF)//pbshift八位全为1第9页/共10页pbreg=1;endendmodule五、实验结果与分析1.仿真结果如下(仿真时间较长,分2张图展示):输出值对应控制码指令类型ox021470x08512’b11R-Typeox060010x18002’b01Ox280030xA0002’b11Ox014000x05002’b00Ox021470x08512’b11LWOx060010x18002’b01Ox0c0020x30002’b10Ox003030x00602’b11Ox00c000x03002’b00输出值对应控制码指令类型ox021470x08512’b11SWox060010x18002’b01Ox0c0020x30002’b100x00280Ox00A02’b00ox021470x08512’b11BEQox060010x18002’b01Ox180180x60062’b00ox021470x08512’b11J第10页/共10页ox060010x18002’b01Ox00024Ox00092’b003.程序运行成功后,将代码下载到实验板spartan3上验证按动按钮,发现数码管上显示的数值即仿真输出码的[17:2]位,且出现顺序一致,说明程序成功。六、讨论、心得此次微程序控制器设计功能较少,结构较简单,关键是理解微程序的原理。
本文标题:计组-微程序控制器设计报告
链接地址:https://www.777doc.com/doc-2061414 .html