资源预览内容
第1页 / 共47页
第2页 / 共47页
第3页 / 共47页
第4页 / 共47页
第5页 / 共47页
第6页 / 共47页
第7页 / 共47页
第8页 / 共47页
第9页 / 共47页
第10页 / 共47页
第11页 / 共47页
第12页 / 共47页
第13页 / 共47页
第14页 / 共47页
第15页 / 共47页
第16页 / 共47页
第17页 / 共47页
第18页 / 共47页
第19页 / 共47页
第20页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
点击查看更多>>
资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,实践项目内容,数字电路,的数字钟;,高级数字系统设计与验证,的数字钟;,SoC,系统开发,的数字钟。,1,实践项目成果,2,项目第一部分简化的RISC_CPU设计,3,1、概 述,设计所用语言,Verilog,HDL,设计所用方法,Top-Down,设计方法,设计所用知识,数字电路,计算机组成原理,高级数字系统设计与验证,可综合风格的组合逻辑电路设计,有限状态机的设计,4,设计所用开发环境,ISE8.2,ModelSim6.1,设计和实现的目标,完成,8,条指令的,RISC CPU,设计,完成对所设计,RISC CPU,的验证,实现,RISC CPU,在,FPGA,开发板上的正确运行,1、概 述,5,2、什么是RISC CPU,CPU,的意思,中央处理单元的缩写,它是计算机的核心部件,RISC,的意思,精简指令集计算机(,Reduced Instruction Set Computer,)的缩写,6,2、什么是RISC CPU,RISC CPU,简介,是,20,世纪,80,年代才出现的,CPU,,与一般的,CPU,相比不仅只是简化了指令系统,而且还通过简化指令系统,使计算机的结构更加简单合理,从而提高运算速度,7,3、RISC CPU功能分析,计算机利用,RISC CPU,处理信息的步骤,将数据和程序(即指令序列)输入到计算机的 存储器中,从第一条指令的地址起开始执行该程序,得到所需结果,结束运行,8,RISC,CPU,的作用,协调并控制计算机的各个部件,执行程序的指令序列,RISC CPU,的基本功能,取指令,分析指令,执行指令,3、RISC CPU功能分析,9,取指令,当程序已经在存储器中时,首先根据程序入口地址取出一条程序,为此要发出指令地址及控制信号。,分析指令,即指令译码,这是对当前取得的指令进行分析,指出它要求什么操作,并产生相应的操作控制命令。,3、RISC CPU功能分析,10,执行指令,根据分析指令时产生的“操作命令”形成相应的操作控制信号序列,通过运算器、存储器及输入,/,输出设备的执行,实现每条指令的功能,其中包括对运算结果的处理以及下条指令地址的形成。,3、RISC CPU功能分析,11,取指令,当程序已经在存储器中时,首先根据程序入口地址取出一条程序,为此要发出指令地址及控制信号。,指令寄存器,分析指令,即指令译码,这是对当前取得的指令进行分析,指出它要求什么操作,并产生相应的操作控制命令。,译码器,3、RISC CPU功能分析,12,执行指令,根据分析指令时产生的“操作命令”形成相应的操作控制信号序列,通过运算器、存储器及输入,/,输出设备的执行,实现每条指令的功能,其中包括对运算结果的处理以及下条指令地址的形成。,算术逻辑运算单元(,ALU,),累加器,程序计数器(,PC,),3、RISC CPU功能分析,13,RISC CPU,整体功能,取指令,分析指令,执行指令,状态控制器,地址控制器,数据控制器,时钟控制器,3、RISC CPU功能分析,14,RISC CPU,需要执行的操作,系统的复位和启动操作,总线读操作,总线写操作,4、RISC_CPU操作和时序,15,系统的复位和启动操作,RISC_CPU,的复位和启动操作是通过,rst,引脚的信号触发执行的;,当,rst,信号一进入高电平,,RISC_CPU,就会结束现行操作,并且只要,rst,停留在高电平状态,,CPU,就维持在复位状态;,在复位状态,,CPU,各内部寄存器都被设为初值,全部为零。数据总线为高阻态,地址总线为,0000H,,所有控制信号均为无效状态;,rst,回到低电平后,接着到来的第一个时钟上升沿将启动,RISC_CPU,开始工作,从,ROM,的,000,处开始读取指令并执行相应操作。,4、RISC_CPU操作和时序,16,总线读操作,每个指令周期的前,03,个时钟周期用于读指令;,第,3.5,个周期处,存储器或端口地址就输出到地址总线上;,第,46,个时钟周期,读信号,rd,有效,数据送到数据总线上,以备累加器锁存,或参与算术、逻辑运算;,第,7,个时钟周期,读信号无效,第,7.5,个时钟周期,地址总线输出,PC,地址,为下一指令做好准备。,4、RISC_CPU操作和时序,17,总线写操作:,每个指令周期的第,3.5,个时钟周期处,写的地址就建立了;,第,4,个时钟周期输出数据;,第,5,个时钟周期输出写信号,至第,6,个时钟结束,数据无效;,第,7.5,个时钟周期,地址输出为,PC,地址,为下一指令做好准备。,4、RISC_CPU操作和时序,18,指令系统由,8,条指令组成:,HLT,:停机操作。该操作将空一个指令周期,即,8,个时钟周期;,SKZ,:若为零跳过下一条语句。该操作先判断当前累加器中的结果是否为零,若为零就跳过下一条语句,否则继续执行;,ADD,:该操作将累加器中的值与地址所指的存储器或端口的数据相加,结果仍送回累加器中;,ANDD,:该操作将累加器的值与地址所指的存储器或端口的数据相与,结果仍送回累加器中;,5、RISC_CPU寻址方式和指令系统,19,指令系统由,8,条指令组成:,XORR,:该操作将累加器的值与指令中给出地址的数据异或,结果仍送回累加器中;,LDA,:该操作将指令中给出地址的数据放入累加器;,STO,:该操作将累加器的数据放入指令中给出的地址;,JMP,:该操作将跳转至指令给出的目的地址,继续执行。,5、RISC_CPU寻址方式和指令系统,20,RISC_CPU,是,8,位微处理器,一律采用直接寻址方式,即数据总是放在存储器中,寻址单元的地址由指令直接给出。,5、RISC_CPU寻址方式和指令系统,21,顶层模块,6、RISC_CPU的设计,22,数据通道,6、RISC_CPU的设计,23,状态控制器,6、RISC_CPU的设计,24,7、RISC_CPU的实现,25,数据通道,2,7,3,6,4,1,5,26,模块1,时钟发生器,27,时钟发生器,clkgen,利用外来时钟信号,clk,生成一系列时钟信号,clk1,、,fetch,、,alu_clk,,并送往,CPU,的其他部件。,其中,,fetch,是外来时钟,clk,的,8,分频信号,利用,fetch,的上升沿来触发,CPU,控制器开始执行一条指令,同时,fetch,信号还将控制地址多路器输出指令地址和数据地址;,clk1,信号用作指令寄存器、累加器、状态控制器的时钟信号;,alu_clk,则用于触发算术逻辑运算单元。,模块一 时钟发生器,28,模块2,指令寄存器,29,指令寄存器的触发时钟是,clk1,,在,clk1,的正沿触发下,寄存器将数据总线送来的指令存入高,8,位或低,8,位寄存器中,但并不是每个,clk1,的上升沿都寄存数据总线的数据,因为数据总线上有时传输指令,有时传输数据;,是不是指令由,CPU,状态控制器的,load_ir,信号控制,该信号通过,ena,口输入到指令寄存器,高电平表示是指令;,复位信号高有效,指令寄存器被清为零;,每条指令为两个字节,即,16,位。高,3,位是操作码,低,13,位是地址(,CPU,的地址总线为,13,位,寻址空间为,8K,字节),数据总线为,8,位,所以每条指令需取两次,先取高,8,位,后取低,8,位。,模块二 指令寄存器,30,模块3,累加器,31,累加器用于存放当前的结果,它也是双目运算中的一个数据来源;,复位后,累加器的值是零;,当累加器通过,ena,口收到来自,CPU,状态控制器,load_acc,信号时,在,clk1,时钟正跳沿时就收到来自于数据总线的数据。,模块三 累加器,32,模块4,算数运算器,33,算术逻辑运算单元根据输入的,8,种不同操作码分别实现相应的加、与、异或、跳转等基本操作运算;,利用这几种基本运算可以实现很多种其它运算以及逻辑判断等操作。,模块四 算术运算器,34,HLT=3b000,,暂停指令(,保持累加器值,),SKZ=3b001,,计算为零则跳转指令(,保持累加器值,),ADD=3b010,,加法指令(,data+,累加器值,),ANDD=3b011,,按位与指令(,data,&,累加器值,),XORR=3b100,,按位异或指令(,data,累加器值,),LDA=3b101,,载入指令(,data,),STO=3b110,,数据写入指令,(保持累加器值,),JMP=3b111,,跳转指令,(保持累加器值,),模块四 算术运算器,35,模块5,数据控制器,36,数据控制器作用是控制累加器的数据输出,由于数据总线是各种操作时传送数据的公共通道,不同情况下传送不同的内容,有时要传输指令,有时要传送,RAM,区或接口的数据;,累加器的数据只有在需要往,RAM,区或端口写时才允许输出,否则应呈现高阻态,以允许其他部件使用数据总线;,所以任何部件往总线上输出数据时,都需要一控制信号。而此控制信号的启、停则由,CPU,状态控制器输出的各信号控制决定;,数据控制器何时输出累加器的数据则由状态控制器输出的控制信号,datactl_ena,决定。,模块五 数据控制器,37,模块6,地址多路器,38,它用于选择输出的地址是,PC,(程序计数)地址还是数据,/,端口地址;,每个指令周期的前,4,个时钟周期用于从,ROM,中读取指令,输出的应是,PC,地址;,后,4,个时钟周期用于对,RAM,或端口的读写,该地址由指令给出;,地址的选择输出信号由时钟信号的,8,分频信号,fetch,提供。,模块六 地址多路器,39,程序计数器,模块7,40,它用于提供指令地址,以便读取指令。指令按地址顺序存放在存储器中;,有两种途径可形成指令地址:,顺序执行的情况;,遇到要改变顺序执行程序的情况,例如执行,JMP,指令后,需要形成新的指令地址。,复位后,指令指针为零,即每次,CPU,重新启动将从,ROM,的零地址开始读取指令并执行;,每条指令执行完需要两个时钟(两个程序计数器的时钟,即,INC_PC,信号的两个周期),这时,pc_addr,已被增,2,,指向下一条指令(因为每条指令占两个字节);,如果正在执行的指令是跳转语句,这时,CPU,状态控制器将会输出,load_pc,信号,通过,load,口进入程序计数器,程序计数器(,pc_addr,)将装入目标地址(,ir_addr,),而不是增,2,。,模块七 程序计数器,41,状态控制器,7、RISC_CPU的实现,42,状态控制器有两部分组成:状态机、状态控制器。,7、RISC_CPU的实现,43,状态机控制器接收复位信号,rst,,当,rst,有效时,使能信号,ena,为,0,,输入到状态机中以停止状态机的工作;,状态控制器是在,fetch,上升沿或,rst,上升沿判断,rst,是否有效,如果,rst,为高电平,,ena,置,0,,否则置,1,;,状态机是,CPU,的控制核心,用于产生一系列的控制信号,启动或停止某些部件;,CPU,何时进行读指令来读写,I/O,端口及,RAM,区等操作,都是由状态机来控制的;,状态机的当前状态,由变量,state,记录,,state,的值就是当前这个指令周期中已经过的时钟数(从零计起)。,7、RISC_CPU的实现,44,指令周期是由,8,个时钟组成,每个时钟都要完成固定的操作:,第,0,个时钟:,CPU,状态控制器的输出,rd,和,load_ir,为高电平,其余均为低电平。指令寄存器寄存由,ROM,送来的高,8,位指令代码;,第,1,个时钟:与上一时钟相比只是,inc_pc,从,0,变为,1,,故,PC,增,1,,,ROM,送来低,8,位指令代码,指令寄存器寄存该,8,位代码;,第,2,个时钟:空操作,即,inc_pc,从,1,变为,0,,,rd,和,load_ir,变为,0,。此时指令读结束;,第,3,个时钟:,inc_pc,变为,1,,即,PC,增,1,,指向下一条指令。另外,若操作符为,
点击显示更多内容>>

最新DOC

最新PPT

最新RAR

收藏 下载该资源
网站客服QQ:3392350380
装配图网版权所有
苏ICP备12009002号-6