精编计算机组成原理实验 2.9 硬布线控制器资料讲解
注:跳出“断点”后,CPU进入HLT指令的后续下一条指令的取指周期。
实验步骤:
1) 编译如下页所示的机器语言源程序,生成HEX文件分别烧写 到单周期和多周期硬布线控制器版本的程序存储器PROGRAM 中(编译和烧写asm文件的方法参见“2.6存储器实验:ROM 批量导入数据”)
2) 手动按钮MANUAL_CLK一次,令CLK端上升沿跳变,节拍 {T1,T2,T3,T4}={1,0,0,0}。
3) 令RESET=0,74LS194恢复循环右移模式,进入第一条指令 的取指周期节拍时序。
重启过程(跳出HLT“断点”):
1) 时钟CLK接在MANUAL_CLK端,令RESET=1,则#CLR=0,清零 微地址寄存器MA4~MA0和指令寄存器IR。此时,#HLT=1,且 74LS194状态{S0,S1}={1,1},工作模式是送数。
M2
JMP1/JMP2/JMP3 JMP1/JMP2/JMP3 JMP1/JMP2/JMP3 JMP1/JMP2/JMP3
M3
JMP2/JMP3 JMP2/JMP3 JMP2/JMP3 JMP2/JMP3
M4
JMP3 JMP3 JMP3 JMP3
指令译码 电路
微操作信号 硬布线逻辑
(单周期) 时序发生器
【M1】 【M2】 【M3】 【M4】
单周期 硬布线控制器
状态机
【T1】源部件总线BUS 【T2】总线BUS目标部件
【M1】
【M2】
【M3】
【M4】
多周期 硬布线控制器
状态机
【T1】源部件总线BUS
【T2】总线BUS目标部件
Mealy状态机
单周期 硬布线控制器 状态机流程图
【M1】
【T1】PCAR,ROMBUS 【T2】BUSIR, PC+1
【T2】BUSIR, PC+1
【M3】
【T1】 【T1】 【T2】 【T2】
【M3】
【M3】
【M3】
【T1】PCAR,ROMBUS 【T1】PCAR,ROMBUS
【T2】BUSIR, PC+1
【T2】BUSIR, PC+1
【M4】
【T1】 【T1】 【T2】 【T2】
【M4】
【T1】 【T2】
【M4】
【M4】
【T1】PCAR,ROMBUS
【T2】BUSIR, PC+1
微操作信号 LDIR LDAR
PC_INC
M1 NOP/HLT/JMP1/JMP2/JMP3 NOP/HLT/JMP1/JMP2/JMP3 NOP/HLT/JMP1/JMP2/JMP3
NOP/HLT/JMP1/JMP2/JMP3
【M1】
【T1】PCAR,ROMBUS 【T2】BUSIR, PC+1
多周期 硬布线控制器 状态机流程图
NOP指令
P1( 0 0 I7 I6 I5 )
HLT指令 硬件停机
JMP1指令
JMP2指令
JMP3指令
【M2】
【M2】
【M2】
【T1】PCAR,ROMBUS 【T1】PCAR,ROMBUS 【T1】PCAR,ROMBUS
CPU的指令格式
NOP
0000
XX
XX
空指令:不执行任何操作
HLT
1110
XX
XX
“断点”:硬件停机
addr1
直接寻址: addr1 PC
JMP2
0100
XX
XX
addr1
间接寻址: [addr1] =addr2,addr2 PC
JMP3
0110
XX
XX
addr1
二次间址:[addr1]=addr2, [addr2]=addr3, addr3PC
解两者间的差异。
实验内容:
● 分别设计单周期和多周期硬布线版本的CPU,并比较两者 “状态机”的差异。两个版本的CPU在功能上完全兼容微程 序版本CPU(数据通路相同,指令集相同),仅用硬布线逻 辑取代微程序控制器,产生时序各阶段所需的微操作信号。
单周期硬布线控制器版本的CPU
多周期硬布线控制器版本的CPU
NOP指令
JMP1指令
P1( 0 0 I7 I6 I5 ) JMP2指令
HLT指令 硬件停机 JMP3指令
【M2】
【M2】
【M2】
【M2】
【T1】 【T1】PCAR,ROMBUS 【T1】PCAR,ROMBUS 【T1】PCAR,ROMBUS
【T2】 【T2】BUSIR, PC+1
【T2】BUSIR, PC+1
计算机组成原理 实验系列
一、总线与寄存器
二、进位加法器
三、比较器(仲裁器)
四、计数器
五、运算器
六、存储器
七、时序发生器 八、微程序控制器 九、硬布线控制器
赖晓铮 博士 华南理工大学 laixz@ QQ: 68046508
(九)硬布线控制器 实验
实验目的:
● 掌握硬布线控制器的组成原理及设计方法。 ● 理解单周期和多周期硬布线控制器的“状态机”模型,了
【T2】BUSIR, PC+1
【T2】BUSIR, PC+1
【T2】BUSIR, PC+1
【M3】
【M3】
【T1】PCAR,ROMBUS 【T1】PCAR,ROMBUS
【T2】BUSIR, PC+1
【T2】BUSIR, PC+1
LDIR = #LDPC = M1
【M4】
【T1】PCAR,ROMBUS 【T2】BUSIR, PC+1
2) 分别在单周期硬布线控制器版本的CPU和多周期硬布线控制 器版本的CPU中,手动单步执行或自动执行上述机器语言程 序。观察每次单步执行或自动运行到“断点”处的寄存器 AR、IR、PC及总线BUS上的数据,对比单周期和多周期硬布 线控制器的程序运行效率差异。
汇编助记符
JMP1, 06H HLT
NOP/Addr
JMP3, [[0BH]]
NOP/Addr HLT
JMP2, [06H] HLT
LDAR = PC_INC = 1
#OE = 0
{M1M}时序:M=NOP·M1+JMP1·M2+JMP2·M3+JMP3·M4
(多周期) 时序发生器
指令译码电路 M硬布线逻辑 微操作信号 硬布线逻辑
初始化过程:
1) 时钟CLK接在MANUAL_CLK端,令RESET=1,则#CLR=0,清零 微地址寄存器MAx和指令寄存器IR。此时, #HLT=1 ,且 74LS194状态{S0,S1}={1,1},工作模式是送数。
计算机组成原理 5.5 硬布线控制器..
如何解决?
如何解决?
假设执行过程分5段
如何解决?
例4:流水线中有三类数据相关冲突:写后读相关; 读后写相关;写后写相关。判断以下三组指令各存 在哪种类型的数据相关。
(1) I1: I2: (2) I3: I4: (3) I5: I6:
ADD R1,R2,R3 ; (R2) + (R3)->R1 写后读 SUB R4,R1,R5 ; (R1) - (R5)->R4 STA M(x),R3 ; (R3)->M(x),M(x)存储单元 读后写 ADD R3,R4,R5 ; (R4)+(R5)->R3 MUL R3,R1,R2 ; (R1)×(R2)->R3 写后写 ADD R3,R4,R5 ; (R4) + (R5)->R3
P157,例3,写出控制信号的逻辑表达式
Tx在图中看不出来
总结:两种控制器比较微ຫໍສະໝຸດ 序 硬布线
执行速度 可扩展性 规整性 设计的难易程度 电路复杂程度 应用范围
5.7
流水CPU
一、并行处理技术(阅读) •并行的含义 •时间并行
•空间并行
•时间并行+空间并行
二、流水计算机的系统组成(示例)
5.8 RISC CPU
读P171页 RISC概括的三个基本要素 RISC机器的特征是
小结
流水CPU的设计思想 有哪三种冲突
P175,例5,画时空图
P175,例5,画时空图
W2 W1 乘3 乘2 乘1 加2 加1
取/存
I1:M(A)->R1 I2:(R2)+(R1)->R2 I3:(R3)+(R4)->R3 I4:(R4)*(R5)->R4 I5:M(B)->R6 I6:(R6)*(R7)->R6
硬布线控制器.ppt
1)每条指令的指令周期不同
取指周期 指令周期
取指周期
执行阶段
指令周期
NOP ADD mem
取指周期
执行周期 指令周期
MUL mem
具有间接寻址的指令周期
取指周期
间址周期 指令周期
执行周期
带有中断周期的指令周期
取指周期
PC +1
IR
MAR CU MDR
存储器
2. 间址周期数据流
一旦取指周期结束,CU便检查IR中的内容,以确定是否有间 址操作,如果需间址操作,则MDR中指示形式地址的右N位 (记作Ad(MDR))将被送到MAR,又送至地址总线,此后CU 向存储器发读命令,以获取有效地址并存至MDR。
CPU
地数 控 址据 制 总总 总 线线 线
总线
主
发/接
从
接/发
③优缺点:时间安排紧凑、合理;控制复杂。 ④应用场合: 用于异步总线操作(各挂接部件速 度差异大,传送时间不确定,传送距离较远)。
(3)联合控制方式 ①不同指令安排不同时钟周期数 指令周期长度可变,时钟周期长度不变。 ②总线周期中插入延长周期 经总线传送一次数据所用的时间(送地址、读/写)
指令周期
……
工作周期1 工作周期2
工作周期n
….
时钟周期1
(节拍1)
时钟周期2
(节拍2)
时钟周期m
(节拍m)
….
….. ……….
工作脉冲1 工作脉冲2
工作脉冲k
● 时序关系:
晶振输出
工作脉冲P 对微操作定时
打入IR 打入PC
计算机组成原理第五章第5讲硬布线控制器模板PPT课件
若干个 节拍脉 冲
图5.29 硬布线控制器的指令周期流程图
8
5.5 硬布线控制器
(3)微操作控制信号的产生
• 在硬布线控制器中,某一微操作控制信号由布 尔代数表达式描述的输出函数产生。
• 设计微操作控制信号的方法和过程是,根据所 有机器指令流程图,寻找出产生同一个微操作 信号的所有条件,并与适当的节拍电位和节拍 脉冲组合,从而写出其布尔代数表达式并进行 简化,然后用门电路或可编程器件来实现。
感谢您的观看与聆听
本课件下载后可根据实际情况进行调整
18
9
5.5 硬布线控制器
(4)设计步骤
• ①画出指令流程图 • ②列出微操作时间表
将指令流程图中的微操作合理地安排到各个机器周 期的相应节拍和脉冲中去;
微操作时间表形象地表明:什么时间、根据什么条 件发出哪些微操作信号。
10
5.5 硬布线控制器
③进行微操作信号的综合
当列出所有指令的微操作时间表之后,需 要对它们进行综合分析,把凡是要执行某一微 操作的所有条件(哪条指令、哪个机器周期、哪 个节拍和脉冲等)都考虑在内,加以分类组合, 列出各微操作产生的逻辑表达式,然后加以简 化,使逻辑表达式更为合理。
• 组合逻辑控制器除了节拍脉冲信号外,还需要 节拍电位信号。
6
5.5 硬布线控制器
工作原理
• 当机器加电工作时,某一操作控制信号C在某 条特定指令和状态条件下,在某一时序信号的 特定节拍电位和节拍脉冲时间间隔中起作用, 从而激活这条控制信号线,对执行部件实施控 制。
7
5.5 硬布线控制器
P167 图5.29
硬布线控制器
1
整体概述
概况一
点击此处输入相关文本内容 点击此处输入相关文本内容
计算机组成原理实验报告
计算机组成原理实验报告实验报告运算器实验⼀、实验⽬的掌握⼋位运算器的数据传输格式,验证运算功能发⽣器及进位控制的组合功能。
⼆、实验要求完成算术、逻辑、移位运算实验,熟悉ALU运算控制位的运⽤。
三、实验原理实验中所⽤的运算器数据通路如图2-3-1所⽰。
ALU运算器由CPLD描述。
运算器的输出FUN经过74LS245三态门与数据总线相连,运算源寄存器A和暂存器B的数据输⼊端分别由2个74LS574锁存器锁存,锁存器的输⼊端与数据总线相连,准双向I/O 输⼊输出端⼝⽤来给出参与运算的数据,经2⽚74LS245三态门与数据总线相连。
图2-3-1运算器数据通路图中A WR、BWR在“搭接态”由实验连接对应的⼆进制开关控制,“0”有效,通过【单拍】按钮产⽣的脉冲把总线上的数据打⼊,实现运算源寄存器A、暂存器B的写⼊操作。
四、运算器功能编码算术运算逻辑运算K23~K0置“1”,灭M23~M0控位显⽰灯。
然后按下表要求“搭接”部件控制路。
表2.3.2 运算实验电路搭接表算术运算1.运算源寄存器写流程通过I/O单元“S7~S0”开关向累加器A和暂存器B置数,具体操作步骤如下:2.运算源寄存器读流程关闭A、B写使能,令K18=K17=“1”,按下流程分别读A、B。
3.加法与减法运算令M S2 S1 S0(K15 K13~K11=0100),为算术加,FUN及总线单元显⽰A+B的结果令M S2 S1 S0(K15 K13~K11=0101),为算术减,FUN及总线单元显⽰A-B的结果。
逻辑运算1.运算源寄存器写流程通过“I/O输⼊输出单元”开关向寄存器A和B置数,具体操作步骤如下:2.运算源寄存器读流程关闭A、B写使能,令K17= K18=1,按下流程分别读A、B。
①若运算控制位设为(M S2 S1 S0=1111)则F=A,即A内容送到数据总线。
②若运算控制位设为(M S2 S1 S0=1000)则F=B,即B内容送到数据总线。
第20讲 硬布线控制器
+1 送M或ALU
运行状态
地址形成
D
OP
PSW
IR
来自M 产生脉冲型 微命令,控 制定时操作
5.时序线路
功能: 控制操作时间和操作时刻。
工作脉冲
振荡器
时钟脉冲
分频器
时钟周期(节拍)
产生电位 型微命令, 控制操作 时间段
微命令序列 I/O状态 控制台信息
送M
PC 微命令 发生器 时序 …... 译 码
例.一个总线周期包含4个时钟周期
T1 T2 T3 T4
结束
时钟
送地址 读/写数据
总线周期(4T) T1
时钟
送地址 读/写数据
同步方式
Tw T4 T4
结束
T2
T3
总线周期(5T)
扩展同步方式
③同步方式引入异步应答 以固定时钟周期作为时序基础,引入应答思想。
例.8088最大模式,用一根总线请求/应答线 实现总线权的转移。
送M
PC 微命令 发生器 时序 …... 译 码
寻
+1 送M或ALU
运行状态
地址形成
D
OP
PSW
IR
来自M
信号
3.指令寄存器IR
功能: 存放现行指令。 操作码字段 译码器
寻
决定操作 微命令发生器 性质
地址码字段
D
地址形成部件
操作数地址 转移地址
微命令序列 I/O状态 控制台信息
送M
PC 微命令 发生器 时序 …... 译 码
CPU使用 CPU使用 总线 总线 RQ/GT
若干时钟
设备使用 总线
若干时钟
CPU使用 总线
组成原理实验报告-基于硬布线控制器设计并实现
评语: 课中检查完成的题号及题数:课后完成的题号与题数:成绩: 指导教师:实验报告日期:2011-1-12实验名称:基于硬布线控制器设计并实现带中断功能的复杂模型机班级:学号:姓名:一、实验目的:1. 掌握硬布线控制器的组成原理、设计方法;2. 了解硬布线控制器和微程序控制器的各自优缺点;3. 掌握并会设计带中断功能的复杂模型机的硬布线控制器。
二、实验内容:1. 根据带中断功能的复杂模型机的微程序流图,画出状态机描述图;2. 分析每个状态所需的控制信号,产生控制信号表,并用VHDL语言来设计程序,实现状态机描述的功能;3. 用Quartus软件进行编译链接,选择器件,定义管脚,编程下载,然后用CM3P联机测试每一条机器指令的功能。
三、项目要求及分析:实验要求设计带中断功能的复杂模型机的硬布线控制器,可先参照前面带中断处理能力的模型机设计实验画出微程序流程图,参照二进制微代码表设控制信号表。
然后用VHDL语言编程实现,主要注意原P<1>—P<4>的修改,采用分支语句实现。
然后就是连线装载带中断处理能力的模型机微程序检验。
四、具体实现:应包括:状态图、控制信号表、控制引脚图、VHDL程序、机器码验证程序等。
2、控制状态表:INTA/WR/RD/IOM/S3/S2/S1/S0/LDA/LDB/LDR0/LDSP/L0AD/LDAR/LDIR/ALUB/RSB/RDB/RIB/SPB/PCB/LDPC/STI/CLI S0 100000000000100111111010S1 100000000000100111111011S2 100000000000110111110111S3 101000000000101111111011S4 100000000100100101111011S5 100010010010100011111011S6 100000000100100101111011S7 100000100010100011111011S8 101000000000110111111011S9 101100000010100111111011S10 101000000000110111111011S11 100000000000100111111011S12 101000000010100111111011S13 110000000000100110111011S16 110100000000100101111011 S17 101000000010100111111011 S18 110000000000100101111011 S19 100000001000100111101011 S20 100011010001100011111011 S21 100011000001100011111011 S22 100000000000110111101011 S23 101000000010100111111011 S24 100011000001100011111011 S25 100000000000110111101011 S26 101000000000000111111111 S27 100000000000000011111111 S28 101000001000100111111011 S29 101000000000110111111011 S30 101000000000110111111011 S31 101000001000100111111011 S32 101000000000110111111011 S33 000000000000110111101011 S34 110000000000100111110011 S35 100000001000100111101011 S36 100011010001100011111011 S37 000000000000110111111011 S38 101000000000000111111111 S39 101000001000100111111011 S40 100000000100100111011011 S41 100010010000110011111011 S42 100010011000100011111011 S43 101000001000100111111011 S44 100000000100100111110011 S45 100010010000110011111011 S46 100010011000100011111011 S47 100000001000100110111011 S48 100000001000100110111011 S49 100000000000110111110111 S50 100000000000110111110111 S51 100000000010100101111011 S52 100000000000100111111011 S53 100000000000110111110111 S54 100000000000100111111001 S55 100000000000100111111010 S56 100000000000110111101011 S57 100000001000100111101011 S58 1000000010001001111010114、VHDL程序:LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;ENTITY CONTROLLER ISPORT(RESET : IN STD_LOGIC;T1 : IN STD_LOGIC;INTR : IN STD_LOGIC;INS : IN STD_LOGIC_VECTOR(7 DOWNTO 0);CTRL : OUT STD_LOGIC_VECTOR(23 DOWNTO 0));END CONTROLLER;ARCHITECTURE CONTROLLER_ARCH OF CONTROLLER ISTYPE STA TE IS (S0,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15,S16,S17,S18,S19,S20,S21,S22,S23,S24,S25,S26,S27,S28,S29,S30,S31,S32,S33,S34,S35, S36,S37,S38,S39,S40,S41,S42,S43,S44,S45,S46,S47,S48,S49,S50,S51,S52,S53,S54, S55,S56,S57,S58,S59,S60,S61,S62);SIGNAL CUFSM: STATE;--CTRL:INTA,WR,RD,IOM,S3,S2,S1,S0,LDA,LDB,LDRI,LDSP,LOAD,LDAR,LDIR,ALU_B,RS_B,RD_B,RI_B,SP_B,PC _B,LDPC,STI,CLIBEGINPROCESS (T1,RESET,INTR,INS)BEGINIF RESET = '0' THENCTRL <= "100000000000100111111010"; --CLICUFSM <= S0;ELSIF T1'EVENT AND T1 = '1' THENCASE CUFSM ISWHEN S0 =>CTRL <= "100000000000100111111011"; --中断判断CUFSM <= S1;WHEN S1 =>IF INTR='1' THENCTRL <= "000000000000110111101011"; --R0->BUS,BUS->ACUFSM <= S33;ELSE CTRL <= "100000000000110111110111";CUFSM <= S2;END IF;WHEN S33=>CTRL <= "110000000000100111110011";CUFSM <= S34;WHEN S34=>CTRL <= "100000001000100111101011";CUFSM <= S35;WHEN S35=>CTRL <= "100011010001100011111011";CUFSM <= S36;WHEN S36=>CUFSM <= S37;WHEN S37=>CTRL <= "101000000000000111111111";CUFSM <= S38;WHEN S38=>CTRL <= "100000000000110111110111";CUFSM <= S2;WHEN S2=>CTRL <= "101000000000101111111011";CUFSM <= S3;WHEN S3 =>IF INS(7 downto 4) = "0000" THEN --ADD INSCTRL <= "100000001000100110111011";CUFSM <= S47;ELSIF INS(7 downto 4) = "0001" THEN --AND INS CTRL <= "100000001000100110111011";CUFSM <= S48;ELSIF INS(7 downto 4) = "0010" THEN -- IN INS CTRL <= "100000000000110111110111";CUFSM <= S49;ELSIF INS(7 downto 4) = "0011" THEN --OUT INS CTRL <= "100000000000110111110111";CUFSM <= S50;ELSIF INS(7 downto 4) = "0100" THEN -- MOV INS CTRL <= "100000000010100101111011";CUFSM <= S51;ELSIF INS(7 downto 4) = "0101" THEN -- HLT INS CTRL <= "100000000000100111111011";CUFSM <= S52;ELSIF INS(7 downto 4) = "0110" THEN -- LDI INS CTRL <= "100000000000110111110111";CUFSM <= S53;ELSIF INS(7 downto 4)= "0111" THEN -- STI INSCUFSM <= S54;ELSIF INS(7 downto 4) = "1000" THEN -- CLI INSCTRL <= "100000000000100111111010";CUFSM <= S55;ELSIF INS(7 downto 4) = "1001" THEN -- PUSH INSCTRL <= "100000000000110111101011";CUFSM <= S56;ELSIF INS(7 downto 4) = "1010" THEN -- POP INSCTRL <= "100000001000100111101011";CUFSM <= S57;ELSIF INS(7 downto 4) = "1011" THEN -- INET INSCTRL <= "100000001000100111101011";CUFSM <= S58;ELSIF INS(7 downto 6) = "11" AND INS(3 downto 2) = "00" THEN -- 直接INS CTRL <= "100000000000110111110111";CUFSM <= S59;ELSIF INS(7 downto 6) = "11" AND INS(3 downto 2) = "01" THEN -- 间接INS CTRL <= "100000000000110111110111";CUFSM <= S60;ELSIF INS(7 downto 6) = "11" AND INS(3 downto 2) = "10" THEN -- 变址INS CTRL <= "100000000000110111110111";CUFSM <= S61;ELSIF INS(7 downto 6) = "11" AND INS(3 downto 2) = "11" THEN -- 相对INS CTRL <= "100000000000110111110111";CUFSM <= S62;END IF;WHEN S47=>CTRL <= "100000000100100101111011";CUFSM <= S4;WHEN S4=>CTRL <= "100010010010100011111011";CUFSM <= S5;WHEN S5=>CTRL <= "100000000000100111111011";WHEN S48=>CTRL <= "100000000100100101111011";CUFSM <= S6;WHEN S6 =>CTRL <= "100000100010100011111011";CUFSM <= S7;WHEN S7=>CTRL <= "100000000000100111111011";CUFSM <= S1;WHEN S49=>CTRL <= "101000000000110111111011";CUFSM <= S8;WHEN S8=>CTRL <= "101100000010100111111011";CUFSM <= S9;WHEN S9=>CTRL <= "100000000000100111111011";CUFSM <= S1;WHEN S50=>CTRL <= "101000000000110111111011";CUFSM <= S10;WHEN S10=>CTRL <= "110100000000100101111011";CUFSM <= S16;WHEN S16=>CTRL <= "100000000000100111111011";CUFSM <= S1;WHEN S51=>CTRL <= "100000000000100111111011";CUFSM <= S1;WHEN S52=>CTRL <= "100000000000100111111011";CUFSM <= S1;WHEN S53=>CUFSM <= S17;WHEN S17=>CTRL <= "100000000000100111111011";CUFSM <= S1;WHEN S54=>CTRL <= "100000000000100111111011";CUFSM <= S1;WHEN S55=>CTRL <= "100000000000100111111011";CUFSM <= S1;WHEN S56=>CTRL <= "110000000000100101111011";CUFSM <= S18;WHEN S18=>CTRL <= "100000001000100111101011";CUFSM <= S19;WHEN S19=>CTRL <= "100011010001100011111011";CUFSM <= S20;WHEN S20=>CTRL <= "100000000000100111111011";CUFSM <= S1;WHEN S57=>CTRL <= "100011000001100011111011";CUFSM <= S21;WHEN S21=>CTRL <= "100000000000110111101011";CUFSM <= S22;WHEN S22=>CTRL <= "101000000010100111111011";CUFSM <= S23;WHEN S23=>CTRL <= "100000000000100111111011";CUFSM <= S1;CTRL <= "100011000001100011111011";CUFSM <= S24;WHEN S24=>CTRL <= "100000000000110111101011";CUFSM <= S25;WHEN S25=>CTRL <= "101000000000000111111111";CUFSM <= S26;WHEN S26=>CTRL <= "100000000000100111111011";CUFSM <= S1;WHEN S59=>CTRL <= "101000001000100111111011";CUFSM <= S28;WHEN S28=>CTRL <= "101000000000110111111011";CUFSM <= S29;WHEN S60=>CTRL <= "101000000000110111111011";CUFSM <= S30;WHEN S30=>CTRL <= "101000001000100111111011";CUFSM <= S31;WHEN S31=>CTRL <= "101000000000110111111011";CUFSM <= S32;WHEN S61 =>CTRL <= "101000001000100111111011";CUFSM <= S39;WHEN S39 =>CTRL <= "100000000100100111011011";CUFSM <= S40;WHEN S40 =>CTRL <= "100010010000110011111011";WHEN S41 =>CTRL <= "100010011000100011111011";CUFSM <= S42;WHEN S62 =>CTRL <= "101000001000100111111011";CUFSM <= S43;WHEN S43 =>CTRL <= "100000000100100111110011";CUFSM <= S44;WHEN S44 =>CTRL <= "100010010000110011111011";CUFSM <= S45;WHEN S45 =>CTRL <= "100010011000100011111011";CUFSM <= S46;WHEN S29=>IF INS(7 downto 4) = "1100" THENCTRL <= "101000000010100111111011";CUFSM <= S12;ELSIF INS(7 downto 4) = "1101" THENCTRL <= "110000000000100110111011";CUFSM <= S13;ELSIF INS(7 downto 4) = "1110" THENCTRL <= "100000000000000011111111";CUFSM <= S14;ELSIF INS(7 downto 4) = "1111" THENCTRL <= "100000000000100111111011";CUFSM <= S15;END IF;WHEN S32=>IF INS(7 downto 4) = "1100" THENCTRL <= "101000000010100111111011";CUFSM <= S12;ELSIF INS(7 downto 4) = "1101" THENCTRL <= "110000000000100110111011";CUFSM <= S13;ELSIF INS(7 downto 4) = "1110" THENCTRL <= "100000000000000011111111";CUFSM <= S14;ELSIF INS(7 downto 4) = "1111" THENCTRL <= "100000000000100111111011";CUFSM <= S15;END IF;WHEN S42 =>IF INS(7 downto 4) = "1100" THENCTRL <= "101000000010100111111011";CUFSM <= S12;ELSIF INS(7 downto 4) = "1101" THENCTRL <= "110000000000100110111011";CUFSM <= S13;ELSIF INS(7 downto 4) = "1110" THENCTRL <= "100000000000000011111111";CUFSM <= S14;ELSIF INS(7 downto 4) = "1111" THENCTRL <= "100000000000100111111011";CUFSM <= S15;END IF;WHEN S46 =>IF INS(7 downto 4) = "1100" THENCTRL <= "101000000010100111111011";CUFSM <= S12;ELSIF INS(7 downto 4) = "1101" THENCTRL <= "110000000000100110111011";CUFSM <= S13;ELSIF INS(7 downto 4) = "1110" THENCTRL <= "100000000000000011111111";CUFSM <= S14;ELSIF INS(7 downto 4) = "1111" THENCTRL <= "100000000000100111111011";CUFSM <= S15;END IF;WHEN S12=>CTRL <= "100000000000100111111011"; --R0->BUS,BUS->BCUFSM <= S1;WHEN S13=>CTRL <= "100000000000100111111011"; --R0->BUS,BUS->BCUFSM <= S1;WHEN S14=>CTRL <= "100000000000100111111011"; --R0->BUS,BUS->BCUFSM <= S1;WHEN S15=>IF INS = "00000000" THENCTRL <= "100000000000100111111011";CUFSM <= S11;ELSIF INS = "10000000" THENCTRL <= "100000000000000011111111";CUFSM <= S27;END IF;WHEN S11=>CTRL <= "100000000000100111111011"; --R0->BUS,BUS->BCUFSM <= S1;WHEN S27=>CTRL <= "100000000000100111111011"; --R0->BUS,BUS->BCUFSM <= S1;END CASE;END IF;END PROCESS;END CONTROLLER_ARCH ;5、机器码验证程序:$P 00 60 ; LDI R0,13H 将立即数13装入R0$P 01 13$P 02 30 ; OUT C0H,R0 将R0中的内容写入端口C0中,即写$P 03 C0 ; ICW1,边沿触发,单片模式,需要ICW4 $P 04 60 ; LDI R0,30H 将立即数30装入R0$P 05 30$P 06 30 ; OUT C1H,R0 将R0中的内容写入端口C1中,即写$P 07 C1 ; ICW2,中断向量为30-37$P 08 60 ; LDI R0,03H 将立即数03装入R0$P 09 03$P 0A 30 ; OUT C1H,R0 将R0中的内容写入端口C1中,即写$P 0B C1 ; ICW4,非缓冲,86模式,自动EOI$P 0C 60 ; LDI R0,FEH 将立即数FE装入R0$P 0D FE$P 0E 30 ; OUT C1H,R0 将R0中的内容写入端口C1中,即写$P 0F C1 ; OCW1,只允许IR0请求$P 10 63 ; LDI SP,A0H 初始化堆栈指针为A0$P 11 A0$P 12 70 ; STI CPU开中断$P 13 20 ; IN R0,00H 从端口00(IN单元)读入计数初值$P 14 00$P 15 41 ; LOOP:MOV R1,R0 移动数据,并等待中断$P 16 E0 ; JMP LOOP 跳转,并等待中断$P 17 15; 以下为中断服务程序:$P 20 80 ; CLI CPU关中断$P 21 61 ; LDI R1,01H 将立即数01装入R1$P 22 01$P 23 04 ; ADD R0,R1 将R0和R1相加,即计数值加1$P 24 30 ; OUT 40H,R0 将计数值输出到端口40(OUT单元)$P 25 40$P 26 70 ; STI CPU开中断$P 27 B0 ; IRET 中断返回$P 30 20 ; IR0的中断入口地址20五、运行结果:初始化8259,然后原地踏步等待中断,每中断一次R0 +1,把R0输出到OUT单元计算了14次,如out 单元:六、所遇问题及解决方法:VHDL语言编程主要实现各个分支,这里要参照流程图,细心不出错后面实现就比较简单了。
计算机组成原理实验 硬布线控制器
计算机组成原理硬布线控制器课件
实现复杂度
硬布线控制器的实现复杂度相对 较低,因为其控制逻辑通过硬件 电路实现,而微程序控制器则需 要编写和维护微程序代码,实现
复杂度较高。
02
硬布线控制器的组 成
控制存储器
功能
存储控制指令,决定各个部件的操作 。
特点
速度快,不易出错,但不易修改和扩 展。
输入输出接口
功能
连接控制器与外部设备,实现数据输入输出。
输入输出控制
硬布线控制器还负责控制 计算机系统比较
执行速度
硬布线控制器由于采用硬件逻辑 电路实现控制指令的执行,因此 在执行速度上通常比微程序控制
器更快。
设计灵活性
微程序控制器通过微程序实现控 制指令的执行,设计灵活性较高 ,而硬布线控制器则相对固定,
高速与低功耗
随着数据处理需求的增长,对硬布线控制器的数据传输速率和功耗性能提出了更高的要求 。未来的控制器将致力于实现更高的数据传输速度和更低的功耗,以满足不断增长的计算 需求。
技术展望
01
新材料与新工艺
随着新材料和新工艺的发展,硬布线控制器有望采用更先进的材料和制
造工艺,以提高性能、降低成本并实现更小的体积。这为控制器在更多
领域的应用提供了可能。
02
可重构计算
可重构计算技术的引入将为硬布线控制器带来新的发展机遇。通过可重
构计算,控制器可以根据不同的任务需求动态调整内部结构,实现高效
的任务处理。
03
人工智能与控制器的融合
随着人工智能技术的不断发展,未来硬布线控制器将与人工智能技术深
度融合。通过集成人工智能算法,控制器能够更好地处理复杂的任务,
变化的计算机系统需求。
06
计算机组成原理第五章 第5讲 硬布线控制器
5.5 硬布线控制器
(2)指令的执行流程
• 微程序控制器时序信号简单。只需要若干节拍 脉冲信号即可。 • 组合逻辑控制器除了节拍脉冲信号外,还需要 节拍电位信号。
5.5 硬布线控制器
工作原理
• 当机器加电工作时,某一操作控制信号C在某 条特定指令和状态条件下,在某一时序信号的 特定节拍电位和节拍脉冲时间间隔中起作用,。
5.5 硬布线控制器
P167 图5.29
节拍 电位
若干个 节拍脉 冲 图5.29 硬布线控制器的指令周期流程图
5.5 硬布线控制器
(3)微操作控制信号的产生
• 在硬布线控制器中,某一微操作控制信号由布 尔代数表达式描述的输出函数产生。 • 设计微操作控制信号的方法和过程是,根据所 有机器指令流程图,寻找出产生同一个微操作 信号的所有条件,并与适当的节拍电位和节拍 脉冲组合,从而写出其布尔代数表达式并进行 简化,然后用门电路或可编程器件来实现。
5.5 硬布线控制器
④实现电路 根据整理并化简的逻辑表达式组,可以 用一系列组合逻辑电路加以实现,加根据 逻辑表达式画出逻辑电路图,用逻辑门电 路的组合来实现之,也可以直接根据逻辑 表达式,用PLA或其他逻辑电路实现。 PS. PLA(Programmable logic arrays) 可编程逻辑阵列
5.5 硬布线控制器
(4)设计步骤
• ①画出指令流程图 • ②列出微操作时间表
将指令流程图中的微操作合理地安排到各个机器周 期的相应节拍和脉冲中去; 微操作时间表形象地表明:什么时间、根据什么条 件发出哪些微操作信号。
5.5 硬布线控制器
③进行微操作信号的综合
计算机组成实验报告
一、实验目的1. 理解计算机组成原理的基本概念和结构。
2. 掌握计算机各主要部件(如CPU、存储器、总线等)的工作原理。
3. 熟悉计算机指令系统的基本知识。
4. 通过实验加深对计算机组成原理的理解。
二、实验环境1. 实验平台:EL-JY-II型计算机组成原理实验系统2. 实验软件:计算机组成原理实验软件3. 实验设备:计算机组成原理实验箱三、实验内容1. CPU数据通路实验(1)实验目的:了解CPU的数据通路结构,掌握各逻辑部件的功能及数据流动方向。
(2)实验步骤:1. 组装CPU数据通路,包括ALU、程序计数器PC、主存M、主存数据寄存器MDR、主存地址寄存器MAR、指令寄存器IR、通用寄存器R0-R3、暂存器C和D等。
2. 指示数据流动方向,确保各部件正确连接。
3. 验证数据通路功能,观察数据流动过程。
(3)实验结果:成功组装CPU数据通路,实现数据正确流动。
2. 指令周期实验(1)实验目的:掌握典型指令的指令周期,了解指令执行过程。
(2)实验步骤:1. 画出“MOV R0, R1”、“LAD R1, (R2)”、“ADD R1, R2”、“STO R2,(R3)”等指令的指令周期方框图。
2. 分析指令执行过程,理解各阶段功能。
(3)实验结果:成功画出指令周期方框图,并理解指令执行过程。
3. 硬布线控制器与微程序控制器实验(1)实验目的:了解硬布线控制器和微程序控制器的工作原理及区别。
(2)实验步骤:1. 比较硬布线控制器和微程序控制器的结构及工作原理。
2. 分析两种控制器的优缺点。
(3)实验结果:理解硬布线控制器和微程序控制器的工作原理及区别。
4. 流水线CPU实验(1)实验目的:掌握流水线CPU的工作原理,分析流水线各过程段。
(2)实验步骤:1. 分析指令流水线的取值、译码、执行、访存、写回寄存器五个过程段。
2. 画出流水处理的时空图,计算流水线的实际吞吐率和加速比。
(3)实验结果:成功分析指令流水线各过程段,并计算流水线性能指标。
