收藏 分享(赏)

综合实验:8位cpu设计与实现.ppt

上传人:无敌 文档编号:110242 上传时间:2018-03-14 格式:PPT 页数:62 大小:3.76MB
下载 相关 举报
综合实验:8位cpu设计与实现.ppt_第1页
第1页 / 共62页
综合实验:8位cpu设计与实现.ppt_第2页
第2页 / 共62页
综合实验:8位cpu设计与实现.ppt_第3页
第3页 / 共62页
综合实验:8位cpu设计与实现.ppt_第4页
第4页 / 共62页
综合实验:8位cpu设计与实现.ppt_第5页
第5页 / 共62页
点击查看更多>>
资源描述

1、综合实验:8位CPU设计与实现,王春桃,内容提要,回顾冯诺依曼CPU结构及工作原理16位实验CPU的设计与实现将16位实验CPU的改造成8位的实验CPU评分标准,2018/3/14,3,冯诺依曼型计算机,存储器,输出,输入,运算器,控制器,数据信号,控制信号,地址信号,4,CPU的功能,1. CPU的功能指令控制(程序的顺序控制)操作控制(一条指令有若干操作信号实现)时间控制(指令各个操作实施时间的定时)数据加工(算术运算和逻辑运算),5,例:CPU的基本组成,ALU,数据缓冲寄存器,状态字寄存器,地址寄存器,程序计数器,时序发生器操作控制器,指令译码器,数存,cache,指存,cache,A

2、R,数据,地址总线,指令,地址总线,控制信号,OC,PC,IR,指令寄存器,C1,C2,C1,C2,C3,Cn,内容提要,回顾冯诺依曼CPU结构及工作原理16位实验CPU的设计与实现将16位实验CPU的改造成8位的实验CPU评分标准,下面以16位的实验CPU为例进行回顾,说明设计实现过程的思路和方法设计指令系统确定CPU的结构图确定控制信号分析各个主要模块的功能及设计方法编程实现组装测试,16位实验CPU设计思路,设计指令前了解现实需求,并将其中必不可少、使用频率较大的需求设计为指令确定指令格式,如OP和地址码分别如何设计OP码常用固定长度,根据指令条数来确定确定地址码有几个,分别应该是多长指

3、令分类及其对应的格式:单字长、双字长指令功能分组及OP码分配,形成指令总表 不同组指令的执行时长不等,为提高效率,进行时序分析与设计,以状态机形式反映,1. 设计指令系统,(1)单字单操作数指令包括:DEC,INC,SHL,SHR,JR,JRC,JRNC,JRZ,JRNZ, JRS,JRNS,1.1 设计指令系统,(2)单字双操作数指令包括:ADD,SUB,AND,CMP,XOR,TEST,OR,MVRR,ADC,SBB,LDRR,STRR(3)单字无操作数指令 包括:CLC,STC,1.1 设计指令系统,(4)双字单操作数指令包括:JMPA(5)双字双操作数指令 包括:MVRD,1.1 设计

4、指令系统,由于没有中断操作,本机指令的执行步骤可概括如下:读取指令:地址寄存器-指令地址,修改PC内容使其指向下一条将要执行的指令读内存,指令寄存器AR, PC+1-PC控制信号:令REC=01,实现PC-AR控制ALU实现PC+1,PC为其中ALU输入,另一个输入为0,初始进位Cin为1。为此,令SCI=1,以实现Cin=1;令ALU_IN_SEL=100以选择A=0和B=PC;令ALU_FUNC_SEL=000,以实现A+B+Cin令PC_EN=1,以把增1后的结果置入PC中,3. 确定控制信号,其它控制信号按缺省值设置即可如控制标志位的SST,令保持原来标志即可,此时SST=11控制寄存

5、器写的REG_EN,不用写,保持REG_EN=0控制内存写的/wr,不用写,令/wr=1综合上述控制信号值,可得:,3. 确定控制信号,第2拍:从内存取出指令对应节拍:001动作:IR - Mem控制信号:为了控制内存读,/wr应该设置为/wr=1为了将从Mem读出的指令打入IR,控制IR的REC应设成REC=10其它保持缺省值因此,此时的控制信号集合为:,3. 确定控制信号,第3拍:执行加法运算节拍:011动作: R0-R0+R1控制信号:ALU运算的数据源自于寄存器,因此ALU_IN_SEL=000执行加法运算,因此ALU_FUNC_SEL=000初始进位Cin必须为0,因此SCI=00完

6、成运算后,结果会影响标志位,因此SST=00运算结果要保存到寄存器中,因此REG_EN=1其它控制信号按缺省值设置,即/wr=1和REC=00因此,控制信号集合为:,3. 确定控制信号,运算器部分包括了如下的模块:寄存器组、ALU输入复用模块、ALU运算器、标志寄存器控制部分包含了如下的模块:PC、IR、时序发生器(即TIMER)、控制单元内存部分AR在分析这些模块时,先分析它的功能,然后分析输入输出信号,最后分析其实现逻辑在完成这些分析后,结合数据通路,分析各条指令的执行流程,以加深对CPU原理的理解,4.分析各个主要模块的功能及设计方法,运算器ALU功能:对两个16位的输入及低位进位输入c

7、in,根据运算功能进行运算,产生相应的结果,并更改标志位输入输出信号:输入信号为:A、B、cin、alu_func输出信号为:Y、C、Z、V、S逻辑框图,4.分析各个主要模块的功能及设计方法,功能实现思路根据alu_func进行相应的运算,如alu_func为000时进行加法运算,001时进行减法运算,如此类推根据运算结果,对标志符号C、Z、V、S进行相应的更新参考基础实验2的方案2文档,4.分析各个主要模块的功能及设计方法,寄存器组功能:实现寄存器的读和写,写时在时钟上升沿根据DR和REG_EN写入一个数据,读时根据SR和DR同时读出两个数据。此外,为方便测试,尚需根据寄存器选择编号读出对应

8、寄存器的数值输入输出信号:输入信号:reset, clk, dest_reg, src_reg, en, alu_out, reg_sel输出信号:sr, dr, reg_out逻辑框图,4.分析各个主要模块的功能及设计方法,功能实现思路设计两个功能模块:一为reg,一为reg_mux调用16个reg和1个reg_mux连接起来,即形成寄存器组参考基础实验4的方案2文档,4.分析各个主要模块的功能及设计方法,ALU输入复用模块功能:根据控制信号ALU_IN_SEL,确定ALU的两个输入的来源。功能如下表所示:,4.分析各个主要模块的功能及设计方法,I5I4I3(即ALU_IN_SEL)表格,输

9、入输出信号输入信号:来自于寄存器的输出信号sr和dr,来自于指令的OFFSET,来自于PC的值PC,来自于内存的数据DATA,以及控制信号ALU_IN_SEL输出信号:ALU_SR和ALU_DR逻辑框图功能实现思路根据ALU复用功能控制 表即可进行实现,4.分析各个主要模块的功能及设计方法,标志位寄存器功能:根据控制信号SST,设置相应的标志位C、Z、S、V。其控制方式如下:输入输出信号:输入信号:C, Z, S, V, SST, clk, reset输出信号:FLAG_C, FLAG_Z, FLAG_S, FLAG_V 逻辑框图功能实现思路:根据上表进行控制即可,4.分析各个主要模块的功能及

10、设计方法,控制器功能:在时序发生器的驱动下,根据各指令的节拍控制各指令的取指及执行输入输出信号输入信号:来自于时序发生器的节拍timer,来自于IR的指令instruction,来自于标志寄存器的flag_c、 flag_z、 flag_v、 flag_s输出信号:前面所分析的控制信号集合用于寄存器的dest_reg、source_reg、en_reg用于alu相关的alu_in_sel 、alu_func_sel 、sci 、sst用于控制PC写的en_pc,4.分析各个主要模块的功能及设计方法,用于内存读写的/wr用于控制PC和IR接收信号源的rec逻辑框图功能实现思路:根据指令节拍表在不

11、同节拍 进行逐一发出控制信号即可节拍表参考开放式教学CPU 设计与测试系统P28-29,4.分析各个主要模块的功能及设计方法,节拍发生器功能:根据外部提供的时钟脉冲以及指令功能,产生不同的节拍脉冲序列输入输出信号:输入信号:reset、clk、ins输出信号:timer逻辑框图,4.分析各个主要模块的功能及设计方法,功能实现思路利用状态机及指令功能来实现状态转移参考下图,4.分析各个主要模块的功能及设计方法,地址寄存器AR和指令寄存器IR功能:在控制信号REC的控制,缓存相应的数据或指令。控制方式如下:输入输出信号直接参考逻辑框图逻辑框图功能实现思路:按上表控制,4.分析各个主要模块的功能及设

12、计方法,程序计数器功能:保存当前或下一跳指令的值,若是顺序执行则其值自增1,若是跳转则接受来自于ALU的跳转目标值输入输出信号:输入信号:reset, clk, en, alu_out输出信号:pc逻辑框图功能实现思路:顺序执行时PC-PC+1跳转执行时PC-alu_out,4.分析各个主要模块的功能及设计方法,器件T1功能:在控制信号Sci的控制之下,根据c标志位设置初始进位值Cin。控制方式如下:输入输出信号:输入信号:flag_c、sci输出信号:alu_cin逻辑框图功能实现思路:按上表进行控制即可,4.分析各个主要模块的功能及设计方法,器件T2功能:将8位的有符号offset扩充到1

13、6位输入输出信号直接参考如下的逻辑框图逻辑框图功能实现思路:利用补码规则正数前面补8个0负数前面补8个1,4.分析各个主要模块的功能及设计方法,器件T3功能:在/wr=1时,才将来自于ALU的待写数据送到数据总线,否则为高阻态输入输出信号直接参考下面的逻辑框图逻辑框图功能实现思路:/wr=1,输出高阻态/wr=0,输出alu_out,4.分析各个主要模块的功能及设计方法,测试部件REG_OUT功能:根据功能选择信号及寄存器选择编号,输出相应的寄存器内容或控制信号输入输出信号:输入信号:功能选择信号sel、寄存器选择编号reg_sel、ir、pc、寄存器输出reg_in、offset、alu_a

14、、alu_b、alu_out、reg_testa输出信号:reg_data逻辑框图:,4.分析各个主要模块的功能及设计方法,逻辑框图功能实现思路:根据功能选择信号sel确定功能再根据reg_sel,确定输出数据具体见下表,4.分析各个主要模块的功能及设计方法,4.分析各个主要模块的功能及设计方法,根据上述第4点的分析,用VHDL语言编程实现具体参考给出的VHDL参考代码,5. 编程实现,将各个部件通过BDF方法或端口映射(port map)方式连接起来,形成一个整体的实验CPU分配管脚,并下载到实验平台上进行测试所设计的CPU整体框图为,6. 组装测试,CPU的内部结构,CPU的测试方法根据所

15、设计的指令系统汇编语言编写测试用汇编代码写好编译规则后,利用DebugController进行编译利用DebugController将编译后的二进制代码写到TEC-CA平台的存储器内部利用TEC-CA平台左下角的复位及单脉冲进行测试模式控制键置成011先按复位按钮进行服位按单脉冲进行逐条指令的测试根据指令的特点,A组指令时3拍,B组是4拍。即按3此单脉冲,完成一条A组指令,如add指令;B组类推;每按一个节拍,调整sel和reg_sel,以确定输出是否正确,6. 组装测试,内容提要,回顾冯诺依曼CPU结构及工作原理16位实验CPU的设计与实现将16位实验CPU的改造成8位的实验CPU评分标准,

16、改造思路基本上重新经历前述16位CPU的设计和实现流程具体思路:指令系统的改造:CPU内部结构的改造控制信号的确定各个主要模块的功能分析及设计编程实现组装测试,将16位实验CPU改造成8位CPU,由16位改造成8位op占4位其余部分根据指令格式相应改,1. 指令系统的改造,结构基本保持不变把16位的数据通路改成8位自己设计8位存储器,以替代TEC-CA平台上的16位存储器,2. CPU内部结构的改造,由于只改了数据通路,且只用了8位存储器代替16位的,因此控制信号不需要改变,3. 控制信号的确定,与16位实验CPU的相似主要改进点:(1)ALU用基础实验2的方案3(2)寄存器组用基础实验4的方

17、案3(3)存储器用基础实验3的异步RAM方案2(4)尝试添加一个数据缓冲寄存器DR,4.各个主要模块的功能分析及设计,在16位实验CPU的VHDL代码基础上进行修改,5. 编程实现,与16位实验CPU的相似需要改动BDF文件可以尝试使用元件例化方式,即采用port map方法实现,6. 组装测试,内容提要,回顾冯诺依曼CPU结构及工作原理16位实验CPU的设计与实现将16位实验CPU的改造成8位的实验CPU评分标准,方案1:给出参考代码的、顶层实体用BDF实现的16位实验CPU,记作ExpCPU-16-BDF方案2:将方案1的顶层实体改用VHDL元件例化方式实现,其它不变,记作ExpCPU-16-VHDL方案3:采用BDF或VHDL方式实现的8位CPU,完成了基本改写要求,记作ExpCPU-8或者ExpCPU-8方案4:在方案3的基础上,实现了一些可选项,记作ExpCPU-8-enhanced,实验方案,完成方案1,得D完成方案1和2,得C完成方案1和3,得A-完成方案1-3,得A完成方案4,在前述得分基础上酌情加分,评分标准,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报