版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、EDA与VHDL实验报告16位CPU设计0/1916位cpu设计一、顶层系统设计1.1组成结构CPU的结构如图所示。这是一个采用单总线系统架构的复杂指令系统结构的16位CPU。处理器包含了各种基本器件模块。他们是8个16位的寄存器reg0reg7、一个运算器ALU、一个移位寄存器Shifter、一个程序计数器PortCnt、一个指令寄存器InstrReg、一个比较器Comp、一个地址寄存器Addreg、和一个控制单元Control。这些模块公共用一组16位的三台数据总线。数据总线Data(15+.O)RegOOpReg工作寄存器VReg2艮哪RegArray寄存器阵歹!ALUAluselCom
2、p算术逻辑单元比较器Reg7Shifter移位运算器hiftselCqProgCntOutReg输岀寄存器InstrRegdRegOOpReg工作寄存器VReg2艮哪RegArray寄存器阵歹!ALUAluselComp算术逻辑单元比较器Reg7Shifter移位运算器hiftselCqProgCntOutReg输岀寄存器InstrRegd扌旨令寄存器pompseipOulControl揑制器A们由一组地址地址寄存老Pro顶层地址应线号互相Addr(15.O)12J指令系、刁计I使处理VMA在计处理器时首先要确定Cpu具有哪些功能,并针对这些功能采用哪些指令,然后确定指令的格式。为了使计的CP
3、U具有基本的运算功能,指令将计成以下形式,可以分为如下几类.装载指令:指令从其他寄存器或存储器装载数据或是立刻赋值。存储指令:指令存储寄存器的值写到存储器分支指令:指令使处理器转到其它地址,一些分支指令为条件转移,另外一些为无条件转移移位指令:这些指令用移位寄存器单元执行移位操作,实现数据传递1.2.1指令格式所有的指令都包含五位操作码。单字节指令在低6位指令中包含两个3位寄存器,一个是源操作数寄存器,另一个是目的操作数寄存器。双字节指令中,第一个字节中包含目标寄存器的地址,第二个字节中包含了指令地址或者操作数。指令格式如下:(1)单字指令指令的高五位是操作码,低六位是源操作数寄存器和目的操作
4、数寄存器。指令码格式如下Opcode操作码源操作数目的操作数1514131211543210(2)双字指令第一个字中包含目标寄存器的地址,第二个字中包含了指令地址或者操作数1.2.2指令操作码操作码功能表操作码指令功能00000NOP空操作00001LOAD装载数据到寄存器00010STORE将寄存器的数据存入存储器00011MOVE在寄存器之间传送操作数00100LOAD1将立即数装入寄存器00101BRANCHI转移到由立即数指定的地址00110BRANCHGTI大于是转移到立即数指定的地址00111INC加1指令01000DEC减1指令01001AND两个寄存器与操作01010OR两个寄
5、存器或操作01011XOR两个寄存器异或操作01100NOT寄存器求反01101ADD两个寄存器加运算01110SUB两个寄存器减运算01111ZERO寄存器清零10000BRANCHLTI小于时转移到由立即数指定的地址10001BRANCHLT小于时转移10010BRANCHNEQ不等于时转移10011BRANCHQI转移到立即数指定的地址10100BRANCHGT大于时转移10101BRANCH无条件转移10110BRANCHEQ等于时转移10111BRANCHQI等于时转移到立即地址11000BRANCHELTEI小于等于时转移到立即地址11001BRANCHLTE小于等于时转移1101
6、0SHL向左逻辑移位11011SHR向右逻辑移位11100ROTR循环右移11101ROTL循环左移1.3.顶层结构的VHDL设计CPU原件的VHDL描述CPU_LIB.VHDL用来说明连接各个原件之间的信号类型。描述了多个用于规定运算器功能、移位寄存操作和用于CPU控制的状态的类型。CPU_LIB.VHDLlibraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_arith.all;packagecpu_libistypet_shiftis(shftpass,shl,shr,rotl,rotr);subtypet_aluisunsign
7、ed(3downto0);constantalupass:unsigned(3downto0):0000;constantandOp:unsigned(3downto0):0001;constantorOp:unsigned(3downto0):0010;constantnotOp:unsignde(3downto0):0011;constantxorOp:unsigned(3downto0):0100;constantplus:unsignde(3downto0):0101;constantalusub:unsigned(3downto0):0110;constantinc:unsignde
8、(3downto0):0111;constantdec:unsigned(3downto0):1000;constantzero:unsignde(3downto0):1001;typet_compis(eq,neq,gt,gte,lt,lte);typestateis(reset1,reset2,reset3,reset4,reset5,reset6,execute,nop,load,store,move,load2,load3,load4,store2,store3,store4,move2,move3,move4,incPc,bgtI3,bgtI4,bgtI5,bgtI6,bgtI7,b
9、gtI8,bgtI9,bgtI10,braI2,braI3,braI4,braI5,braI6,loadI2,loadI3,loadI4,loadI5,loadI6,inc3,inc4);subtypebit16isstd_logic_vector(15downto0);endcpu_lib;二、CPU部件设计2.1.算术逻辑单元ALUALU实体结构如下:alua15.Oc15.Ob15.0sel3.OinstVHDL代码:libraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_unsigned.all;usework.cpu_lib.
10、all;entityaluisport(a,b:inbit16;sel:int_alu;c:outbit16);endalu;architecturertlofaluisbeginaluproc:process(a,b,sel)begincaseseliswhenalupass=cccccccccccifa=bthencompout=1after1ns;elsecompoutifa/=bthencompout=1after1ns;elsecompoutifabthencompout=1after1ns;elsecompoutifa=bthencompout=1after1ns;elsecomp
11、outifabthencompout=1after1ns;elsecompoutifa=bthencompout=1after1ns;elsecompout=0after1ns;endif;endcase;endprocess;endrtl;比较器RTL图Selector。sel.gte;sB15.0ACIN1EqualOSELECTORLESS_THANLessThan2sel.ltsel.lteLESS_THANsel.eq比较器RTL图Selector。sel.gte;s0田aH5A001T田bHE2D8/34cumpcmtB035sei.eqA036sei.gtA137sei.gteA
12、038MasterTimeBar:N:=UT|HValtLEst15.85ns0田aH5A001T田bHE2D8/34cumpcmtB035sei.eqA036sei.gtA137sei.gteA038sei.ItA039sei.A040sei.neqA0p控制器:CONTROL1-15.85ns.2比较器时序IStart:26.42nsInterval:10.57ns10.0ns20.0rLS30.0ns40.0ns50.0ns60.0ns仿真结果Pointer:fuG5A00(1C28):E2DI(FB19)(A218)(AAD8X4A50)(54D915.85nsJ包含实体控制器提供必要
13、的信号连线,使得数据流完全通过CPU,达到预期的功能。结构体-一个状态机,这个状态机根据当前的状态和输入的信号值,输出更新后的状态。之中,号ready和CPU输入信号有:指令信号instrReg15.O、比较器输出状态、存储器就绪信复位信号reset。输出信号时对指令instrReg15.O译码以后,对CPU所有组成部件按指令要求进行操作所需的控制信号。VHDL程序:libraryieee;useIEEE.std_logic_1164.all;usework.cpu_lib.all;entitycontrolisport(clock,reset,ready,compout:inarchitec
14、turertlofcontrolissignalcurrent_state,next_state:state;beginnxtstateproc:process(current_state,instrReg,compout,ready)beginbeginstd_logic;instrReg:inbit16;progCntrWr,progCntrRd,addrRegWraddrRegRd,outRegWr,outRegRd:outstd_logic;shiftSel:outt_shift;aluSel:outt_alu;compSel:outt_comp;opRegRd,opRegWr,ins
15、trWr,regRd,regWr,rw,vma:outstd_logic;regSel:outt_reg);progCntrWr=0;progCntrRd=0;addrRegWr=0;addrRegRd=0;outRegWr=0;outRegRd=0;shiftSel=shftpass;aluSel=alupass;compSel=eq;opRegRd=0;opRegWr=0;endcontrol;progCntrWr=0;progCntrRd=0;addrRegWr=0;addrRegRd=0;outRegWr=0;outRegRd=0;shiftSel=shftpass;aluSel=al
16、upass;compSel=eq;opRegRd=0;opRegWr=0;instrWr=0;regSel=000;regRd=0;regWr=0;rw=0;instrWr=0;regSel=000;regRd=0;regWr=0;rw=0;vmaaluSel=zeroafter1ns;shiftSel=shftpass;next_statealuSel=zero;shiftSel=shftpass;outRegWr=1;next_stateoutregRd=1;next_stateoutRegRd=1;addrRegRd=1;progCntrWr=1;next_stateregSel=ins
17、trReg(2owdnto0);regRd=1;next_stateregSel=instrReg(5owdnto3);regRd=1;aluSel=alupass;shiftSel=shftpass;next_stateprogCntrRd=1;alusel=inc;shiftsel=shftpass;next_stateprogcntrRd=1;alusel=inc;shiftsel=shftpass;next_stateaddrRegWr=1;next_state=addrRegWr=1;next_statevma=1;rw=0;next_statevma=1;downto3);Bran
18、chGTImmdownto0);regRd=1;next_stateregSel=instrReg(2regRd=1;alusel=inc;shiftsel=shftpass;next_statenext_state=incPc;rw=O;fready=1theninstrWr=1;next_state=execute;elsenext_statecaseinstrReg(15owhto11)iswhenOOOOO=next_stateregSel=instrReg(5owhto3);regRd=1;regSelregSel=instrReg(5downto3);regRd=1;0);3);3
19、);3);next_statevma=1;rw=0;next_statevma=1;rw=0;regSel=instrReg(2downtoregWr=1;next_stateregsel=instrReg(o2wntdo0)regRd=1;addrRegWr=1;next_stateregSel=instrReg(5downtoregRd=1;next_stateregSel=instrReg(5downtoregRd=1;vma=1;rw=1;next_stateregSel=instrReg(5downtoregRd=1;aluSel=alupass;shiftSel=shftpass;
20、outRegRd=1;next_stateoutRegRd=1;next_stateoutRegRd=1;regSel=instrReg(2downtoaddrRegWr=1;0);regWr=1;next_stateprogcntrRd=1;alusel=inc;shiftsel=shftpass;outRegWr=1;next_stateoutregRd=1;next_stateoutregRd=1;progcntrWr=1;addrRegWr=1;next_statevma=1;rw=0;next_statevma=1;rw=0;ifready=1thenregSel=instrReg(
21、2odwnto0);regWr=1;next_state=incPc;elsenext_stateprogcntrRd=1;alusel=inc;shiftsel=shftpass;outregWr=1;next_stateoutregRd=1;next_stateoutregRd=1;progcntrWr=1;addrRegWr=1;next_statevma=1;rw=0;next_statevma=rwifprogCntrWr=1;0;ready=1;next_state=1=then0);0);=next_stateif;regsel=instrReg(o5wntdoregRd=1;o
22、pRegWr=1;next_stateopRegRd=1;regSel=instrReg(2regRd=compselnext_statewhenbgtI4opRegRd=1;gt;bgtI4;=1afterregSel=instrReg(2regRd=1;compsel=gt;ifcompout=13);=1;downtodownto1ns;downtothennexstatebgtI5;next_stateif;progcntrRd=alusel=incshiftSel=shftpass;next_stateprogcntrRdalusel=shiftSel=1;incPc;1;=1;in
23、c;shftpass;outregWr=1;next_stateutregRd=1;next_stateoutregRd=1;progcntrWr=1;addrregWr=1;next_statevma=1;rw=0;next_statevma=1;rw=0;ifready=1thenprogcntrWrnext_state=loadPc;elsenext_stateregSel=instrReg(20);regRd=1;alusel=inc;shiftsel=shftpass;outregWr=1;next_stateoutregRd=1;next_stateoutregRd=1;regse
24、l=instrReg(o2wntdo0);regWr=1;next_stateprogcntrRd=1;next_stateprogcntrRd=addrRegWr=1;next_statevma=1;rw=0;next_statevma=1;rw=0;ifready=1theninstrWr=1;next_state=execute;elsenext_stateprogcntrRd=1;1alusel=inc;shiftsel=shftpass;next_stateprogcntrRd=rw=0;ifready=1theninstrWr=alusel=inc;shiftsel=shftpas
25、s;outregWr=1;next_stateoutregRd=1;1;next_state=execute;elsenext_statenext_state=endcase;endprocess;controlffProc:process(clock,reset)incPc;next_stateoutregRd=progcntrWr=1;addrregWr=1;next_statevma=1;rw=0;next_stateIbegin1;ifreset=1thencurrentstateafter1ns;-elsifclockeventandclock=Tthencurrentstate=n
26、extstateafter1ns;_endif;endprocess;endrtl;=reset1vmaclk【PREa15.0clk【PREENA15.0图2.4.1寄存器Reg的实体结构与RTL图REG的VHDL程序:libraryIEEE;USEIEEE.std_logic_1164.all;usework.cpu_lib.all;entityregisport(a:inbit16;clk:instd_logic;q:outbit16);endreg;architecturert1ofregisbeginregproc:processbeginwaituntilclkeventandcl
27、k=1;q=aafter1ns;endprocess;Endrt1;2.4.2.寄存器阵列AYRREGAR在执行指令时,寄存器中存储指令所处理的立即数,可对寄存器进行读或写操作。寄存器组相当于一个8x16位的RAM。当向REGARRAY的一个单元写数据时,首先输入sel作为单元地址,但elk上升沿到来时,输入数据就被写入到该单元中。当从REGARRAY的一个地址单元中读出数据时,首先输入sel作为读单元的地址,然后使输出允许控制信号en为1,这时数据就会在端口Q输出。寄存器阵列有两个独立进程,第一个进程模拟RAM存储数据,此进程中包含一个局部变量RAMDATA,它将存储的数据写到实体REGAR
28、RAY,这时如果elk上升沿到来,则根据SEL选定的单元地址输入新的值。这个进程还将单元地址传给信号TEMP-DATA,使数据传到下一个进程。寄存器阵列VHDL程序LIBRARYIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_unsigned.all;usework.cpu_lib.all;entityregarrayisport(data:inbit16;sel:int_reg;en,clk:instd_logic;q:outbit16);endregarray;architecturertlofregarrayistypet_ramisa
29、rray(0to7)ofbit16;signaltemp_data:bit16;beginprocess(clk,sel)variableramdata:t_ram;beginifclkeventandclk=1thenramdata(conv_integer(sel):=data;endif;temp_data=ramdata(conv_integer(sel)after1ns;endprocess;process(en,temp_data)beginifen=1thenq=temp_dataafter1ns;elseq1田sei5田data22en2.5.1绎多位寄存器图2.4.2寄存器阵
30、列实体结构(上)与RTL图(下)时序仿真TOC o 1-5 h z0ps&40.0ns1.28us1.92us2.5&us3.2us3.84us4.48us5.12us5.76usiiiiiiiii16.75rLSiiiiiiiiiiiiiiiiiiii;1111111111f1111iiiriiiiiriiiiIinr6r-1iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii1111111111f1111iiiriiiiiriiiiIinr6r-1iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiIi:DETSX446AXizzz和8碟3D5CX57C3来02FT;tD53D*5548194C6|:DET5丫44EA厂旳厂嵌扎)C页比5TC3X02FXD53DX5548X94CE厂实体移位寄存器SHIFT在CPU中实现移位和循环操作。SHIFT的输入总线为16位,输出总线也是16位,输
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年高危安全培训内容记录核心要点
- 2026年安全事故后培训内容重点
- 2026年瓷砖厂釉线安全培训内容实战案例
- 固原地区西吉县2025-2026学年第二学期五年级语文期中考试卷(部编版含答案)
- 甘南藏族自治州卓尼县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 崇左市龙州县2025-2026学年第二学期四年级语文第六单元测试卷(部编版含答案)
- 2026年-银行安全保卫培训内容实操要点
- 枣庄市市中区2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 喀什地区泽普县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 百色市靖西县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 2026湖北宜昌夷陵区小溪塔街道办事处招聘民政助理1人笔试备考试题及答案解析
- 2026新疆兵团第七师胡杨河市公安机关社会招聘辅警358人考试参考试题及答案解析
- 2026陕西榆林市旅游投资集团有限公司招聘7人考试备考试题及答案解析
- 2024版前列腺癌药物去势治疗随访管理中国专家共识课件
- 2026年基于责任区的幼儿园联片教研活动设计方案
- 《油气管道地质灾害风险管理技术规范》SYT 6828-2024
- 2026新疆喀什正信建设工程检测有限公司招聘12人考试参考试题及答案解析
- 2026年宁夏工业职业学院单招职业技能考试题库含答案详解(完整版)
- 会计内部监督制度
- 2026春冀人版(2024)二年级下册小学科学教案(附目录)
- 09鉴赏诗歌语言之炼字炼句
评论
0/150
提交评论