基于MIPS指令的单周期微控制器设计 哈工大.docx
- 文档编号:18080236
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:40
- 大小:677.37KB
基于MIPS指令的单周期微控制器设计 哈工大.docx
《基于MIPS指令的单周期微控制器设计 哈工大.docx》由会员分享,可在线阅读,更多相关《基于MIPS指令的单周期微控制器设计 哈工大.docx(40页珍藏版)》请在冰点文库上搜索。
基于MIPS指令的单周期微控制器设计哈工大
课程设计说明书(论文)
课程名称:
数字集成系统课程设计
设计题目:
基于MIPS指令的单周期微控制器设计
院系:
航天学院微电子科学与技术系
班级:
设计者:
学号:
指导教师:
设计时间:
2015年7月27日-2015年8月7日
姓名:
院(系):
专业:
班号:
任务起至日期:
2015年7月27日至2015年8月7日
课程设计题目:
基于MIPS指令的单周期微控制器设计
已知技术参数和设计要求:
Load/store,算术逻辑运算和流程控制是RISC的主要组成部分,本设计以MIPS指令子集为例,研究RISC的基本原理与硬件建模。
(1)load/store设计
设计要求:
参考《计算机组成与设计—硬件/软件接口》,进行模块划分和设计微控制器整体结构,设计支持load、store指令的数据通路,并比较各种实现的效率、面积和速度。
(2)算术逻辑运算设计
设计要求:
设计支持add、sub、multi、or等指令的数据通路。
(3)流程控制设计
设计要求:
设计支持branch、jump等指令的数据通路。
(4)基于MIPS指令的单周期微控制器设计
设计要求:
同组同学共同完成具有10条左右指令的单周期微控制器设计。
基本要求:
1)确定设计采用的结构
2)划分所确定的结构,画出模块图,确定模块间的连接关系,端口方向及宽度
3)确定设计的验证方案,验证点及验证向量
4)完成设计的RTL建模及测试平台建模
5)完成设计的验证、逻辑综合,给出设计的评价(面积、速度)
6)完成设计报告
工作量:
本课程设计按照每4人一组分工协作完成。
每位成员完成设计要求中的
(1)~(3)任务之一,作为独立完成项,在完成个人项目基础上共同完成设计要求中的第(4)项。
熟悉开发环境、学习EDA工具使用:
10学时
分析题目、确定设计方案:
5学时
设计、验证、综合以及结果分析、整理数据:
25学时
工作计划安排:
2015.7.27—2015.7.28学习modelsim、DesignCompiler使用方法
2015.7.29—2015.7.30分析设计题目,确定结构及模块划分
2015.7.31—2015.8.6完成设计、验证、综合与性能分析
2015.8.7提交课程设计报告
同组设计者及分工:
指导教师签字___________________
年月日
教研室主任意见:
教研室主任签字___________________
年月日
*注:
此任务书由课程设计指导教师填写。
一、功能描述
基于MIPS指令的单周期微控制器设计:
l_w和s_w指令的实现:
控制器实现支持loadword(lw)、storeword(sw)指令的MIPS单周期数据通路:
l_w:
寄存器rs中的数据和立即数imm相加,得到存储器地址,用这个地址访问存储器,把得到的存储器数据写入寄存器rt中。
把PC+4写入PC。
s_w:
寄存器rs中的数据和立即数imm相加,得到存储器地址,把寄存器rt中的数据写入这个地址的存储器中。
把PC+4写入PC。
二、设计方案:
1.整体框图:
2.模块划分:
下图中,各个大模块中还包含:
立即数符号位扩展,寄存器堆,存储器,ALU,指令寄存器,PC,控制部件
3.模块连接框图:
4.总体设计思想:
我设计的部分主要包三四部分,分别为:
指令寄存器、寄存器堆、和存储器,额外还有一个Alu,即加法器和一个pc,即程序计数器,是借助同组同学编译的程序。
存取指令需要两个状态单元,计算下一个指令地址需要一个加法器,两个状态单元分别是指令寄存器和程序寄存器。
指令寄存器是制度的,任意时刻的输出都反映了输入的地址的内容,而不需要读控制信号。
程序计数器是一个32位的寄存器,让在每个时钟周期末都会被写入。
加法器被设计为只进行加法运算的ALU,他将输入的俩个32位数相加将结果输出。
Mips指令执行时,首先需要的是指令存储器,用来存储指令,并根据所给地址提供指令,指令地址存放在pc中,pc的设计还需要一个加法器来指向下一个指令的地址。
在执行R型指令时,读两个寄存器,对他们中的内容进行Alu操作,再写出结果。
处理器的32个寄存器组成一个寄存器堆的结构,即register。
在读取指令的时候,一般形式为:
oprsrtimm,此时需要将一个16位的立即数带符号扩充为32位,然后和rs地址内的内容通过Alu加法器相加,如果是读取指令即loadword,即得出的是存储器地址,将得出的存储器地址内的内容写入rt所指的寄存器地址处,如果是存储指令即storeword,即得出的存储器地址用来写入rt地址内的所存内容。
5.PC程序计数器:
6.L_w电路图:
7.L_w的设计思想:
swrt,imm(rs);memory[rs+(sign)imm]<--rt
即
op
rs
rt
imm
101011
rs
rt
imm
6bits
5bits
5bits
16bits
寄存器rs中的数据和立即数imm相加,得到存储器地址,用这个地址访问存储器,把得到的存储器数据写入寄存器rt中。
8.S_w电路图:
9.S_w的设计思想:
Op
rs
rt
imm
100011
rs
rt
imm
6bits
5bits
5bits
16bits
寄存器rs中的数据和立即数imm相加,得到存储器地址,把寄存器rt中的数据写入这个地址的存储器中。
三、验证方案与结果分析:
L_w和s_w的仿真验证:
以下为指令寄存器中内容:
register[17]=8'b0000_0001;//lw
register[18]=8'b0000_0000;
register[19]=8'b0010_0101;
register[20]=8'b1000_1100;
register[21]=8'b0000_0010;//lw
register[22]=8'b0000_0000;
register[23]=8'b0010_0110;
register[24]=8'b1000_1100;
register[25]=8'b0000_0011;//lw
register[26]=8'b0000_0000;
register[27]=8'b0010_0111;
register[28]=8'b1000_1100;
以第一个地址指令为例:
前六位1000_11为load指令,之后五位00001为rs,取出存储器中地址为1的内容,register[1]=1,后16位为立即数,将register[1]和立即数相加,此时为2,然后取出存储器地址为2处的内容,此时为register[2]=12'b101001_100000,再过4s,执行第二条指令,每过4s,执行下一条指令。
register[1]=8'b0000_0001;//sw
register[2]=8'b0000_0000;
register[3]=8'b0010_0010;
register[4]=8'b1010_1100;
register[5]=8'b0000_0010;//sw
register[6]=8'b0000_0000;
register[7]=8'b0010_0010;
register[8]=8'b1010_1100;
register[9]=8'b0000_0011;//sw
register[10]=8'b0000_0000;
register[11]=8'b0010_0010;
register[12]=8'b1010_1100;
register[13]=8'b0000_0100;//sw
register[14]=8'b0000_0000;
register[15]=8'b0010_0010;
register[16]=8'b1010_1100;
以store第一个指令为例:
前六位1010_11为store指令,之后五位00001为rs,取出寄存器地址为rt中内容中地址为1的内容,register[1]=1,后16位为立即数,将register[1]和立即数相加,此时为2,然后取出存寄存器地址为2处的内容,将其存入2地址的存储器,将其再过4s,执行第二条指令,每过4s,执行下一条指令。
整体功能验证:
register[1]=8'b0010_0000;//add
register[2]=8'b0100_0000;
register[3]=8'b0110_0010;
register[4]=8'b0000_0000;
register[5]=8'b0010_0010;//sub
register[6]=8'b0100_0000;
register[7]=8'b0110_0010;
register[8]=8'b0000_0000;
register[9]=8'b0010_0100;//and
register[10]=8'b0100_0000;
register[11]=8'b0110_0010;
register[12]=8'b0000_0000;
register[13]=8'b0010_0101;//or
register[14]=8'b0100_0000;
register[15]=8'b0110_0010;
register[16]=8'b0000_0000;
register[17]=8'b0100_0110;//xor
register[18]=8'b0010_0000;
register[19]=8'b0110_0010;
register[20]=8'b0000_0000;
register[21]=8'b0000_0011;//sw
register[22]=8'b0000_0000;
register[23]=8'b0010_0010;
register[24]=8'b1010_1100;
register[25]=8'b0000_0011;//lw
register[26]=8'b0000_0000;
register[27]=8'b0010_0101;
register[28]=8'b1000_1100;
register[29]=8'b0000_1001;//bne
register[30]=8'b0000_0000;
register[31]=8'b0010_0010;
register[32]=8'b0001_0100;
register[69]=8'b0000_1000;//beq
register[70]=8'b0000_0000;
register[71]=8'b0010_0010;
register[72]=8'b0001_0000;
register[73]=8'b0001_0100;//j
register[74]=8'b0000_0000;
register[75]=8'b0000_0000;
register[76]=8'b0000_1000;
register[81]=8'b0000_1000;//jr
register[82]=8'b0000_0000;
register[83]=8'b0010_0000;
register[84]=8'b0000_0000;
四、逻辑综合及性能分析:
1.Regfile寄存器堆节选:
2.立即数扩展:
3.ALU综合验证:
4.Control综合验证:
5.PC:
6.pc_next:
7.2选1:
8.整体cpu模块连接:
9.DC综合:
design_vision>read_file-formatverilog{/home/homeO5/user1/dbf4/alu.v/home/homeO5/user1/dbf4/control.v/home/homeO5/user1/dbf4/cpu_top.v/home/homeO5/user1/dbf4/l_s.v/home/homeO5/user1/dbf4/pc.v/home/homeO5/user1/dbf4/regfile.v}
Loadingverilogfiles:
'/home/homeO5/user1/dbf4/alu.v''/home/homeO5/user1/dbf4/control.v''/home/homeO5/user1/dbf4/cpu_top.v''/home/homeO5/user1/dbf4/l_s.v''/home/homeO5/user1/dbf4/pc.v''/home/homeO5/user1/dbf4/regfile.v'
Detectinginputfiletypeautomatically(-rtlor-netlist).
RunningDCverilogreader
ReadingwithPrestoHDLCompiler(equivalentto-rtloption).
RunningPRESTOHDLC
Compilingsourcefile/home/homeO5/user1/dbf4/alu.v
Compilingsourcefile/home/homeO5/user1/dbf4/control.v
Warning:
/home/homeO5/user1/dbf4/alu.v:
13:
Thestatementsininitialblocksareignored.(VER-281)
Warning:
/home/homeO5/user1/dbf4/control.v:
7:
Portalucisimplicitlytyped(VER-987)
Warning:
/home/homeO5/user1/dbf4/control.v:
8:
Portpcsourceisimplicitlytyped(VER-987)
Warning:
/home/homeO5/user1/dbf4/control.v:
29:
theundeclaredsymbol'i_lw'assumedtohavethedefaultnettype,whichis'wire'.(VER-936)
Warning:
/home/homeO5/user1/dbf4/control.v:
30:
theundeclaredsymbol'i_sw'assumedtohavethedefaultnettype,whichis'wire'.(VER-936)
Compilingsourcefile/home/homeO5/user1/dbf4/cpu_top.v
Warning:
/home/homeO5/user1/dbf4/cpu_top.v:
16:
theundeclaredsymbol'wmem'assumedtohavethedefaultnettype,whichis'wire'.(VER-936)
Warning:
/home/homeO5/user1/dbf4/cpu_top.v:
23:
Thestatementsininitialblocksareignored.(VER-281)
Compilingsourcefile/home/homeO5/user1/dbf4/l_s.v
Warning:
/home/homeO5/user1/dbf4/cpu_top.v:
61:
Thestatementsininitialblocksareignored.(VER-281)
Warning:
/home/homeO5/user1/dbf4/l_s.v:
11:
Thestatementsininitialblocksareignored.(VER-281)
Compilingsourcefile/home/homeO5/user1/dbf4/pc.v
Warning:
/home/homeO5/user1/dbf4/pc.v:
4:
Portpcinisimplicitlytyped(VER-987)
Warning:
/home/homeO5/user1/dbf4/pc.v:
5:
Portpc4isimplicitlytyped(VER-987)
Warning:
/home/homeO5/user1/dbf4/pc.v:
8:
Thestatementsininitialblocksareignored.(VER-281)
Warning:
/home/homeO5/user1/dbf4/pc.v:
17:
Portpc_inisimplicitlytyped(VER-987)
Warning:
/home/homeO5/user1/dbf4/pc.v:
17:
Portqaisimplicitlytyped(VER-987)
Warning:
/home/homeO5/user1/dbf4/pc.v:
18:
Portimm1isimplicitlytyped(VER-987)
Warning:
/home/homeO5/user1/dbf4/pc.v:
19:
Portimm2isimplicitlytyped(VER-987)
Warning:
/home/homeO5/user1/dbf4/pc.v:
21:
Portpc_outisimplicitlytyped(VER-987)
Warning:
/home/homeO5/user1/dbf4/pc.v:
22:
Portselectisimplicitlytyped(VER-987)
Compilingsourcefile/home/homeO5/user1/dbf4/regfile.v
Warning:
/home/homeO5/user1/dbf4/regfile.v:
13:
Thestatementsininitialblocksareignored.(VER-281)
Statisticsforcasestatementsinalwaysblockatline13infile
'/home/homeO5/user1/dbf4/alu.v'
===============================================
|Line|full/parallel|
===============================================
|23|auto/auto|
===============================================
Warning:
/home/homeO5/user1/dbf4/l_s.v:
11:
Potentialsimulation-synthesismismatchifindexexceedssizeofarray'register'.(ELAB-349)
Warning:
/home/homeO5/user1/dbf4/l_s.v:
14:
Potentialsimulation-synthesismismatchifindexexceedssizeofarray'register'.(ELAB-349)
Inferredmemorydevicesinprocess
inroutineDataMemline12infile
'/home/homeO5/user1/dbf4/l_s.v'.
===========================================================================
|RegisterName|Type|Width|Bus|MB|AR|AS|SR|SS|ST|
===========================================================================
|register_reg|Latch|32|Y|N|N|N|-|-|-|
|register_reg|Latch|32|Y|N|N|N|-|-|-|
===========================================================================
StatisticsforMUX_OPs
===========================================================
|blockname/line|Inputs|Outputs|#selinputs|MB|
===========================================================
|DataMem/11|256|32|8|N|
===========================================================
Warning:
/home/homeO5/user1/dbf4/l_s.v:
158:
'do[20:
16]'isbeingread,butdoesnotappearinthesensitivitylistoftheblock.(ELAB-292)
Warning:
/home/homeO5/user1/dbf4/l_s.v:
159:
'do[15:
11]'isbeingread,butdoesnotappearinthesensitivitylistoftheblock.(ELAB-292)
Statisticsforcasestatementsinalwaysblockatline154infile
'/home/homeO5/user1/dbf4/l_s.v'
===============================================
|Line|full/parallel|
=========
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于MIPS指令的单周期微控制器设计 哈工大 基于 MIPS 指令 周期 控制器 设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)