实验七、八微程序2012_第1页
实验七、八微程序2012_第2页
实验七、八微程序2012_第3页
实验七、八微程序2012_第4页
实验七、八微程序2012_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

实验七、八微程序控制器设计,2012年11,一、实验目的:1、通过实验,进一步理解微程序控制器的组成结构。理解微程序控制器的控制原理,掌握微指令格式和各字段功能。2、加深理解微程序控制器的工作原理。掌握指令流程与功能3、理解掌握微程序控制器的设计思路与方法,掌握微程序的编制、写入、观察微程序的运行,学习基本指令的执行流程。二、实验原理1、微程序控制器的组成原理控制存储器:实现整个指令系统的所有微程序,一般指令系统是规定的由高速半导体存储器构成,容量视机器指令系统而定,取决于微程序的个数,其长度就是微指令字的长度。微指令寄存器:存放从控存读出的当前微指令。微操作控制字段将操作控制信号送到控制信号线上,微地址字段指出下一条微地址的形成。微地址寄存器:存放将要访问的下一条微指令地址地址转移逻辑:形成将要执行的微指令地址,形成方式:取指令公操作所对应的微程序一般从控存的0地址开始,所以微程序的人口地址0是由硬件控制的。当出现分支时,通过判别测试字段、微地址字段、和执行部件的反馈信息形成后即微地址。,Cpu设计步骤:拟定指令系统确定总体结构(数据通路)安排时序拟定指令流程。根据指令系统,写出对应所有机器指令的全部微操作,然后列出操作时间表确定微指令的控制方式、下地址形成方式、微指令格式及微指令字长,编写全部的微指令的代码,最后将编写的微指令放入控制存储器中。,指令系统是设计计算机的依据,拟定指令系统将涉及基本字长、指令格式、指令类型、寻址方式等内容。根据内存的字长,可定基本字长8位,指令格式:单字长,(双字长指令,在双字长指令格式中,第二个字节一般定义为操作数或操作数地址。)总体结构:根据要求设计数据通路,1、定义指令系统字长8位,采用一地址指令指令格式操作码3位,地址码5位操作码000LOAD001STORE010ADD011SUBBNE其中(101,110,111为今后扩展指令留用)寻址方式:直接寻址,为了简单指令采用一地址指令如下面程序Load4将内存4地址的操作数送ACC累加器Add5将内存5地址的操作数取出与ACC相加Stare6将ACC的内容存入内存6号地址Bne7判断,结果Z_flag不为0,跳转到内存7地址所指的地址执行指令,操作码对应的编码LOAD000,STORE001,ADD010,SUB011,BNE100,内存中储存的机器指令,参考设计,机器指令的编码(机器语言),指令执行的基本过程,3、方案选择8位模型机设计,单总线,采用微程序控制方式。寻址方式:直接,(寄存器,寄存器间接和变址寻址)微程序控制方式由微指令译码器产生,一条机器指令分成若干步执行,每一步需要若干个微命令及微指令,若干条微指令组成一段微程序。放入控制存储器。微程序执行过程:(1)从存储器中逐条取出从控制存储器中逐条取出“取指微指令”执行取指令公操作。(2)、根据指令操作码,经过微地址形成部件,得到该机器指令微程序入口地址,并送入微地址寄存器,(3)、从控制存储器逐条读出对应的微指令并执行(4)、执行完一条机器指令对应的微程序后又回到取指微程序的入口微地址,继续第一步(1),(5)、采用微程序的控制,设计微指令的格式、操作字段15位,下地址字段5位,(6)操作控制字段:采用直接控制方法,位数与设计的微命令的个数一致,,3、确定数据通路含有那些部件,部件功能,之间的连接、指令信息,地址信息,数据信息传递的路径,从而得到所需要的位命令(15个),寄存器部件ACC,MDR,MAR,IR,PC,均为8位8位,运算器部件ALURAM,微程序控制逻辑部件:微地址形成部件控制存储器微指令寄存器微地址寄存器译码器,IR,PSW,PC,微地址形成电路,微地址寄存器AR,微指令寄存器,控制存储器CM,微命令序列,微命令字段,微地址字段,指令代码,运行状态,微程序控制基本框图,。,数据通路设计单总线结构8位,主要包括:,确定总体结构。,4、拟定指令系统。,操作码,地址码,指令格式,寻址方式,直接寻址,指令中给出操作数的地址,指令系统设计:load,store,add,sub,bne,格式、寻址方式、指令类型设置,操作码3位,最多定义8条机器指令数据传输范围RR,RSSR寻址方式,机器指令格式,为了简单,指令均为一地址指令,指令字长8位,编码000001010011100101110111,设计微命令微操作控制信号产生在微程序控制器中,微操作控制信号由微指令产生,并且可以重复使用。控制存储器用来实现整个指令系统的所有微程序,一般指令系统是固定的,所以实现指令系统的微程序也是固定的,因此控制存储器程序也是固定的。一般采用高速半导体存储器。其容量视机器指令系统而定。即取决于微程序的数量,其字长等于微指令的长度。,微程序控制器的设计步骤,IR,PSW,PC,微地址形成电路,微地址寄存器AR,微指令寄存器,控制存储器CM,微命令序列,微命令字段,微地址字段,指令代码,运行状态,微程序控制基本框图,。,可根据需要扩展,根据微命令表,设计微指令:微指令设计,采用直接控制水平微指令微命令的位置安排任意基本格式如下:,微指令的编码,操作控制字段,下地址字段,采用直接控制方法15个控制信号,5位下地址,微指令格式,(1)设计微程序确定微程序流程图,也就是控制算法流程图。(2)确定微指令格式微指令格式中的操作控制字段取决于执行部件的子系统需要多少微指令。假定采用直接控制方式,执行部件需要15个微命令,则操作控制字段需要15位。测试判别字段取决于微程序流程图中有多少处分支转移。假定有3处分支,则测试判别字段需要3位。下址字段取决于微程序流程图的规模。假定微程序共用50条微指令,则下址字段至少需要6位。这是因为ROM地址译码时,26=64,6位地址可容纳64条微指令。(3)将微程序编译成二进制代码(4)微程序写入控制存储器(5)设计硬件电路,微程序控制器的设计步骤,在系统的一个基本周期(又称机器周期,一般由几个时钟周期组成)中,一组实现一定操作功能的微命令的组合,构成一条微指令。强调两点:第一,一条微指令的有效持续时间为一个系统基本周期,它表示从CM中读出微指令与执行这条微指令的时间总和。当从ROM中读出下一条微指令后,当前的这条微指令即失效。第二,一条微指令中包含若干个微命令,它们分头并行地控制执行部件进行相应的微操作。微指令除给出微命令信息外,还应给出测试判别信息。一旦出现此信息,执行这条微指令时要对系统的有关“状态标志”进行测试,从而实现控制算法流程图的条件分支。微指令中还包含一个下址字段,该字段将指明ROM中下一条微指令的地址。,微程序控制器的结构与微指令的格式密切相关。上图是微程序控制器的结构框图。它由控制存储器、微地址寄存器、微命令寄存器和地址转移逻辑几部分组成。微地址寄存器和微命令寄存器两者的总长度即为一条微指令的长度,二者合在一起称为微指令寄存器。,地址转移逻辑:用来形成要执行的微指令的地址,形成方式一般有以下几种:取指令公操作所对应的微程序一般安排在控制存储器的0号单元,所以微程序的入口地址0是由硬件强制规定的。当微程序出现分支时通过判断测试字段微地址字段和执行部件的反馈信息形成微地址,包括根据操作码转移情况。微程序控制器执行过程描述1、从CM逐条取出“取机器指令的微指令,执行取指令公操作,执行完后,从主存取出的机器指令就已经存入指令寄存器IR2、根据IR中的操作码,经过地址形成部件,得到这条指令对应的微程序入口地址。并送入微地址寄存器。3、从CM中逐条取出对应的微指令并执行4、执行完一条机器指令的一段微程序后,又回到取指微程序的人口地址,继续第1步,4、绘微程序的流程图5、依据微程序的流程图给出微程序编码,常用下地址生成方法:计数器方法、真量方式与断定方式结合方法多路转移方法每条机器指令的操作码如何与其微程序人口地址对应,通过编码方法将指令码的状态分成不同的几个,在用微地址进行编码,实验内容:单总线,采用微程序控制,寻址方式:采用直接(,寄存器,寄存器间接,变址)。微程序控制器控制方式由微指令译码产生,取指令,PCMAR,PC1PC,MMDRIR,执行,addrMAR,MMDRACC,Load地址码,主存中的数据读入ACC,拟定指令流程和微命令序列。,拟定指令流程,拟定指令流程和微命令序列。,微命令序列。,取指令,PCMAR,PC1PC,CSR_NWMMDRIR,执行,addrMAR,MMDRALU(ACC),取指,取操作数,拟定指令流程和微命令序列。,Load:把主存内容读入ACCStore:把ACC内容存入主存Add:主存内容与ACC相加Sub:主存内容与ACC相减Bne:转移,形成控制逻辑。,00010100010000000001,00000000000110000010,1、地址转移逻辑:用来形成要执行的微指令的地址,形成方式一般有以下几种:取指令公操作所对应的微程序一般安排在控制存储器的0号单元,所以微程序的入口地址0是由硬件强制规定的。当微程序出现分支时通过判断测试字段微地址字段和执行部件的反馈信息形成微地址,包括根据操作码转移情况。微程序控制器执行过程描述(1)、从CM逐条取出“取机器指令的微指令,执行取指令公操,执行完后,从主存取出的机器指令就已经存入指令寄存器IR(2)、根据IR中的操作码,经过地址形成部件,得到这条指令对应的微程序入口地址。并送入微地址寄存器。(3)、从CM中逐条取出对应的微指令并执行(4)、执行完一条机器指令的一段微程序后,又回到取指微程序的人口地址,继续第1步,如果下地址为01111时,下条微指令的地址为:下地地址的高2位与操作码组合即01OP的编码;如LOAD指令,开始的下地址为:01000如果下地址为:10000时,依据ZF标志位产生分支。下一条微指令地址为:其他下一条微指令的地址为就是微指令中提供的下地址。WHDL编写1、定义存储器,存放验证的指令及其操作数2、定义控制存储器,存放微程序3、定义进程进程中完成的操作为:如果RESET=0,包含PC=0,微地址为0,否则在时钟的上升沿时取出微指令,或的下地址,依据有效的微命令,执行相应的微操作。,2、下地址的形成,Load微程序人口地址010008Store010019Add0101010Sub0101111Bne0110012,2、微程序控制器执行过程A)从控存中逐条读出“取机器指令”用的微指令,并执行取指令公操作,执行完后,从主存读出的机器指令放入IR.B)根据IR中的操作码,经过地址形成部件得到该机器指令对应的微程序入口地址,并送入微地址寄存器。C)从控存中逐条取出对应的微指令并执行。D)执行完对应的的一条机器指令的一段微程序后又回到取指微程序的入口微。地址。继续A)3微指令编码法直接控制法:就是在微指令的操作控制字段中,每一个微命令都用一位信息表示,只要将控制字段中表示该命令的相应位置1或置0就可以打开或关闭某个控制门。微命令的产生不必经过译码,【控制简单,直观、操作并行性好,缺点:微指令太长】,上图中标明了一个基本机器周期中的控制时序信号。例如用上一周期的T4时间按微地址寄存器内容从ROM中读一条微指令,经过一段时间后被读出,用当前周期的T1时间打入到微指令寄存器。T2、T3时间用来控制执行部件进行操作。T4时间修改微地址寄存器内容并读出下一条微指令。,PC,AR,IR,安排指令时间表,微指令编码,操作码地址码,地址转移逻辑,IR,微地址寄存器,操作控制字段,顺序控制字段,微命令操作信号,逻辑程序入口,微指令,一条微指令的有效持续时间为一个系统基本周期,微程序编码,微地,0=00010100010000000001,1=00000000000110000010,2=00001010000000000011,3=00000100001000001111,4=00100010000000000000,5=00000000000100000000,6=00000010100001000000,7=00000010100000100000,8=00000000000110000100,-LOAD9=01000001000000000101,-STORE10=00000000000110000110,-ADD11=00000000000110000111,-12=00000000000110010000,13=10000010000000000000,14=00000000000000000000);,取指,Addr_busLoad_MAR,控制存储器设计,微地址03的下地址位01111,说明应该是根据指令操作码来形成。即下地址的低3位是指令操作码。高2位为01因此LOAD指令的开始的微地址是01000(也可以用其他形成方式)Load01000store01001Add01010Sub01011Bne01100地址12的下地址,也要根据运算器的结果是否位“0”来判断,所以其下地址设为10000,以决定下地址是13还是14至于控制信号何时为“1”,-CPU头文件cpu_defsLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;PACKAGEcpu_defsIS-定义程序包,包头,包体TYPEopcodeIS(load,store,add,sub,bne);-定义用std_logic等不方便定义的类型,一般将第一个枚举量(最左边)编码为0CONSTANTword_w:NATURAL:=8;CONSTANTop_w:NATURAL:=3;CONSTANTrfill:STD_LOGIC_VECTOR(op_w-1downto0):=(others=0);-FUNCTIOnslv2op(slv:INSTD_LOGIC_VECTOR)RETURNopcode;FUNCTIONop2slv(op:inopcode)RETURNSTD_LOGIC_VECTOR;ENDPACKAGEcpu_defs;PACKAGEBODYcpu_defsISTYPEoptableISARRAY(opcode)OFSTD_LOGIC_VECTOR(op_w-1DOWNTO0);-数组有5个元素,其他均0CONSTANTtrans_table:optable:=(000,001,010,011,100);FUNCTIONop2slv(op:INopcode)RETURNSTD_LOGIC_VECTORISBEGINRETURNtrans_table(op);ENDFUNCTIONop2slv;ENDPACKAGEBODYcpu_defs;,-实验7-8微程序控制器实验LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL,IEEE.NUMERIC_STD.ALL;USEWORK.CPU_DEFS.ALL;-使用自己定义的程序包ENTITYCPUISPORT(clock:INSTD_LOGIC;-时钟reset:INSTD_LOGIC;-复位mode:INSTD_LOGIC_VECTOR(2DOWNTO0);-查看用mem_addr:INUNSIGNED(word_w-op_w-1DOWNTO0);-地址output:OUTSTD_LOGIC_VECTOR(word_w-1DOWNTO0);data_r_out:OUTSTD_LOGIC_VECTOR(19DOWNTO0);-微指令Rop_out:OUTSTD_LOGIC_VECTOR(op_w-1DOWNTO0);-操作码add_r_out:OUTUNSIGNED(4DOWNTO0)-微地址R);ENDENTITY;,ARCHITECTURErtlOFCPUISTYPEmem_arrayISARRAY(0TO2*(word_w-op_w)-1)OFSTD_LOGIC_VECTOR(word_w-1DOWNTO0);-定义RAMSIGNALmem:mem_array;CONSTANTprog:mem_array:=(0=op2slv(load),CONSTANTcode:microcode_array:=(-控制存储器0=00010100010000000001,1=00000000000110000010,2=00001010000000000011,3=00000100001000001111,4=00100010000000000000,5=00000000000100000000,6=00000010100001000000,7=00000010100000100000,8=00000000000110000100,-LOAD9=01000001000000000101,-STORE10=00000000000110000110,-ADD11=00000000000110000111,-12=00000000000110010000,13=10000010000000000000,14=00000000000000000000);,SIGNALcount:UNSIGNED(word_w-op_w-1DOWNTO0);SIGNALop:STD_LOGIC_VECTOR(op_w-1DOWNTO0);SIGNALz_flag:STD_LOGIC;SIGNALmdr_out:STD_LOGIC_VECTOR(word_w-1DOWNTO0);SIGNALmar_out:UNSIGNED(word_w-op_w-1DOWNTO0);SIGNALIR_out:STD_LOGIC_VECTOR(word_w-1DOWNTO0);SIGNALacc_out:UNSIGNED(word_w-1DOWNTO0);SIGNALsysbus_out:STD_LOGIC_VECTOR(word_w-1DOWNTO0);EGINPROCESS(reset,clock)VARIABLEinstr_reg:STD_LOGIC_VECTOR(word_w-1DOWNTO0);VARIABLEacc:UNSIGNED(word_w-1DOWNTO0);CONSTANTzero:UNSIGNED(word_w-1DOWNTO0):=(OTHERS=0)VARIABLEmdr:STD_LOGIC_VECTOR(word_w-1DOWNTO0);VARIABLEmar:UNSIGNED(word_w-op_w-1DOWNTO0);VARIABLEsysbus:STD_LOGIC_VECTOR(word_w-1DOWNTO0);VARIABLEmicrocode:microcode_array;VARIABLEadd_r:UNSIGNED(4DOWNTO0);VARIABLEdata_r:STD_LOGIC_VECTOR(19DOWNTO0);VARIABLEtemp:STD_LOGIC_VECTOR(4DOWNTO0);BEGIN,-内部信号传递,IFreset=0THENadd_r:=(OTHERS=0);count0);instr_reg:=(OTHERS=0);acc:=(OTHERS=0);mdr:=(OTHERS=0);mar:=(OTHERS=0);z_flag0);,ELSIFRISING_EDGE(clock)THEN-microprogramcontrollerdata_r:=code(TO_INTEGER(add_r);IFdata_r(4DOWNTO0)=01111THEN-判断下地址temp:=01,-PCIFdata_r(16)=1THEN-PC_bus=1sysbus:=rfill,-ALUIFdata_r(17)=1THEN-load_ACC=1acc:=UNSIGN

温馨提示

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

评论

0/150

提交评论