基于MIPS指令的单周期微控制器设计 哈工大Word下载.docx
- 文档编号:3320278
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:40
- 大小:677.38KB
基于MIPS指令的单周期微控制器设计 哈工大Word下载.docx
《基于MIPS指令的单周期微控制器设计 哈工大Word下载.docx》由会员分享,可在线阅读,更多相关《基于MIPS指令的单周期微控制器设计 哈工大Word下载.docx(40页珍藏版)》请在冰点文库上搜索。
参考《计算机组成与设计—硬件/软件接口》,进行模块划分和设计微控制器整体结构,设计支持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中的数据写入这个地址的存储器中。
二、设计方案:
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
6bits
5bits
16bits
8.S_w电路图:
9.S_w的设计思想:
Op
100011
三、验证方案与结果分析:
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;
register[22]=8'
register[23]=8'
b0010_0110;
register[24]=8'
register[25]=8'
b0000_0011;
register[26]=8'
register[27]=8'
b0010_0111;
register[28]=8'
以第一个地址指令为例:
前六位1000_11为load指令,之后五位00001为rs,取出存储器中地址为1的内容,register[1]=1,后16位为立即数,将register[1]和立即数相加,此时为2,然后取出存储器地址为2处的内容,此时为register[2]=12'
b101001_100000,再过4s,执行第二条指令,每过4s,执行下一条指令。
register[1]=8'
//sw
register[2]=8'
register[3]=8'
b0010_0010;
register[4]=8'
b1010_1100;
register[5]=8'
register[6]=8'
register[7]=8'
register[8]=8'
register[9]=8'
register[10]=8'
register[11]=8'
register[12]=8'
register[13]=8'
b0000_0100;
register[14]=8'
register[15]=8'
register[16]=8'
以store第一个指令为例:
前六位1010_11为store指令,之后五位00001为rs,取出寄存器地址为rt中内容中地址为1的内容,register[1]=1,后16位为立即数,将register[1]和立即数相加,此时为2,然后取出存寄存器地址为2处的内容,将其存入2地址的存储器,将其再过4s,执行第二条指令,每过4s,执行下一条指令。
整体功能验证:
b0010_0000;
//add
b0100_0000;
b0110_0010;
//sub
b0010_0100;
//and
//or
register[17]=8'
b0100_0110;
//xor
register[29]=8'
b0000_1001;
//bne
register[30]=8'
register[31]=8'
register[32]=8'
b0001_0100;
register[69]=8'
b0000_1000;
//beq
register[70]=8'
register[71]=8'
register[72]=8'
b0001_0000;
register[73]=8'
//j
register[74]=8'
register[75]=8'
register[76]=8'
register[81]=8'
//jr
register[82]=8'
register[83]=8'
register[84]=8'
四、逻辑综合及性能分析:
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)
/home/homeO5/user1/dbf4/control.v:
7:
Portalucisimplicitlytyped(VER-987)
8:
Portpcsourceisimplicitlytyped(VER-987)
29:
theundeclaredsymbol'
i_lw'
assumedtohavethedefaultnettype,whichis'
wire'
.(VER-936)
30:
i_sw'
Compilingsourcefile/home/homeO5/user1/dbf4/cpu_top.v
/home/homeO5/user1/dbf4/cpu_top.v:
16:
wmem'
23:
Compilingsourcefile/home/homeO5/user1/dbf4/l_s.v
61:
/home/homeO5/user1/dbf4/l_s.v:
11:
Compilingsourcefile/home/homeO5/user1/dbf4/pc.v
/home/homeO5/user1/dbf4/pc.v:
4:
Portpcinisimplicitlytyped(VER-987)
5:
Portpc4isimplicitlytyped(VER-987)
17:
Portpc_inisimplicitlytyped(VER-987)
Portqaisimplicitlytyped(VER-987)
18:
Portimm1isimplicitlytyped(VER-987)
19:
Portimm2isimplicitlytyped(VER-987)
21:
Portpc_outisimplicitlytyped(VER-987)
22:
Portselectisimplicitlytyped(VER-987)
Compilingsourcefile/home/homeO5/user1/dbf4/regfile.v
/home/homeO5/user1/dbf4/regfile.v:
Statisticsforcasestatementsinalwaysblockatline13infile
===============================================
|Line|full/parallel|
|23|auto/auto|
Potentialsimulation-synthesismismatchifindexexceedssizeofarray'
register'
.(ELAB-349)
14:
Inferredmemorydevicesinprocess
inroutineDataMemline12infile
.
===========================================================================
|RegisterName|Type|Width|Bus|MB|AR|AS|SR|SS|ST|
|register_reg|Latch|32|Y|N|N|N|-|-|-|
StatisticsforMUX_OPs
===========================================================
|blockname/line|Inputs|Outputs|#selinputs|MB|
|DataMem/11|256|32|8|N|
158:
do[20:
16]'
isbeingread,butdoesnotappearinthesensitivitylistoftheblock.(ELAB-292)
159:
do[15:
11]'
Statisticsforcasestatementsinalwaysblockatline154infile
=========
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于MIPS指令的单周期微控制器设计 哈工大 基于 MIPS 指令 周期 控制器 设计