ImageVerifierCode 换一换
格式:PPT , 页数:72 ,大小:2.24MB ,
资源ID:389239      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-389239.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于MIPS32的SOC设计实践(上)(Verilog+Quartus Ⅱ+.ppt)为本站会员(appealoxygen216)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

基于MIPS32的SOC设计实践(上)(Verilog+Quartus Ⅱ+.ppt

1、2018/10/14 P.1,基于MIPS32的SOC设计实践(上) (Verilog+Quartus +Cyclone版)主讲 杨全胜东南大学计算机科学与工程学院,计算机系统综合课程设计(3),2018/10/14 P.2,主要内容,SoC设计概述 MiniSys 指令系统介绍 MiniSys 的设计 外围电路及控制系统设计 软件的设计,2018/10/14 P.3,第1章 SOC概述(1),什么是SOC(System-on-Chip) SoC(片上系统)中包含了微处理器/微控制器、存储器以及其他专用功能逻辑。 实现复杂系统功能的VLSI; 采用超深亚微米工艺技术; 使用一个以上嵌入式CPU

2、/数字信号处理器(DSP); 外部可以对芯片进行编程; 可利用第三方IP Core进行设计。,2018/10/14 P.4,SOC概述(2),SOC的三种形态 以微处理器为核心,外围集成各种存储器、控制电路、输入输出、A/D、D/A等功能于一个芯片上 以数字信号处理器(DSP)为核心,多个A/D、D/A,大容量存储器等集成 上述两种类型的混合,或者把系统算法和芯片结构有机地集成在一起,2018/10/14 P.5,SOC概述(3),设计中的关键技术 设计描述技术 Verilog HDL/VHDL/AHDL System C、C-VHDL混合描述 软硬件协同设计 电路的设计、综合、布局布线 软件

3、与硬件的划分、协同设计、协同仿真 嵌入式操作系统、嵌入式系统程序和应用程序的开发 IP集成复用技术及设计环境,2018/10/14 P.6,IP 核及在SOC中的地位(1),IP资源复用的理念 IP资源复用(IP Reuse)是指在集成电路设计过程中,通过继承、共享或购买所需的部分或全部知识产权内核(IP Core),进行设计、综合和验证,从而加速流片设计过程的设计方法 IP Core是一种商品,SOPC的技术核心:是可编程逻辑器件设计工程师价值体现的主要途径,2018/10/14 P.7,IP 核及在SOC中的地位(2),IP核的表现形式 HDL语言(VHDL 或 Verilog HDL)

4、原理图(可移植性差) 网表 符合某种EDA工具的特定格式 如:Xilinx的IP Capture和Core Generator等,2018/10/14 P.8,IP 核及在SOC中的地位(3),IP核的分类 微处理器IP核 8/16/32/64位,如MicroBlaze、Nois、8051 处理器外设IP Core SDRAM 控制器、LCD 控制器、总线控制器等 DSP算法IP Core FIR滤波器、DES加密、音视频编码和解码等 通信控制器IP Core MAC、Gbit收发器、CAM、协议转换等 其它类型IP Core,2018/10/14 P.9,IP 核及在SOC中的地位(4),I

5、P Core设计:编码风格 编码风格(Coding Style)是基于HDL的IP Core源码编写的指导性文档,关系到IP Core的可读性、易于集成性及其质量 编码风格一般包含几个方面的约定:文件头和版本说明、联机注释、命名规则、可综合编码(UCF)等 http:/www.opencores.org http:/www.IP,2018/10/14 P.10,第2章 MiniSys指令系统介绍,MiniSys寄存器组 MiniSys指令目录 MiniSys指令格式 部分MiniSys指令格式详解 注:MiniSys采用32位MIPS指令中最常用的31条指令,其寄存器组织,指令格式等均采用MI

6、PS指令系统相同的格式。,2018/10/14 P.11,MiniSys寄存器组,共有32个32位寄存器,2018/10/14 P.12,MiniSys指令目录,算术指令add, addu, addi, addiu, sub, subu 逻辑指令and, andi, or, ori, xor, xori, nor, sll, srl, sra, sllv, srlv, srav 数据传送指令lw, sw, lui 比较、条件转移指令beq, bne, slt, slti, sltu, sltiu 无条件转移指令j, jr, jal,2018/10/14 P.13,MiniSys指令格式(1),

7、(1)R-format,add $1, $2, $3 # $1=$2+$3,6-bit 5-bit 5-bit 5-bit 5-bit 6-bit,000000 00010 00011 00001 00000 100000,2018/10/14 P.14,MiniSys指令格式(2),(2)I-format,lw $1, 10($2) # $1=Memory$2 +10,6-bit 5-bit 5-bit 16-bit,100011 00010 00011 0000 0000 0000 1010,2018/10/14 P.15,MiniSys指令格式(3),(3)J-format,j 1000

8、0 # go to 10000,6-bit 26-bit,000010 00010 00011 0000 0000 0000 1010,2018/10/14 P.16,MiniSys指令格式详解,这里只介绍几个典型的指令格式,比较完整的指令格式请参看教材。,2018/10/14 P.17,MiniSys指令格式详解,2018/10/14 P.18,MiniSys指令格式详解,2018/10/14 P.19,MiniSys指令格式详解,2018/10/14 P.20,MiniSys指令格式详解,2018/10/14 P.21,MiniSys指令格式详解,2018/10/14 P.22,MiniS

9、ys指令格式详解,2018/10/14 P.23,MiniSys指令格式详解,100,100,100,100,2018/10/14 P.24,MiniSys指令格式详解,2018/10/14 P.25,MiniSys指令格式详解,2018/10/14 P.26,MiniSys指令格式详解,2018/10/14 P.27,第3章 MiniSys的设计,MiniSys CPU设计架构 MiniSys CPU中各个单元 指令执行的分析 设计流水线处理器的考虑 设计多核处理器的考虑,2018/10/14 P.28,MiniSys CPU设计架构(1),指令执行的步骤,ifetch,idecode,Co

10、ntrol,Execute,Write,Dmemory,Clock,程序ROM,读地址,指令 31-0,4,控制单元,op,寄存器,0,1,func,rs,rt,rd,readR1,readR2,writeR,writeD,Clock,readD1,readD2,Regdst,WE,Alusrc,符号扩展,immediate,0,1,A,B,Zero,Alu result,ALU,Address,Write Data,Mem data,数据RAM,1,0,WE,1 0,jal,Regwrite,MemtoReg,MemWrite,Sftmd/sftm/I_format,左移2位,nBranch

11、,Branch,0,1,0,1,jmp | jal,左移2位,address,PC+4,1,0,jrn,MIPS instruction format,op,I-format,J-format,R-format,rs,rt,rd,func,op,rs,rt,immediate,op,address,2018/10/14 P.30,MiniSys CPU中各单元(1),Fetch(取指单元) 定义指令ROM存储器 到程序ROM中取指令 对PC值进行4处理 完成各种跳转指令的PC修改功能 在有中断的情况下处理中断到来时的PC修改,immediate,rd,PC,Clock,程序ROM,读地址,指令

12、 31-0,4,控制单元,op,寄存器,0,1,func,rs,rt,readR1,readR2,writeR,writeD,Clock,readD1,readD2,Regdst,WE,Alusrc,符号扩展,0,1,A,B,Zero,Alu result,ALU,Address,Write Data,Mem data,数据RAM,1,0,WE,1 0,jal,Regwrite,Memtoreg,Memwrite,Aluctl/slt/sftmd/sftm/I_format,左移2位,nBranch,Branch,0,1,0,1,jmp | jal,左移2位,addresst,PC+4,1,0

13、,jrn,取指单元的设计,2018/10/14 P.32,指令ROM的初始化文件,prgmip32.mif文件(自行创建),DEPTH = 1024; - 10位地址线 2101024 WIDTH = 32; - 数据宽度32位 ADDRESS_RADIX = HEX; -地址采用16进制描述 DATA_RADIX = HEX; - 数据采用16进制描述 CONTENT BEGIN0 : 8c020000; -lw $2 0($0)1 : 8c030002; -lw $3 2($0)193FD : 00000000;3FE: 03400008; - jr $1A 中断0返回3FF: 03600

14、008; - jr $1B 中断1返回 END;,2018/10/14 P.33,指令ROM的例化,lpm_rom prgrom(.address(PC11:2),.inclock(clock),.q(Jpadr); / 实际上给出的地址是PC除4的结果,因为MIF文件按0、1、2、/ 3排列的defparam prgrom.lpm_width = 32; /数据(指令)宽度32位defparam prgrom.lpm_widthad = 10; /地址线宽度9位defparam prgrom.lpm_file = “prgmip32.mif“;defparam prgrom.lpm_outd

15、ata = “UNREGISTERED“;defparam prgrom.lpm_address_control = “REGISTERED“;,2018/10/14 P.34,MiniSys CPU中各单元(2),Decode(译码单元) 定义寄存器组 对寄存器组进行读写操作 根据指令译码结果,决定向其他部件(如运算器)送1路或两路数据,rd,PC,Clock,程序ROM,读地址,指令 31-0,4,控制单元,op,寄存器,0,1,func,rs,rt,readR1,readR2,writeR,writeD,Clock,readD1,readD2,Regdst,WE,Alusrc,符号扩展,

16、immediate,0,1,A,B,Zero,Alu result,ALU,Address,Write Data,Mem data,数据RAM,1,0,WE,1 0,jal,Regwrite,Memtoreg,Memwrite,Aluctl/slt/sftmd/sftm/I_format,左移2位,nBranch,Branch,0,1,0,1,jmp | jal,左移2位,addresst,PC+4,1,0,jrn,译码单元的设计,2018/10/14 P.36,MiniSys CPU中各单元(3),Control(控制单元) 根据指令中的指令码(op)和功能码(funct)的不同组合输出相应

17、的控制信号。,rd,PC,Clock,程序ROM,读地址,指令 31-0,4,控制单元,op,寄存器,0,1,func,rs,rt,readR1,readR2,writeR,writeD,Clock,readD1,readD2,Regdst,WE,Alusrc,符号扩展,immediate,0,1,A,B,Zero,Alu result,ALU,Address,Write Data,Mem data,数据RAM,1,0,WE,1 0,jal,Regwrite,Memtoreg,Memwrite,Aluctl/slt/sftmd/sftm/I_format,左移2位,nBranch,Branch

18、,0,1,0,1,jmp | jal,左移2位,addresst,PC+4,1,0,jrn,控制单元的设计,2018/10/14 P.38,MiniSys CPU中各单元(4),Exe(执行单元) 完成逻辑运算 完成算术运算 完成移位运算 完成比较转移的PC值计算 完成比较后赋值,rd,PC,Clock,程序ROM,读地址,指令 31-0,4,控制单元,op,寄存器,0,1,func,rs,rt,readR1,readR2,writeR,writeD,Clock,readD1,readD2,Regdst,WE,Alusrc,符号扩展,immediate,0,1,A,B,Zero,Alu res

19、ult,ALU,Address,Write Data,Mem data,数据RAM,1,0,WE,1 0,jal,Regwrite,Memtoreg,Memwrite,Aluctl/slt/sftmd/sftm/I_format,左移2位,nBranch,Branch,0,1,0,1,jmp | jal,左移2位,addresst,PC+4,1,0,jrn,执行单元的设计,2018/10/14 P.40,MiniSys CPU中各单元(5),Dmemory(存储单元) 定义数据存储单元RAM 实际完成对数据存储器的读写操作,rd,PC,Clock,程序ROM,读地址,指令 31-0,4,控制单

20、元,op,寄存器,0,1,func,rs,rt,readR1,readR2,writeR,writeD,Clock,readD1,readD2,Regdst,WE,Alusrc,符号扩展,immediate,0,1,A,B,Zero,Alu result,ALU,Address,Write Data,Mem data,数据RAM,1,0,WE,1 0,jal,Regwrite,Memtoreg,Memwrite,Aluctl/slt/sftmd/sftm/I_format,左移2位,nBranch,Branch,0,1,0,1,jmp | jal,左移2位,addresst,PC+4,1,0,

21、jrn,存储单元的设计,2018/10/14 P.42,时序关系,器件固有延迟维持的流水,2018/10/14 P.43,数据RAM初始化文件,dmem16.mif文件(自行创建),DEPTH = 1024; -10 位地址线 WIDTH = 32; - 数据宽度32位ADDRESS_RADIX = HEX; -地址采用16进制描述 DATA_RADIX = HEX; - 数据采用16进制描述CONTENT BEGIN0 : 00000055; - 行号是地址除以4的结果1 : 000000AA;23FF : 00000000; END;,2018/10/14 P.44,数据RAM的例化,数据

22、存储器的实现,lpm_ram_dq ram(.data(write_data) , .address(address11:2),.we(Memwrite ), .inclock(clk),.q(read_data);/在/ Verilog中使用Altera的RAM单元, 注意地址要除2 defparam ram.lpm_width =32; /数据宽32位 defparam ram.lpm_widthad = 10; /地址线宽10位 defparam ram.lpm_outdata = “UNREGISTERED“; defparam ram.lpm_indata = “REGISTERED

23、“; defparam ram.lpm_address_control = “REGISTERED“; defparam ram.lpm_file = “dmem16.mif”; /存储体初始化文件 / 以字为单位,所以地址都是偶数地址,2018/10/14 P.45,MiniSys CPU中各单元(6),MiniSys (顶层设计) 顶层整合模块 前面已经给出了MiniSys cpu 的5大部件的设计,最后需要将这5大部件组合成一个完整的CPU,可以用GDT图,也可以用Verilog的元件例化的方法来完成。 在元件例化的时候特别注意字母大小写一定要一致。,2018/10/14 P.46,顶层

24、的设计(2),模块的定义,module minisys(reset, clock, pc, alu_result_out, read_data_1_out, read_data_2_out, write_data_out, instruction_out, branch_out, zero_out, memwrite_out, regwrite_out, i_format_out);input reset,clock; output15:0 pc, alu_result_out, read_data_1_out; output15:0 read_data_2_out, write_data_o

25、ut; output31:0 instruction_out; output branch_out, zero_out, memwrite_out, regwrite_out; output i_format_out;,2018/10/14 P.47,顶层的设计(3),内部信号定义,wire15:0 pc_plus_4;wire15:0 read_data_1;wire15:0 read_data_2;wire15:0 sign_extend; wire15:0 add_result; wire15:0 alu_result; wire15:0 read_data;wire15:0 pc_ne

26、xt,opcplus4; wire alusrc ,jrn,i_format,regwrite, zero, memwrite; wire branch, memtoreg, memread, memreg; wire nbranch,jmp,jal,regdst;wire1:0 aluop; wire31:0 instruction;,2018/10/14 P.48,顶层的设计(4),内部信号赋值,assign instruction_out = instruction ; assign alu_result_out = alu_result ; assign read_data_1_out

27、 = read_data_1 ; assign read_data_2_out = read_data_2 ; assign write_data_out = (memtoreg = 1) ? read_data : alu_result ; assign branch_out = branch ; assign zero_out = zero ; assign regwrite_out = regwrite ; assign memwrite_out = memwrite ; assign i_format_out = i_format ;,2018/10/14 P.49,顶层的设计(5),

28、元件例化,Ifetc32 ifetch(.Instruction(instruction),.PC_plus_4_out(pc_plus_4) ,.Add_result(add_result),.Branch(branch),.nBranch(nbranch),.Jmp(jmp),.Jal(jal),.Jrn(jrn),.Read_data_1(read_data_1),.PC_next(pc_next), .Zero(zero),.PC_out(pc),.clock(clock),.reset(reset).opcplus4(opcplus4);,其他元件例化大家参看教材。,2018/10/

29、14 P.50,指令执行的分析,各类指令执行的分析,Clock,程序ROM,读地址,指令 31-0,4,控制单元,op,寄存器,0,1,func,rs,rt,rd,readR1,readR2,writeR,writeD,Clock,readD1,readD2,Regdst,WE,Alusrc,符号扩展,immediate,0,1,A,B,Zero,Alu result,ALU,Address,Write Data,Mem data,数据RAM,1,0,WE,1 0,jal,Regwrite,Memtoreg,Memwrite,Aluctl/slt/sftmd/sftm/I_format,左移2

30、位,nBranch,Branch,0,1,0,1,jmp | jal,左移2位,addresst,PC+4,1,0,jrn,MIPS instruction format,op,I-format,J-format,R-format,rs,rt,rd,func,op,rs,rt,immediate,op,address,除jr指令之外的其他16条R-format指令,Clock,程序ROM,读地址,指令 31-0,4,控制单元,op,寄存器,0,1,func,rs,rt,rd,readR1,readR2,writeR,writeD,Clock,readD1,readD2,Regdst,WE,Al

31、usrc,符号扩展,immediate,0,1,A,B,Zero,Alu result,ALU,Address,Write Data,Mem data,数据RAM,1,0,WE,1 0,jal,Regwrite,Memtoreg,Memwrite,Aluctl/slt/sftmd/sftm/I_format,左移2位,nBranch,Branch,0,1,0,1,jmp | jal,左移2位,addresst,PC+4,1,0,jrn,MIPS instruction format,op,I-format,J-format,R-format,rs,0,0,func,op,rs,rt,immed

32、iate,op,address,jr,0,Clock,程序ROM,读地址,指令 31-0,4,控制单元,op,寄存器,0,1,func,rs,rt,rd,readR1,readR2,writeR,writeD,Clock,readD1,readD2,Regdst,WE,Alusrc,符号扩展,immediate,0,1,A,B,Zero,Alu result,ALU,Address,Write Data,Mem data,数据RAM,1,0,WE,1 0,jal,Regwrite,Memtoreg,Memwrite,Aluctl/slt/sftmd/sftm/I_format,左移2位,nBr

33、anch,Branch,0,1,0,1,jmp | jal,左移2位,addresst,PC+4,1,0,jrn,MIPS instruction format,op,I-format,J-format,R-format,rs,rt,rd,func,op,rs,rt,immediate,op,address,addi, addiu,andi, ori, xori,lui,slti,sltiu,Clock,程序ROM,读地址,指令 31-0,4,控制单元,op,寄存器,0,1,func,rs,rt,rd,readR1,readR2,writeR,writeD,Clock,readD1,readD

34、2,Regdst,WE,Alusrc,符号扩展,immediate,0,1,A,B,Zero,Alu result,ALU,Address,Write Data,Mem data,数据RAM,1,0,WE,1 0,jal,Regwrite,Memtoreg,Memwrite,Aluctl/slt/sftmd/sftm/I_format,左移2位,nBranch,Branch,0,1,0,1,jmp | jal,左移2位,addresst,PC+4,1,0,jrn,MIPS instruction format,op,I-format,J-format,R-format,rs,rt,rd,fun

35、c,op,rs,rt,immediate,op,address,lw,Clock,程序ROM,读地址,指令 31-0,4,控制单元,op,寄存器,0,1,func,rs,rt,rd,readR1,readR2,writeR,writeD,Clock,readD1,readD2,Regdst,WE,Alusrc,符号扩展,immediate,0,1,A,B,Zero,Alu result,ALU,Address,Write Data,Mem data,数据RAM,1,0,WE,1 0,jal,Regwrite,Memtoreg,Memwrite,Aluctl/slt/sftmd/sftm/I_f

36、ormat,左移2位,nBranch,Branch,0,1,0,1,jmp | jal,左移2位,addresst,PC+4,1,0,jrn,MIPS instruction format,op,I-format,J-format,R-format,rs,rt,rd,func,op,rs,rt,immediate,op,address,sw,Clock,程序ROM,读地址,指令 31-0,4,控制单元,op,寄存器,0,1,func,rs,rt,rd,readR1,readR2,writeR,writeD,Clock,readD1,readD2,Regdst,WE,Alusrc,符号扩展,im

37、mediate,0,1,A,B,Zero,Alu result,ALU,Address,Write Data,Mem data,数据RAM,1,0,WE,1 0,jal,Regwrite,Memtoreg,Memwrite,Aluctl/slt/sftmd/sftm/I_format,左移2位,nBranch,Branch,0,1,0,1,jmp | jal,左移2位,addresst,PC+4,1,0,jrn,MIPS instruction format,op,I-format,J-format,R-format,rs,rt,rd,func,op,rs,rt,immediate,op,ad

38、dress,beq, bne,Clock,程序ROM,读地址,指令 31-0,4,控制单元,op,寄存器,0,1,func,rs,rt,rd,readR1,readR2,writeR,writeD,Clock,readD1,readD2,Regdst,WE,Alusrc,符号扩展,immediate,0,1,A,B,Zero,Alu result,ALU,Address,Write Data,Mem data,数据RAM,1,0,WE,1 0,jal,Regwrite,Memtoreg,Memwrite,Aluctl/slt/sftmd/sftm/I_format,左移2位,nBranch,B

39、ranch,0,1,0,1,jmp | jal,左移2位,addresst,PC+4,1,0,jrn,MIPS instruction format,op,I-format,J-format,R-format,rs,rt,rd,func,op,rs,rt,immediate,op,address,j,Clock,程序ROM,读地址,指令 31-0,4,控制单元,op,寄存器,0,1,func,rs,rt,rd,readR1,readR2,writeR,writeD,Clock,readD1,readD2,Regdst,WE,Alusrc,符号扩展,immediate,0,1,A,B,Zero,

40、Alu result,ALU,Address,Write Data,Mem data,数据RAM,1,0,WE,1 0,jal,Regwrite,Memtoreg,Memwrite,Aluctl/slt/sftmd/sftm/I_format,左移2位,nBranch,Branch,0,1,0,1,jmp | jal,左移2位,addresst,PC+4,1,0,jrn,MIPS instruction format,op,I-format,J-format,R-format,rs,rt,rd,func,op,rs,rt,immediate,op,address,jal,31,2018/10/

41、14 P.59,设计流水线处理器的考虑,选择合适的流水级数 尽量保持流水线各级延迟相等 流水线中的相关性,2018/10/14 P.60,设计流水线处理器的考虑,结构相关,2018/10/14 P.61,设计流水线处理器的考虑,数据相关 写后读相关(RAW) 阻塞 乱序 定向转发法,2018/10/14 P.62,设计流水线处理器的考虑,数据相关 读后写相关(WAR) ?,2018/10/14 P.63,设计流水线处理器的考虑,数据相关 写后写相关(WAW) ?,2018/10/14 P.64,设计流水线处理器的考虑,控制相关 尽早判断分支条件是否满足 尽早算出分支条件满足时的转移地址(PC的新值),2018/10/14 P.65,设计多核处理器的考虑,简单核还是复杂核? 同构核还是异构核? 几个核之间怎么配合?中断怎么处理? 数据一致性上的问题 软件上的同步与互斥 核间互联问题,

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1