综合实验:8位CPU设计与实现_第1页
综合实验:8位CPU设计与实现_第2页
综合实验:8位CPU设计与实现_第3页
综合实验:8位CPU设计与实现_第4页
综合实验:8位CPU设计与实现_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、王春桃回顾冯诺依曼CPU结构及工作原理16位实验CPU的设计与实现将16位实验CPU的改造成8位的实验CPU评分标准2022-7-33存储器输出输入运算器控制器数据信号控制信号地址信号41. CPU的功能 指令控制(程序的顺序控制) 操作控制(一条指令有若干操作信号实现) 时间控制(指令各个操作实施时间的定时) 数据加工(算术运算和逻辑运算)执行指令取指令操作控制、时间控制5ALU数据缓冲寄存器状态字寄存器地址数据57061007661077304031地址OP码地址码101MOVR0,R1102LADR1,6103ADDR1,R2104STOR2,(R3)105JMP101106ANDR1,

2、R3107地址寄存器程序计数器时序发生器操作控制器指令译码器OP码地址码R0R1R2R3数存cache指存cacheAR数据地址总线指令地址总线控制信号OCPCIR指令寄存器C1C2C1C2C3Cn回顾冯诺依曼CPU结构及工作原理16位实验CPU的设计与实现将16位实验CPU的改造成8位的实验CPU评分标准下面以16位的实验CPU为例进行回顾,说明设计实现过程的思路和方法 设计指令系统 确定CPU的结构图 确定控制信号 分析各个主要模块的功能及设计方法 编程实现 组装测试设计指令前了解现实需求,并将其中必不可少、使用频率较大的需求设计为指令确定指令格式,如OP和地址码分别如何设计OP码常用固定

3、长度,根据指令条数来确定确定地址码有几个,分别应该是多长指令分类及其对应的格式:单字长、双字长指令功能分组及OP码分配,形成指令总表 不同组指令的执行时长不等,为提高效率,进行时序分析与设计,以状态机形式反映(1)单字单操作数指令包括:DEC,INC,SHL,SHR,JR,JRC,JRNC,JRZ,JRNZ, JRS,JRNS15 815 87 47 43 03 0OPCODEDEST_REG0000OPCODEOFFSET(2)单字双操作数指令包括:ADD,SUB,AND,CMP,XOR,TEST,OR,MVRR,ADC,SBB,LDRR,STRR(3)单字无操作数指令 包括:CLC,STC

4、15 815 87 47 43 03 0OPCODEDEST_REG SOUR_REG15 815 87 47 43 03 0OPCODE0000 0000(4)双字单操作数指令包括:JMPA(5)双字双操作数指令 包括:MVRD15 815 87 47 43 03 0OPCODE0000 0000ADR15 815 87 47 43 03 0OPCODEDEST_REG 0000DATA由于没有中断操作,本机指令的执行步骤可概括如下:读取指令: 地址寄存器-指令地址,修改PC内容使其指向下一条将要执行的指令 读内存,指令寄存器-读出的内容分析指令 执行指令: 通用寄存器之间的运算或传送,可1

5、步完成 读写内存,通常要两步完成根据指令的执行步骤不同,可以把全部指令分为A、B两组 A组指令完成的是通用寄存器之间的数据运算或传送,或其他一些特殊操作,在取指之后可一步完成 B组指令完成的是一次内存读写操作,在取指之后可两步完成A和B组指令节拍控制以状态机方式实现本综合实验,拟设计的是无cache无流水的CPU因此,采用常规的CPU结构,即主要包含 运算器 控制器设计思路 在设计时,可以先考虑比较粗的结构 然后再逐渐细化 例子说明控制器运算器内存与ALU运算有关的: ALU输入来源控制ALU_IN_SEL ALU运算类型控制AluFunc 对初始进位信号的控制SCI 对标志位C、Z、V、S的

6、设置控制SST与寄存器有关的: SR、DR Reg_EN对AR和IR接收控制 REC(00无操作,01时AR接收PC,10时AR接收ALU输出,11时IR接收)对内存读写的控制 /wr(0时为写内存,1时为读内存)对PC的更新控制 PC_EN综合上述的控制信号,可以得到该CPU的控制信号集合。在设计控制器时,只要根据相关的指令给出这些控制信号的值即可即控制信号共有10个: ALU_IN_SEL、 AluFunc SCI、SST SR、DR、Reg_EN REC /wr PC_EN表中的I7对应pc_en,I6对应reg_en,I5I4I3对应alu_in_sel,I2I1I0对应alu_fun

7、c_sel,SR和DR由指令给出节拍指令编码SciSSTI7I6I5I4I3I2I1I0/WRREC注释000011110100000101AR-PC,PC-PC+1001001100000000110IR-MEM011ADD00000000000001000000100DR-DR+SRSUB00000001000001000001100DR-DR-SRAND00000010000001000010100DRAR, PC+1-PC 控制信号: 令REC=01,实现PC-AR 控制ALU实现PC+1,PC为其中ALU输入,另一个输入为0,初始进位Cin为1。 为此,令SCI=1,以实现Cin=1

8、; 令ALU_IN_SEL=100以选择A=0和B=PC; 令ALU_FUNC_SEL=000,以实现A+B+Cin 令PC_EN=1,以把增1后的结果置入PC中 其它控制信号按缺省值设置即可 如控制标志位的SST,令保持原来标志即可,此时SST=11 控制寄存器写的REG_EN,不用写,保持REG_EN=0 控制内存写的/wr,不用写,令/wr=1综合上述控制信号值,可得:节拍指令编码SciSSTI7I6I5I4I3I2I1I0/WRREC注释000011110100000101AR-PC,PC-PC+1第2拍:从内存取出指令 对应节拍:001 动作:IR - Mem 控制信号: 为了控制内

9、存读,/wr应该设置为/wr=1 为了将从Mem读出的指令打入IR,控制IR的REC应设成REC=10 其它保持缺省值 因此,此时的控制信号集合为:节拍指令编码SciSSTI7I6I5I4I3I2I1I0/WRREC注释001001100000000110IR-Mem第3拍:执行加法运算 节拍:011 动作: R0-R0+R1 控制信号: ALU运算的数据源自于寄存器,因此ALU_IN_SEL=000 执行加法运算,因此ALU_FUNC_SEL=000 初始进位Cin必须为0,因此SCI=00 完成运算后,结果会影响标志位,因此SST=00 运算结果要保存到寄存器中,因此REG_EN=1 其它

10、控制信号按缺省值设置,即/wr=1和REC=00 因此,控制信号集合为:节拍指令编码SciSSTI7I6I5I4I3I2I1I0/WRREC注释011000001000000100DRA成立,c=1;否则c=0若alu_out=x”0000”成立,z=1;否则为0若A、B的最高位为1(或0),但alu_out最高位为0(1),则v=1;否则v=0若alu_out的最高位为1,则s=1;否则s=0001若AB成立,c=1;否则c=0010无进位无溢出,v=0011100101c为最高位110c为最低位寄存器组 功能:实现寄存器的读和写,写时在时钟上升沿根据DR和REG_EN写入一个数据,读时根据

11、SR和DR同时读出两个数据。此外,为方便测试,尚需根据寄存器选择编号读出对应寄存器的数值 输入输出信号: 输入信号:reset, clk, dest_reg, src_reg, en, alu_out, reg_sel 输出信号:sr, dr, reg_out 逻辑框图resetclkdest_reg3.0ensr15.0dr15.0source_reg3.016位通用寄存器组alu_out15.0reg_sel3.0reg_out15.0 功能实现思路 设计两个功能模块:一为reg,一为reg_mux 调用16个reg和1个reg_mux连接起来,即形成寄存器组 参考基础实验4的方案2文档A

12、LU输入复用模块 功能:根据控制信号ALU_IN_SEL,确定ALU的两个输入的来源。功能如下表所示:ALU_IN_SELALU_AALU_B000SRDR001SR00100DR011OFFSETPC1000PC1010DATAI5I4I3(即ALU_IN_SEL)表格 输入输出信号 输入信号:来自于寄存器的输出信号sr和dr,来自于指令的OFFSET,来自于PC的值PC,来自于内存的数据DATA,以及控制信号ALU_IN_SEL 输出信号:ALU_SR和ALU_DR 逻辑框图 功能实现思路 根据ALU复用功能控制 表即可进行实现标志位寄存器 功能:根据控制信号SST,设置相应的标志位C、Z

13、、S、V。其控制方式如下: 输入输出信号: 输入信号:C, Z, S, V, SST, clk, reset 输出信号:FLAG_C, FLAG_Z, FLAG_S, FLAG_V 逻辑框图 功能实现思路:根据上表进行控制即可SSTCZVS00接受ALU的运算结果010ZVS101ZVS11CZVS控制器 功能:在时序发生器的驱动下,根据各指令的节拍控制各指令的取指及执行 输入输出信号 输入信号:来自于时序发生器的节拍timer,来自于IR的指令instruction,来自于标志寄存器的flag_c、 flag_z、 flag_v、 flag_s 输出信号:前面所分析的控制信号集合 用于寄存器

14、的dest_reg、source_reg、en_reg 用于alu相关的alu_in_sel 、alu_func_sel 、sci 、sst 用于控制PC写的en_pc 用于内存读写的/wr 用于控制PC和IR接收信号源的rec 逻辑框图 功能实现思路: 根据指令节拍表在不同节拍 进行逐一发出控制信号即可 节拍表参考开放式教学CPU 设计与测试系统P28-29节拍发生器 功能:根据外部提供的时钟脉冲以及指令功能,产生不同的节拍脉冲序列 输入输出信号: 输入信号:reset、clk、ins 输出信号:timer 逻辑框图 功能实现思路 利用状态机及指令功能来实现状态转移 参考下图地址寄存器AR和

15、指令寄存器IR 功能:在控制信号REC的控制,缓存相应的数据或指令。控制方式如下: 输入输出信号 直接参考逻辑框图 逻辑框图 功能实现思路: 按上表控制REC操作00无操作01AR接收PC11AR接收ALU输出10IR接收程序计数器 功能:保存当前或下一跳指令的值,若是顺序执行则其值自增1,若是跳转则接受来自于ALU的跳转目标值 输入输出信号: 输入信号:reset, clk, en, alu_out 输出信号:pc 逻辑框图 功能实现思路: 顺序执行时PC-PC+1 跳转执行时PC-alu_out器件T1 功能:在控制信号Sci的控制之下,根据c标志位设置初始进位值Cin。控制方式如下: 输

16、入输出信号: 输入信号:flag_c、sci 输出信号:alu_cin 逻辑框图 功能实现思路: 按上表进行控制即可SCICin00001110FLAG_C器件T2 功能:将8位的有符号offset扩充到16位 输入输出信号 直接参考如下的逻辑框图 逻辑框图 功能实现思路: 利用补码规则 正数前面补8个0 负数前面补8个1器件T3 功能:在/wr=1时,才将来自于ALU的待写数据送到数据总线,否则为高阻态 输入输出信号 直接参考下面的逻辑框图 逻辑框图 功能实现思路: /wr=1,输出高阻态 /wr=0,输出alu_out测试部件REG_OUT 功能:根据功能选择信号及寄存器选择编号,输出相应

17、的寄存器内容或控制信号 输入输出信号: 输入信号:功能选择信号sel、寄存器选择编号reg_sel、ir、pc、寄存器输出reg_in、offset、alu_a、alu_b、alu_out、reg_testa 输出信号:reg_data 逻辑框图: 逻辑框图 功能实现思路: 根据功能选择信号sel确定功能 再根据reg_sel,确定输出数据 具体见下表sel1.0reg_sel3.0reg_data15.000 xxxx由xxxx确定的寄存器的输出010000offset0001alu_a0010alu_b0011alu_out0100reg_testa(控制信息)其它全0111110pc11

18、11ir其它全0其它无操作根据上述第4点的分析,用VHDL语言编程实现具体参考给出的VHDL参考代码将各个部件通过BDF方法或端口映射(port map)方式连接起来,形成一个整体的实验CPU分配管脚,并下载到实验平台上进行测试所设计的CPU整体框图为CPU的内部结构CPU的测试方法 根据所设计的指令系统汇编语言编写测试用汇编代码 写好编译规则后,利用DebugController进行编译 利用DebugController将编译后的二进制代码写到TEC-CA平台的存储器内部 利用TEC-CA平台左下角的复位及单脉冲进行测试 模式控制键置成011 先按复位按钮进行服位 按单脉冲进行逐条指令的测试 根据指令的特点,A组指令时3拍,B组是4拍。即按3此单脉冲,完成一条A组指令,如add指令;B组类推; 每按一个节拍,调整sel和reg_sel,以确定输出是否正确回顾冯诺依曼CPU结构及工作原理16位实验CPU的设计与实现将16位实验CPU的改造成8位的实验CPU评分标准改造思路 基本上重新经历前述16位CPU的设计和实现流程具体思路: 指令系统的改造: CPU内部结构的改造 控制信号的确

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论