结合前面的NIOS II处理器架构简介,后面对各功能模块进行简要说明。 NIOS II功能模块说明(一) l NIOS II架构包含32个32位通用寄存器,还包含32个32位的控制寄存器。 处理器架构能支持超级用户模式和普通用户模式,以便系统软件保护不同应用的控制寄存器。这可以通过设置控制寄存器来实现。 NIOS II架构还能兼容未来增加的浮点寄存器。 NIOS II的算术逻辑操作是基于通用寄存器来完成的,整个操作需要将一个或两个输入操作数进行运算,然后将计算结果输出并存储到寄存器中。 NIOS II支持的数据运算包括: 1. 2. 3. 4. NIOS II核支持IEEE标准754-1985规定的单精度浮点指令,这些单精度定制指令包括浮点加、减和乘运算,浮点除运算作为扩展的简单指令集有效。这些指令均作为定制指令在NIOS II中实现,通过NIOS II Processor MegaWizard接口可以很容易的设计这些浮点指令。需要注意的是,浮点除指令若采用硬件来实现,或占用比其他指令多的多的资源,若在设计中不使用硬件实现,则处理器会使用软件来实现浮点除运算。 另外,由于指令集仿真器不支持定制指令,若需要在指令集仿真器上运行软件,可以使用如下的#pragma描述在软件中禁止浮点定制指令,而是用软件实现浮点指令。 #pragma no_custom_fadds #pragma no_custom_fsubs #pragma no_custom_fmuls #pragma no_custom_fdivs l NIOS II核支持两种复位信号: 1 处理器在复位完成后会使cpu_resettaken信号生效一个时钟周期,若cpu_resetrequest信号一直有效,则上述过程会周而复始的进行。只要cpu_resetrequest信号有效,处理器会一直保持复位状态。当处理器在复位状态时,会不断的读取复位地址的信息,只要仍在复位状态,读取到的信息就会被丢弃。当处理器处于JTAG调试模块控制下时,即处理器处于暂停状态时,不会响应cpu_resetrequest信号。当程序恢复运行,包括单步运行时,JTAG调试模块放弃控制权,并且cpu_resetrequest信号处于有效状态,处理器会立即产生响应。 NIOS II核同时支持调试信号:debugreq — 可选信号,该信号可以临时挂起处理器使其处于调试状态。 l
异常处理控制器: NIOS II架构提供了一个简单的非向量形式的异常处理控制器来处理所有不同类型的异常。每一个异常,包括硬件中断,都会使处理器转换到异常处理的执行地址,在这个地址定义了导致异常的原因,并确定了适当的处理程序。 异常处理的地址是在SOPC Builder生成NIOS II系统时确定的。 所有异常都应该是准确的,即前面的异常指令执行完后,后续的异常指令才能被执行。准确的异常处理允许处理器假设程序一旦执行,异常处理就能xx异常标志。 中断控制器: NIOS II架构支持32个外部硬件中断,处理器有32个电平触发中断请求输入,中断请求的优先级由软件确定。NIOS II支持中断嵌套。 软件可以通过中断使能控制寄存器(ienable)来控制每个中断源是否使能,中断使能控制寄存器内部有32个中断使能比特,与每个中断源一一对应。软件也可以使用状态控制寄存器的PIE比特对中断进行全局的使能控制,硬件中断当且仅在如下条件能产生: 2 2 中断向量定制指令: NIOS II处理器核提供中断向量定制指令,以便加快中断向量的分派速度,减少程序中断处理的延时。 中断向量定制指令是建立在连接到NIOS II核的优先级译码器的基础上的,该译码器对应每个中断都有一个输入。中断向量定制指令的开销依赖于连接到NIOS II核的中断的数量,最坏情况是系统含有32个中断,此时中断向量定制指令的实现需要大约50个逻辑单元(LE)。 若系统中含有大量的中断,增加中断向量定制指令会降低系统{zg}处理频率。 存储器和I/O组织 NIOS II在存储器和I/O组织方面与商业微控制器相比更为灵活,由于NIOS II核可配置,其存储器和外围设备也与其他微控制器不同,从而导致存储器和I/O的组织也存在不同。EDA中国门户网站 一个NIOS II核使用了一个或多个如下的存储器和I/O单元: 2 2 2 2 2 l ? NIOS II架构提供了存储器映射的I/O接入方式。数据存储器和外围设备都映射到主数据端口的地址空间中。NIOS II架构是有字节存储顺序的。字和半字被存储时,xxx的字节被存储在高位地址空间。 NIOS II结构并不区分存储器和外围设备,包括数量、类型等,甚至能允许高速片上存储器和低速片外存储器混合使用。 ? NIOS II指令总线是由一个32位的Avalon-MM端口来实现,指令端口完成一个功能:使指令送入处理器执行,因此指令端口不能完成任何写操作。 指令端口是一个流水线的Avalon-MM端口,它能将使同步存储器的流水延时减到最小,同时使系统的{zg}频率得以提升。指令端口能在前面的请求数据未返回时就发出新的读取请求。处理器能预先获取连续指令,并且完成分支程序以使指令管道尽可能的保持在xx状态。 指令端口经常重读32位的数据,它依靠于包含在系统连接框架中的动态总线逻辑。由于动态总线宽度可变的优点,每个指令发布的是全指令字,因此可以忽略目标存储器的总线宽度。正因为如此,程序无需了解NIOS II系统中存储器的数据宽度。 NIOS II架构同时支持片上缓存以提高平均指令读取性能,从而避开低速存储器对性能的影响。 ? NIOS II数据总线是由一个32位的Avalon-MM端口来实现的,该端口完成两个功能: 2 2 在端口上的字节使能信号在存储指令操作时指定四个字节中的哪个被写。当NIOS II核被配置为数据缓存总线宽度大于四字节时,数据端口进行流水线的Avalon-MM传输。当NIOS II核被配置为数据缓存总线宽度等于四字节时,任何存储器流水线延迟都会被数据端口理解为等待状态。当数据端口被连接到零等待状态的存储器时,载入和存储操作都能在单一时钟周期完成。 NIOS II架构同时支持片上缓存以提高平均数据传输性能,从而避开低速存储器对性能的影响。 ? 通常指令和数据端口共享一个单独的,能同时存储指令和数据的存储器。当处理器拥有独立的指令和数据总线时,整个处理器对外部世界呈现的是一个单一的共享指令和数据总线。从外部看,NIOS II处理器依赖于系统中的存储器和外围设备,以及系统互联网络结构。 数据和指令端口不会导致总线阻塞。但在指令和数据共享存储器中分配给数据端口较高优先级属性能使性能得到提高。 l NIOS II架构在指令接口和数据接口都支持缓冲存储器。缓冲存储器作为一个NIOS II处理器内核的一部分存在,位于FPGA片内。缓冲存储器能提高存储器平均访问速度,特别是当NIOS II处理器系统使用类似于SDRAM等低速的外部存储器来作为程序和数据存储时。 指令和数据缓存需要在运行前使能,但软件提供的算法能旁路缓存,以便在对外围设备进行访问时不用进行数据缓冲。缓存的管理是由软件来执行的,NIOS II指令集提供了缓存管理的相关指令。 ? 缓冲存储器是可选的。对于高性能存储的需要是依应用情况而定的。多数应用仅需要最小化的处理器核,并且在性能和尺寸方面进行平衡。 一个NIOS II处理器核可能需要一个数据或者指令缓存,也可能两个都需要,甚至两者都不需要。因此,对于提供数据和/或指令缓存的内核,缓存的尺寸是可配置的。是否配置缓存对程序并无影响,但会影响处理器调用指令和存储/读取数据的速度。 ? 缓存是否能有效提高性能,基于以下使用原则: 2 2 2 尽管可以人为使缓存在整个应用程序范围都有效,但{zj0}的缓存配置仍是依具体应用来确定。例如,假设一个NIOS II处理器系统仅包括快速的片上存储器(即系统未连接低速片外存储器),指令或数据缓存对性能提升没有任何帮助。又如,程序中的一个关键循环有2K字节大小,当指令缓存大小是1K字节时,指令缓存是无法提升执行速度的。事实上,在这种情况下,指令缓存反而会降低性能。 如果一个应用需要某些由于性能原因而存储在缓存中的数据或者代码段,紧耦合存储器提供了一个更合适的解决方案。 ? NIOS II架构提供了如下方法来旁路数据缓存: 2 2 I/O读取和存储指令是使用ldio和stio指令旁路数据缓存并且强制Avalon-MM传输数据到指定的地址。 Bit-31缓存旁路方法,即使用数据端口的第31位比特来标记处理器是否适用数据缓存。对需要控制对某些地址需要缓存,某些地址需要旁路的软件而言,这样操作是方便的。软件能在函数间将地址作为参数传递,而不必指定更多的信息来描述地址是否被缓存。 紧耦合存储器为性能要求严格的应用提供了低延迟存储器访问的性能保障,对比缓存,紧耦合存储器拥有如下优点: 2 2 2 |