基于NiosII的智能多接口片上系统设计
证总线转换桥的可用性。 Wishbone到Avalon总线转换桥的总体组成原理如图3所示。
Wishbone到Avalon总线转换桥的基本功能是使得符合Wishbone总线体系结构的IP核可以在采用Avalon总线的NiosII 固核处理器片上系统中集成,从而实现对定制外设的访问。接口支持32位总线操作。总线转换桥由相对独立的Avalon主从端口单元和Wishbone主从端口单元组成,每个单元都有一套完整的功能来支持Avalon总线和Wishbone端口上所挂载的IP核之间的交易,读写数据实行分开存储,由配置和状态寄存器控制操作模式和数据的输入输出。Avalon总线接口逻辑与Wishbone接口逻辑两侧都包含本地状态机及其他控制逻辑,并且总线桥接口逻辑还包括地址译码、命令译码、接口控制状态机、数据输出MUX、奇偶校验输出、地址溢出检查等功能模块。
2.3 片上系统集成设计
基于NiosII固核处理器的片上系统集成是在SoPC Builder环境下完成的。片上系统集成主要完成对片上系统的定制、片上系统的资源分配、总线交换操作、中断处理等几个点关键技术点。
2.3.1 片上系统定制设计
片上系统的定制设计主要是完成片上系统集成所需要的处理器IP和外设IP的选型,是集成设计的第一步,设置系统主频,同时可选配指令、数据Cache大小、外部数据指令、硬件乘法器、流水线支持、浮点运算支持等特性,并设置NiosII的Cache和CPU直接相连的存储器。外设IP主要包括PCI总线接口IP、外部SRAM接口IP、外部Flash接口IP、外部GPIO接口IP、外部网络接口IP、自定制的基于OpenCore的串行接口IP核、 CAN总线接口IP软核等。
2.3.2 片上系统资源分配
SoPC为各IP自动分配了一个默认地址。考虑到资源有效利用,还需要对系统资源进行重配置,主要包括:对Boot Loader的存储器选择和设置Boot Loader在存储器中的偏移;存放异常向量的存储器选择及其偏移量;各外设在Avalon总线上的偏移地址、中断号的分配;PCI总线对片上 Avalon总线上设备的Memnry或I/O的空间以及地址映射;DMA传输配置;消息寄存器(Mailbox)双口RAM的使用等。具体分配如下:
(1)考虑到可以通过PCI到Avalon总线的地址映射,从PCI通过BAR端口直接访问两路UART、CAN、GPIO等设备,根据各接口IP地址特性,其他外设在Avalon端地址分配不冲突的前提下,有效分配Avalon地址资源,并可以在PCI端直接使用BAR2/BAR3以及Memory或 I/O访问此类外设。
(2)可以通过Auto Bass Address操作,解决外设的地址分配冲突问题。通过调整其他外设地址避免与Flash地址的冲突。
(3)可通过手动方式修改各个外设的中断号,也可以通过Auto Assign IRQs 操作,自动分配中断号(最低为0,最高31)。
2.3.3 总线数据交换操作
PCI总线与Avalon总线实现互相访问,须先确定PCI核的资源配置,然后根据资源配置选择总线数据操作方式。从PCI总线方向看PCI软核主要有以下几个部分:寄存器组、BAR0~BAR3、DMAC、PCI访问端口。带有PCI核的整体架构如图4所示。
对于含PCI总线接口IP的片上系统总线操作,可以分为DMA方式和非DMA方式。非DMA方式即PCI总线通过PCI核的BAR空间访问Avalon总线设备,而不经过DAMC的控制。非DMA方式的操作共分为4类,其中数据类操作两类:PCI总线读取Avalon总线设备的数据(支持连续数据)、 PCI总线将数据写入Avalon总线设备(支持连续数据);配置类操作两类:PCI总线读取Avalon总线设备的寄存器、PCI总线写入Avalon 总线设备的寄存器。数据类操作与配置类操作没有本质上的区别,只是数据类操作支持连续数据操作,数据通道是双口RAM,而配置类操作只支持单次操作,数据通道是MailBox组。PCI核的寄存器组包含两类MailBox寄存器组:P-A MBR和A-P MBR,每类MailBox组含8个32位寄存器。
3 软件设计
NiosII EDS(嵌入式开发包)基于开放式、可扩展Eclipse IDE的工程以及Eclipse C/C++开发工具提供了统一的开发平台,适用于所有NiosII处理器。 NiosII EDS为基于NiosII的系统自动生成板级支持包(BSP),包括硬件抽象层(HAL)、可选的RTOS以及设备驱动。BSP提供了C/C++运行环境,可以避免与硬件直接打交道。所有软件开发任务都可以在Nios II IDE下完成,包括编辑、编译和程序调试。
基于NiosII固核处理器的片上系统的BSP(板级支持包)设计主要以开发板源码为基础进行修改移植。系统通过bootloader进行引导,采用 Altera的集成开发环境NiosII 7.2 IDE进行操作系统?滋C/OSII的开发。在开发过程中采用软件模块化、通用化的编程思想进行设计,具体实现
- 一种消防应急灯具专用控制芯片的设计(11-02)
- 基于FPGA的8段数码管动态显示IP核设计(02-03)
- 基于FPGA和IP Core的定制缓冲管理的实现(08-14)
- 基于Altera ASI IP核的ASI发送卡实现(02-25)
- FPGA的高速多通道数据采集控制器IP核设计(04-22)
- 基于EDA或FPGA的IP保护的实现(09-16)