实验四 微程序控制器实验.doc_第1页
实验四 微程序控制器实验.doc_第2页
实验四 微程序控制器实验.doc_第3页
实验四 微程序控制器实验.doc_第4页
实验四 微程序控制器实验.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

实验四 微程序控制器实验实验目的1、深入理解微程序控制器的功能和组成结构;2、学习教学计算机各类指令的指令格式、寻址方式及执行流程;3、学习微程序控制器的设计过程和相关技术。实验内容1、分析基本指令的执行流程,在教学机上验证其对应的微指令;2、设计几条指令的功能、格式和指令流程,并在教学计算机上进行测试。实验要求1、实验之前,认真准备,对于该实验的基本原理、微指令格式、以及相关机器指令的微程序等内容预先做好分析和设计;2、实验过程中,应认真进行实验操作,仔细思考实验有关内容,把难点内容通过实验理解清楚,争取最好的实验效果;3、实验之后,应认真思考,写出实验总结,包括实验中遇到的主要问题和分析、解决方法。实验学时4学时实验原理1、tec-xp教学机的控制器基本原理tex-xp教学机中包含组合控制逻辑和微程序控制逻辑两种不同结构的控制器。本实验中使用的是微程序控制器,与微程序控制器相关的机器结构如图4-1所示。控制器中使用程序计数器pc跟踪机器指令的执行,使用pc中的内容访存获取机器指令,得到的机器指令送入控制器中的指令寄存器ir暂存,并由微程序控制器分析执行,执行过程中的所有控制信号均由微程序控制器中的微命令寄存器ir发出。图4-1 tec-xp教学机的基本结构tec-xp教学机的微程序控制器详细内部结构如图4-2所示。该控制器中包含指令寄存器ir(存放当前执行的指令)、地址映射部件(确定不同指令对应的微程序入口地址)、微程序定序器am2910(根据微指令中的下址字段和判断测试条件,产生下一条微指令的地址)、条件判定线路(用于微程序流向控制)、控制存储器cm(包含所有的微指令)、微指令寄存器ir(存放当前微指令的操作控制字段)等部件。图4-2 微程序控制器内部结构微程序控制器的工作过程是:对于指令寄存器ir中的机器指令,由地址映射部件产生该指令所对应微程序的入口地址,通过am2910送给控制存储器。取出的一条微指令送入微指令寄存器,其中的微命令字段用于发出控制信号,控制各部件的执行,下址字段与条件判定线路的各测试信号一起送给am2910,由其确定下条微指令的地址,继续执行。2、地址映射部件地址映射部件,即微指令地址映射部件,它是由一片e2prom构成的,一般称为maprom。指令寄存器ir将其中的高8位指令操作码送给maprom,maprom根据操作码与微地址之间的映射关系,给出该指令对应微程序的入口地址。tec-xp教学机中的指令操作码与微地址之间的映射关系如附录表4-1所示。3、tec-xp教学机的微指令格式tec-xp教学机的微指令共48位,由16位的下址字段和32位的操作控制字段形成,其格式如图4-3所示。图4-3 tec-xp教学机的微指令格式(1)下址字段a) 8位的微下址用于给出下一条将要执行的微指令的地址。微程序顺序执行,即把已增1后的微指令地址作为下地址b) 4位的测试控制码ci30用于决定微程序中的微指令寻址方式(顺序寻址、跳跃寻址)。本实验中只使用到0000(初始化,使微下址=0)、0010(指令功能分支,做maprom映射)、0011(条件转移,由scc决定是否转移)、1110(顺序寻址,将当前微地址加1作为微下址)这四个命令码。c) 4位的转移条件编码scc30当ci30=0011时,由这四位编码决定转移判断测试的条件,若选中条件满足,则使用微下址寻址下一条微指令,否则做顺序寻址,同ci30=1110。下址字段的这3部分控制信号与形成微地址的关系详如附录表4-2所示。(2)操作控制字段a) miq、req、we这3位控制信号用于对存储器或i/o接口进行读写操作时的控制。具体定义如附录表4-3所示。b) i8-i6、i5-i3、i2-i0、a口和b口、sst2-0:具体定义参考实验二。c) ssh、sci1-0:本实验中控制方式如附录表4-3所示。d) dc1用于选择把哪一组数据发送到cpu的内部总线(ib)上。在微指令执行过程中,若不使用内部总线,则通常将其设置为000,可认为是无效状态。e) dc2用于控制数据接收及相关的内部功能。dc1和dc2的控制方式如附录表4-4所示。4、控制存储器控制存储器字长48位,用来存放tec-xp教学机的所有微指令。硬件实现时,是使用两片eeprom芯片(58c64)存放16位下地址字段信息,而32位操作控制字段信息存放在mach器件内。每次读控制存储器时,从这三个芯片中读出一条微指令。48位的微指令寄存器也分为两段,即16位的下地址信息,和32位的微命令信息。5、a、b、c、d组指令执行流程tec-xp教学计算机中,按照每条指令的功能和实际的执行步骤,将指令分成了a、b、c、d共4组,每条指令的所属组详见具体的指令描述。a组中的指令执行时,一般只是完成通用寄存器间的数据运算或传送,在取指后可一步完成。b组中的指令,一般需要完成一次内存或i/o读、写操作,在取指后可两步完成:第一步把要使用的地址传送到地址寄存器ar中,第二步执行内存或i/o读写操作。c组中的指令,在取指后可三步完成:其中calr在用两步读写内存后,第三步执行寄存器间的数据传递;而其它指令在第一步置地址寄存器arh、arl,第二步读内存(即取地址操作数)、计算内存地址、置地址寄存器arh、arl,第三步读、写内存。d组中的指令,完成两次读、写内存操作,在取指之后可四步完成。tec-xp教学机的基本指令、扩展指令执行流程分别由附录中图4-4和4-5给出。6、tec-xp教学机的数据通路与微命令的关系微指令的操作控制字段直接用于控制tec-xp教学机中的各个执行部件,顺序控制字段分别送微程序控制器中的微地址寄存器和转移控制逻辑,用于产生微下址,寻址微指令。图4-4中给出了微指令中的各个字段与tec-xp教学机数据通路的对应关系,可帮助理解微指令的应用。图4-4 tec-xp教学机的数据通路与微命令实验步骤请根据每个步骤的详细要求,完成本实验内容。1、设定工作方式接通tec-xp教学机的电源,将功能开关拨为11010,即设为单步、手动执行指令,使用微程序控制器,联机操作。2、验证a组基本指令加法指令add r0,r1的微程序根据如下所示的add指令格式,可得到指令add r0 , r1的机器代码为00000000 00000001,其中高8位为add指令的操作码(详见代码表4-1),接下来的两个4位分别对应r0和r1寄存器。先按下reset按键,复位系统,然后通过16位的数据开关sw拨入指令代码,再按下reset按键,此时指示灯microp亮,其它灯全灭。注意:在本实验中,选择的是微程序控制器,microp指示灯会一直点亮。由附录图4-5所示的基本指令流程可知,加法指令add r0 , r1的整个指令周期包含6个cpu周期,其中前3个cpu周期是取指阶段,所有指令都是一样的,第4个cpu周期用于指令操作码的地址映射,第5个cpu周期完成加法指令的功能,第6个cpu周期用于判断是否需要执行中断周期,从而决定该加法指令执行结束后的流向。该加法指令的微程序如表4-6所示。在完成以上设置后,接下来每次按下start按键,控制器就会执行一条微指令,请在实验前看懂以下微指令,在实验中验证每条微指令,并记录每条微指令执行时微地址、微下址指示灯的状态。表4-6 加法指令add r0 , r1的微程序微地址操作功能下址ci30scc30mrwi20i83b口a口sstsshscidc2dc100h0pc、di#=000h11100000100001011 0010101010100000111100001hpcar、pc+1pc00h11100000100011010 0000101010100000101100002hmemir00h11100000001000001 0000000000000000000100003h/map00h00100000100000001 0000000000000000000000004hr0+r1r030h00110000100001011 0000000000100100000000030hstrq、cc#=int#3ah00110010100111000 00000000000000000000011(1)公操作微指令(0pc、di#=0)该微指令在控制存储器中位于第一个单元,即微地址为00h,是程序运行时的初始操作。本实验中由于是脱机单步运行状态,因此每条指令执行时都需要该微指令。该操作中的pc清零是通过运算器的pc本身相减得到的,因此这里与运算器相关的控制信号应选择i20=001(选择a、b锁存器输入)、i86=011(fb,结果保存到b口指定寄存器)、i53=001(s-r,减法运算)、b口=0101(指定r5,即pc)、a口=0101(指定r5,即pc)、sst=000(标志位保持不变)、ssh sci=001(减法运算的最低位进位cin=1)。该操作中不需要访存,或访问io,因此mrw为100(无读写)。dc1无用,选择000。本条微指令的另一个操作di#=0,使用dc2=111,选择关中断实现。本条微指令执行完成后应进入指令的取指周期,因此要转向执行pcar微指令,因此,ci应选择1110(顺序寻址),则下条微指令的地址应在本条微指令地址(00h)的基础上加1,即01h。顺序寻址方式下,scc无效,直接写0000。(2)送指令地址微指令(pcar、pc+1pc)本条微指令首先要做的是pcar的操作,这里使用a口地址指定pc,即0101,并设置i86=010(使a口指定内容输出到内部总线上),dc2=011(指定ar接收内部总线上的数据)。本条微指令中要完成的pc+1pc,仍然通过运算器做加法,加上cin来实现,故控制信号i20=011(选择0、b数据),b口=0101(b口指定pc),i86=010(fb,运算结果送pc),i53=000(加法运算),sst=000(标志位保持不变)、ssh sci=001(增量运算中使用最低进位位cin提供加数)。该操作中不需要访存,或访问io,因此mrw为100(无读写)。dc1无用,选择000。本条微指令将所要访问主存单元的地址送给ar,则接下来应从主存中读出机器指令字,即本条微指令之后的微指令一定是memir,因此,ci应选择1110(顺序寻址),则下条微指令的地址应在本条微指令地址(01h)的基础上加1,即02h。顺序寻址方式下,scc无效,直接写0000。(3)读指令字微指令(memir)本条微指令需要做访存读取机器指令,因此运算器相关的命令可设置无效,即i20=000,i86=001,i53=010,a口=0000,b口=0000,sst=000(标志位保持不变)、ssh sci=000。访存获取的指令字应存放于指令寄存器ir中,因此,mrw=001(内存读),dc2=001(ir接收)。dc1无用,选择000。本条微指令执行后,控制器应进行操作码的译码,做微地址映射,因此,ci应选择1110(顺序寻址),则下条微指令的地址应在本条微指令地址(02h)的基础上加1,即03h。顺序寻址方式下,scc无效,直接写0000。注意:以上3条微指令是适用于所有指令的取指操作的。(4)地址映射微指令(/map)本条微指令主要是由地址映射部件,根据指令操作码给出对应的指令周期微程序的入口地址,故,本条微指令中有关运算器和访存的控制信号均无效,即i20=000,i86=001,i53=010,a口=0000,b口=0000,sst=000(标志位保持不变),ssh sci=000,dc1=000,dc2=000。微地址的映射用ci的2号命令控制,即ci30=0010(指令功能分支),scc30=0000(必转)。下址字段无效,写00h。根据地址映射表4-1可知,add指令的微程序入口地址为04h,故该微指令执行后,下址指示灯显示为0000 0100。(5)加法微指令(r0+r1r0)本条微指令主要完成两个通用寄存器的加法运算,由实验二可知,运算器相关的控制信号为:i20=001(选择ab口数据),i86=011(fb),i53=000(加法运算),a口=0001(r1作为源操作数),b口=0000(r0作为目的操作数),sst=001(运算影响标志位),ssh sci=000(cin=0)。本条微指令无访存控制,因此dc1=000,dc2=000。本条微指令执行结束时,add指令功能已完成,即指令的执行周期完成,按照指令周期的流程,这里需要检查系统是否有中断请求。因此,本条微指令执行结束即应转向中断判断微指令,ci30=0011码(条件转移),scc30=0000(必转),下址字段给出中断判断微指令的地址,30h。(6)中断判断微指令(strq、cc#=int#)本条微指令用于判断当前系统是否有中断请求,若有,则转去处理中断(地址为3ah的微指令),否则顺序执行下一条机器指令(地址为31h的微指令)。因此,ci30=0011码(条件转移),所依据的条件应为scc30=0010(若有中断请求时转移),下址=3ah。在进行中断判断时,需要使用到标志位状态,因此,本条微指令需要做的另一个操作是dc1=011(将标志位送到内部总线上),用以判断中断。3、验证b组基本指令传送指令mvrd r0,d的微程序指令mvrd是将立即数传送到指定寄存器的数据传送类指令,该指令是双字长双操作数指令。其指令格式如下所示,则指令mvrd r0 , d的机器代码的高16位为10001000 00000000,其中高8位为mvrd指令的操作码(详见代码表4-1),接下来的4位对应目的寄存器r0。本次实验中,只是验证指令的微程序,至于该指令所传送的数据d可采用存储单元中的随机值。先按下reset按键,复位系统,然后通过16位的数据开关sw拨入指令代码,再按下reset按键,此时指示灯microp亮,其它灯全灭。由附录图4-5所示的基本指令流程可知,传送指令mvrd r0 , d的指令周期共包含7个cpu周期,比a组指令在执行阶段多一个cpu周期,主要用于访存获取操作数。这里mvrd的源操作数是立即数寻址方式,其值保存于指令的第二个字上,而tec-xp教学机是16位机,在取指阶段仅读出该指令的第一个字,所以,在访存取操作数时应使用pc中的地址寻址存储单元,执行1dh的微指令。该传送指令的微程序如表4-6所示。在完成以上设置后,接下来每次按下start按键,控制器就会执行一条微指令,请在实验前看懂以下微指令,在实验中验证每条微指令。表4-6 传送指令mvrd r0 , d的微程序微地址操作功能下址ci30scc30mrwi20i83b口a口sstsshscidc2dc100h0pc、di#=000h11100000100001011 0010101010100000111100001hpcar、pc+1pc00h11100000100011010 0000101010100000101100002hmemir00h11100000001000001 0000000000000000000100003h/map00h00100000100000001 000000000000000000000001dhpcar、pc+1pc、cc#=01ch00110000100011010 000010101010000010110001chmemdr、cc#=030h00110000001111011 0000000000000000000000030hstrq、cc#=int#3ah00110010100111000 00000000000000000000011在传送指令mvrd r0 , d执行过程中,前3条取指相关的微指令和最后1条中断处理微指令与add之前完全相同,这里只对不同的3条微指令进行介绍。(1)地址映射微指令(/map)本条微指令主要是由地址映射部件,根据指令操作码给出对应的指令周期微程序的入口地址,故,本条微指令中有关运算器和访存的控制信号均无效,即i20=000,i86=001,i53=010,a口=0000,b口=0000,sst=000(标志位保持不变),ssh sci=000,dc1=000,dc2=000。微地址的映射用ci的2号命令控制,即ci30=0010(指令功能分支),scc30=0000(必转)。下址字段无效,写00h。根据地址映射表4-1可知,mvrd指令的微程序入口地址为1dh,故该微指令执行后,下址指示灯显示为0001 1101。(2)取机器指令的第二个字节微指令(pcar、pc+1pc、cc#=0)由于mvrd指令是双字指令,在取指阶段仅从主存中取得了指令中包含操作码的高字部分,这里要执行该指令时,必须获取指令的第二个字数据,即指令中的16位立即数。因此,在完成地址映射后,应执行该微指令,再次读取主存。本条微指令的执行与取指阶段pcar、pc+1pc微指令的操作控制部分完全相同,但顺序控制部分,根据指令的执行流程可知,下条微指令应将使用主存中读得的立即数给目的寄存器赋值。因此ci30=0011(条件转移),scc30=0010(必转),所要转向的地址由下址字段给出,即1ch。(3)访存赋值微指令(memdr、cc#=0)本条微指令是将存储单元中读得的立即数给目的寄存器赋值。这里使用运算器d+0r操作实现,其中d为从存储单元中读出的操作数。因此,mrw=001(内存读),i20=111(选择外部数据d和0),i86=011(fb),i53=000(加法),a口未用,b口=0000(指定目的寄存器r0),sst=000(标志位保持不变),ssh sci=000(cin=0)。本条微指令中dc1=000(无效),dc2=000(无操作)。本条微指令执行结束时,mvrd指令功能已完成,即指令的执行周期完成,按照指令周期的流程,这里需要检查系统是否有中断请求。因此,本条微指令执行结束即应转向中断判断微指令,ci30=0011码(条件转移),scc30=0000(必转),下址字段给出中断判断微指令的地址,30h。4、分析d组基本指令子程序调用指令cala adr的微程序指令cala是将立即数传送到指定寄存器的数据传送类指令,该指令是双字长双操作数指令。其指令格式如下所示,则指令cala adr的机器代码的高16位为11001110 00000000,其中高8位为cala指令的操作码(详见代码表4-1),接下来的4位对应目的寄存器r0。本次实验中,只是验证指令的微程序,至于该指令所用到的直接地址可采用存储单元中的随机值。先按下reset按键,复位系统,然后通过16位的数据开关sw拨入指令代码,再按下reset按键,此时指示灯microp亮,其它灯全灭。由附录图4-5所示的基本指令流程可知,子程序调用指令cala adr的指令周期共包含9个cpu周期,执行阶段比b类指令多用2个cpu周期。cala指令的微程序如表4-7所示。在完成以上设置后,接下来每次按下start按键,控制器就会执行一条微指令,请在实验前完成对表4-7中每条微指令的分析,在实验中验证,并分析每条微指令的具体功能。表4-7 子程序调用指令cala adr的微程序微地址操作功能下址ci30scc30mrwi20i83b口a口sstsshscidc2dc100h0pc、di#=000h11100000100001011 0010101010100000111100001hpcar、pc+1pc00h11100000100011010 0000101010100000101100002hmemir00h11100000001000001 0000000000000000000100003h/map00h00100000100000001 000000000000000000000001fhpcar、pc+1pc00h11100000100011010 0000101010100000101100020hmemq00h11100000001111000 0000000000000000000000021hsp-1sp、spar00h11100000100011011 0010100000000000001100022hpcmem、qpc、cc#=030h00110000000010010 0000101010100000000000130hstrq、cc#=int#3ah00110010100111000 000000000000000000000115、设计扩展指令adc、stc、ldra、calr的微程序tec-xp教学机支持动态微程序设计,即允许用户把自己设计的微程序写入控制存储器中,当扩展指令需要执行时,直接从控制存储器中读取对应的微指令执行即可。但写控制存储器时,需要用到硬件描述语言vhdl,故在本次实验中,对于扩展实验直接采用出厂已设计好的扩展指令进行验证。扩展指令adc、stc、ldra、calr的执行周期相关微指令如表4-8所示,请在实验时以单步方式进行验证。表4-8 若干扩展指令的执行周期微程序指令微地址操作功能下址ci30scc30mrwi20i83b口a口sstsshscidc2dc1adc50hdr+sr+cfdr30h00110000100001011 00000000000001010000000stc57h1cf30h00110000100000001 00000000000100000000000ldra5bhpcarpc+1pc00h11100000100011010 000010101010000010110005chmemar1ch00110000001111001 00000000000000000011000calr64hsp-1spspar00h11100000100011011 0010100000000000001100065hpcmem00h11100000000100001 0000000010100000000000166hsrpc30h00110000100100011 000010100000000000000006、测试扩展指令扩展指令在使用时与基本指令不同,基本指令可以在监控环境下使用汇编命令a以汇编指令格式输入存储单元中,而扩展指令只能使用存储单元修改命令e以机器指令的形式写入存储单元中。相关扩展指令的操作码编码见表4-1。(1)设置功能开关测试扩展指令之前,先将tec-xp的功能开关设置为00010,即连续运行程序、采用微程序控制器、联机、16位机。运行“d:大板可编程器件内容”路径下的pcec16.exe文件,进入tec-xp的监控环境。(2)测试stc、adc指令将如下测试程序段输入到主存2000h开始的存储区域中。mvrd r0 , 0101mvrd r1 , 1010*stc*adc r0 , r1ret注意:带*号的指令为扩展指令,只能使用e命令写入,请先对照指令的操作码编码表4-1和指令格式写出对应指令的机器代码。使用如下格式的g命令连续运行该程序段:g 2000使用如下格式的r命令察看寄存器的内容:r可观察到运行结果应为r0=1112,r1=1010。(3)测试calr 指令对calr指令的测试需要设计一个有读写内存和子程序调用指令的程序。下面使用一个功能是读出内存中的字符,将其显示到显示器的屏幕上,转换为小写字母后再写回存储器原存储区域的程序进行测试。从地址2080h开始输入下列主程序段:mvrdr3 , 6mvrdr2 , 20f0ldrrr0 , r2mvrdr8 , 2100*calrr8decr3jrz208cincr2jr2084ret从地址2100h开始输入下列子程序段:out80mvrdr1 , 20addr0 , r1strrr2 , r0in81shrr0jrnc2105ret使用e命令将af这6个字符送入到存储单元20f0h20f5h中。使用如下格式的g命令连续运行2080h中的程序段:g 2080屏幕显示运行结果为:abcdef56使用如下格式的d命令,查看20f0h20f5h单元中的内容:d 20f0屏幕上显示查看结果应为:0061 0062 0063 0064 0065 0066(4)测试指令ldra编写一个使用ldra指令将存储单元2100h和2101h中的内容通过r0输出的程序段,测试扩展指令ldra的功能。从地址2000h开始输入下列程序段:*ldrar0 , 2100out80in81shrr0jrnc2003*ldrar0 , 2101out80ret使用e命令将要显示的两个字符“a”、“b”写入存储单元2100h和2101h中。在如下格式的g命令,连续运行以上程序段:g 2000屏幕上将会显示预设置字符a、b。实验报告要求本次实验需完成实验报告一份,本次实验报告内容写出以下两个内容:1、d组基本指令程序调用指令cala的微程序分析;2、扩展指令ldra的设计和测试。附录表4-1 指令机器编码和微程序入口地址对应表指令操作码编码微程序入口地址基本指令add dr , sr0000 000004hsub dr , sr0000 000105hand dr , sr0000 001006hor dr , sr0000 011007hxor dr , sr0000 010008hcmp dr , sr0000 001109htest dr , sr0000 01010ahmvrr dr , sr0000 01110bhinc dr0000

温馨提示

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

评论

0/150

提交评论