上传者: ZDH17611379727
|
上传时间: 2021-12-23 09:05:49
|
文件大小: 336KB
|
文件类型: RAR
Project3 VerilogHDL完成MIPS微系统开发(支持设备与中断)
一、设计说明
1.MIPS 微系统应包括:MIPS处理器、系统桥和 1 个定时器,32位输入设备、32 位输出设备。
2.MIPS处理器应实现MIPS-Lite3指令集。
a)MIPS-Lite3={MIPS-Lite2,ERET、MFC0、MTC0 }。
b)MIPS-Lite2={addu,subu,ori,lw,sw,beq,lui,addi,addiu,slt, j,jal,jr,lb,sb }。
c)addi应支持溢出,溢出标志写入寄存器$30中第0位。
3.MIPS处理器为多周期设计。
4.MIPS 微系统支持定时器硬件中断。
二、系统桥与设备
5.为了支持设备,MIPS 微系统需要配置系统桥。
a)需要支持 3 个设备,即定时器、32位输入设备、32 位输出设备。
b)定时器的设计规范请参看《定时器设计规范.docx》。
三、中断机制
6. 为了支持异常和中断,处理器必须实现 0 号协处理器(CP0)。为此,必须实现的CP0寄存器包括:SR、CAUSE、EPC、PrID。关于这几个寄存器,请大家阅读《异常中断及协处理器》中的相关内容。
7.考虑到简化以及与 MARS 模拟器一致,我们将只支持 0x0000_4180 这个入口地址,即所有的异常与中断都从这里进入。
a)你需要修改 NPC 模块,以确保当异常/中断发生时,NPC.NPC 输出
0x0000_4180。
8.由于本系统只要求支持设备中断,MIPS内部异常(如指令错误)则不被考虑。
四、微系统设计
9.MIPS 处理器需要增加接口信号,以下为参考设计(只列出了新增的信号):
信号名 方向 描述
PrAddr[31:0] O 32 位地址总线
PrDIn[31:0] I 从 Bridge 模块读入的数据
PrDOut[31:0] O 输出至 Bridge 模块的数据
Wen O 写允许信号
HWInt[7:2] I 6 个硬件中断请求
10.多周期处理器由 datapath(数据通路)和 controller(控制器)组成。
a)数据通路应至少包括如下module:PC(程序计数器)、NPC(NextPC 计算
单元)、GPR (通用寄存器组,也称为寄存器文件、寄存器堆)、ALU(算逻运算单元)、EXT(扩展单元)、IM(指令存储器)、DM(数据存储器)、 Bridge、CP0 等。
b)IM:容量为8KB(8bit×8192)。
c)DM:容量为12KB(8bit×12288) ,采用小端序方式存取数据。
11.微系统中重要的地址范围和入口请见下表。
地址或地址范围 备注
数据存储器 0x0000_0000 至 0x0000_2FFF
指令存储器 0x0000_3000 至 0x0000_4FFF
PC初始值 0x0000_3000
Exception Handler
入口地址 0x0000_4180
定时器寄存器地址 0x0000_7F00 至 0x0000_7F0B 定时器3个寄存器
12.Exception handler 的代码属于指令存储器。注意 handler 在指令存储器中的地址位置以及正确编写 modelsim 仿真时指令的初始化文件。
13.定时器的 ISR 请接入 MIPS 处理器的 HWInt[2],即最低中断。
五、测试要求
14.请开发一个主程序以及定时器的 exception handler,实现秒计数显示功能。
整个系统完成如下功能:
1) 主程序通过读取 32 位输入设备内容并显示在32位输出设备上。
2) 主程序将定时器初始化为模式 0,并加载正确的计数初值至预置计数
初值寄存器以产生 1s 的计数周期。
3) 主程序启动定时器计数后进入死循环。
4)中断子程序不断读取新的输入设备内容,一旦发现与之前的 32位输
入值不同,则更新32位输出设备显示为当前新值;否则将输出设备
显示内容加1。然后重置初值寄存器从而再次启动定时器计数,实现
新一轮秒计数。
15.时间要求:各班实验指导教师指定。
六、成绩及实验测试要求
16.实验成绩包括但不限于如下内容:设计的正确性、实验报告等。
17.实验测试时,你需要重点解读中断实现及软硬件协同机制。
a)解读不仅应准确,而且应力求简洁。
七、其他要求
18.提交的压缩文件内容:工程中所有.v文件、code.txt、code.asm、课程设计报告。