给定指令系统设计毕业论文.docx_第1页
给定指令系统设计毕业论文.docx_第2页
给定指令系统设计毕业论文.docx_第3页
给定指令系统设计毕业论文.docx_第4页
给定指令系统设计毕业论文.docx_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

给定指令系统设计毕业论文目录实验目的3实验环境3设计思想4cpu接口信号定义4指令格式设计4RISC处理器设计格式4微操作的定义6节拍的划分7处理器结构设计框图及功能描述7各模块结构设计框图及功能描述9时钟模块92)取指模块103)运算模块114)访存模块125)回写模块136)访存控制模块14进度安排15实验各模块的设计及仿真16时钟模块16产生节拍的代码:16仿真波形:18取指模块19代码:19仿真波形:22ALU运算模块22代码:22仿真波形:27访存模块29代码:29仿真波形:31回写模块31代码:31仿真波形:37访存控制模块38代码:38仿真波形:42cpu元件例化44代码:44仿真波形:51UCF文件:58总体测试结果及说明61测试指令序列61设计、调试、下载中遇到问题及解决方案621、设计中遇到的问题及解决方案622、调试中遇到的问题及解决方案623、下载中遇到的问题及解决方案62实验总结63实验目的1. 掌握Xilinx ISE 集成开发环境和ModeSim仿真工具的使用方法2. 掌握VHDL语言3. 掌握FPGA编程方法及硬件调试手段4. 深刻理解处理器结构和计算机系统的整体工作原理实验环境Xilinx ISE 集成开发环境、ModeSim或Isim仿真工具SD2100数字逻辑设计实验平台设计思想cpu接口信号定义信号名位数方向来源/去向意义RST1I处理器板高电平复位clk1I处理器板系统时钟nMREQ1O主存储器存储器片选nrd1O主存储器存储器读nwr1O主存储器存储器写nbhe1O主存储器高位字节访问允许nble1O主存储器低位字节访问允许abus16O主存储器地址总线dbus16I/O主存储器数据总线timeout4OFPGA-二极管节拍显示nirout1OFPGA-S0S1指令显示ndbus16OFPGA-S3S4数据总线内容显示nabus16OFPGA-S5S2地址总线内容显示ncyout1OFPGA-A0进位标志位显示nbheout1OFPGA-A5高位字节访问允许显示nbleout1OFPGA-A4低位字节访问允许显示nmreqout1OFPGA-A7存储器片选显示nrdout1OFPGA-A6存储器读显示nwrout1OFPGA-A3存储器写显示k08IFPGA-K0控制使其显示寄存器npcout4OFPGA-B4-B7显示pc改变指令格式设计RISC处理器设计格式1) 指令系统中指定所有的指令都是二进制指令2) 通用寄存器的数量为8,需要3位地址与之对应3) 访存的形式地址为8位4) 定义指令的高5位表示操作码寄存器-寄存器型指令5 3 5 3OPAD1AD2其他指令类型5 3 8OPAD1AD2实验中指令设计JMP X (R7/X - PC)00000000XJZ Ri X (if Ri=0 then PC+R7/X PC)00010RiXSUB Ri,Rj Ri-Rj-Ri00100Ri00000RjADD Ri,Rj Ri+Rj-Ri00110Ri00000RjMVI Ri,X X-Ri01000RixMOV Ri,Rj Rj-Ri01010RI00000RjSTA Ri,X Ri-R7/X01100RixLDA Ri,X R7/X-Ri01110RiX SET 1 cy-110000 SET 0 cy-010010微操作的定义指令名称助记符二进制操作码无条件跳转JMP00000条件跳转JZ00010减法操作SUB00100加法操作ADD00110立即数传送MVI01000寄存器传送MOV01010存数操作STA01100取数操作LDA01110进位置1SET110000进位置0SET010010节拍的划分划分4个节拍节拍对应操作T0取指操作T1运算ALUT2访存操作T3回写操作处理器结构设计框图及功能描述clk时钟模块Cpu总体设计图 rstt3t2t1t0Rdata(7:0)Rupdatealuout(7:0)ALUOUT回写模块访存模块运算模块取指模块cycycupdateRdatatempCYpcmupdatecyRtempalouout(7:0)pcout15:0)RipcnewADDRIRPCOUT_M(15:0)IR(15:0)R_MpcnewtopcpcupdateRtempin(7:0)rwaddr(15:0)IRin(15:0)访存控制DBus(15:0)ABus(15:0)nWRnRDnblenbhemreq主存储器功能:设计的cpu是一个简单的RISC处理器,该处理器是在给定的指令集下构建,支持以上的十条指令。主存在一个时钟周期内完成一次存取操作,而且和cpu同步工作。能根据自己设计的指令完成以上的操作。并将其部分显示在SD2100数字逻辑设计实验平台。各模块结构设计框图及功能描述时钟模块 信号接口定义:信号名位数方向来源/去向意义clk1I系统时钟外接系统时钟rst1I系统复位外接系统复位t4O产生节拍节拍控制各个模块模块功能描述:时钟模块是一个四节拍的计数器,负责对各个模块输送节拍,以此来控制各个节拍协调工作。clk产生脉冲,t会循环改变t(i)的值,每次都只有一个1,达到节拍的效果。当复位信号有效,才会都变成02)取指模块信号接口定义:信号名位数方向来源/去向意义T01I时钟模块第一个节拍取指Rst1I系统复位系统复位Pcin16I访存控制回写的pc送给pcRupdate1I回写模块回写模块控制pc更新控制Pcout16O回写模块Pc送往回写模块Pcout_m16O访存控制Pc送往访存控制Irin16I访存控制访存控制取出的指令送取指模块Rout1O访存控制取指的读信号送完访存控制irout16O运算模块指令输出便其他模块使用模块功能描述:t0节拍控制取指模块工作。Rst复位pc,回到初始地址。Rupdate负责pc更新的值送到pc,形成新的地址。取指模块主要功能是送地址给访存控制,取出指令到IR.3)运算模块信号接口定义:信号名位数方向来源/去向意义Rupdate1I回写模块回写数据控制信号Mupdate1I回写模块Mvi/mov回写控制Cupdate1I回写模块进位回写控制Rdata8I回写模块回写的数据T11I时钟模块节拍控制Cyin1I回写模块进位输入Cyout1O进位送回写进位输出至回写Irin16I指令输入指令输入aluAluout8O送回写/访存控制运算等结果输出pcjmp16O跳转指令至pc跳转指令送到取指的pcAddr16O形成地址送访存指令形成地址送访存控制Regout0-Regout78O寄存器输出显示寄存器引出到cpu,显示寄存器功能描述:t1节拍控制alu,在alu中执行各条指令。根据IRin指令的操作码,执行指令,结果从aluout,cyout,addr送出。回写的时候,Rupdate控制回写数据送入,cupdate控制进位回写,Mupdate控制mov/mvi的回写数据。其中pcjmp是直接跳转的地址送往pc。其中显示寄存器,将Regout0-Regout7引出到cpu4)访存模块信号接口定义:信号名位数方向来源/去向意义T21I时钟模块节拍控制访存模块Irin16I取指ir输出指令输入,发读写信号Rtempin8I访存控制存储器中取出的数输入Rtempout8O回写模块暂存的数送回写Wout1O送访存控制发写信号rout1O送访存控制发读信号功能描述:t2控制访存模块,主要是取数的时候,取出的数暂存在访存模块,然后通过回写送到对应的寄存器5)回写模块信号接口定义:信号名位数方向来源/去向意义T31I时钟模块节拍控制回写Irin16I取指模块IR输出指令上操作码给出对应控制Pcin16I取指模块Pc值输入Pcjmp16I运算模块Jmp跳转地址回写Pcout16O送取指模块回写新pc回写Rupdate1O送运算模块回写控制回写运算、取数数据控制Mupdate1O送运算模块回写控制回写mov/mvi数据控制Pcupdate1O送取指模块回写控制Pc回写控制Cupdate1O送运算模块回写控制进位回写控制Rtempin8I访存模块取出的数送回写Aluout8I运算模块运算等结果送回写Cyin1I运算模块进位结果送回写cyout1O送运算模块回写进位结果回写至运算模块Rdataout8O送运算模块回写数据回写至运算模块功能描述:t3节拍控制回写模块的工作。回写模块主要是将各个指令产生的结果暂时送到回写模块里,然后在相对应的时间送到对应的地方。加减运算结果,mov/mvi结果,取数结果,pc更新的结果以及进位都暂存在回写模块,通过指令译码,在对应的指令上添加控制信号:Rupdate,mupdate,cupdate,pcupdate。再送取指和运算模块。6)访存控制模块信号接口定义:信号名位数方向来源/去向意义T01I时钟模块时钟产生的节拍控制T21I时钟模块时钟产生的节拍控制Rst1I系统复位系统复位Pcin16I取指模块取指送的pc至存储器,取出指令Addrin16I运算模块形成的地址送存储器Aluout8I运算模块运算结果送存储器存Rin16I访存模块访存模块读信号Win1I访存模块访存模块发写信号Rtom1I取指模块取指发的读信号Rtemp8I/O数据送访存模块取数取出的数据Irout16O取指输出指令取出的指令放回取指模块Abus16O存储器地址总线存储器地址总线Dbus16I/O存储器数据总线存储器数据总线给数据Mreq1O存储器片选存储器片选控制信号Wr1O存储器写存储器写控制Rd1O存储器读存储器读控制Nbhe1O存储器高位字节存储器高位字节访问允许nble1O存储器低位字节存储器低位字节访问允许功能描述:访存控制模块主要是与存储器相连接,能够从存储器中取数据,指令,能将数据、地址送到存储器中存储。t0 t2两个节拍分别控制不同的操作,t0是取指的时候,从存储器中读出指令;t2则是在需要访存的时候,由访存模块给读写信号,使访存控制对应存储器操作。进度安排第二周完成所有的仿真,在硬件实验平台上调试第三周写实验报告,准备考试第一周完成总体设计及各个模块代码编写实验各模块的设计及仿真时钟模块产生节拍的代码:LIBRARY ieee;USE ieee.std_logic_1164.ALL;entity count4 isport(clk,rst:in std_logic;t:out std_logic_vector(3 downto 0);end count4;architecture Behavioral of count4 issignal temp:std_logic_vector(3 downto 0);begin process(rst,clk)begin if(rst=1) then -复位 t=0000; temp=0001; -准备一个时钟之后送给t elsif(clk=1 and clkevent) then ttemptemptemptemptemp clk, rst = rst, t = t ); - Clock process definitions clk_process :process beginclk = 0;wait for 10 ns;clk = 1;wait for 10 ns; end process; - Stimulus process stim_proc: process begin - hold reset state for 100 ns. wait for 20 ns; rst=1; -复位wait for 40 ns;rst=0; -节拍 wait; end process;END;仿真波形:波形解释:当rst有效,t全为0,此时为复位。rst无效,随着时钟的上升沿,产生一个一个节拍。四个节拍循环产生。取指模块代码:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity GetIR isport(t0:in std_logic;rst:in std_logic;Rout:out std_logic;PCin:in std_logic_vector(15 downto 0);Rupdate:in std_logic; -PCupdatePCout:out std_logic_vector(15 downto 0);PCout_m:out std_logic_vector(15 downto 0);IRin:in std_logic_vector(15 downto 0);IRout:out std_logic_vector(15 downto 0);end GetIR;architecture Behavioral of GetIR issignal PC:std_logic_vector(15 downto 0);signal IR:std_logic_vector(15 downto 0);beginprocess(t0,rst,PCin,Rupdate,IR,PC)begin if(rst=0) then if(Rupdate=1) then -pc回写 pcupdate PC=PCin; end if; if(t0=1) then -取指 PCout=PC+1; -to pcnew PCout_m=PC; -to memory control IR=IRin; IRout=IRin; Rout=0; end if; else PC=0000000000000000; PCout 0); signal Rupdate : std_logic := 0; signal IRin : std_logic_vector(15 downto 0) := (others = 0);-Outputssignal Rout :std_logic; signal PCout : std_logic_vector(15 downto 0);signal PCout_m:std_logic_vector(15 downto 0); signal IRout : std_logic_vector(15 downto 0); - No clocks detected in port list. Replace below with - appropriate port name BEGIN- Instantiate the Unit Under Test (UUT) uut: GetIR PORT MAP ( t0 = t0, rst = rst, PCin = PCin, Rupdate = Rupdate, PCout = PCout, PCout_m=PCout_m, IRin = IRin, Rout=Rout, IRout = IRout ); - Stimulus process stim_proc: process begin wait for 100 ns; rst=1; -系统复位 wait for 100 ns; rst=0; Rupdate=1; -回写 PCin=0000000000000001; -pc+1 wait for 100 ns; Rupdate=0; t0=1; -取指 IRin00000000);signal cy:std_logic;begin process(IRin,t1,cyin,Rupdate,Mupdate,Rdata,Cupdate,myreg,cy) variable A,B,ans:std_logic_vector(8 downto 0); begin if(t1=1) then -节拍控制 case IRin(15 downto 11) is when 00000= -JMP 无条件跳转 pcjmpPC when 00010= -JZ 有条件跳转 if(myreg(conv_integer(IRin(10 downto 8)=00000000) then -if Ri=0 then PC+X-PC aluout=IRin(7 downto 0); else aluout -SUB 减法操作 A:=0&myreg(conv_integer(IRin(10 downto 8); -得到Ri的值 B:=0&myreg(conv_integer(IRin(2 downto 0); -得到Rj的值 ans:=A-B-cy; aluout=ans(7 downto 0); cyout -ADD 加法操作 A:=0&myreg(conv_integer(IRin(10 downto 8); -得到Ri的值 B:=0&myreg(conv_integer(IRin(2 downto 0); -得到Rj的值 ans:=A+B+cy; -Ri+Rj+cy aluout=ans(7 downto 0); cyout -MVI 立即数传送aluoutRi when 01010= -MOV 寄存器传送aluoutRi when 01100= -STA (Ri-R7/x) 存数操作 aluout=myreg(conv_integer(IRin(10 downto 8); addr -LDA 取数操作 R7/x-Riaddr -SETCY 1 进位置1 cy=1; cyout -SETCY 0 进位置0 cy=0; cyout null; end case; elsif(Rupdate=1) then myreg(conv_integer(IRin(10 downto 8)=Rdata;-elsif(Cupdate=1) then-cy:=cyin;elsif(Mupdate=1) thenmyreg(conv_integer(IRin(10 downto 8)=Rdata; end if; if(Cupdate=1) then -送进位cy=cyin; end if; end process;Regout0=myreg(0);Regout1=myreg(1);Regout2=myreg(2);Regout3=myreg(3);Regout4=myreg(4);Regout5=myreg(5);Regout6=myreg(6);Regout7 0); signal t1 : std_logic := 0; signal IRin : std_logic_vector(15 downto 0) := (others = 0); signal cyin : std_logic := 0;-BiDirs signal addr : std_logic_vector(15 downto 0);-Outputs signal aluout : std_logic_vector(7 downto 0);signal cyout : std_logic; signal pcjmp :std_logic_vector(15 downto 0);signal Regout0:std_logic_vector(7 downto 0);signal Regout1:std_logic_vector(7 downto 0);signal Regout2:std_logic_vector(7 downto 0);signal Regout3:std_logic_vector(7 downto 0);signal Regout4:std_logic_vector(7 downto 0);signal Regout5:std_logic_vector(7 downto 0);signal Regout6:std_logic_vector(7 downto 0);signal Regout7:std_logic_vector(7 downto 0); - No clocks detected in port list. Replace below with - appropriate port name -constant _period : time := 10 ns;BEGIN- Instantiate the Unit Under Test (UUT) uut: alu PORT MAP ( Rupdate = Rupdate, Mupdate=Mupdate, Cupdate=Cupdate, Rdata = Rdata, t1 = t1, IRin = IRin, aluout = aluout, cyin=cyin, cyout=cyout, pcjmp=pcjmp, Regout0=Regout0, Regout1=Regout1, Regout2=Regout2, Regout3=Regout3, Regout4=Regout4, Regout5=Regout5, Regout6=Regout6, Regout7=Regout7, addr = addr ); - Clock process definitions - Stimulus process stim_proc: process begin - hold reset state for 100 ns. wait for 50 ns; Rupdate=1;cyin=0;Rdata=10011001;IRin=1111100111111111;wait for 50 ns;cyin=1;Rdata=11011101;IRin=1111101011111111; wait for 50 ns;Rupdate=0;Cupdate=1;cyin=1;t1=1;IRinR1wait for 50 ns;Cupdate=1;IRinR1wait for 50 ns;IRinR2wait for 50 ns;IRinR2wait for 50 ns;IRin=0000000010101011; -JMP 10101011wait for 50 ns;IRin=0001001001010101; -JZ R2,01010101wait for 50 ns;IRin=0110001010101010; -STA R2,10101010wait for 50 ns;IRin=0111000101010101; -LDA R1,01010101wait for 50 ns;IRin=1000011111111111; -置1wait for 50 ns; IRinaluout。99+dd+1=77,有进位为1.故cyout为1。指令2102执行R1-R2-aluout。99-dd-1=bb。有借位为1。指令42aa为R2送aa,由于要回写,故送到ALUOUT。指令5201将R1值送R2,由于回写,故aluout是r1值99。指令00ab跳转,pcjmp就是R7/ab。指令1255是JZ,if r2=0 then r7/55-pc。指令62aa,把R2的值存在R7/aa,故aluout为R2的值,addr为00aa。指令7155取R7/55的值送R1,addr地址为0055送访存控制。87ff,97ff为进位置0/1,由于在内部变量直接置进位,波形上没有。访存模块代码:library IEEE

温馨提示

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

评论

0/150

提交评论