




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验七 控制器-指令译码器的设计与调试1 实验目的(1)理解控制器中“指令译码器”的作用和重要性。(2)学习设计指令译码器。2 实验原理指令译码器是计算机控制器中最重要的部分。所谓“组合逻辑控制器”就是指指令译码电路是由组合逻辑实现的。组合逻辑控制器又称硬连线控制器,是早期设计计算机的一种方法。这种控制器中的控制信号直接由各种类型的逻辑门和触发器等组合产生。这样,一旦控制部件构成后,除非重新设计和物理上对它重新连线,否则要想增加新的功能是不可能的。结构上的这种缺陷使得硬连线控制器的设计和调试变得非常复杂而且代价很大。所以,硬连线控制器曾一度被“微程序控制器”所取代。但是随着新一代机器及VLSI
2、技术的发展,这种控制器又得到了重视,如RISC机广泛使用这种控制器。1). 组合逻辑控制器原理图1 组合逻辑控制器的结构方框图图1是组合逻辑控制器的结构方框图。逻辑网络的输入信号来源有三个:(1)指令操作码译码器的输出In;(2)来自时序发生器的节拍电位信号Tk;(3)来自执行部件的反馈信号Bj。逻辑网络的输出信号就是微操作控制信号,用来对执行部件进行控制。组合逻辑控制器可描述为:某一微操作控制信号Cm是指令操作码译码器的输出In、时序信号(节拍电位信号Tk)和状态条件信号Bj的逻辑函数。即Cmf(In,Tk,Bj)用这种方法设计控制器,需要根据每条指令的要求,让节拍电位和时序脉冲有步骤地去控
3、制机器的各有关部分,一步一步地执行指令所规定的微操作,从而在一个指令周期内完成一条指令所规定的全部操作。一般来说,组合逻辑控制器的设计步骤如下。(1)绘制指令流程图为了确定指令执行过程所需的基本步骤,通常是以指令为线索,按指令类型分类,将每条指令归纳成若干微操作,然后根据操作的先后次序画出流程图。(2)安排指令操作时间表指令流程图的进一步具体化,把每一条指令的微操作序列分配到各个机器周期的各个时序节拍信号上。要求尽量多的安排公共操作,避免出现互斥。(3)安排微命令表以指令流程图为依据,表示出在哪个机器周期的哪个节拍有哪些指令要求哪些微命令。(4)进行微操作逻辑综合根据微操作时间表,将执行某一微
4、操作的所有条件(哪条指令、哪个机器周期、哪个节拍和脉冲等)都考虑在内,加以分类组合,列出各微操作产生的逻辑表达式,并加以简化。(5)实现电路根据上面所得逻辑表达式,用逻辑门电路的组合或大规模集成电路来实现。3 实验要求1)实验设计目标本实验要求根据所给的指令系统(见附件1,硬件结构参见附件2)设计指令译码器,本实验指令译码器的设计相对比较简单,节拍(t1、t2和t3)因素只在存储器读写时需要对存储器地址分时使用时需要考虑,这里暂不考虑节拍脉冲t,也就是说微操作控制信号只是指令操作码In和Bj的函数:Cm = f(In,Bj)式中的In主要代表指令操作码IR15.12,还有辅助操作码(如算术逻辑
5、指令时的IR2.0,我们这里要求只考虑指令操作码IR15.12及反馈信号Bj,(进位标志C和零标志Z)。要求产生的微操作控制信号如下:op_code 控制ALU进行8种运算操作的3位编码。c_z_j_flag 为1表示需要条件转移。lj_instruct 为1表示本条指令是条“JMP ADR”指令。DRWr 为1表示在t3的下降沿将本条指令的执行结果写入目的寄存器。Mem_Write 为1表示本条指令有存储器写操作,存储器的地址是目的寄存器的内容。DW_intruct 为1表示本条指令是双字指令。change_z 为1表示本条指令可能改变z(结果为0)标志。change_c 为1表示本条指令可
6、能改变c(进位)标志。sel_memdata 为1表示本条指令写入目的寄存器的值来自读存储器。2)顶层设计实体的引脚要求引脚要求的对应关系如下:(1)指令IR15.12对应实验台开关SD3SD0 input 进位C对应实验台开关SD4 结果为0标志Z对应实验台开关SD5(2)控制信号对应如下: outputop_code2.0指示灯R2、R1、R0 c_z_j_flag指示灯R3lj_instruct指示灯R4DRWr指示灯R5Mem_Write指示灯R6DW_intruct指示灯R7change_z 指示灯R8change_c指示灯R9sel_memdata指示灯R104 实验步骤(1)实验
7、台设置成FPGA-CPU独立调试模式REGSEL = 0、CLKSEL = 1、FDSEL = 0。使用实验台上的单脉冲,即STEP_CLK短路子短接,短路子RUN_CLK断开。(2)将设计在Quartus 下输入,编译后下载到TEC-CA上的FPGA中。(3)拨动实验台上的开关SD5SD0,改变IR15.12、进位标志C和结果为0标志Z,观察指示灯R10-R0显示的控制信号,并填写表1和表2。5 补充题(1)如果考虑辅助指令操作码,指令译码器如何改进?(2) 如果加上PUSH SR、POP DR、CALL ADDR和RET等指令,指令译码器如何设计?(3) 如果指令集改为MIPS指令集,指令
8、译码器如何设计?(选)6实验记录 观察实验中相关信号灯的变化情况,记录并且填写表1、表2;7. 实验报告 1. 分析VHDL程序结构。 2. 填写实验表1和表2及说明。3表1 指令译码器实验(C=0且Z=0)指令IR15.12OP2.0c_z_j_flaglj_instructDRWrMem_WriteDW_intructchange_zchange_csel_memdataADD DR,SR000000000100110INC DRSUB DR,SRDEC DRAND DR,SROR DR,SRNOT DRMOV DR,SRJMP ADRJNC ADRJNZ ADRMVRD DR,DATAL
9、DR DR,SRSTR SR,DR表2 指令译码器实验(C=0且Z=1或者C=1且Z=0或者C=1且Z=1)指令IR15.12OP2.0c_z_j_flaglj_instructDRWrMem_WriteDW_intructchange_zchange_csel_memdataADD DR,SRINC DRSUB DR,SRDEC DRAND DR,SROR DR,SRNOT DRMOV DR,SRJMP ADR100011101000000JNC ADRJNZ ADRMVRD DR,DATALDR DR,SRSTR SR,DR17- 附录1: 指令系统介绍设计CPU首先要设计指令系统。由于实
10、验CPU采用16位字长,指令系统只有15条指令,因此比8位CPU的指令系统设计容易得多。1. 指令系统ADD DR,SR指令编码:0000 DR SR0000 0111功能:DR DR + SR, 影响C和Z标志。PC PC + 1。INC DR指令编码:0001 DR SR0000 0111功能:DR DR + 1,影响C和Z标志。PC PC + 1。SUB DR,SR指令编码:0010 DR SR0000 0111功能:DR DR SR,影响C和Z标志。PC PC + 1。DEC DR指令编码:0011 DR SR0000 0111功能:DR DR 1,影响C和Z标志。PC PC + 1。
11、AND DR,SR指令编码:0100 DR SR0000 0011功能:DR DR and SR,影响Z标志。PC PC + 1。OR DR,SR指令编码:0101 DR SR0000 0011功能:DR DR or SR,影响Z标志。PC PC + 1。NOT DR指令编码:0110 DR SR0000 0011功能:DR not DR,影响Z标志。PC PC + 1。MOV DR,SR指令编码:0111 DR SR0000 0001功能:DR SR,不影响标志位。PC PC + 1。JMP ADR指令编码:1000 00000000 0000 ADR功能:PC ADR。JNC ADR 指令
12、编码:1001 0000ADR - -1功能:如果C=0,则PC ADR;如果C=1,则PC PC + 1。 JNZ ADR指令编码:1010 0000ADR - -1功能:如果Z=0,则PC ADR;如果Z=1,则PC PC + 1。MVRD DR,DATA指令编码:1100 00000000 0000 DATA功能:DR DATA。PC PC + 2。LDR DR,SR指令编码:1101 DR SR0000 0001功能:DR SR。PC PC + 1。STR SR,DR 指令编码:1110 DR SR0000 0000功能:DR SR。PC PC + 1。NOP指令编码:0111 000
13、00000 0000功能:PC PC + 1。说明:1 本CPU中含有4个通用寄存器器,用R0、R1、R2和R3表示。源寄存器用SR表示,目的寄存器用DR表示,因此DR和SR在指令编码中各用2bit编码。2 指令编码中的代表该指令当前的PC值。2 指令系统设计说明设计指令系统时首要考虑的是指令要满足功能上的需求。这个指令系统除了PUSH、POP、CALL和RET等少数指令没有包括外,其本上是齐全的。它包括了运算指令、转移指令和存储指令等三类,有代表性。这三类指令根据IR15IR14进行分类:IR15 为0 时运算指令;为1其他指令IR15、IR14为10时转移指令;IR15、IR14为11时存
14、储指令。除了要满足功能上的要求外,设计的指令格式要考虑指令译码方便,减少硬件资源的消耗。本指令系统采取了如下措施:(1)算术逻辑指令的IR14IR12对应运算器ALU的3位运算操作码。(2)当IR0 = 1时,本指令中有对DR的写操作。(3)当IR1 = 1时,本指令影响标志位Z。(4)当IR2 = 1时,本指令影响标志位C。(5)NOP指令实际上是一条“MOV R0,R0”指令,只是不改变目的寄存器的内容。附录2: 硬件构成-CPU的总体结构实验CPU由5部分组成:取指部分instru_fetch、指令译码部分decoder_unit、执行部分exe_unit、存储器部分memory_uni
15、t和通用寄存器组fegfile。另外,还有一个程序包exe_cpu_components,将各低层设计实体作为元件存储,供各设计实体使用。顶层设计实体exe_cpu完成5个组成部分的连接。实验CPU总体框图见下图。2.1一条指令执行需要3拍时间t1 取指。在t2的上升沿,将从存储器取出的指令写入指令寄存器IR。t2根据指令寄存器IR的内容进行指令译码;根据指令译码得到的控制信号进行运算和其它操作。t3存储器读、写操作;在t3的下降沿将运算结果写入目的寄存器,改变C标志和Z标志;在t3的下降沿,改变PC的值,为取下一条指令做好准备。由于取指阶段和存储器读写阶段都要访问存储器,速度较慢;而指令译码
16、和运算都由CPU本身完成,因此取指阶段和存储器读写阶段各占一拍时间,指令译码和运算共占一拍时间。2.2 实验CPU的总体构成实验CPU由5部分组成:取指部分instru_fetch、指令译码部分decoder_unit、执行部分exe_unit、存储器部分memory_unit和通用寄存器组fegfile。另外,还有一个程序包exe_cpu_components,将各低层设计实体作为元件存储,供各设计实体使用。顶层设计实体exe_cpu完成5个组成部分的连接。实验CPU总体框图见图2-1。图2-1 实验CPU总体框图1通用寄存器组regfile通用寄存器组内包含4个16位寄存器。这是一个具有1
17、个写入端口、2个读出端口的通用寄存器组。写入端口将指令执行后得到的目的寄存器的值在t3的下降沿写入目的寄存器。只有具有写目的寄存器功能的指令执行结束时才写目的寄存器。有些指令,如JMP指令等执行结束后不改变通用寄存器组的值。通用寄存器组的2个读出端口,一个是目的寄存器读出端口,一个是源寄存器读出端口,从这2个端口读出的内容供执行部分exe_unit和存储器部分memory_unit使用。通用寄存器组内还有2个标志位:z_out和c_out,在t3的下降沿根据指令执行的结果改变或者不改变它们的值。这2个标志位的值送执行部分exe_unit使用。传统上通用寄存器组属运算器部分。2取指部分instr
18、u_fetch取指部分完成4项工作:(1)产生时钟信号t1、t2和t3,供实验CPU各部分使用。(2)在复位信号reset为低时将PC复位为0;在一条指令执行结束后,根据指令执行的结果在t3的下降沿改变PC的值。(3)将从存储器读出的指令的第一个字在t2的上升沿送指令寄存器IR。(4)计算PC+1的值pc_inc,为双字指令取第二个指令字做准备。传统上取指部分属控制器部分。3. 指令译码部分decoder_unit指令译码部分根据指令寄存器IR的值产生实验CPU所需要的各种控制信号和其他信号:SR 源寄存器号(编址)。DR 目的寄存器号(编址)。op_code 控制ALU进行8种运算操作的3位
19、编码。zj_instruct 为1表示本条指令是条“JNZ ADR”指令。cj_instruct 为1表示本条指令是条“JNC ADR”指令。lj_instruct 为1表示本条指令是条“JMP ADR”指令。DRWr 为1表示在t3的下降沿将本条指令的执行结果写入目的寄存器。Mem_Write 为1表示本条指令有存储器写操作,存储器的地址是源寄存器的内容。DW_intruct 为1表示本条指令是双字指令。change_z 为1表示本条指令可能改变z(结果为0)标志。change_c 为1表示本条指令本条指令可能改变c(进位)标志。sel_memdata 为1表示本条指令写入目的寄存器的值来自
20、读存储器。r_sjmp_addr 计算条件转移指令转移地址所需要的16位相对地址。它是由条件转移指令中的8位相对地址经过符号扩展生成的。从上述控制信号看,实验CPU的指令译码器是很简单的。指令译码器在传统上属于控制器部分,是控制器的核心。所谓组合逻辑控制器是指指令译码器是由组合逻辑构成的,所谓微程序控制器是指指令译码器主要由控制存储器ROM和少许组合逻辑构成的。1 执行部分exe_unit执行部分完成下列任务:(1)8种算术逻辑运算:加、加1、减、减1、与、或、非和数据传送,并临时将运算结果存放在result中。根据运算结果产生进位标志,临时存放在c_tmp中;根据运算结果产生结果为0标志,临
21、时存放在z_tmp中。(2)产生存储器读写所需要的存储器地址Mem_Addr。存储器地址是根据下列情况决定的:在t1节拍时选择pc,在双字指令时选择pc_inc,在LDR指令时选择SR(源寄存器)内容,在STR指令时选择DR(目的寄存器)内容。(3)产生条件转移指令(JNC和JNZ)所需要的转移标志c_z_j_flag(为1表示转移)和转移地址sjmp_addr。执行部分的核心传统上属于运算器,是运算器的核心。2 存储器部分memory_unit存储器部分主要完成对存储器的读写:(1)它和TECCA实验台上存储器的接口部分。向实验台上的存储器送出16存储器地址总线Mem_addr,16位双向数
22、据总线ob,读写信号rw。当rw为1时,实验台上的存储器作为读存储器信号处理;当rw信号为0时,实验台上的存储器作为读存储器信号处理。实验台上的存储器由2片静态存储器6116和少量附加电路构成。在TECCA实验台上,2片6116并联构成16位字长的存储器,6116所需的片选信号cs为低,读信号oe由rw反相产生,写信号we直接选用rw。(2)存储器地址Mem_addr来自执行部分,写信号Mem_Write由指令译码部分产生。当Mem_Write为1时在t3节拍完成写操作,其余情况下均进行读操作。(3)在t1节拍中完成读指令的第1个字。 (4)对双字指令,在t3完成读指令的第2个字。(5)对JM
23、P指令,在t3读出转移地址,放在data_read中。(6)对MVRD指令,在t3读出立即数DATA,放在data_read中。(7)对LDR指令,在t3读出存储器的值,放在data_read中。(8)对STR指令,在t3将源寄存器的值写入存储器中。(9)对在t3下降沿写入目的寄存器的值进行选择。在LDR指令中,选中读出的存储器的值;在其他指令中,选中执行部分送来的运算结果result。实验CPU中存储器部分传统上属于控制器部分,实验台上的存储器属于计算机的存储器部分。3 程序包exp_cpu_components程序包exp_cpu_components把实验CPU中除顶层设计实体exp_c
24、pu以外的设计实体作为元件(component)予以说明,供实验CPU中的其它设计实体作为元件予以引用。4 顶层设计实体exp_cpu顶层设计实体exp_cpu把5个二级设计实体regfile、instru_fetch、decoder_unit、exe_unit和memory_unit作为元件引用,每个例化一次,用信号把它们连接起来,构成实验CPU。exp_cpu同时也定义了实验CPU对外的接口:clk外部输入的时钟。reset外部输入的CPU复位信号,低电平有效。AR向外部输出的16位存储器地址总线。OB16位双向存储器数据总线。WE向外部输出的存储器读写信号。当高电平时,对存储器进行读操作
25、;当低电平时,对存储器进行写操作。在一个工程(project)中,较低层的设计实体其实相当于元件,与一块印制板上的电路差不多;顶层设计实体对较低层设计实体每例化一次,相当于在印制板上上安放一个元件,而顶层设计实体中的信号相当于印制板上的连线。因此,在一个工程中,如果有一个非顶层设计实体从来没有被其他设计实体例化过,那么这个设计实体在这个工程中就是多余的,起不到任何作用。顶层设计实体中除了由较低层设计实体构成的元件外,通常还有一些由process语句、信号赋值语句等构成的其他独立电路块,通过信号把元件和独立电路块互相连接,最后形成了一个完整的电路设计。附录3:参考程序libraryieee;us
26、e ieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityinstruction_decoder isport (IRH: in std_logic_vector(3 downto 0);c,z: in std_logic;op_code: out std_logic_vector(2 downto 0); -控制ALU进行8种运算操作的3位编码c_z_j_flag: out std_logic; -为1表示需要条件转移lj_instruct: out std_logic
27、; -为1表示本条指令是条"JMP ADR"指令DRWr: buffer std_logic; -为1时写DR寄存器Mem_Write: out std_logic; -为1时进行存储器读DW_intruct: buffer std_logic; -为1表示本条指令是双字指令change_z: out std_logic; -为1时改变ZF标志位change_c: out std_logic; -为1时改变CF标志位sel_memdata: out std_logic-为1时存储器的读出数据作为写入DR的数据 );endinstruction_decoder;archite
28、cturebehav of instruction_decoder issignalzj_instruct, cj_instruct: std_logic;beginsel_memdata<= IRH(3) and IRH(2) and (not IRH(1);change_z<= (not IRH(3) and (not IRH(2) or (not IRH(3) and IRH(2) and (not IRH(1)or (not IRH(3) and IRH(2) and IRH(1) and (not IRH(0); -00* 010* 0110change_c<= (
29、not IRH(3) and (not IRH(2); -00*c_z_j_flag<= (zj_instruct and (not z) or (cj_instruct and (not c); -DRWr_proc: process(IRH) -将结果写入寄存器beginif IRH(3) = '0' then -算术逻辑指令DRWr<= '1'elsif IRH(2) = '1' and IRH(1) = '0' then -MVRD DR,DATA;LDR DR,SR 110*DRWr<= '1'elseDRWr<= '0'end if;end process;M_instruct:process(IRH) -存储器控制命令产生函数begincase IRH(3 downto 0) iswhen "1000" | "1100" => -指令jmpaddr;mvrddr,data产生如下控制命令结果Mem_Writ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 政治选择性必修一知识点
- 2025年度销售合同模板
- 2025合同租赁纠纷
- 2025年技术咨询服务合同范本
- 财经社团模拟投资比赛计划
- 健康管理师职业发展规划计划
- 202511号黄金项目通风管道供应与安装合同
- 社会媒体策略的制定计划
- 2025年度某建筑工程劳务分包合同范本
- 增强前台文员的职业竞争力计划
- 物理因子治疗技术-光疗法
- 2024年四川省眉山市中考地理+生物试卷(含答案)
- 当代世界经济与政治 李景治 第八版 课件 第1、2章 当代世界政治、当代世界经济
- 篮球智慧树知到期末考试答案章节答案2024年浙江大学
- 《归去来兮辞(并序)》课件
- X射线衍射仪(XRD)行业市场现状供需分析及市场深度研究发展前景及规划投资研究报告
- 2024年强基计划解读 课件-2024届高三下学期主题班会
- DB21-T 3413-2021地下工程自防护混凝土结构耐久性技术规程
- 学校食品安全管理
- 团队沟通与协作培训
- 美的社会责任报告2023
评论
0/150
提交评论