T2时刻由于要将RAM的数据送出,同时dr1或者dr2得到数据,然后进行逻辑或算术运算,故RAMclk应该有效,lddr及lddr2有效。
T3时刻将地址送入ar或将dr1及dr2的运算结果存入R4或R5,故lddr4和lddr5有效,ar的clk有效。 波形如下:
波形分析:(125为显示电路时钟信号,a|g为七段译码器各管,Eq为四个驱动灯控制信号,此处不做讨论)
1、 初始状态clr为0,将a[4..0]清零,然后将qd从1变为0再到1,dp定为
1,使状态机进入单步运行状态(或者qd一直为1,为连续循环运行状态)。
可以看出t的变化从0000到1000循环。
2、 随着一个单步周期a从00001到00010变化。200ns到300ns,pc变为101
置数状态,将sw-->pc执行。
3、 地址a为00001,执行pc-->AR,pc变为111,ar为00H,使得RAM得到
00H的地址为下一指令输出该地址的数据做准备,进行加计数得到总线数据位01H,同时产生下址00010。
4、 地址为00010时,执行RAM-->IR指令,总线上显示00H,同时产生下址01000
且令p1为1,使得IR在下一周期得到总线上高三位的地址。(不再采用单步运行仿真,令qd=1连续运行)
5、 地址为01000时,总线数据位00H单元的数据20H,其二进制高三位为001,
由于P1为1,使得1.2us到1.3us时t4有效将ir送入a的低三位产生新的地址01001,开始进行LDA指令操作,往后依次类推。
6、 地址为01001时进行PC-->AR ,PC=PC+1操作,产生的下址为10101,总线
显示为01H后,ar得到01H单元数据0D作为新的地址,然后送入RAM(RAM --> AR),pc的值为100及111也符合状态。
7、 地址为10101产生的下址为10110,执行RAM-->R5,此时ar地址已经为0DH
(见上一步骤产生原因)
8、 在该单步运行周期结束后,下一周期t1变为1后送到数据通路部分进行执
行,在数据总线显示55H后,再有一个时钟将总线数据打入R5,R5显示正确。10110产生下址00001。
9、 地址为00001时,pc加计数从02H变为03H,同时得到下址02H送到ar产
生下址00010。
10、 地址为00010时,第三个节拍,ar得到02H地址,在下一单步运行周期
的第二节拍将02H地址的数据送出到总线,总线显示C0H,产生下址01000。
11、 Pc保持100,此时p1为1,同时LDIR有效,取得总线数据高三位110作
为a的后三位。产生下址01110,进入ADD操作环节。
总结一下:此时R5存储55H,R4,R2,R1都没有值。下一步将要从RAM
中取得数据直接送入R2,再将R5的送入R1,运用ALU部分进行加运算。
12、 地址为00011前,数据通路部分执行上个周期的指令PC-->AR PC=PC+1。
总线上03H变为04H,与上次执行相同的指令,将03H地址给ar。同时产下下址00100。
13、 地址为00100时,数据通路部分执行上个周期的指令,得到03H单元的数
据0EH作为地址,送入ar中,产生下址00101。
14、 地址为00101时,数据通路部分执行上个周期的指令,得到0EH单元数据
8AH,总线显示出了该单元的数据即为8AH。产生下址00110。
15、 地址为00110时,执行上个周期指令,将8AH送入R2寄存器。R2寄存器
显示数据位8AH,正确。同时产生下址00001。
16、 地址为00001时,执行上一周期操作,将R5的数据送入到R1,看到R1
显示数据可以得知该显示为正确的。然后进行ALU加运算,得到加的结果为DFH,送入到R5。总线显示计算结果正确,同时R5得到数据DFH。产生下址00010
17、 地址为00010时再次重复之前操作,此处不再分析。
18、 在地址为01000时,与之前一样,但是此时pc加计数并且送到ar使其地
址为04H,然后得到04H单元数据40H,其二进制高三位为下址低三位。所以得到下址为01010,进入STA指令操作。
19、 地址为10111时,执行上条指令的操作PC-->AR PC=PC+1,将地址05H送
入ar,pc自加一变为06H,显示在总线上。然后下址为11000。