数字系统设计实验

合集下载

数字逻辑与数字系统设计课程设计

数字逻辑与数字系统设计课程设计

数字逻辑与数字系统设计课程设计一、课程设计背景数字逻辑与数字系统设计课程介绍了数字电路的基本概念、设计和分析方法。

数字逻辑是电子技术中非常重要的一部分,广泛应用于计算机、通信、自动化控制、计算器、游戏机等电子产品。

通过本课程的学习,学生将掌握数字逻辑和数字系统设计的基本原理和方法。

二、课程设计内容本次数字逻辑与数字系统设计课程设计主要分为以下几个部分:1.实验一:Karnaugh图和逻辑多路选择器设计实验2.实验二:数字逻辑电路的组合设计实验3.实验三:数字电路的时序设计实验4.实验四:数字系统设计实验5.实验五:数字逻辑综合设计实验实验一:Karnaugh图和逻辑多路选择器设计实验通过本实验,学生将学会运用Karnaugh图方法设计简单的逻辑电路,掌握最小化布尔函数的方法。

同时,学生将学习多路选择器的设计方法,掌握多路选择器的应用技巧。

实验二:数字逻辑电路的组合设计实验通过本实验,学生将学习的是数字逻辑电路的组合设计方法,包括基本逻辑门和复杂逻辑电路的设计技术。

同时,学生还将掌握基本电路的仿真方法,通过仿真软件对电路进行验证。

实验三:数字电路的时序设计实验在本实验中,学生将掌握数字电路的时序设计方法,了解时序电路的作用、分类和基本原理。

同时,学生将学习数字电路时序仿真的方法,能够进行基本时序电路模拟。

实验四:数字系统设计实验在本实验中,学生将学习数字系统设计的基本方法和过程,包括总体结构设计、输入输出接口的设计、存储器的设计等;同时,学生还将了解数字系统的仿真和测试方法,对设计的数字系统进行仿真和测试。

实验五:数字逻辑综合设计实验在本实验中,学生将通过数字逻辑综合设计,掌握数字逻辑综合应用技巧,并能够在实践中学习根据需求进行电路综合的方法。

三、课程设计特点本次数字逻辑与数字系统设计课程设计不仅注重理论教学,更加强调实践教学,特点如下:1.注重实验教学,对学生的动手能力和实践能力进行提高。

2.充分利用仿真软件进行电路设计和验证,使学生在熟悉实际电路设计方法的同时,也能提高计算机仿真的技能和水平。

数字系统设计 实验二报告(计09-1班 姚伟 08093342)

数字系统设计 实验二报告(计09-1班  姚伟  08093342)

实验二:时序电路设计一.实验目的熟悉QuartusⅡ的VHDL文本设计过程,学习简单时序电路的设计、仿真和测试。

二.实验任务任务1:设计触发器,给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程。

任务2:设计锁存器,同样给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程。

三.实验过程1.新建一个文件夹,取名second。

2.输入源程序。

3.文件存盘,文件名为second,扩展名为.vhd。

4.创建工程,按照老师要求对软件进行设置。

5.进行失序仿真,得到仿真图形。

四.实验程序任务1:library ieee;use ieee.std_logic_1164.all;entity second isport(clk,d:in std_logic;q:out std_logic);end;architecture bhv of second issignal q1:std_logic;beginprocess(clk,q1)beginif clk'event and clk ='1'then q1<=d;end if;end process;q<=q1;end bhv;任务2:library ieee;use ieee.std_logic_1164.all;entity suocun isport (clk,d:in std_logic; q:out std_logic);end;architecture bhv of suocun isbeginprocess (clk,d)beginif clk='1'then q<=d;end if;end process;end;五.实验结果任务1:任务2:。

西南科技大学实验报告现代数字系统设计实验题目:直流电机的...

西南科技大学实验报告现代数字系统设计实验题目:直流电机的...

西南科技大学实验报告现代数字系统设计实验题目:直流电机的PWM控制专业班级:生物医学0502 _学生姓名:***学生学号: ********实验时间: 2个小时指导教师:***一、实验目的1.掌握直流电机的PWM 控制方法;2.锻炼VHDL 语言的编程能力。

二、实验原理及说明PWM 控制就是产生一定周期,占空比不同的方波信号,当占空比较大时,电机转速较高,否则电机转速较低。

当采用FPGA 产生PWM 波形时,只需FPGA 内部资源就可以实现,数字比较器的一端接设定值输出,另一端接线性递增计数器输出。

当线性计数器的计数值小于设定值时输出低电平,当计数器大于设定值时输出高电平,这样就可通过改变设定值,产生占空比不同的方波信号,从而达到控制直流电机转速的目的。

直流电机控制电路主要由2部分组成,如图1所示: ● FPGA 中PWM 脉宽调制信号产生电路; ● FPGA 中正/反转方向控制电路;速度等级设置模块锯齿波发生器(模16计数器)数字比较器模块旋转方向控制模块驱动电路Z (正转)F (反转)PWM 波形输出Z_F (正/反转控制信号)Rst (复位)Clk (时钟)Rst (复位)Level (速度等级按键)接数码管(显示速度等级)图1 直流电机PWM 控制电路三、实验步骤1.在QUARTUSII 软件下创建一工程,工程名为pwm_control ,芯片名为EP1C3T144C8,注意工程路径不要放到软件安装路径下;2.根据实验原理,自己编写VHDL 顶层设计文件实现直流电机的PWM 控制(整个设计要求全部采用VHDL 编写,不能采用原理图方式),参考程序如下:速度等级设置模块process(rst,level)beginif rst='1' thencnt4<=(others=>'0');elsif level='1' and level'event thencnt4<=cnt4+1;end if;end process;process(rst,clk)beginif rst='1' thenspeed<=(others=>'0');elsif clk'event and clk='1' thencase cnt4 isWHEN "00" => speed <= "0011" ;WHEN "01" => speed <= "0100" ;WHEN "10" => speed <= "0101" ;WHEN "11" => speed <= "0111" ;WHEN OTHERS => NULL ;END CASE ;end if;END PROCESS;数字比较器模块process(clk,rst)beginif rst='1' thenagb<='0';elsif clk'event and clk='1' thenif cnt16>speed thenagb<='1';elseagb<='0';end if;end if;end process;锯齿波发生器process(rst,clk)beginif rst='1' thencnt16<=(others=>'0');elsif clk='1' and clk'event thencnt16<=cnt16+1 ;end if;end process;旋转方向控制模块process(rst,clk)beginif rst='1' thenz<='0';f<='0';elsif clk'event and clk='1' thenif z_f='1' thenz<=agb;f<='0';elsez<='0';f<=agb;end if;end if;end process;3.对设计进行全编译;4.分别进行功能与时序仿真,验证逻辑功能;5.锁定引脚实验采用模式5,锁定引脚对照表如下信号键1 键2(level)键3clkz f level_display0level_display1引脚号1 2 3 9313213185 966.下载采用JA TG方式进行下载;7.将实验箱左上方直流电机处跳线位置插到直流允许端,(注意实验完毕后将此跳线插回直流禁止端),将右下方clock0频率改为65536Hz。

数字系统设计综合实验报告

数字系统设计综合实验报告

数字系统设计综合实验报告1)实验目的复习加法器的分类及工作原理。

掌握用图形法设计半加器的方法。

掌握用元件例化法设计全加器的方法。

掌握用元件例化法设计多位加法器的方法。

掌握用Verilog HDL语言设计多位加法器的方法。

学习运用波形仿真验证程序的正确性。

学习定时分析工具的使用方法。

2)实验原理加法器是能够实现二进制加法运算的电路,是构成计算机中算术运算电路的基本单元。

目前,在数字计算机中,无论加、减、乘、除法运算,都是化为若干步加法运算来完成的。

加法器可分为1位加法器和多位加法器两大类。

1位加法器有可分为半加器和全加器两种,多位加法器可分为串行进位加法器和超前进位加法器两种。

半加器如果不考虑来自低位的进位而将两个1位二进制数相加,称半加。

实现半加运算的电路则称为半加器。

若设A和B是两个1位的加数,S是两者相加的和,C是向高位的进位。

则由二进制加法运算规则可以得到。

全加器在将两个1位二进制数相加时,除了最低位以外,每一位都应该考虑来自低位的进位,即将两个对应位的加数和来自低位的进位三个数相加,这种运算称全加。

实现全加运算的电路则称为全加器。

若设A、B、CI分别是两个1位的加数、来自低位的进位,S是相加的和,C是向高位的进位。

则由二进制加法运算规则可以得到:3)实验内容及步骤用图形法设计半加器,仿真设计结果。

用原件例化的方法设计全加器,仿真设计结果用原件例化的方法设计一个4为二进制加法器,仿真设计结果,进行定时分析。

用Verilog HDL语言设计一个4为二进制加法器,仿真设计结果,进行定时分析。

分别下载用上述两种方法设计4为加法器,并进行在线测试。

4)设计1)用图形法设计的半加器,如下图1所示,由其生成的符号如图2所示。

2)用元件例化的方法设计的全加器如图3所示,由其生成的符号如图4所示。

图三:图四:5)全加器时序仿真波形如图下图所示6)心得体会:第一次做数字系统设计实验,老师给我们讲了用图形法设计的全过程。

北京理工大学数字系统设计与实验报告

北京理工大学数字系统设计与实验报告

3、仿真结果 功能仿真设置:
功能仿真结果: (1)总体仿真结果
(2)reset 高有效和二分频仿真结果
(3)四分频仿真结果
(4)八分频仿真结果
(5)十六分频仿真结果
四、实验心得
通过本次实验,设计频率可选的模十状态机以及 7 段译码电路,学会了以代码 形式实现频率多路选择器的功能,巩固了模十状态机的实现方式,进一步掌握 VerilogHDL 硬件描述语言。
功能仿真结果:
时序仿真设置:
时序仿真结果:
2、 3—8 译码器 (1)设计思路 随着时钟信号 clk 上升沿的到来,输入 D2D1D0 从 000 加到 111,每个输入 D2D1D0 对应着一个输出 Q7Q6Q5Q4Q3Q2Q1Q0,对应关系如真值表所示:
输入 D2 0 0 0 0 1 1 1 1 D1 0 0 1 1 0 0 1 1 D0 0 1 0 1 0 1 0 1 Q7 0 0 0 0 0 0 0 1 Q6 0 0 0 0 0 0 1 0 Q5 0 0 0 0 0 1 0 0 Q4 0 0 0 0 1 0 0 0
seg <= 7'b0011001; 5: seg <= 7'b0010010; 6: seg <= 7'b0000010; 7: seg <= 7'b1111000; 8: seg <= 7'b0000000; 9: seg <= 7'b0010000; default: seg <= 7'b0001000; endcase end endmodule (2)功能图
三、设计与实现
1、设计思路 (1) 、时钟信号 clk 作为分频器的输入,分频器的设计思路为设计一个模十六计 数器,cp0(Q0)输出即为二分频信号,cp1(Q1)输出即为四分频信号,cp2(Q2) 输出即为八分频信号,cp3(Q3)输出即为十六分频信号。分频器的输出由 4 选 1 多 路选择器的选择输入端 select 选择 2 分频、4 分频、 8 分频和 16 分频其中之一作为状 态机的时钟输入,当 select 为 0 时,输出为二分频信号;为 1 时,输出为四分频信 号;为 2 时,输出为八分频信号;为 3 时,输出为十六分频信号。 (2) 、reset 为高有效,则若 reset 信号为 1 时,qout 置为 0,则 now_state 为 0。 若 reset 信号为 0 时, qout 自加,并作为状态机的输入 驱动,让状态机按照 0->2->5->6->1->9->4->8->7->3->0 的顺序输出。 (3) 、状态机按照 0->2->5->6->1->9->4->8->7->3->0 的顺序输出,并使用此输出 作为驱动输入到 7 段译码器的显示逻辑。

华南理工大学数字系统设计实验3报告资料

华南理工大学数字系统设计实验3报告资料

实验三基于状态机的交通灯控制地点:31号楼312房;实验台号:12实验日期与时间:2017年12月08日评分:预习检查纪录:批改教师:报告内容:一、实验要求1、开发板上三个led等分别代表公路上红黄绿三种颜色交通灯。

2、交通灯状态机初始状态为红灯,交通灯工作过程依次是红→绿→黄→红。

3、为了方便观察,本次实验要求红灯的显示时间为9s,绿灯显示时间为6s,黄灯显示时间为3s,时间需要倒计时,在数码管上显示。

编程之前要求同学们先画好ASM图。

4、1Hz分频模块请采用第二次实验中的内容,7段码显示模块请参考书本相关内容。

5、第三次实验课用到EP2C8Q208C8通过74HC595驱动数码管,有两种方法写该模块代码:方法1,用VHDL语言写,(自己写VHDL代码有加实验分)。

方法2,可调用verilog数码管驱动模块,该模块在附件“seg.zip”中。

和其它VHDL编写的模块可以混搭在一个电路图中使用。

EP2C8Q208C8的SCTP,SHCP,SER_DATA数码管信号线通过两块74HC595集成块,再驱动数码管。

6、芯片型号:cyclone:EP2C8Q208C8,开发板所有资料都在“新板”附件中,其中管脚配置在实验要求中是不对的,以“新板”附件中为准。

二、实验内容1设计要求开发板上三个led等分别代表公路上红黄绿三种颜色交通灯。

交通灯状态机初始状态为红灯,交通灯工作过程依次是红→绿→黄→红。

本次实验要求红灯的显示时间为9s,绿灯显示时间为6s,黄灯显示时间为3s,时间需要倒计时,在数码管上显示。

2设计思路(1)数码管驱动第三次实验课用到EP2C8Q208C8通过74HC595驱动数码管,有两种方法写该模块代码:方法1,用VHDL语言写,(自己写VHDL代码有加实验分)。

方法2,可调用verilog数码管驱动模块,该模块在附件“seg.zip”中。

和其它VHDL 编写的模块可以混搭在一个电路图中使用。

数字逻辑系统设计FPGA[实验][全加器]

数字逻辑系统设计FPGA[实验][全加器]

实验一 全加器实验目的:1、设计一个全加器。

2、熟悉和掌握FPGA开发软件Quartus II的使用方法。

3、了解掌握用VHDL语言以不同的方式编程方法。

4、掌握电路设计仿真和硬件下载的方法。

实验器材1、SOPC实验箱2、计算机(装有Quartus II 7.0软件)实验预习1、阅读SOPC实验箱的相关资料,了解实验箱的使用方法。

2、预习Quartus II7.0基本使用方法,熟悉实验操作流程。

3、书写预习报告,必须有完整的VHDL设计程序及实验步骤。

实验原理1、1位全家器能实现2个二进制数含进位位的加法,其逻辑功能真值表如表-1,电路原理图如图1.0所示表-1 1 位全加器逻辑功能真值表A B Cin Sum Cout0 0 0 0 01 0 0 1 00 1 0 1 01 1 0 0 10 0 1 1 01 0 1 0 10 1 1 0 11 1 1 1 1图1.0 1 位全加器电路实验内容设计一个全加器,实现全家器的逻辑功能。

其输入由三位拨码开关提供,输出由五路LED指示,其中两路显示输出结果,另外三路显示输入拨码开关的状态。

注意:实验箱上的LED指示灯,低电位时亮,高电位时灭,注意电路最后的输出逻辑转换。

一、使用QUARTUS II建立工程1、打开QUARTUS II软件并建立工程选择开始>>程序>>Quartus II 7.0>> Quartus II 7.0(32-Bit)打开Quartus II 7.0软件。

也可以直接点击桌面上的Quartus II 7.0(32-Bit)图标打开Quartus II 7.0,软件界面如图1.1所示。

图1.1 Quartus II界面2、在图1.1中选择File>>New Project Wizard来新建一项工程。

在本实验指导书中,任何一个实验都是包含于一个项目中。

同时要区别“New Project Wizard”与“New”的关系,“New”是新建项目内的子文件用。

数字电路与系统设计实验

数字电路与系统设计实验
这包括实验方案的正确性、可行性如何? 可否进一步优化?有哪些收获体会?有哪 些经验教训?有哪些建议?等。
第二章 实验基本仪器
数字系统设计实验所需设备有: 直流稳压电源,示波器,基于CPLD的 数字电路实验系统,万用表,信号源, 计算机。
一、直流稳压电源
二、示波器
示波器是一种用来测量电信号波形的 电子仪器。用示波器能够观察电信号 波形,测量电信号的电压大小,周期 信号的频率和周期大小。双踪示波器 能够同时观察两路电信号波形。
能块相对集中地排列器件 3.布线顺序 VCC,GND,输入/输出,控制线 4. 仪器检测(电源,示波器,信号源) 5.实验 测试、调试与记录
6.撰写实验总结报告
(1)实验内容 (2)实验目的 (3)实验设备 (4)实验方法与手段 (5)实验原理图 (6)实验现象(结果)记录分析 (7)实验结论与体会
(((四三一)))、、、实实验实验目验的提内示容
•• 11..注测1意试.掌被T握T测LT器T器L件、件H7的CT4引和L脚HS7C器0和件4引的一脚传个输1特非4性门分。的别传接输地特和 十性5。V2。.掌握万用表的使用方法。
•• •
(2连为输23特二.接 被 入)..性将测测、123到 测 电。实试 试...被 非 压六六六验验HH反反反测 门 值所CC台相相相T器用非 的 。上器器器器件器门输4件777件7的入.444774输电LHH4KH入压SCCHΩC00T端。电C4400,旋位T片片44转R器0片T一电LR4的个T位一L输非的器个出门电改非端的压变门电传输非的压输出门传作特端的输性。
四、数字电路测试及故障查找、排除
1.数字电路测试
数字电路静态测试指的是给定数字电路若干组静态输 入值,测定数字电路的输出值是否正确。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

多周期MIPS微处理器设计一、实验目的(1)、熟悉MIPS指令系统。

(2)、掌握MIPS多周期微处理器的工作原理和实现方法。

(3)、掌握控制器的微程序设计方法。

(4)、掌握MIPS多周期微处理器的测试方法。

(5)、了解用软件实现数字系统设计的方法。

二、实验任务设计一个32位MIPS多周期微处理器,具体的要求如下:1、至少运行下列的6类32条MIPS指令。

(1)、算术逻辑指令:ADD、ADDU、SUB、SUBU、ADDI、ADDIU。

(2)、逻辑运算指令:AND、OR、NOR、XOR、ANDI、ORI、XORI、SLT、SLTU、SLTI、SLTIU。

(3)、位移指令:SLL、SLLV、SRL、SRLV、SRA。

(4)、条件分支指令:BEQ、BNE、BGEZ、BGTZ、BLEZ、BLTZ。

(5)、无条件跳转指令:J、JR。

(6)、数据传送指令:LW、SW。

2、在XUP Virtex-2 Pro开发系统中实现该32位MIPS多周期微处理器,要求运行速度(CPU 工作时钟)大于25MHz。

三、实验设备1、装有ISE、Modelsim SE和Chipscope Pro软件的计算机。

2、XUP Virtex-2 pro开发系统一套。

3、SVGA显示器一台。

四、MIPS指令简介MIPS指令集具有以下特点:1、简单的LOAD/STORE结构:所有的计算机类型的指令均从寄存器堆中读取数据并把结果写入寄存器堆中,只有LOAD和STORE指令访问存储器。

2、易于流水线CPU的设计:MIPS指令集的指令格式非常规整,所有的指令均为32位,而且指令操作码在固定的位置上。

3、易于编译器的开发:一般来讲,编译器在编译高级语言程序时,很难用到复杂的指令,MIPS指令的寻址方式非常的简单,每条指令的操作也非常简单。

MIPS系统的寄存器结构采用标准的32位寄存器堆,共32个寄存器,标号为0-31。

其中第0号寄存器永远为常数0。

CPU所支持的MIPS指令格式一共有3种,分别为R、I、J。

R类型的指令从寄存器堆中读出两个源操作数,计算结果写回到寄存器堆;I类型的指令使用一共16为立即数作为源操作数;J类型的指令使用一共26位立即数作为跳转的目标地址(target address)。

MIPS的指令格式如图1所示,指令格式中OP(operation)是指令操作码;RS(register sourse)是源操作数的寄存器号;RD(register destination)是目标寄存器号;RT(register target)可以既是源寄存器号,又可以使目标寄存器号,由具体位置决定;FUNCT(function)可以被认为是扩展的操作码;SA(shift amount)由移位指令使用,定义移位位数。

I型中的Immediate是16为立即数。

立即数型算术逻辑运算指令、数据传输指令和条件分支指令均采用这种形式。

在立即数型算术逻辑运算指令、数据传送指令中,Immediate进行符号扩展至32位;而在条件分支指令中,Immediate先进行符号扩展至32位再左移2位。

在J形指令中26为target由JUMP指令使用,用于产生跳转的目标地址。

下面通过表格简单介绍本实验使用的MIPS核心指令。

表1列出了本实验使用到的MIPS指令的格式和OP、FUNCT等简要信息。

五、实验原理以及相应Verilog HDL代码图2所示为可实现上述指令的多周期MIPS微处理器的原理框图,根据功能将其分划分为控制单元(cunit)、执行单元(eunit)、指令单元(iunit)以及存储单元(munit)四大模块。

控制单元(cunit)是多周期微处理器的核心,控制微处理器取指令、指令译码和指令执行等工作。

主要由指令译码器控制器(outputs control)、算术逻辑运算控制器(ALU control)两个子模块组成。

执行单元(eunit)主要由寄存器堆(registers)和算术逻辑单元(ALU)两个子模块组成。

其中寄存器是微处理器最基本的元素,MIPS系统的寄存器堆由32个32位寄存器组成;而ALU则是微处理器的主要功能部件,执行加、减、比较等算术运算和与、或、或非、异或等逻辑运算。

这里需要说明的是,图2所示的原理框图中未画出ANDI、ORI、XORI三条指令所需的16位立即数“0扩展”至32位立即数电路,设计时可以将“0扩展”电路功能放在ALU内部完成。

图 2多周期CPU框图指令单元(iunit)的作用是决定下一条指令的地址(PC值)。

存储单元(munit)由存储器(memory)、指令寄存器(instruction register)和存储数据寄存器(memory data register)组成。

1、控制单元(cunit)的设计。

控制单元模块主要作用是通过机器码解析出指令,并根据解析结果控制数据通道工作流程。

控制模块的接口信息如表2所示。

1)、Outputs Control控制器的设计Outputs Control控制器的主要作用是取出指令,并根据指令确定各个控制信号的值。

首先对指令进行分类。

(1)、R型指令。

根据操作数来源可分为R_type1、R_type2和JR三类。

其中,R_type1指令中的两个操作数为寄存器rs、rt;R_type2为三个移位指令,操作数为指令中的sa字段和寄存器rt;JR指令只有一个操作数rs。

根据各指令执行的特点,本实验设计时,将各指令进行了分类:R_type1:包括指令ADD、ADDU、SUB、SUBU、AND、OR、NOR、XOR 、SLT、SLTU、SLLV、SRLV、SRAV。

R_type2:包括指令SLL、SRL、SRA。

JR_type:包括指令JR。

(2)、J型指令。

J_type:包括指令J。

(3)、立即数指令。

I_type:包括指令ADDI、ADDIU、ANDI、ORI、XORI、SLTI、SLTIU。

(4)、分支指令。

Branch:包括指令BEQ、BNE、BGEZ、BGTZ、BLEZ、BLTZ。

(5)、数据传输指令。

LW:包括指令LW。

SW:包括指令SW。

MIPS指令的执行步骤不尽相同。

分支和跳转指令需要3个周期,R型指令和立即数指令需要4个周期,数据传送指令需要4-5个周期。

表3列出了各类指令执行步骤。

从原理框图(图2)我们可以看出,整个CPU中,一共有13组控制信号,○1、RegDst,决定目标寄存器是rt还是rd。

RegDst=0时,rt为目标寄存器。

RegDst=1时,rd为目标寄存器。

○2、RegWrite,决定是否对寄存器(registers)进行写操作。

RegWrite有效时,将数据写入指定的寄存器中。

○3、MemWrite,决定是否对存储器(memory)进行写操作。

MemWrite有效时,将数据写入存储器指定的位置。

○4、MemRead,决定是否对存储器(memory)进行读操作。

MemRead有效时,读取存储器指定位置的数据。

○5、MemtoReg,决定写入寄存器(registers)的数据来自ALUOut还是MDR。

MemtoReg=0时,数据来自ALU。

MemtoReg=1时,数据来自存储器。

✧以上5组控制信号与单周期MIPS CPU中的各个信号一致。

○6、IorD,.决定存储器地址由PC还是ALUOut提供。

IorD=0时,存储器地址来自于PC。

IorD=1时,存储器地址来自于ALU。

○7、IRWrite,决定是否对指令寄存器(IR)进行写操作。

IRWrite有效时,将指令写入指令寄存器中。

○8、PCWrite,决定是否对PC寄存器进行写操作。

PCWrite有效时,对PC寄存器进行写操作;源由PCSource决定。

○9、PCWriteCond在Zero有效的前提下,决定是否对PC寄存器进行写操作。

PCWrite有效时,同时Zero亦有效,对PC寄存器进行写操作。

✧以上9组控制信号均为1位控制信号,而以下4组信号均为2位控制信号。

○10、ALUSrcA,决定ALU第一操作数来源。

ALUSrcA=00时,ALU第一操作数来源于PC。

ALUSrcA=01时,ALU第一操作数来源于寄存器A。

ALUSrcA=10时,ALU第一操作数来源于0扩展的5○11、ALUSrcB,决定ALU第二操作数来源。

ALUSrcB=00时,ALU第二操作数来源于寄存器B。

ALUSrcB=01时,ALU第二操作数为常数“4”。

ALUSrcB=10时,ALU第二操作数来源于符号扩展的16位Imm。

ALUSrcB=11时,ALU第二操作数来源于符号扩展后左移两位的16位Imm。

○12、ALUOp,决定ALU的操作。

ALUOp=00时,ALU进行加操作。

ALUOp=01时,由指令中的op及rt决定。

ALUOp=10时,由指令中的funct决定。

ALUOp=11时,由指令中的op决定。

○13、PCSource,决定写入PC寄存器的来源。

PCSource=00时,写入值为下一条指令的地址PC+4。

PCSource=01时,写入值为ALU计算出的分支地址。

PCSource=10时,写入值为跳转地址。

根据表3所示的指令的执行步骤与指令功能,可以画出Output Control模块的有限状态机图,如图3所示。

从图3中我们可以看出,除了第一周期和第二周期对所有的指令都一样外,在其它周期,不同指令的操作不同,因此控制信号也可能不同:第1周期----取指操作过程:①IR<= Memory[PC];②PC=PC+4设置控制信号:①MemRead有效;②IRWrite有效;③IorD=0;④ALUSrcA=00;⑤ALUSrcB=01;⑥ALUOp=00;⑦PCSource=00;⑧PCWrite有效。

第2周期----指令译码和读取寄存器操作过程:①A <= IR[25:21] B<= IR[20:16];②ALUOut <= PC+ (sign-extend(IR[15:0])<<2)设置控制信号:①ALUSrcA=00;②ALUSrcB=11;③ALUOp=00。

第3周期----指令执行、存储地址的计算或分支的完成在这一周期内CPU的具体操作取决于不同类型的指令。

我们将本实验需要实现的指令分成六类来讨论:I. 存储器访问指令(LW、SW)II. R型指令(除移位指令)— R_type1、JR_typeIII. 移位指令— R_type2Ⅳ. I型指令— I_typeⅤ. 跳转指令— J_typeⅥ. 分支指令— BranchI. 存储器访问指令(LW、SW)操作过程:ALUOut <= A + (sign-extend(IR[15:0]))设置控制信号:①ALUSrcA=01;②ALUSrcB=10;③ALUOp=00II. R型指令(除移位指令)操作过程:ALUOut <= A op B设置控制信号:①ALUSrcA=01;②ALUSrcB=00;③ALUOp=10III. 移位指令操作过程:ALUOut <= B op (zero-extend(IR[10:6]))设置控制信号:①ALUSrcA=10;②ALUSrcB=00;③ALUOp=10Ⅳ. I型指令操作过程:ALUOut <= A op (sign-extend(IR[15:0]))设置控制信号:①ALUSrcA=01;②ALUSrcB=10;③ALUOp=11Ⅴ. 跳转指令操作过程:PC<= { PC[31:28], IR[25:0], 2’b00 }设置控制信号:①PCWrite有效;②PCSource=10Ⅵ. 分支指令操作过程:if ( condition==1 ) PC<= ALUOut分支条件成立时设置控制信号:①ALUSrcA=01;②ALUSrcB=00;③ALUOp=01;④PCSource=01;⑤PCWriteCond有效第4周期----存储器的访问、R型/I型指令的完成。

相关文档
最新文档