计算机组成与实现 课件 第9章-集成MIPS微系统_第1页
计算机组成与实现 课件 第9章-集成MIPS微系统_第2页
计算机组成与实现 课件 第9章-集成MIPS微系统_第3页
计算机组成与实现 课件 第9章-集成MIPS微系统_第4页
计算机组成与实现 课件 第9章-集成MIPS微系统_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

集成MIPS微系统计算机组成与实现目录概述MIPS体系结构定时概述串行通讯概述完善cpu设计通过系统桥连接设备定时器设计MiniUART设计软件开发动机有助于培养系统思维有助于深刻理解软硬件协同通过复杂的调试有助于训练思维宽度、深度和缜密程度有助于理解现代计算机系统的基本特征—并行与并发增强对计算机系统的感性认识学习和掌握多种工具主动学习!目标ISR()……系统桥定时器UARTCPU(含存储器)ABCDEFGH12345678main()……软件硬件PC机多周期,支持中断接收到主机发送的字符就产生中断在一个ISR中,同时支持UART中断和定时中断主程序初始化后,就循环检测UART是否有数据,并设置定时器产生周期性定时中断实验环境FPGA:cpu、UART控制器x2、定时器、LED/7段数码管驱动RS-232:连接器,与FPGA实现的UART控制器连接存储器:存储代码与数据LED:适合按位显示7段数码管:适合显示完整的数字波动开关:允许简单输入FPGA存储器存储器存储器

最小实验系统FPGA+1个UART目录概述MIPS体系结构地址空间分配定时概述串行通讯概述完善cpu设计通过系统桥连接设备定时器设计MiniUART设计软件开发地址空间分配微系统参考了MARS的地址空间规范,实际使用空间远小于4GB现代计算机cpu地址空间远大于4GB,而且划分方案非常复杂1)虽然IM和DM分别只有4KB和8KB,但能编写小规模程序了2)ISR只有256B是肯定不够的,这里仅用于部署跳转指令256B对应64条跳转指令,也就是最多可以对应64个硬件中断序号地址范围容量映射对象描述100000000H~00001FFFH8KB数据存储器容量8KB。数据位宽:32位200003000H~00003FFFH4KB指令存储器容量4KB。数据位宽:32位300004180H~000041FFH256B硬件中断入口所有硬件中断的入口区400007F00H~00007F0FH16B定时器用于映射定时器的寄存器500007F10H~00007F2FH32BUART用于映射UART的寄存器600007F30H~00007F3FH16BSWITCH用于映射FPGA实验板上的用户开关700007F40H~00007F4FH16BLED用于映射FPGA实验板上的LED目录概述MIPS体系结构协处理器定时概述串行通讯概述完善cpu设计通过系统桥连接设备定时器设计MiniUART设计软件开发协处理器现代cpu除了计算功能(如计算、存储访问、分支、跳转等),还包含庞杂的管理功能cpu管理(包括中断、cache、MMU等)、浮点运算等MIPS采用协处理器(Co-Processor)方案实现上述特殊功能MIPS共定义了4个CP(CP0至CP3),其中CP0是体系结构中必须实现的协处理器方案的价值使得计算与管理彼此独立,相互干扰少使得MIPS实现者可以根据具体需求灵活选择实现方案CP0CP0是所谓的系统控制协处理器它是MIPS的精髓之一,也是打开MIPS特权级模式的大门CP0内部包含32个特殊寄存器,我们只实现12号至15号编号寄存器描述R/W12SR状态寄存器从名字上看应该是系统状态,但大部分可写的位却是用于控制R/W13Cause导致异常或中断的原因R14EPC异常返回地址R/W15PRId处理器识别标识原则上,MIPS公司决定处理器标识编码信息分配方案R

R代表只读;R/W代表可读可写

关于协处理器的更多内容,请阅读《SeeMIPSRunLinux》第3章SR寄存器SR包含大量的控制位,微系统仅保留与中断相关的4个寄存器位IE是全局性中断开关当软件置位IE后,CPU将不再响应外部中断IM[7:2]:6位中断屏蔽位,分别对应6个外部中断1-允许中断,0-禁止中断IE:全局中断使能1-允许中断;0-禁止中断EXL:异常级(用于防止中断重入)1-进入异常,不允许再中断;0-允许中断IM7-2

IM[7:2]实现了中断使能的精细化管理

微系统只实现IM3和IM2,分别对应UART和定时器CAUSE寄存器IP[7:2]:6位待决的中断位,分别对应6个外部中断记录当前哪些硬件中断正在有效1-有中断;0-无中断ExcCode[6:2]:异常编码,记录当前发生的是什么异常包括中断等在内,共计32种编码微系统最多实现3种即可ExcCode助记符描述0Int中断10RI不识别(非法)指令12Ov算数指令导致的异常(如add)

微系统只实现IP3和IP2,分别对应UART和定时器EPCEPC:保存中断/异常时的PC以便从中断/异常服务程序返回至被中断指令Eret是可以访问EPC的指令之一,其功能之一是将EPC写入PC,从而实现从异常(或中断)处理程序返回只受害指令编码31262521201615

1110

650COP00100008000010000000000000000000eret0110006206格式eret描述eret将保存在CP0的EPC寄存器中的现场(被中断指令的下一条地址)写入PC,从而实现从中断、异常或指令执行错误的处理程序中返回。操作PC

CP0[epc]示例eret其他当程序被硬件中断、指令执行异常(如除0、算数溢出)时,PC+4将被保存在EPC中。PrID用于对公司/指令集版本等进行标识Intel处理器也有ID,CPU-Z就可以读取目前可以任意选则用一个4字节的编码值,如0x1234_5678名字:IntelXeonE31230v3代号:Haswell-WS

上述名字与代号是软件根据读取的寄存器值进行相应解读目录概述MIPS体系结构协处理器指令定时概述串行通讯概述完善cpu设计通过系统桥连接设备定时器设计MiniUART设计软件开发协处理器指令及用途软件不能直接修改CP0寄存器,必须借助通用寄存器mfc0:读取CP0寄存器至通用寄存器SR:获取处理器的控制信息Cause:获取处理器当前所处于的状态EPC:获取被异常/中断的指令地址PRId:读取处理器ID(可以读取你的个性签名

)mtc0:通用寄存器值写入CP0寄存器SR:对处理器进行控制,例如关闭中断EPC:操作系统中将用于多任务切换目录概述MIPS体系结构协处理器指令定时概述串行通讯概述完善cpu设计通过系统桥连接设备定时器设计MiniUART设计软件开发定时概述存在大量需要知道当前的时间或流逝了多长时间的场景使用者需要了解当前时间,例如日期:时:分:秒:毫秒:微秒应用程序(

例如闹钟程序)需要等待一个固定的时间应用程序(例如视频播放软件)需要按某种时间节拍推进内部的计算工作OS调度进程的策略之一就是按时间片调度网络通信中需要为报文发送和接收设置超时计时/定时的基本思路定时器周期性的产生中断ISR读取并记录定时器的计数值在现代计算机系统中,一般是由ISR调度OS内部的相关代码完成上述及更复杂的时间管理功能为关机后能继续计时,很多计算机系统为定时器提供了电池供电定时器工作特性定时器的核心是计数器,它在某个时钟驱动下不断计数,然后根据计数器的时钟频率和计数值来推算出时间一般来说,计数器具有灵活的工作特性计数模式,例如:

正计数;

倒计数加载模式,例如:

计数结束后等待软件重置;计数结束后自动重置中断模式,例如:计数结束后不允许中断;计数结束后不允许中断

简化设计目录概述MIPS体系结构协处理器指令定时概述串行通讯概述完善cpu设计通过系统桥连接设备定时器设计MiniUART设计软件开发串行通信基本特点单一传输线:即传输控制信息又传输数据信息通讯协议:异步通信、同步通信传输方向:全双工、半双工、单工串行通信基本特点信号调制与解调计算机内部传输通常采用数字信号;计算机远程通信通常依赖公用电话网公用电话网适合传输300~3400Hz的音频信号(模拟信号)直接传输二进制数据会引起高次谐波,致使二进制数据信号严重失真调制(二进制信号

音频信号)与解调(音频信号

数字信号)多种调制模式:ASK(振幅调制)、PSK(相移调制)、FSK(频移调制)…信息检错与纠错MODEM:调制解调器波特率与字符速率波特率:串行通信中的位传输速率(bps)例如,1秒钟能够传输1000个二进制位,则波特率为1000bps常见波特率:9600、19200、38400、57600、115200等字符速率:字符数/s1个字符由n位组成(字符帧)有效载荷:n位协议开销:起始位、停止位、校验位字符帧格式字符帧包括起始位、数据位、停止位和校验位起始位:1位;值恒为0数据位:最多为8位停止位:1、1.5或2位;值衡为1校验位:可选字符帧发送首先,发送1位起始位然后,将数据按从最低位到最高位的顺序逐位发送第三,发送校验位(可选)最后,发送停止位波特率与时钟

波特率除数因子波特率与时钟

波特率除数因子数据发送与接收1/2发送电路发送时钟:频率与波特率相同即可移位寄存器:并行加载字符;在发送时钟驱动下逐位发送接收电路接收时钟:N倍于波特率(一般为为8倍或16倍)移位寄存器:在接收时钟驱动下在字符中间位置采样信号并接收数据发送与接收2/2如何找到字符的中间位置?首先,检测传输是否开始检测接收信号线是否从10一旦检测到0,则意味着一个字符开始了然后,计数N/2个周期,这样就到达了字符的中间位置从该位置开始,每N个周期采样一次UART控制器接口cpu侧接口;RS-232侧接口串并转换为cpu侧提供并行数据访问接口;为RS-232侧提供串行收发接口波特率生成错误检测中断MODEM连接CPUUART控制器RS-232驱动电路RxDTxDUART控制器RS-232驱动电路RxDTxDCPU必备必备必备可选可选可选MiniUART基本特性波特率:9600、19200、38400、57600及115200共5种波特率数据帧:1位起始位、8位数据位、1位停止位,无奇偶校验位中断:支持MODEM:不支持信号:RxD、TxD、GND偏移寄存器描述R/W00hDATA数据寄存器。读出时,返回内部的数据接收寄存器值。写入时,将待发送数据写入到内部的数据发送寄存器R/W04hIER中断允许寄存器R/W08hIIR中断识别寄存器R0ChLSR线路状态寄存器R10hDIV波特率除数因子寄存器R/WRS-232接口RS-232是美国电子工业协会(EIA)等多家单位于1970年制定的RS-232有两种标准(9针或25针),常用的是9针接口RS-232(9针接口)中最常用的信号是:RxD(Receiveddata):串行接收数据TxD(Transmitteddata):串行发送数据GND:地线CPUUART控制器RS-232驱动电路RxDTxDUART控制器RS-232驱动电路RxDTxDCPU短距离通信时,交叉连接两台计算机的RxD与TxD目录概述MIPS体系结构协处理器指令定时概述串行通讯概述完善cpu设计通过系统桥连接设备定时器设计MiniUART设计软件开发CP0模块接口信号名方向描述备注A[4:0]ICP0寄存器索引支持mfc0和mtc0这两条指令WD[31:0]I写入CP0的数据RD[31:0]OCP0寄存器输出WrIEPC写使能PC[31:2]I发生异常时,需要保存的PC值异常/中断时保存EPCWrEPCI发生异常时,EPC的写使能EPC[31:2]OEPC保存的发生异常时的PC值输出EPC寄存器的值EXL_ClrISR寄存器EXL位复位支持EXL位EXL_SetISR寄存器EXL位置位IP[3:2]I外部设备中断输入对应定时器中断和UART中断INTO中断请求

ClkI时钟系统信号ResetI复位信号设计CP0:SR由于无用位较多,因此只定义有用位reg[15:10]im;regexl,ie;SR整体表示为:{16’b0,im,8’b0,exl,ie}im,ie:行为很简单if(当Wen有效&&Sel为对应的寄存器编号){im,exl,ie}<={DIn[15:10],DIn[1],DIn[0]};exl:除了类似im/ie的行为外,还必须有置位和清除的功能。以置位为例:if(EXLSet)exl<=1’b1;reg[5:0]im与reg[15:10]im是等价的,但后者可读性更好设计CP0:CauseCause:只定义2位寄存器,在clock上升沿不断的保存外部2中断reg[11:10]hwint_pend;Cause整体表示为:{20’b0,hwint_pend,10’b0}设计CP0:EPC定义30位寄存器reg[32:2]epc;为什么不需要32位?设计CP0:输出CP0寄存器除了SR/Cause/EPC/PRId外,不用的寄存器一律输出0可以设计5选1的MUX,或者用行为描述(如样例代码)assignDOut=(Sel==12)?{16’b0,im,8’b0,exl,ie}:(Sel==13)?{xxxxxxxxxxxxxxxxxxxxxxxx}:(Sel==14)?EPC:(Sel==15)?PrID32’b0;数据通路与控制器数据通路:增加cp0模块控制器Wr:mtc0指令的译码结果WrEPC与EXL_Set:多周期CPU处于INT状态的函数EXL_Clr:eret指令的译码结果数据通路与控制器数据通路:增加cp0模块控制器:Wr是mtc0指令的译码结果;WrEPC与EXL_Set都是多周期CPU处于INT状态的函数;EXL_Clr是eret指令的译码结果。请读者根据这些分析自行构造这些控制信号的表达式。IMARDPCIRABRFA1A2A3WD3RD1RD2ALUZeroEXT01DMARDWD01231F012M1NPCNPCIMMRAEPCPCPC4M2M3C1215:1120:1620:1625:21DR15:0025:00ARCP0RDWDAPCEPCIP3IP2INT20:16支持设备ADD[31:0]:设备的地址DI/DO[31:0]:设备的数据输入与输出内部外部ADD[31:0]DO[31:0]DI[31:0]IMARDPCIRABRFA1A2A3WD3RD1RD2ALUZeroEXT01DMARDWD1F012M1NPCNPCIMMRAEPCPCPC4M2M3C1215:1120:1620:1625:21DR15:0025:00ARCP0RDWDAPCEPCIP3IP2INT20:1601234目录概述MIPS体系结构协处理器指令定时概述串行通讯概述完善cpu设计通过系统桥连接设备定时器设计MiniUART设计软件开发设备Cpu如何连接多个设备?每个设备都有自己的ADD、DI、DOCpu不能为每个设备都提供一套地址/数据否则cpu设计会变得复杂43接口逻辑BridgeBridge:类似与网络switchCPU侧:1组接口;设备侧:N组接口1组地址/写数据,N组读数据CPU读:数据汇聚CPU写:数据派发44CPU桥PrADDPrRDPrWDPrWrPrRdADDWDRD1……RDnCS1……CS2R/W#ADDDIDOWrRd设备ADDDODICSR/W#...设备ADDDODICSR/W#Bridge功能及内部结构完成地址、数据转换,控制信号的产生地址读数据写数据桥PrADDPrRDPrWDPrWrPrRdADDWDRD1……RDnCS1……CS2R/W#PrAddrPrRDPrWDAddRD1RD2…RDnWD译码地址图地址图:存储器及设备在地址空间的分布区域CPU读写设备(其实是程序员)必须知道设备地址Bridge也必须知道地址图,否则无法完成译码示例:假设设备0~3均需要256B的地址空间需求设备MIPS地址范围占用空间DEV0A0000000H~A00000FFH256字节DEV1A0000100H~A00001FFH256字节DEV2A0000200H~A00002FFH256字节DEV3A0000300H~A00003FFH256字节Bridge的地址译码1/2设备地址:基地址+偏移偏移:位数由空间大小决定,即log2(空间)基地址:高位部分注意:cpu读写某设备的地址空间时,发出的地址的基地址部分是不变的。变化的是偏移!31X+1X0基地址偏移设备地址范围占用空间DEV0A0000000H~A00000FFH256字节DEV1A0000100H~A00001FFH256字节DEV2A0000200H~A00002FFH256字节DEV3A0100000H~A01FFFFFH1MB字节设备基地址偏移DEV0A000008位DEV1A000018位DEV2A000028位DEV3A0120位Bridge的地址译码2/2为每个设备产生一个1位的译码变量assignCS0=(PrAddr[31:8]==’hA00000);…assignCS3

=(PrAddr[31:20]==’hA01);Verilog样例设备基地址偏移DEV0A000008位DEV1A000018位DEV2A000028位DEV3A0120位&PrAddr313029282726252423222120CS3电路模型CS3Bridge:CPU读数据所有设备的数据输出汇聚至CPU的数据输入MUX的控制由PrAddr中某些位译码决定PrAddrPrRD译码assignPrRD=(CS0)?RD0:(CS1)?RD1:…RD3;assignPrRD=(CS0)?RD0:(CS1)?RD1:

(CS3)?RD3:

`DEBUG_DEV_DATA;常规写法支持Debug写法Bridge:CPU写数据CPU的写数据信号(bridge的输入)连接至所有设备的输入(bridge的输出)直通输出,不需要再转换设备的写使能:有多少个设备,就需要多少个WeWe产生方法:f(WeCPU,设备地址译码)Verilog样例代码:assignWeDEV3=WeCPU&CS3;防止误写DM51问题:store指令可能写DM,也可能写设备方案:DM的最终写入信号需要增加对DM地址范围的判断信息DM的实际写入信号

=DMWr&HitDM译码DMWrPC指令存储器寄存器堆(读)rtrsrdALU数据存储器NPC扩展imm寄存器堆(写)寄存器堆回写增加来自设备的数据52无设备:RF回写数据来自{DM、ALU、PC4}有设备:RF回写数据来自{DM、ALU、PC4、DI}RF回写的选择控制信号:PC指令存储器寄存器堆(读)rtrsrdALU数据存储器NPC扩展imm寄存器堆(写)来自设备的数据MUXWD_Sel=load指令&HitDM

?

DR

:load指令&!HitDM

?DI

:

cal指令?AO:

PC4很重要!没有就会出错!目录概述MIPS体系结构协处理器指令定时概述串行通讯概述完善cpu设计通过系统桥连接设备定时器设计MiniUART设计软件开发定时器核心是一个可以加载初值和减计数的32位计数器加载初值总线接口译码cpu写PRESET可以产生写使能微系统的定时器并没有PRESET寄存器若要支持自动加载则须设置PRESET寄存器减计数什么时候开始减计数?条件1:计数值非0条件2:CTRL的EN位为1“非0?”的功能计数值不为0:输出1计数值为0:输出0-1总线数据非0?移位使能&PRESET写使能计数使能IEENCTRL写使能&INT目录概述MIPS体系结构协处理器指令定时概述串行通讯概述完善cpu设计通过系统桥连接设备定时器设计MiniUART设计软件开发接口信号系统信号:时钟CLK、复位RSTCpu侧信号:地址ADD、双向数据DI/DO、写使能Wr、中断INTRS-232侧信号:串行接收数据RxD、串行发送数据TxDTxDRxDDODIINT总线接口ADDWrCLKRST发送移位寄存器功能:

并行写入8位数据;数据移位寄存器位数:11位,目的在于利用寄存器值模拟停止位和起始位时钟:与发送波特率同频率即可TxD发送移位寄存器DODIINT总线接口ADDWrCLKRST1b7b6b5b4b3b2b1b001109876543210并行写入发送时钟串行移位101位0写入1,模拟停止位1写入0,模拟起始位位10写入1,移10位后在线路上始终发送停止位发送控制器核心是2个计数器发送波特率同周期信号作为发送的同步初值为10的倒计数器用来控制发送的位数TxD发送移位寄存器发送控制器波特率除数因子波特率生成&“10”计数发送移位寄存器写使能发送移位寄存器移位使能发送波特率同周期信号DODIINT总线接口ADDWrCLKRST需要一个使能信号来启动发送移位寄存器的加载和“10”计数器的加载当检测到写发送移位寄存器时,总线接口产生该使能接收移位寄存器接收移位寄存器在移位使能的控制下进行移位时钟采用系统时钟即可接收移位寄存器RxDDODIINT总线接口ADDWr…CLKRSTb0b1b2b3b4b5b6b701234567并行输出串行移位移位使能接收控制器1/6接收过程涉及环节较多,如:起始位的判断与确认接收各位数据停止位确认接收移位寄存器RxD接收控制器DODIINT总线接口ADDWrCLKRST接收波特率除数因子接收控制器2/6状态机控制位周期计数器先产生半周期,然后再连续产生全周期位周期计数器sample点首先出现在半周期处之后,sample点就出现在全周期处移位使能每个全周期sample点处有效位周期计数器接收波特率除数因子状态机RxDsample移位使能移位使能接收控制器3/6START:当状态机检测到RxD为0,则进入CHECK状态同时控制位周期计数器加载除数因子的一半CHECK:在位半周期处采样RxD,即对起始位进行确认如确认则进入BIT0,开始接收数据STARTCHECKBIT0RxD=0&sample=1RxD=0RxD=1&sample=1RxD=1sample=0位周期计数器接收波特率除数因子sample接收控制器4/6BIT0-BIT7:连续采样8位数据并控制移位寄存器移位接收位周期计数器接收波特率除数因子sample接收控制器5/6STOP:采样停止位如果RxD不是1(即不是停止位),即表明帧格式错误,则转入ERROR状态位周期计数器接收波特率除数因子sample接收控制器6/6ERRORMiniUART仅保留了这样一个状态,但并未采取实质性措施来处理错误位周期计数器接收波特率除数因子sample线路状态寄存器LSR包括THRE和DR两个状态位THRE(发送移位寄存器)

温馨提示

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

评论

0/150

提交评论