EDA技术实用教程 工业和信息化普通高等教育“十二五”规划教材立项项目 教学课件 ppt 作者 朱娜 张金保 王志强 李建利 第6章NIOS软核SOPC系统设计

上传人:E**** 文档编号:89456424 上传时间:2019-05-25 格式:PPTX 页数:157 大小:1.29MB
返回 下载 相关 举报
EDA技术实用教程 工业和信息化普通高等教育“十二五”规划教材立项项目  教学课件 ppt 作者  朱娜 张金保 王志强 李建利 第6章NIOS软核SOPC系统设计_第1页
第1页 / 共157页
EDA技术实用教程 工业和信息化普通高等教育“十二五”规划教材立项项目  教学课件 ppt 作者  朱娜 张金保 王志强 李建利 第6章NIOS软核SOPC系统设计_第2页
第2页 / 共157页
EDA技术实用教程 工业和信息化普通高等教育“十二五”规划教材立项项目  教学课件 ppt 作者  朱娜 张金保 王志强 李建利 第6章NIOS软核SOPC系统设计_第3页
第3页 / 共157页
EDA技术实用教程 工业和信息化普通高等教育“十二五”规划教材立项项目  教学课件 ppt 作者  朱娜 张金保 王志强 李建利 第6章NIOS软核SOPC系统设计_第4页
第4页 / 共157页
EDA技术实用教程 工业和信息化普通高等教育“十二五”规划教材立项项目  教学课件 ppt 作者  朱娜 张金保 王志强 李建利 第6章NIOS软核SOPC系统设计_第5页
第5页 / 共157页
点击查看更多>>
资源描述

《EDA技术实用教程 工业和信息化普通高等教育“十二五”规划教材立项项目 教学课件 ppt 作者 朱娜 张金保 王志强 李建利 第6章NIOS软核SOPC系统设计》由会员分享,可在线阅读,更多相关《EDA技术实用教程 工业和信息化普通高等教育“十二五”规划教材立项项目 教学课件 ppt 作者 朱娜 张金保 王志强 李建利 第6章NIOS软核SOPC系统设计(157页珍藏版)》请在金锄头文库上搜索。

1、第6章 NIOS软核SOPC系统设计,6.1 NiosII核SOPC系统,NiosII是采用流水线技术的通用精简指令集计算机RISC处理器,是一种面向用户的、可以灵活定制的嵌入式CPU。与传统的单片机系统相比,基于NiosII的嵌入式系统具有无可比拟的优势和特色。 首先,NiosII处理器和FPGA的组合,实现了处理器、外设、内存和I/O接口等多方面的合理应用。 其次,NiosII软核具有良好的性能指标。 再次,NiosII的使用大大降低了系统开发成本。,6.1.1 SOPC技术简介,最早提出SOPC技术的是Altera公司,它是基于FPGA解决方案的SoC片上系统设计技术,它将处理器、I/O

2、、存储器以及其外围设备的功能模块集成到一片FPGA内,构成一个片上可编程系统。SOPC是现代计算机应用技术发展的一个重要成果,也是现代处理器应用的重要发展方向。SOPC系统设计包括以32位NiosII软核处理器为核心的嵌入式系统的硬件配置、硬件设计、硬件仿真、软件设计、软件调试等方面,6.1.2 Nios软核SOPC系统结构及开发环境,内嵌于FPGA的NiosII具有很多不同于普通嵌入式系统的特性,其中包含一套通用外设和接口库,可以灵活选择和增减,可以自定义用户逻辑作为外设,也可以定制自己的指令集,设计者可以结合使用NiosII和FPGA内部的RAM、ROM,还可以外扩Flash、SRAM来构

3、成一个嵌入式系统。,NiosII软核是一种专门为单芯片可编程系统设计应用而优化的CPU软核,包括3种内核,即快速的(NiosII/f)、经济的(NiosII/e)、和标准的(NiosII/s)内核,NiosII核主要由以下几个功能单元组成。 (1)基于边界扫描测试(JTAG)的调试模块; (2)寄存器文件,包括通用寄存器和控制寄存器; (3)算术逻辑单元和自定义指令; (4)指令Cache和数据Cache; (5)指令总线和数据总线; (6)中断控制器和程序控制器,NiosII CPU内部结构示意图,SOPC设计的基本工具包括QuartusII、SOPC Builder、ModelSim和Ni

4、osII IDE QuartusII:完成NiosII系统的综合、硬件优化、适配、编程下载和硬件系统调试; SOPC Builder:NiosII嵌入式处理器开发软件包,实现NiosII系统的配置、生成、NiosII系统相关的监控和软件调试平台的生成; ModelSim:对生成的HDL描述进行系统功能仿真; NiosII IDE:软件编译和调试工具; 还可以借助MATLAB/DSP Bulider生成NiosII系统的硬件加速器,为其定制新的指令,6.2 NiosII指令系统,NiosII处理器是精简指令架构(RISC)。其算术和逻辑运算的操作数在通用寄存器执行。 通过Load和Store指令

5、在内存和寄存器之间传送数据。 NiosII处理器的字长为32 bits。所有的寄存器都是32 bits。32-bit的字节地址可用从小到大或从大到小的风格赋值。在配置时,用户可能会选择一种赋值风格。本文使用从小到大的风格。 NiosII架构使用单独的指令和数据总线,通常叫做哈佛架构。,NiosII处理器可能以以下3种模式操作: (1)管理模式:允许处理器执行所有的指令和功能。当处理器复位后,进入这种模式。 (2)用户模式:这种模式的意图是防止某些用于系统进程的指令的执行。在这种模式,某些特性不可用。 (3)调试模式:用于软件调试工具,比如设置断点和观测点,6.2.1 寄存器结构,NiosII处

6、理器的通用寄存器,(1)寄存器R0作为0寄存器。它通常包含常数0。因此,写它时无效,读这个寄存器的返回值为0。 (2)寄存器R1被汇编器作为临时寄存器使用,用户程序中不能使用。 (3)寄存器R24和R29用于处理表达式;它们在用户模式不可用。 (4)寄存器R25和R30是JTAG调试模式专用。 (5)寄存器R27和R28用于控制NiosII处理器使用的栈。 (6)寄存器R31用于保存子程序调用的返回地址。,有6个32bit的控制寄存器。这些寄存器用于自动控制,(1)寄存器CTL0反应处理器的操作状况。这个寄存器只用2bit有意义: (2)-U是User/Supervisor模式位;U=1是用户

7、模式,而U=0是管理模式。 (3)-PIE是处理器中断使能位。PIE=1,处理器接收外部中断,而PIE=0,处理器忽略外部中断。 (4)寄存器CTL 1在表达式处理时保存一个状况寄存器的拷贝。EU和EPIE位是保存的U和PIE位的值。 (5)寄存器CTL 2在调试断点时保存状况寄存器的拷贝。BU和BPIE位是U和PIE位的值。 (6)寄存器CTL 3用于使能独立的外部中断。每位对应一个中断IRQ0到IRQ31.值为1表示中断使能,为0表示无效。 (7)寄存器CTL4表示在等待那个中断。如果中断IRQk有效并且由中断使能位CTL 3k为1使能中断,CTL4k的值为1。 (8)寄存器CTL5保存用

8、于多处理器系统里识别处理器的值,6.2.2 寻址方式,NiosII处理器有32bit地址,其内存空间按字节划分。指令可读写字(32bit)、半字(16bit)或字节(8bit)的数据。读或写一个不依赖已存在的内存或I/O位置的地址产生一个未定义的结果,有5种地址模式: (1)快速模式:在指令里给定一个16-bit的操作数,当执行算术运算时可扩展为32-bit。 (2)寄存器模式:操作数在处理器的一个寄存器里。 (3)位移模式:有效的地址是一个寄存器和一个有符号的16bit位移值的和。 (4)寄存器直接模式:操作数的有效地址是指令指定的寄存器的内容。等效于位移模式里位移值为0的情况。 (5)绝对

9、模式:一个操作数的16bit的绝对地址可用位移模式里寄存器r0总是0来指定。,6.2.3 NiosII指令集,所有的NiosII指令都是32位长。除了处理器直接执行的机器指令外,NiosII指令集包含许多可在汇编语言里使用的伪指令。汇编器用一个或多个机器指令替代每条伪指令。,NiosII指令格式,(1)type:5-bit的区域A和B用于指定通用寄存器。一个16-bit区域IMMED 16提供可扩展为32-bit的快速数据。 (2)R-type:5-bit的区域A和B,C用于指定通用寄存器。一个11-bit区域OPX用于扩展OP码。 (3)J-type:一个26-bit区域IMMED26含有一

10、个无符号的立即值。这种格式仅用于指令调用。,1)Load和Store指令 Load和Store指令用来在内存(和I/O接口)和通用寄存器之间传送数据,它们是I-type。比如:加载字指令 LDW rB,byte_offset(rA) 决定了内存位置的有效地址是偏移字节的值与寄存器A的内容之和。16-bit的字节偏移值可扩展为32-bit。32-bit的内存操作数加载到寄存器B。,比如:假定寄存器r4的内容是(1260)10,字节偏移值是(80)10.那么,指令 LDW r3,80(r4) 将在内存地址为(1340)10的32-bit的操作数加载到寄存器r3. Store指令的格式是 STW r

11、B,byte_offset(rA) 它将寄存器B的内容存到地址为字节偏移与寄存器A的内容之和的位置。,有只使用8和16-bit操作数的Load,Store指令。参考Load/Store 字节和Load/Store半字指令。这些Load指令是: LDB(加载字节) LDH(加载字节无符号数) LDBU(加载半字数) LDH(加载半字无符号数),当一个较短的操作数加载到一个32-bit的寄存器里,它的值必须与寄存器适配。在ldb和ldh指令里通过符号扩展使得8-bit或16-bit的值变为32-bit。在ldbu和ldhu指令里,将操作数补0扩展。 相应的Store指令是: STB(存储字节数)

12、STH(存储半字数) Stb指令将寄存器B的低字节存到有效地址指定的内存字节。指令Sth将寄存器B的低半字存储。这种情况下,有效地址必须半字匹配。,每条Load和Store指令都有一个访问I/O设备位置的版本。这些指令是: LDWIO (加载字格式I/O) LDBIO (加载字节I/O) LDBUIO (加载无符号字节I/O) LDHIO (加载半字I/O) LDHUIO (加载无符号半字I/O) STWIO (存储字I/O) STBIO (存储字节I/O) STHIO (存储半字I/O) 不同之处在于如果存在其中一条,这些指令绕过缓存,2)算术指令 算术运算操作的数据要么在通用寄存器里,要么

13、是指令给定的立即数。这些指令是R-type或I-type。它们是: ADD (寄存器加法) ADDI (立即数加法) SUB (寄存器减法) SUBI (立即数减法) MUL (乘法) MULI (立即数乘法) DIV (除法) DIVU (立即数除法),加指令 ADD rC,rA,rB 将寄存器A,B的内容相加,和保存在寄存器C里。 立即数的加指令 ADDI rB,rA,IMMED16 将寄存器A的内容和指令给定的16-bit的符号扩展数相加,和保存在寄存器B里。,减指令 SUB rC,rA,rB 从寄存器A里减去寄存器B的内容,差保存在寄存器C。同样,进位和溢出需要使用另外的指令检测。 立

14、即数的减指令,其实是下面的伪指令 ADDI rB,rA, -IMMED16 乘指令 MUL rC,rA,rB 将寄存器A、B的内容相乘,积的低32-bit保存在寄存器C里。操作数作为无符号数看待。进位和溢出另外检测。其立即数版本 MULI rB,rA,IMMED16 16-bit的立即数符号扩展为32-bit。,除指令 DIV rC,rA,rB 寄存器A的值除以寄存器B的值,商的整数部分保存在寄存器C。操作数作为有符号数看待。Divu指令类似,除了将操作数看做无符号数之外,3)逻辑指令 逻辑指令有and,or,xor和nor。操作数由通用寄存器或立即数提供。这些指令是R-type或I-type

15、。 And指令 AND rC,rA,rB 对寄存器A和B的值按位求与,结果保存在寄存器C。其他逻辑指令操作类似。,And立即数指令 ANDI rB,rA,IMMED16 按位将寄存器A和立即数IMMED16与,立即数补0扩展为32-bit,结果保存在寄存器B。 在逻辑运算里,有可能用16-bit的立即数作为高16位,这样低16位就是0.用以下指令操作: ANDHI (高16位立即数相与) ORHI (高16位立即数相或) XORHI (高16位立即数与或),4)Move指令 Move指令将一个寄存器的内容复制到另一,或给寄存器写一个立即值。 MOV rC,rA 将寄存器A的值复制到寄存器C,效

16、果类似 ADD rC,rA,r0,Move立即数指令 MOVI rB,IMMED16 将立即数符号扩展为32-bit,并加载到寄存器B。效果类似 ADDI rB,r0,IMMED16 Move无符号立即数指令 MOVUI rB,IMMED16 立即数补0扩展为32-bit,加载到寄存器B。效果类似 ORI rB,r0,IMMED16,Move立即地址指令 MOVIA rB,LABEL 加载地址LABEL的32-bit的值到寄存器B。效果类似 ORHI rB,r0,%hi(LABEL) ORI rB,rB,%lo(LABEL) 这里的%hi(LABEL)和%lo(LABEL)是汇编器的宏,获得32bit的LABEL值的高、低16位。指令orhi设置寄存器B的高位,指令ori设置寄存器B的低位。注意,应为I-type格式的立即数是16bit,所以这里用2条指令。,5)Comparison指令 Comparison指令比较2个寄存器的值或寄存器的值与立即数的值比较,保存比较的结果。它们是R-type或I-type。这些指令与C语言里的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号