?🌈个人主页:Sarapines Programmer
🔥?系列专栏:《机组 | 模块单元实验》
?诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。
?
目录
2.2.3.2? 通用寄存器单元的工作原理:(图2-2-2)
我们在比较了国内的多家实验平台厂商的产品后,发现多数产品不是连线过于繁琐,就是由CPLD来替代所有的硬件。市场需要一种连线不多,但具有灵活性的实验系统,不同设计方案,不同的连线方法,可以得到不同的结果。
我们所提供的实验平台本身就是一个可运行的系统。整个系统采用功能模块化的设计思路,实验者可单独设计和调试各个功能模块,最终实现一个新的系统,这样可大大减轻实验指导教师的工作量。
整个实验平台提供了运算器模块、指令部件模块、堆栈寄存器模块、存储器模块、总线传输模块、微程序模块、启停和时序模块,以及用于调试和观察数据的监控模块。
整个系统采用总线结构,总线结构具有扩展能力强,结构简单清晰,连线方便快捷等特点。本实验平台的总线分为:内部、外部地址总线,内部、外部数据总线。整个系统的各个总线都布有测试孔,以便于测试。各模块的电源、地、地址数据总线已经按照标准连接完毕,控制信号都按各功能模块的布局引出,实验者可方便的定位各测试点。
监控模块为实验调试和程序设计带来了相当的便利。实验者可以通过监控模块来修改微程序和内存中的程序。为了实验的连贯性,系统中还提供了FLASH MEMORY 来保存微程序和程序,掉电时内容不会丢失,实验者可随时保存和读取微程序与程序。为了使实验者随时观察数据和地址,实验平台提供了一块2*16的液晶屏,可同时显示当前地址、当前总线上的数据和当前的微指令和一些关键寄存器的值。
单机方式:整个系统可单独使用,可通过24个按键和液晶来编辑内存和微程序存储器中的数据,在系统运行时可监控所有关键数据。实验者使用拨动开关来产生二进制码进行微程序和程序的编写。
联机方式:系统可与PC机相连,PC机上提供了windows界面的操作软件,实验者可在PC机上进行编辑、加载、动态调试等操作。
本实验平台由两部分组成,左边为实验模块部分,主要分布着各个实验单元和监控单元。实验平台的右边为数据输出板,板上分布着24个二进制开关、若干个LED发光二极管、DIP插座,还有1块用于显示当前状况的液晶板。
1、掌握简单运算器的数据传输方式
2、掌握74LS181的功能和应用
完成不带进位位算术、逻辑运算实验。按照实验步骤完成实验项目,了解算术逻辑运算单元的运行过程。
1、运算器由2片74LS181构成8位字长的ALU单元。
2、2片74LS374作为2个数据锁存器(DR1、DR2),8芯插座ALU-IN作为数据输入端,可通过短8芯扁平电缆,把数据输入端连接到数据总线上。
运算器的数据输出由一片74LS244(输出缓冲器)来控制,8芯插座ALU-OUT作为数据输出端,可通过短8芯扁平电缆把数据输出端连接到数据总线上。
数据输入锁存器DR1的EDR1为低电平,并且D1CK有上升沿时,把来自数据总线的数据打入锁存器DR1。同样使EDR2为低电平、D2CK有上升沿时把数据总线上的数据打入数据锁存器DR2。
算术逻辑运算单元的核心是由2片74LS181组成,它可以进行2个8位二进制数的算术逻辑运算,74LS181的各种工作方式可通过设置其控制信号来实现(S0、S1、S2、S3、M、CN)。当实验者正确设置了74LS181的各个控制信号,74LS181会运算数据锁存器DR1、DR2内的数据。由于DR1、DR2已经把数据锁存,只要74LS181的控制信号不变,那么74LS181的输出数据也不会发生改变。
输出缓冲器采用74LS244,当控制信号ALU-O为低电平时,74LS244导通,把74LS181的运算结果输出到数据总线;当ALU-O为高电平时,74LS244的输出为高阻。
信号名称 | 作? 用 | 有效电平 |
EDR1 | 选通DR1寄存器 | 低电平有效 |
EDR2 | 选通DR2寄存器 | 低电平有效 |
D1CK | DR1寄存器工作脉冲 | 上升沿有效 |
D2CK | DR2寄存器工作脉冲 | 上升沿有效 |
S0~S3 | 74LS181工作方式选择 | 见附表 |
M | 选择逻辑或算术运算 | 高电平为逻辑运算,低电平为算术运算 |
CN | 有无进位输入 | 高电平有效 |
CCK | 进位寄存器的工作脉冲 | 上升沿有效 |
ALU-O | 74LS181计算结果输出至总线 | 低电平有效 |
把ALU-IN(8芯的盒型插座)与右板上的二进制开关单元中J01插座相连(对应二进制开关H16~H23),把ALU-OUT(8芯的盒型插座)与数据总线上的DJ2相连。
把D1CK和D2CK用连线连到脉冲单元的PLS1上,把EDR1、EDR2、ALU-O、S0、S1、S2、S3、CN、M接入二进制开关(请按下表接线)。
控制信号 | 接入开关位号 |
D1CK | PLS1? 孔 |
D2CK | PLS1? 孔 |
EDR1 | H8??? 孔 |
EDR2 | H7??? 孔 |
ALU-O | H6??? 孔 |
CN | H5?? ?孔 |
M | H4?? ?孔 |
S3 | H3?? ?孔 |
S2 | H2??? 孔 |
S1 | H1??? 孔 |
S0 | H0??? 孔 |
接线图示:
● 按启停单元中的运行按钮,使实验平台处于运行状态。
● 二进制开关H16~H23作为数据输入,置33H(对应开关如下表)。
H23 | H22 | H21 | H20 | H19 | H18 | H17 | H16 | 数据总线值 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 8位数据 |
0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 33H |
置各控制信号如下:
H8 | H7 | H6 | H5 | H4 | H3 | H2 | H1 | H0 |
EDR1 | EDR2 | ALU-O | CN | M | S3 | S2 | S1 | S0 |
0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 |
● 按脉冲单元中的PLS1脉冲按键,在D1CK上产生一个上升沿,把33H打入DR1数据锁存器,通过逻辑笔或示波器来测量确定DR1寄存器(74LS374)的输出端,检验数据是否进入DR1中。置S3、S2、S1、S0、M为11101时,总线指示灯显示DRl中的数,而置成10010时总线指示灯显示DR2中的数。
● 二进制开关H16~H23作为数据输入,置55H(对应开关如下表)。
H23 | H22 | H21 | H20 | H19 | H18 | H17 | H16 | 数据总线值 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 8位数据 |
0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 55H |
置各控制信号如下:
H8 | H7 | H6 | H5 | H4 | H3 | H2 | H1 | H0 |
EDR1 | EDR2 | ALU-O | CN | M | S3 | S2 | S1 | S0 |
1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 |
● 按脉冲单元中的PLS1脉冲按键,在D2CK上产生一个上升沿的脉冲,把55H打入DR2数据锁存器。
● 经过74LS181的计算,把运算结果(F=A或B)输出到数据总线上,数据总线上的LED显示灯IDB0~IDB7应该显示为77H。
● 二进制开关H16~H23作为数据输入,置33H(对应开关如下表)。
H23 | H22 | H21 | H20 | H19 | H18 | H17 | H16 | 数据总线值 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 8位数据 |
0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 33H |
置各控制信号如下:
H8 | H7 | H6 | H5 | H4 | H3 | H2 | H1 | H0 |
EDR1 | EDR2 | ALU-O | CN | M | S3 | S2 | S1 | S0 |
0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 |
● 按脉冲单元中的PLS1脉冲按键,在D1CK上产生一个上升沿,把33H打入DR1数据锁存器,通过逻辑笔或示波器来测量确定DR1寄存器(74LS374)的输出端,检验数据是否进入DR1中。置S3、S2、S1、S0、M为11101时,总线指示灯显示DRl中的数,而置成10010时总线指示灯显示DR2中的数。
● 二进制开关H16~H23作为数据输入,置55H(对应开关如下表)。
置各控制信号如下:
H8 | H7 | H6 | H5 | H4 | H3 | H2 | H1 | H0 |
EDR1 | EDR2 | ALU-O | CN | M | S3 | S2 | S1 | S0 |
1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 |
● 按脉冲单元中的PLS1脉冲按键,在D2CK上产生一个上升沿,把55H打入DR2数据锁存器。
● 经过74LS181的计算,把运算结果(F=A加B)输出到数据总线上,数据总线上的LED显示灯IDB0~IDB7应该显示为88H。
验证74LS181的算术运算和逻辑运算,在保持DR1=65H、DR2=A7H时,改变运算器的功能设置,观察运算器的输出,填写以下表格来进行分析和比较。
H23 | H22 | H21 | H20 | H19 | H18 | H17 | H16 | 数据总线值 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 8位数据 |
0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 55H |
DR1 | DR2 | S3 | S2 | S1 | S0 | M=0 (算术运算) | M=1 逻辑运算 | |
CN=1 | CN=0 | |||||||
65 | A7 | 0 | 0 | 0 | 0 | F= | F= | F= |
65 | A7 | 0 | 0 | 0 | 1 | F= | F= | F= |
65 | A7 | 0 | 0 | 1 | 0 | F= | F= | F= |
65 | A7 | 0 | 0 | 1 | 1 | F= | F= | F= |
65 | A7 | 0 | 1 | 0 | 0 | F= | F= | F= |
65 | A7 | 0 | 1 | 0 | 1 | F= | F= | F= |
65 | A7 | 0 | 1 | 1 | 0 | F= | F= | F= |
65 | A7 | 0 | 1 | 1 | 1 | F= | F= | F= |
65 | A7 | 1 | 0 | 0 | 0 | F= | F= | F= |
65 | A7 | 1 | 0 | 0 | 1 | F= | F= | F= |
65 | A7 | 1 | 0 | 1 | 0 | F= | F= | F= |
65 | A7 | 1 | 0 | 1 | 1 | F= | F= | F= |
65 | A7 | 1 | 1 | 0 | 0 | F= | F= | F= |
65 | A7 | 1 | 1 | 0 | 1 | F= | F= | F= |
65 | A7 | 1 | 1 | 1 | 0 | F= | F= | F= |
65 | A7 | 1 | 1 | 1 | 1 | F= | F= | F= |
附74LS181的逻辑
方式 | M=1逻辑运算 | M=0算术运算 | |
S3 S2 S1 S0 | 逻辑运算 | CN=1(无进位) | CN=0(有进位) |
0000 | F=/A | F=A | F=A加1 |
0001 | F=/(A+B) | F=A+B | F=(A+B)加1 |
0010 | F=/A B | F=A+/B | F=(A+/B)加1 |
0011 | F=0 | F=减1(2的补) | F=0 |
0100 | F=/(AB) | F=A加A/B | F=A加A/B加1 |
0101 | F=/B | F=(A+B)加A/B | F=(A+B)加A/B加1 |
0110 | F=A⊕B | F=A减B减1 | F=A减B |
0111 | F=A /B | F=A/B减1 | F=A/B |
1000 | F=/A+B | F=A 加AB | F=A 加AB加 1 |
1001 | F= /(A⊕B ) | F=A加B | F=A加B加1 |
1010 | F=B | F=(A+/B)加AB | F=(A+/B)加AB加1 |
1011 | F=AB | F=AB减1 | F=AB |
1100 | F=1 | F=A加 A | F=A加 A 加1 |
1101 | F=A+/B | F=(A+B) 加 A | F=(A+B) 加 A 加1 |
1110 | F=A+B | F=(A+/B)加A | F=(A+/B)加A加1 |
1111 | F=A | F=A减1 | F=A |
了解通用寄存器的组成和硬件电路,利用通用寄存器实现数据的置数、左移、右移等功能。
按照实验步骤完成实验项目, 实现通用寄存器移位操作。了解通用寄存器单元的工作原理运用。
1、通用寄存器由2片GAL16V8构成8位字长的寄存器单元。8芯插座RA-IN作为数据输入端,可通过短8芯扁平电缆,把数据输入端连接到数据总线上。
2、数据输出由一片74LS244(输出缓冲器)来控制。用8芯插座RA-OUT作为数据输出端,可通过短8芯扁平电缆,把数据输出端连接到数据总线。
3、判零和进位电路由1片GAL、1片7474和一些常规芯片组成,用2个LED(ZD、CY)发光管分别显示其状态。其中ZD为判零位显示灯,CY为进位位显示灯。
通用寄存器单元的核心部件为2片GAL16V8,它具有锁存、左移、右移、保存等功能。各个功能都由X1、X2信号和工作脉冲RACK来决定。当置ERA=0、X0=1、X1=1,RACK有上升沿时,把总线上的数据打入通用寄存器。可通过设置X0、X1来指定通用寄存器工作方式,通用寄存器的输出端Q0~Q7接入判零电路。LED(ZD)亮时,表示当前通用寄存器内数据为0。
输出缓冲器采用74LS244,当控制信号RA-O为低时,74LS244开通,把通用寄存器内容输出到总线;当RA-O为高时,74LS244的输出为高阻。
GAL 方程如下:
??????? Clk,OE????????? pin 1,11;
??????? A,B,C,D??? ?????pin 3,4,5,6;
??????? QA,QB,QC,QD?? pin 18,17,14,13;
??????? S0,S1,SIL,SIR??? pin 8,9,2,7;
??????? Q =[QD,QC,QB,QA];
??????? I =[D,C,B,A];
??????? SL=[QC,QB,QA,SIL];
??????? SR =[SIR,QD,QC,QB];
equations
??????? Q:= S0 & S1 & I
????????? # S0 &!S1 & SR
????????? # !S0 &S1 & SL
????????? #!S0 &!S1 & Q;
图2-2-2
信号名称 | 作????? 用 | 有效电平 |
X0、X1 | 通用寄存器的工作模式 | 见附表 |
ERA | 选通通用寄存器 | 低电平有效 |
RA-O | 通用寄存器内容输出至总线 | 低电平有效 |
RACK | 通用寄存器工作脉冲 | 上升延有效 |
M | 在ALU单元中作为逻辑和算术运算的选择。在本实验中决定是否带进位移位 | 0 带进位 |
1 不带进位 |
● 把RA-IN(8芯的盒型插座)与右板上二进制开关单元中的J01插座相连(对应二进制开关H16~H23),把RA-OUT(8芯的盒型插座)与数据总线上的DJ6相连。
● 把RACK连到脉冲单元的PLS1,把ERA、X0、X1、RA-O、M接入二进制拨动开关。(请按下表接线)。
控制信号 | 接入开关位号 |
RACK | PLS1? 孔 |
X0 | H12?? 孔 |
X1 | H11? 孔 |
ERA | H10? 孔 |
RA-O | H9? 孔 |
M | H4? 孔 |
接线图示:
● 二进制开关H16~H23作为数据输入,置42H(对应开关如下表)。
H23 | H22 | H21 | H20 | H19 | H18 | H17 | H16 | 数据总线值 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 8位数据 |
0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 42H |
置各控制信号如下:
H12 | H11 | H10 | H9 | H4 |
X0 | X1 | ERA | RA-O | M |
1 | 1 | 0 | 0 | 1 |
● 按启停单元中的运行按钮,置实验平台为运行状态。
● 按脉冲单元中的PLS1脉冲按键,在RACK上产生一个上升沿,把42H打入通用寄存器。
●此时数据总线上的指示灯IDB0~IDB7 应该显示为42H。由于通用寄存器内容不为0,所以LED(ZD)灯灭。
?按照实验1数据输入的方法把数据42H打入通用寄存器中,数据总线上显示42H。实现左移功能,置各控制信号如下:
H12 | H11 | H10 | H9 | H4 |
X0 | X1 | ERA | RA-O | M |
0 | 1 | 0 | 0 | 1 |
● 按启停单元中的运行按钮,置实验平台为运行状态。
● 按脉冲单元中的PLS1脉冲按键,在RACK上产生一个上升沿,使通用寄存器中的值左移。
● 此时数据总线上的LED指示灯IDB0~IDB7 应该显示为84H。由于通用寄存器内容不为0,所以ZD(LED)灯灭。
● 按脉冲单元中的PLS1脉冲按键,使通用寄存器中的值左移,此时数据总线上的LED指示灯IDB0~IDB7应该显示为09H。若一直按PLS1,在总线上将看见数据循环左移的现象。
● 按照实验1数据输入的方法把数据42H打入通用寄存器中,数据总线上显示42H。实现右移功能,置各控制信号如下:
H12 | H11 | H10 | H9 | H4 |
X0 | X1 | ERA | RA-O | M |
1 | 0 | 0 | 0 | 1 |
● 按启停单元中的运行按钮,置实验平台为运行状态。
● 按脉冲单元中的PLS1脉冲按键,在RACK上产生一个上升沿,使通用寄存器中的值右移。
● 此时数据总线上的LED指示灯IDB0~IDB7 应该显示为21H。由于通用寄存器内容不为0,所以ZD(LED)灯灭。
● 按脉冲单元中的PLS1脉冲按键,使通用寄存器中的值右移,此时数据总线上的LED指示灯IDB0~IDB7应该显示为90H。若一直按PLS1,在总线上将看见数据循环左移的现象。
附:通用寄存器的逻辑
通用寄存器(8位并入并出移位寄存器)
CLR | X1?? X0 | CLK | SL? SR | QA~AH |
0 | X??? X | X | X?? X | 全 0 |
1 | X??? X | 0 | X?? X | 保持不变 |
1 | 1???? 1 | 上升沿 | X?? X | 并行接数A~H |
1 | 0???? 1 | 上升沿 | X?? 0 | 右移 移入0 |
1 | 0???? 1 | 上升沿 | X?? 1 | 右移 移入1 |
1 | 1???? 0 | 上升沿 | 0?? X | 左移 移入0 |
1 | 1???? 0 | 上升沿 | 1?? X | 左移 移入1 |
1、熟悉带进位控制的算术逻辑运算器的组成和硬件电路
用进位寄存器来实现带进位的左移、右移。
2、熟悉判零线路。
按照实验步骤完成实验项目,实现带进位位的算术逻辑运算,通用寄存器实现带进位的左移、右移功能,理解通用寄存器的判零电路。
进位和判零电路由1片GAL、74LS74和两个LED(CY、ZD)发光管组成。当有进位时CY发光管亮,ZD发光管亮表示当前通用寄存器的内容为0。
图2-3-1
● 进位电路与通用寄存器、ALU有着非常紧密的关系,算术逻辑单元的进位输出和通用寄存器带进位移动都会影响进位寄存器中的结果。
● 若实验者在做算术逻辑实验时,选择了算术运算方式,当ALU的计算结果输出至总线时,在CCK 上来一个上升沿,将把74LS181的进位输出位(Cn+4)上的值(为了统一进位标识,1表示有进位,0表示无进位),打入进位寄存器(74LS74)中,并且有进位时LED(CY)发光。
● 在进行通用寄存器的数据移位实验时,把CCK和通用寄存器的工作脉冲接在一起,当选择带进位左移动时,在工作脉冲下,通用寄存器的最高位将移入进位寄存器中,进位寄存器中的值将移入通用寄存器的最低位。当进位寄存器中的值为1时,LED(CY)发亮,若进位寄存器中的值为0时,LED(CY)灭。同样在带进位右移时,也会产生这样的效果。
● 通过把通用寄存器中的每一位做“或”运算,当寄存器的每一位为0时,ZD输出0,LED(ZD)发光。
以下为GAL中的方程:
Q0? Q1? Q2? Q3? Q4? Q5? Q6? Q7 M? X0? X1? GND
Cn+4? ALU_O? CY? NC? NC? CY_I? ZD? C? SR SL ERA VCC???
SR=M * /X1 * X0 * Q0 + /M * /X1 *? X0 * CY + /ALU_O*/Cn+4
SL=M * X1 * /X0 * Q7 + /M *? X1 * /X0 * CY + /ALU_O*/Cn+4
CY_I = /X1 * X0 * Q0 + X1 * /X0 *Q7 + /ALU_O*/Cn+4
/ZD = /Q0 * /Q1 * /Q2 * /Q3 * /Q4 * /Q5 * /Q6 * /Q7
信号名称 | 作? 用 | 有效电平 |
EDR1 | 选通DR1寄存器 | 低电平有效 |
EDR2 | 选通DR2寄存器 | 低电平有效 |
D1CK | DR1寄存器工作脉冲 | 上升沿有效 |
D2CK | DR2寄存器工作脉冲 | 上升沿有效 |
S0~S3 | 74LS181工作方式选择 | 见附表 |
M | 选择逻辑或算术运算 | 低电平为逻辑运算,高电平为算术运算 |
CN | 有无进位输入 | 高电平有效 |
CCK | 进位寄存器的工作脉冲 | 上升沿有效 |
ALU-O | 74LS181计算结果输出至总线 | 低电平有效 |
X0、X1 | 通用寄存器的工作模式 | 见附表 |
ERA | 选通通用寄存器 | 低电平有效 |
RA-O | 通用寄存器内容输出至总线 | 低电平有效 |
RACK | 通用寄存器工作脉冲 | 上升延有效 |
M | 在ALU单元中作为逻辑和算术运算的选择。在本实验中决定是否带进位移位 | 0 带进位 1 不带进位 |
● 把ALU-IN(8芯的盒型插座)与右板上的二进制开关单元中J01插座相连(对应二进制开关H16~H23),把ALU-OUT(8芯的盒型插座)与数据总线上的DJ2相连。
● 把D1CK、D2CK、CCK用连线连到脉冲单元的PLS1上,把EDR1、EDR2、ALU-O、S0、S1、S2、S3、CN、M接入二进制拨动开关(请按下表接线)。
控制信号 | 接入开关位号 |
D1CK | PLS1? 孔 |
D2CK | PLS1? 孔 |
CCK | PLS1? 孔 |
EDR1 | H8??? 孔 |
EDR2 | H7??? 孔 |
ALU-O | H6??? 孔 |
CN | H5?? ?孔 |
M | H4? ??孔 |
S3 | H3?? ?孔 |
S2 | H2??? 孔 |
S1 | H1??? 孔 |
S0 | H0??? 孔 |
接线图示:
● 按启停单元中停止按钮,实验平台停机并且把进位寄存器CY清零(CY灯灭)。在本实验中使用算术逻辑单元作为进位发生器,按运行键,实验即进入运行状态。
● 二进制开关H16~H23作为数据输入,置65H(对应开关如下表)。
H23 | H22 | H21 | H20 | H19 | H18 | H17 | H16 | 数据总线值 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 8位数据 |
0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 65H |
置各控制信号如下:
H8 | H7 | H6 | H5 | H4 | H3 | H2 | H1 | H0 |
EDR1 | EDR2 | ALU-O | CN | M | S3 | S2 | S1 | S0 |
0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 |
● 按脉冲单元中的PLS1脉冲按键,在D1CK上产生一个上升沿,把65H打入DR2数据锁存器,通过逻辑笔或示波器来测量确定DR2寄存器(74LS374)的输出端,检验数据是否进入DR2中。置S3、S2、S1、S0、M为11101时,总线指示灯显示DRl中的数,而置成10010时总线指示灯显示DR2中的数。
● 二进制开关H16~H23作为数据输入,置A7H(对应开关如下表)。
H23 | H22 | H21 | H20 | H19 | H18 | H17 | H16 | 数据总线值 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 8位数据 |
1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | A7H |
置各控制信号如下:
H8 | H7 | H6 | H5 | H4 | H3 | H2 | H1 | H0 |
EDR1 | EDR2 | ALU-O | CN | M | S3 | S2 | S1 | S0 |
1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
● 按脉冲单元中的PLS1脉冲按键,在D2CK上产生一个上升沿,把A7H打入DR2数据锁存器。
● 再置各控制信号如下:
H8 | H7 | H6 | H5 | H4 | H3 | H2 | H1 | H0 |
EDR1 | EDR2 | ALU-O | CN | M | S3 | S2 | S1 | S0 |
1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 |
● 按脉冲单元中的PLS1脉冲按键,在CCK上产生一个上升沿,把74LS181的进位打入进位寄存器中,在有进位的情况下,CY指示灯亮,并且ALU-O为0,把计算结果输出到数据总线。
● 经过74LS181的计算将产生进位,即Cn+4输出0,当把计算结果输出到总线时,数据总线指示灯IDB0~IDB7将显示结果0CH。
● 按启停单元中停止按钮,实验平台停机时把进位寄存器CY清零(CY灯灭)。在本实验中使用通用寄存器作为进位发生器,按运行键,实验即进入运行状态。
把RA-IN(8芯的盒型插座)与右板上的二进制开关单元中J01相连(对应二进制开关H16~H23),把RA-OUT(8芯的盒型插座)与数据总线上的DJ6相连。
● 把CCK、RACK连到脉冲单元的PLS1,把ERA、X0、X1、RA-O、M接入二进制拨动开关。(请按下表接线)。
信号定义 | 接入开关位号 | |
CCK | PLS1? 孔 | |
RACK | PLS1? 孔 | |
X0 | H12?? 孔 | |
X1 | H11?? 孔 | |
ERA | H10?? 孔 | |
RA-O | H9??? 孔 | |
M | H4??? 孔 |
接线图示:
● 二进制开关H16~H23作为数据输入,置81H(对应开关如下表)。
H23 | H22 | H21 | H20 | H19 | H18 | H17 | H16 | 数据总线值 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 8位数据 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 81H |
置各控制信号如下:
H12 | H11 | H10 | H9 | H4 |
X0 | X1 | ERA | RA-O | M |
1 | 1 | 0 | 0 | 0 |
● 按脉冲单元中的PLS1脉冲按键,在RACK上产生一个上升沿,把81H打入通用寄存器内。
● 此时数据总线上的指示灯IDB0~IDB7 应该显示为81H。由于通用寄存器内容不为0,所以ZD(LED)灯灭。
置各控制信号如下:
H12 | H11 | H10 | H9 | H4 |
X0 | X1 | ERA | RA-O | M |
0 | 1 | 0 | 0 | 0 |
● 按脉冲单元中的PLS1脉冲按键,在RACK上产生一个上升沿,使通用寄存器中的值左移。因进位寄存器CY的初始值为0,在RACK脉冲作用下将CY打入通用寄存器的最低位Q0。同时在CCK脉冲作用下把通用寄存器的最高位Q7(为1)打入进位寄存器CY,使CY显示灯亮,这样就实现了带进位的左移功能。
● 同样置各控制信号如下,并且按脉冲单元中的PLS1脉冲按键,可实现带进位的右移功能。
H12 | H11 | H10 | H9 | H4 |
X0 | X1 | ERA | RA-O | M |
1 | 0 | 0 | 0 | 0 |
把M作为是否带进位的选择,M=0 带进位移位,M=1不带进位移位。控制型号X0、X1、M的功能状态如下:
功能状态表
X1 | X0 | M | 功能 | 移位操作 |
0 | 1 | 1 | 循环右移 | Q7->Q6->Q5->Q4->Q3->Q2->Q1->Q0 |
0 | 1 | 0 | 带进位循环右移 | ?CY->Q7->Q6->Q5->Q4->Q3->Q2->Q1->Q0 |
1 | 0 | 1 | 循环左移 | ?? Q7<-Q6<-Q5<-Q4<-Q3<-Q2<-Q1<-Q0 |
1 | 0 | 0 | 带进位循环左移 | CY<-Q7<-Q6<-Q5<-Q4<-Q3<-Q2<-Q1<-Q0 |
熟悉存储器和总线的硬件电路
按照实验步骤完成实验项目,熟悉存储器的读、写操作,理解在总线上数据传输的方法。
1、总线由1片74LS245、1片74LS244组成,把整个系统分为内部总线和外部总线。2片74LS374锁存当前的数据、地址总线上的数据以供LED显示。(如图2-4-1)
2、存储器采用静态1片RAM(6264)。
3、存储器的控制电路由1片74LS32和74LS08组成。(如图2-4-2)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???图2-4-1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?图2-4-2
1、总线的原理:由于本系统内使用8根地址线、8根数据线,所以使用1片74LS245作为数据总线,另1片74LS244作为地址总线(见图2-4-3)。总线把整个系统分为内部数据、地址总线和外部数据、地址总线,由于数据总线需要进行内、外部数据的交换,所以由BUS信号来控制数据的流向,当BUS=1时数据由内到外,当BUS=0时,数据由外到内。
图2-4-3
2、由于本系统内使用8根地址线、8位数据线,所以6264的A8~A12接地,其实际容量为256个字节(如图2-4-4)。6264的数据、地址总线已经接在总线单元的外部总线上。存储器有3个控制信号:地址总线设置存储器地址,RM=0时,把存储器中的数据读出到总线上;当WM=0,并且EMCK有一个上升沿时,把外部总线上的数据写入存储器中。为了更方便地编辑内存中的数据,在实验平台处于停机状态时,可由监控来编辑其中的数据。
图2-4-4
信号名称 | 作? 用 | 有效电平 |
BUS | 总线方向选择 | |
RM | 6264的读允许信号 | 低电平有效 |
WM | 6264的写允许信号 | 低电平有效 |
EMCK | 6264的写入脉冲信号 | 上升沿有效 |
CR | 监控对6264的读允许信号 | 低电平有效 |
CW | 监控对6264的写允许信号 | 低电平有效 |
M/C | 监控选择程序空间或微程序空间 |
● 把内部地址总线AJ1(8芯盒形插座)与右板上的二进制开关单元中J03插座相连(对应二进制开关H0~H7),把内部数据总线DJ8与右板上的J02插座相连(对应二进制开关H8~H15)。
● 把EMCK连到脉冲单元的PLS1,WC、RC、BUS接入二进制的开关中。(请按下表接线)。
信号定义 | 接入开关位号 |
EMCK | PLS1 孔 |
WM | H22? 孔 |
RM | H21? 孔 |
BUS | H21? 孔 |
接线图示:
● 按启停单元中的运行按钮,置实验平台为运行状态。
● 二进制开关H0~H7作为地址(A0~A7)输入,置55H(对应开关如下表)。
H7 | H6 | H5 | H4 | H3 | H2 | H1 | H0 | 数据总线值 |
A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | 8位数据 |
0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 55H |
● 二进制开关H8~H15作为数据(D0~D7)输入,置66H(对应开关如下表)。
H15 | H14 | H13 | H12 | H11 | H10 | H9 | H8 | 数据总线值 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 8位数据 |
0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 66H |
置各控制信号如下:
H22 | H21 |
WM | RM、BUS |
0 | 1 |
● 按脉冲单元中的PLS1脉冲按键,在EMCK上产生一个上升沿,数据从内部数据总线流向外部数据总线,将数据66H写入地址为55H的存储单元。
在做好实验1的基础上,保持电源开启和线路连接不变,只拔掉内部数据总线DJ8与CPT-B板上的J02插座 (对应二进制开关H8~H15) 的连接。
● 按启停单元中的运行按钮,置实验平台为运行状态。
● 二进制开关H0~H7作为地址(A0~A7)输入,置55H(对应开关如下表)
H7 | H6 | H5 | H4 | H3 | H2 | H1 | H0 | 数据总线值 |
A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | 8位数据 |
0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 55H |
置各控制信号如下:
H22 | H21 |
WM | RM、BUS |
1 | 0 |
● 按脉冲单元中的PLS1脉冲按键,在EMCK上产生一个上升沿,数据从外部数据总线流向内部数据总线,将存储器55H单元中的内容输出,应该为实验1中的写入的数据66H。此时数据总线上的指示灯IDB0~IDB7显示结果66H。
1、熟悉堆栈概念
2、熟悉堆栈寄存器的组成和硬件电路
按照实验步骤完成实验项目,对4个堆栈寄存器进行读出、写入数据操作。
本系统内有4个寄存器R0~R3,寄存器组由4个74LS374组成,由1片74LS139(2-4译码器)来选择4个74LS374,并且由2片74LS32来组成控制线。8芯插座R-IN、R-OUT作为数据输入、输出端,可通过短8芯扁平电缆把数据输入、输出端连接到数据总线上。
图2-5-1
由SA、SB两根控制线通过74LS139译码来选择4个寄存器(74LS374)。当WR=0时,表示数据总线向寄存器写入数据,RCK为寄存器的工作脉冲,在有上升沿时把总线上数据打入74LS139选择的那个寄存器。当RR=0时,74LS139所选择的寄存器上的数据输出至数据总线。在本系统内使用了WR=0作为写入允许,RCK信号为上升沿时打入数据、RR=0时数据输出。
图2-5-2
信号名称 | 作? 用 | 有效电平 |
SA、SB | 选通寄存器 | 低电平有效 |
RR | 数据读出允许 | 低电平有效 |
WR | 数据写入允许 | 低电平有效 |
RCK | 寄存器写入脉冲 | 上升沿有效 |
将R-IN(8芯盒形插座)与右边板上的二进制开关单元中J03插座相连(对应二进制开关H0~H7),R-OUT可通过短8芯扁平电缆与数据总线上DJ4相连。把RR、WR、SA、SB接入二进制拨动开关(SA,SB借用X0,X1的H12,H11孔),把RCK连到脉冲单元的PLS1。(请按下表接线)。
信号定义 | 接入开关位号 |
RCK | PLS1? 孔 |
RR | H15?? 孔 |
WR | H14?? 孔 |
SA | H12?? 孔 |
SB | H11?? 孔 |
接线图示:
1、把数据写入寄存器R0
● 二进制开关H0~H7作为数据(D0~D7)输入,置11H(对应开关如下表)
H7 | H6 | H5 | H4 | H3 | H2 | H1 | H0 | 数据总线值 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 8位数据 |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 11H |
● 按启停单元中的运行按钮,置实验平台为运行状态。
● 置WR=0、RR=1、SB=0、SA=0 (对应开关如下表)。
H15 | H14 | H12 | H11 | |||||
RR | WR | SA | SB | |||||
1 | 0 | 0 | 0 | |||||
● 按脉冲单元中的PLS1脉冲按键,在RCK上产生一个上升沿的脉冲,把11H打入R0寄存器。
2、把数据写入寄存器R1
● 置二进制开关H0~H7(D0~D7)为22H,各控制信号对应开关如下表。
H15 | H14 | H12 | H11 |
RR | WR | SA | SB |
1 | 0 | 1 | 0 |
● 按脉冲单元中的PLS1脉冲按键,在RCK上产生一个上升沿的脉冲,把22H打入R1寄存器。
3、把数据写入寄存器R2
● 置二进制开关H0~H7(D0~D7)为33H,各控制信号对应开关如下表。
H15 | H14 | H12 | H11 |
RR | WR | SA | SB |
1 | 0 | 0 | 1 |
● 按脉冲单元中的PLS1脉冲按键,在RCK上产生一个上升沿的脉冲,把33H打入R2寄存器。
● 同理:置二进制开关H0~H7为44H,RR=1 WR=0、SA=1、SB=1,在RCK脉冲作用下把44H打入R3寄存器。
● 置WR=1、RR=0、SB=0、SA=0 (对应开关如下表)。此时把寄存器R0数据读出总线数据IDB0~IDB7指示灯将显示11H。保持RR、WR的值不变(RR=0,WR=1),可通过分别设置SB、SA为10、01、11把R1,R2,R3中的值显示在总线上。观察寄存器输出的数据是否与上实验中写入的数据相同。
H15 | H14 | H12 | H11 |
RR | WR | SA | SB |
0 | 1 | 0 | 0 |
附:74LS139的逻辑
74LS139 | ||||||
输入 | 输出 | |||||
SB | SA | Y0 | Y1 | Y2 | Y3 | 选择寄存器 |
X | X | H | H | H | H | X |
0 | 0 | 0 | 1 | 1 | 1 | R0 |
0 | 1 | 1 | 0 | 1 | 1 | R1 |
1 | 0 | 1 | 1 | 0 | 1 | R2 |
1 | 1 | 1 | 1 | 1 | 0 | R3 |
1、熟悉微程序控制器的原理
2、掌握微程序编制、写入并观察运行状态
按照实验步骤完成实验项目,掌握设置微地址、微指令输出的方法
8位微地址寄存器由2片74LS161组成;3片6264(3*8位)为微程序存储器;24位微指令锁存器由3片74LS374组成。
图2-6-1
1、由于本系统中指令系统规模不大、功能较简单,微指令可以采用全水平、不编码的方式,每一个微操作控制信号由1位微代码来表示,24位微代码至少可表示24个不同的微操作控制信号。如要实现更多复杂的操作可通过增加一些译码电路来实现。
2、增量方式来控制微代码的运行顺序,每一条指令的微程序连续存放在微指令存储器连续的单元中。
3、每一指令的微程序的入口地址是通过对指令操作码的编码来形成的。在本系统内指令码最长为8位,那么最多可形成256条指令。
4、在微程序存储器的0单元存放取指指令,在启动时微地址寄存器清零,执行取指指令。每一段微程序都以取指指令结束,以取得下一条指令。在本系统内,MLD为置微地址的控制信号,MCK为工作脉冲。当MLD=0、MCK有上升沿时,把MD0~MD7的值作为微程序的地址,打入微地址寄存器。当MLD=1、MCK有上升沿时,微地址计数器自动加1。
图2-6-2
信号名称 | 作? 用 | 有效电平 |
MCK | 微程序工作脉冲 | 上升沿用效 |
MOCK | 微程序存储器输出工作脉冲 | 低电平有效 |
MLD | 微地址控制信号 | 低电平有效 |
MD0—MD7 | 微地址选择开关 |
● 将MD0~MD7、MLD接入二进制的开关上,将MCK、MOCK分别接入脉冲单元上的PLS1、PLS2上。(请按下表接线)。
信号定义 | 接入开关位号 |
MCK | PLS1 ??孔 |
MOCK | PLS2 ??孔 |
MD0 | H0???? 孔 |
MD1 | H1???? 孔 |
MD2 | H2???? 孔 |
MD3 | H3???? 孔 |
MD4 | H4??? ?孔 |
MD5 | H5???? 孔 |
MD6 | H6???? 孔 |
MD7 | H7???? 孔 |
MLD | H23?? 孔 |
接线图示:
● 按启停单元中的停止按键,使实验平台处于停机状态。通过键盘把数据写入微程序存储器中,例如微地址0H中输入11H、11H、11H三个字节、在05H中输入55H、55H、55H三个字节、在06H中输入66H、66H、66H。键盘监控的使用方法请参阅第4章《键盘监控》。
按启停单元中的停止按键,使实验平台处于停机状态,此时微地址寄存器被清零。
● 按启停单元中的运行按键,使实验平台处于运行状态。此时微程序存储器为读状态,微地址寄存器(74LS161)确定了当前微程序存储器的地址,并且输出24位微操作(M0~M23)。
● 按脉冲单元中的PLS2脉冲按键,在MOCK上产生一个上升沿,把当前微程序存储器输出的微指令打入微指令锁存器。可在右上的微指令指示灯显示出当前微指令,应为11H,11H,11H。
● 置MLD=0,微代码的地址MD0~MD7(对应二进制开关H0~H7)为05H (对应开关如下表)。
H7 | H6 | H5 | H4 | H3 | H2 | H1 | H0 | H23 |
MD7 | MD6 | MD5 | MD4 | MD3 | MD2 | MD1 | MD0 | MLD |
0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
● 按脉冲单元中的PLS1脉冲按键,在MCK上产生一个上升沿,把MD0~MD7打入74LS161,微地址显示灯MA0~MA7将显示05H,微程序存储器把05H单元的内容输出。
● 按脉冲单元中的PLS2脉冲按键,在MOCK上产生一个上升沿的脉冲,把当前微指令打入微指令锁存器,在右板上的微指令指示灯应显示55H,55H,55H。
注意:微代码由3片74LS374作为微指令锁存器,它的OE端已经接地,只要MOCK端上有上升沿,即可锁存并输出微代码。
● 置MLD=1。
● 按启停单元中的运行按键,使实验平台处于运行状态。
● 按脉冲单元中的PLS1脉冲按键,在MCK上产生一个上升沿,微地址寄存器自动加1。若原来微地址寄存器的值为05H,那么当前的微地址显示灯MA0~MA7将显示06H,同时微程序存储器输出06H单元中的内容。
● 按脉冲单元中的PLS2脉冲按键,在MOCK上产生一个上升沿,将微程序存储器的输出的微指令,打入微指令锁存器并输出,在CPT-B板上的微指令指示灯应显示66H,66H,66H。
1、掌握指令部件的组成方式。
2、熟悉指令寄存器的打入操作,PC计数器的设置和加1操作,理解跳转指令的实现过程。
按照实验步骤完成实验项目,掌握数据打入指令寄存器IR1、PC计数器的重置,PC计数器自动加1和实现跳转指令的方法。
1、1片74LS374作为指令模块的指令寄存器IR1,另1片74LS374作为地址锁存器IR2。8芯插座PC-IN作为数据输入端,可通过短8芯扁平电缆把数据输入端连接到数据总线上。
2、2片74LS161作为PC计数器。
3、2片74LS245(同时只有1片输出)作为当前地址的输出。8芯插座PC-OUT作为地址输出端,可通过短8芯扁平电缆把地址输出端连接到地址总线上。
4、1片74LS153来实现多种条件跳转指令(JZ,JC,JMP等跳转指令)。
图2-7-1
图2-7-2
1、指令寄存器IR1(74LS374)的?? EIR1为低电平并且IR1CK有上升沿时,把来自数据总线的数据打入IR1,IR1的输出就作为本系统内的8位指令I0~I7。在本系统内由这8位指令可最多译码256条不同的指令,通过编码可对应出这些指令在微程序存储器中入口地址,并且输出相应的微指令。
2、2片74LS161组成了PC计数器,它由信号ELP、信号PC-O、脉冲PCCK来控制PC计数器+1和PC计数器置数操作。在停机状态下,由控制台置起始地址,给出打入脉冲并置入74LS161。当ELP=0,PCCK有上升沿时可重新置PC值。当PCO=0、ELP=1, PCCK是上升沿时把当前PC计数器加1,并且把PC计数器的值作为地址输出到地址总线上。
3、置EIR2为低电平,并且IR2CK有上升沿时,数据总线的数据打入IR2锁存器后,置IR2-O=0,PC-O=1时,把IR2的值作为地址输出到地址总线上。?
4、74LS153是4选1的芯片,可通过JS0、JS1来选择用JC还是JZ来实现条件跳转的指令。
JS1 | JS0 | 功? 能 |
0 | 0 | 选择JZ ?当通用寄存器为0时跳转 |
0 | 1 | 选择JC ?当进位寄存器为0时跳转 |
1 | 0 | 选择JN? 提供给用户自定义,JN=0跳转 |
1 | 1 | 重新设置当前PC指针,实现JMP指令 |
信号名称 | 作?? 用 | 有效电平 |
IR1CK | IR1的工作脉冲 | 上升沿有效 |
IR2CK | IR2的工作脉冲 | 上升沿有效 |
PCCK | PC计数器工作脉冲 | 上升沿有效 |
EIR1 | 选通指令寄存器IR1 | 低电平有效 |
EIR2 | 选通指令寄存器IR2 | 低电平有效 |
IR2-O | IR2输出允许 | 低电平有效 |
PC-O | PC计数器内容输出允许 | 低电平有效 |
ELP | 74LS161控制信号 | 高电平可重置PC值;低电平时PC值自动加1 |
JS0-JS1 | 选择开关 | 见上表 |
JZ | 条件跳转 | 为零跳转 |
● 在启停单元中按“运行”按钮,使实验平台处于运行状态。
● 把EIR1,EIR2,PC-O,IR2-O,ELP,JS0,JS1接入二进制拨位开关中。把IR1CK和IR2CK接入脉冲单元PLS1,PCCK接入PLS2中。用长8位扁平电缆把PC-IN与右板上的二进制开关单元中J03相连(对应二进制开关H0~H7),PC-OUT用短8位扁平电缆连接地址总线AJ1,其他控制信号请按下表接线。
信号定义 | 接入开关位号 |
IR1CK | PLS1 孔 |
IR2CK | PLS1 孔 |
PCCK | PLS2 孔 |
EIR1 | H20? 孔 |
EIR2 | H19? 孔 |
IR2-0 | H18? 孔 |
PC-O | H17? 孔 |
ELP | H16? 孔 |
JS0 | H15? 孔 |
JS1 | H14? 孔 |
JZ | H13? 孔 |
接线图示:
● 二进制开关H0~H7作为数据输入,置05H(对应开关如下表)。
H7 | H6 | H5 | H4 | H3 | H2 | H1 | H0 | 数据总线值 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 8位数据 |
0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 05H |
● 置控制信号如下:
H20 | H19 | H18 | H17 | H16 | H15 | H14 |
EIR1 | EIR2 | IR2-O | PC-O | ELP | JS0 | JS1 |
1 | 0 | 1 | 1 | 0 | 1 | 1 |
● 按启停单元中的运行按键,使实验平台处于运行状态。
● 按脉冲单元中的PLS1脉冲按键,在IR2CK上产生一个上升沿,把当前数据总线数据打入IR2锁存器,按脉冲单元中的PLS2脉冲按键,在PCCK上产生一个上升沿,将IR2锁存器中的地址打入PC计数器(2片74LS161)中,这样的操作过程可实现无条件跳转指令。若要观测输出结果,再置信号PC-O=0,此时PC计数器把其内容作为地址输出到地址总线上,地址总线上的指示灯IAB0~IAB7应显示05H。
● 完成实验1后,重置各控制信号如下:
H20 | H19 | H18 | H17 | H16 | H15 | H14 |
EIR1 | EIR2 | IR2-O | PC-O | ELP | JS0 | JS1 |
1 | 1 | 1 | 0 | 1 | 1 | 1 |
?按脉冲单元中的PLS2脉冲按键,在PCCK上产生一个上升沿,因PC-O=0,PC计数器将加1,PC计数器为06H,并且输出至地址总线。此时地址总线上的指示灯IAB0~IAB7应显示06H。
● 二进制开关H0~H7作为数据输入,置5FH(对应开关如下表)。
H7 | H6 | H5 | H4 | H3 | H2 | H1 | H0 | 数据总线值 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 8位数据 |
0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 5FH |
● 置控制信号如下:
H20 | H19 | H18 | H17 | H16 | H15 | H14 |
EIR1 | EIR2 | IR2-O | PC-O | ELP | JS0 | JS1 |
0 | 1 | 1 | 1 | 1 | 0 | 0 |
● 按启停单元中的运行按键,使实验平台处于运行状态。
● 按脉冲单元中的PLS1脉冲按键,在IR1CK上产生一个上升沿,把当前数据总线数据5FH打入IR1锁存器,表示当前运行的指令码为5FH。此时指令寄存器的指示灯I0~I7应显示5FH。
1、掌握时序产生器的组成方式
2、熟悉起停电路的原理
按照实验步骤完成实验项目,了解程序如何开始、停止运行,用示波器观察时序,并且画出时序图。
启停电路由1片7474、1片74LS08组成,1个LED(RUN)表示当前实验平台的状态(运行LED亮、停止LED灭)。(如图2-8-1)
图2-8-1
时序电路由1片74LS175、2片74LS00、4个LED脉冲指示灯(PLS1、PLS2、PLS3、PLS4)组成。当LED发光时,表示有上升沿产生。(如图2-8-2)
图2-8-2
启停原理:(如图:2-8-3)
起停电路由1片7474组成,当按下RUN按钮,信号输出RUN =1、STOP=0,表示当前实验平台为运行状态。当按下STOP按钮,信号RUN =0、 信号STOP=1,表示当前实验平台为停止状态。当系统处于停机状态时,微地址、进位寄存器都被清零,并且可通过监控单元来读写内存和微程序。在停止状态下,当HALT上有1个高电平,同时HCK有1个上升沿,此时高电平被打入寄存器中,信号RUN =1、STOP=0,使实验平台处于运行状态。
图2-8-3
时序电路:
时序电路由监控单元来控制时序输出(PLS1、PLS2、PLS3、PLS4)。实验所用的时序电路(如图2-8-4)可产生4个等间隔的时序信号PLS1、PLS2、PLS3、PLS4。为了便于监控程序流程,由监控单元输出PO信号和SIGN脉冲来实现STEP(微单步) 、GO(全速)和 HALT(暂停)。当实验平台处于运行状态,并且是微单步执行,PLS1、PLS2、PLS3、PLS4 分别发出一个脉冲,全速执行时PLS1、PLS2、PLS3、PLS4脉冲将周而复始的发送出去。在时序单元中也提供了4个按钮,实验者可手动给出4个独立的脉冲,以便实验者单拍调试模型机。
图2-8-4
信号名称 | 作用 | 有效电平 |
HCK | 时序工作脉冲 | 上升沿有效 |
HALT | 停机 | 低电平有效 |
● 交替按下“运行”和“暂停”,观察运行灯的变化(运行:RUN亮 暂停:RUN灭)。
● 把HALT信号接入二进制拨位开关,HCK接入脉冲单元的PLS1。(请按下表接线)。
信号定义 | 接入开关位号 |
HCK | PLS1? 孔 |
HALT | H13?? 孔 |
接线图示:
按启停单元中的停止按键,使实验平台处于停机状态,置HALT=1。
● 按脉冲单元中的PLS1脉冲按键,在HCK上产生一个上升沿的脉冲,把HALT=1打入74LS74,使RUN=1、STOP=0,RUN亮表示当前实验平台处于运行状态。
● 在实验平台处于运行状态时,置HALT=0。
● 按脉冲单元中的PLS1脉冲按键,在HCK上产生一个上升沿的脉冲,把HALT=0打入74LS74,使RUN=0、STOP=1,RUN灭表示当前实验平台处于停止状态。因此可通过HALT和HCK来控制实验平台的启、停状态。
● 按启停单元中的停止按键,使实验平台处于停机状态,置HALT=1。再次按下脉冲单元中的PLS1脉冲按键,使实验平台处于运行状态。此时按监控单元中键盘上的GO/STOP键,置PC=00,运行程序。请用示波器观察PLS1、PLS1、PLS3、PLS4的波形(见后图2-9-2)。
1、掌握了各个单元模块的工作原理,进一步将其组成完整的系统,构造成1台基本的模型计算机。
2、在本试验中,我们将规划读写内存、寄存器、数值计算等功能,并且编写相应的微程序。请具体上机调试各个模块单元以便进一步掌握整机的概念。
在各个模块实验中,各模块的控制信号都是由实验者手动模拟产生的。而在真正的实验系统中,模型机的运行是在微程序的控制下,实现特定指令的功能。在本实验平台中,模型机从内存中取出、解释、执行机器指令都将由微指令和与之相配合的时序来完成,即1条机器指令对应1个微程序。
根据设计要求,对实验仪硬件资源进行逻辑组合,便可设计出该模型机的整机逻辑框图。如图2-9-1是较典型的实验计算机整机逻辑框图。
简单的模型计算机是由算术逻辑运算单元、微程序单元、堆栈寄存器单元、累加器、启停、时序单元、总线和存储器单元组成。
在模型机中,我们将要实现RAM的读写指令,寄存器的读写指令,跳转指令,ALU的加、减、与、或指令。把通用寄存器作为累加器A,进行左、右移等指令,整体构成一个单累加器多寄存器的系统。
图2-9-1
本实验平台内采用的是8位数据总线和8位地址总线方式,在设计指令系统时,应考虑有哪几种类型的指令,哪几种寻址方式和编码方式。
(1)算术/逻辑运算类指令:
如:加法、减法、取反、逻辑运算
ADD A,Ri,SUB A,Ri
(2)移位操作类指令:
带进位或不带进位的移位指令。
RRC A,RR A
(3)数据传送类指令:
CPU内部寄存器之间数据传递
MOV A,Ri
MOV Ri,A
(4)程序跳转指令
跳转指令分为无条件跳转指令和有条件跳转指令。可根据寄存器内容为零来标志(ZD)、有无进位来标志(CY),也可根据用户自定义标志。
JMP ?addr???????? 无条件跳转
JZ?? addr????????? ZD=0 ?时跳转
JC?? addr????????? CY=0? 时跳转
JN?? addr????????? 自定义
(5)存储器操作类指令
存储器读/写指令。把内存某单元内容写入寄存器中或把寄存器中的内容写入存储器。如:
LDA ?addr??????????????? (addr)->A
STA ?addr???????????????? (A)->addr
2、操作数寻址方式及编码
(1)直接地址寻址:
如:双字节指令
LDA? ?addr?????????? (addr)->A
STA?? addr????????? (A)->addr
第1字节???????????????????????????????? 第2字节
操作码????????????????????????????????? 操作数地址addr |
(2)寄存器直接访址:
指令字节中含有寄存器选择码,决定选哪个寄存器进行操作。
如:单字节指令
MOV? A,Ri?? ????????(Ri)->A
??????????????????? 单字节
????? ?????操作码与Ri选择码 |
如:双字节指令 MOV Ri,#data??????????????????? data->Ri
?????????? 第1字节?????????????? ???????????????????第2字节?
操作码及Ri选择码???????????????????????????????? data |
(3)寄存器间接寻址
如:单字节指令:MOV A,@Ri?????????????????????? (Ri)->A
(4)立即数寻址
如:? MOV A,#data?????????????????????? data->A
MOV Ri,#data????????????????????? data->R
在本实验平台的硬件设计中,采用24位微指令,若微指令采用全水平不编码纯控制场的格式,那么至多可有24个微操作控制信号,可由微代码直接实现。如果采用多组编码译码,那么24位微代码通过二进制译码可实现2 n个互斥的微操作控制信号。
由于模型机指令系统规模较小,功能也不太复杂,所以采用全水平不编码纯控制场的微指令格式。在模型机中,用指令操作码的高4位作为核心扩展成8位的微程序入口地址 MD0~MD7,这种方法称为“按操作码散转”(如下表所示)。
微程序首地址形成 | |||||||
MD7 | MD6 | MD5 | MD4 | MD3 | MD2 | MD1 | MD0 |
0 | 0 | I7 | I6 | I5 | I4 | 1 | 1 |
按操作码散转 | ||||||
指令操作码 | 微程序首地址 | |||||
MD7、MD6 | I7 | I6 | I5 | I4 | MD1、MD0 | MD7~MD0 |
0 | 0 | 0 | 0 | 0 | 1 | 003H |
0 | 0 | 0 | 0 | 1 | 1 | 007H |
0 | 0 | 0 | 1 | 0 | 1 | 00BH |
0 | 0 | 0 | 1 | 1 | 1 | 00FH |
0 | 0 | 1 | 0 | 0 | 1 | 013H |
0 | 0 | 1 | 0 | 1 | 1 | 017H |
0 | 0 | 1 | 1 | 0 | 1 | 01BH |
0 | 0 | 1 | 1 | 1 | 1 | 01FH |
0 | 1 | 0 | 0 | 0 | 1 | 023H |
0 | 1 | 0 | 0 | 1 | 1 | 027H |
0 | 1 | 0 | 1 | 0 | 1 | 02BH |
0 | 1 | 0 | 1 | 1 | 1 | 02FH |
0 | 1 | 1 | 0 | 0 | 1 | 033H |
0 | 1 | 1 | 0 | 1 | 1 | 037H |
0 | 1 | 1 | 1 | 0 | 1 | 03BH |
0 | 1 | 1 | 1 | 1 | 1 | 03FH |
每条指令由不超过4条的微指令组成,那么可根据下表组成每条微程序的首地址。微指令的运行顺序为下地址确定法,即采用计数增量方法,每条微指令执行过后微地址自动加1,指向下一条微指令地址。例如:确定了一条程序的微程序入口地址为07H,那么当执行完07H这条微指令后微地址加1,指向08H微地址。微地址寄存器由2片74LS161组成,当模型机在停止状态下,微地址被清零。当实验平台开始运行时,微地址从00H开始运行。且00H放置一条取指指令,根据程序开始地址从内存中读出第一条指令。
00 | 取指微指令 |
01 | |
02 | |
03 | 减法指令微程序(1) |
04 | 减法指令微程序(2) |
05 | |
06 | |
07 | MOV指令微程序(1) |
08 | MOV指令微程序(2) |
09 | MOV指令微程序(3) |
0A | |
0B | |
0C | |
0D | |
0E | |
0D | |
。。。 | 。。。 |
由于模型机已经确定了指令系统,微指令采用全水平不编码纯控制场的格式,微程序的入口地址采用操作码散转方式,微地址采用计数增量方式,所以可确定模型机中时序单元中所产生的每一拍的作用。
在本实验中为了让实验者更好地观察实验的各个中间过程中各寄存器的值,由监控单元产生一个PLS-O的信号来控制时序产生(如图2-9-2)。PLS-O信号经过时序单元的处理产生了4个脉冲信号。4个脉冲信号组成一个微周期,为不同的寄存器提供工作脉冲。
图 2-9-2
PLS1: 微地址寄存器的工作脉冲,用来设置微程序的首地址及微地址加1。
PLS2: PC 计数器的工作脉冲,根据微指令的控制实现PC 计数器加1和重置PC 计数器(跳转指令)等功能。
PLS3: 把24位微指令打入3片微指令锁存器。
PLS4: 把当前总线上的数据打入微指令选通的寄存器中。
根据模型机整机逻辑图和目前硬件条件来设计指令系统中每条指令的执行流程。在每个系统中,一条指令从内存取出到执行完毕,需要若干个机器周期,任何指令中都必须有一个机器周期作为“取指令周期”,称为公操作周期。而一条指令共需几个机器周期取决于指令在机器内实现的复杂程度。
对于微程序控制的计算机,在设计指令执行流程时,要保证每条微指令所含的微操作的必要性和合理性,还应知道总线IAB,IDB,OAB,ODB仅是传输信息的通路,没有寄存信息的功能,而且必须保证总线传输信息时信息的唯一性。
以下描述取指微指令执行过程:
在模型机处于停机状态时,模型机的微地址寄存器被清零,微指令锁存器输出无效(为高)。在处于停机状态时,脉冲PLS1对微地址寄存器(74LS161)无效,微地址寄存器保持为零。脉冲PLS2对PC 计数器无效,同时PLS2把HALT=1打入启停单元中的运行状态寄存器(74LS74)中,把模型机置为运行状态,使微程序锁存器输出有效。PLS3把微程序存储器00H单元(00H单元存放着取指微指令)中的内容打入微指令锁存器中,并且输出取指微指令。PLS4把从程序存储器中读出的数据打入指令寄存器中。
在模型机处于运行状态时,脉冲PLS1将微地址寄存器(74LS161)加1,脉冲PLS2将PC计数器加1,PLS3把微程序存储器中的微指令打入微指令锁存器并且输出。PLS4把当前总线上的数据打入当前微指令所选通的寄存器。
以下举例说明指令的数据信息流:
例一:单字节指令? ADD? A,Ri?
此程序由4个微指令周期组成:
①PC+1为取下条指令字节准备、累加器A内容送ALU的DR1锁存器
②寄存器Ri内容送ALU的DR2锁存器
③ALU将计算结果送累加器A,据加法结果置进位标志CY
④取指微指令,从内存读出指令送指令寄存器
例二:双字节指令? LDA? addr???
此程序由3个微指令周期组成:
PC+1从内存取得指令第2个字节送入IR2。
PC+1 为取下条指令字节准备IR2,IR2寄存器的内容输出到地址总线上取值,将取得的值送入累加器A
⑤取指微指令,从内存读出指令送指令寄存器
例三:双字节指令? JMP? addr
此程序由2个微指令周期组成:
PC+1从内存取得指令第2个字节送入IR2。
IR2内容形成转移地址送PC ,从内存读出指令字节送指令寄存器
例四:单字节指令? RRC? A? ;该指令功能是将累加器A中内容带进位CY右环移一位,即 :
此程序由2个微指令周期组成:
①PC+1为取下条指令字节准备、控制累加器A带CY右环移一位;(移入CY作A7,移出的A0送CY)
②取指微指令,从内存读出指令送指令寄存器
例五:单字节指令? MOV? A,? @Ri?
此程序由3个微指令周期组成:
①PC+1为取下条指令字节准备、送指令寄存器单元Ri中的内容到IR2寄存器
②IR2寄存器的内容输出到地址总线上取值,将取得的值送入累加器A
③取指微指令,从内存读出指令字节送指令寄存器
例六:双字节指令? MOV? A,? #data?
此程序由2个微指令周期组成:
PC+1从内存取得指令第2个字节送入累加器A。
PC+1执行取指微指令,从内存读出指令字节送指令寄存器
例七:双字节指令? MOV? Ri,? #data?
此程序由2个微指令周期组成:
①PC+1从内存取得指令第2个字节送入寄存器Ri。
②PC+1执行取指微指令,从内存读出指令字节送指令寄存器
计算机组成原理领域就像一片广袤而未被完全探索的技术海洋,邀请你勇敢踏足数字世界和计算机组成原理的神秘领域。这是一场结合创造力和技术挑战的学习之旅,从基础概念到硬件实现,逐步揭示更深层次的计算机结构、指令集架构和系统设计的奥秘。渴望挑战计算机组成原理的学习路径和掌握计算机硬件的技能?不妨点击下方链接,一同探讨更多数字技术的奇迹吧。我们推出了引领趋势的💻 计算机组成原理专栏:《机组 | 模块单元实验》,旨在深度探索计算机系统技术的实际应用和创新。🌐💡