基于NiosII的智能多接口片上系统设计
摘 要: 设计了一种基于NiosII处理器的片上系统(SoC),集成了Nios II处理器IP、PCI接口IP、网络接口IP以及基于Wishbone总线的串行接口IP核、 CAN接口IP核等。系统具有可重配置、可扩展、灵活、兼容性高、功耗低等优点,适合于片上系统开发与应用。本设计使用Verilog HDL硬件描述语言在QuartusII环境下进行IP软核设计、综合、布局布线,在Model Sim下完成功能、时序仿真,在SoPC下完成系统的定制与集成,在NiosII IDE环境下完成片上系统软件程序的开发,最后在FPGA器件上实现了智能多接口功能的片上系统。
随着超大规模片上系统需求的日益增多,基于传统IC芯片的微电子应用系统设计技术正在转向基于知识产权IP(Intellectual Property)核的片上系统技术发展[1]。因此,基于资源IP核的复用设计方式已开始逐渐成为国内外微电子系统设计的一项支撑技术。从应用功能角度划分IP核有三大类:微处理器IP核(如8位8051核、32位NiosII、Microblaze核等)、各种接口IP核(如SDRAM控制器、 PCI总线接口、CAN总线接口、串行总线接口IP核等)和专用算法IP核(图形编解码H.264、加密核等)。使用IP核复用技术,将IP集成到 FPGA芯片上,可缩小PCB板体积,降低功耗;还可以根据需要进行功能的升级、扩充和裁减。本文以Altera公司的NiosII为主处理器并集成PCI接口、串行接口、CAN接口、网络接口设计为例,说明片上系统的设计方法。
1 设计原理
采用片上系统设计的智能多接口模块一般可以不需要外部主处理器操作系统的干预,其典型结构如图1所示。在工作时,片上系统收到的信号经过本板上Nios II处理器处理转换后,即可将数据信号送出或做其他处理。信号转换、处理工作全部由片上系统完成,不增加外主处理器操作系统的软件开销,因而对整个系统的负担更小。也可以要通过接入的PCI等系统总线,以中断提请等方式向外部主处理器提请访问,可完成与外主处理器的数据交换[4]。
在开源OpenCores组织的网站上,可以获取大量共享IP核, 但是大多数是未被验证的,或者由于是不同人撰写的,其代码风格也不尽相同。其接口信号定义为标准Wishbone总线形式,Wishbone着重定义IP 核的接口信号和总线周期标准来实现IP核的重用。通过对IP软核代码的分析,在原代码的基础上可通过修改IP核的部分逻辑功能(如增加内嵌数据收发 FIFO深度),优化部分接口逻辑;通过对异步信号同步采样一次,可以去干扰,消除亚稳态以及虚假的Glitch;可通过增加复位状态寄存器等实现优化设计。最终完成基于Wishbone总线的IP软核设计。下面以串行接口IP核设计为例说明,其他类型的IP核也可以通过类似方法获得。串行接口IP设计是以异步串行控制器16C550为原型的。
2.1.1 波特率发生器设计
波特率发生器通过两个8位的分频寄存器实现,它提供发送数据和接收数据的基准时钟。波特率发生器产生的时钟是串行数据波特率的16倍。上电复位后两个分频寄存器都为00H,不使能所有的I/O操作。
2.1.2 数据收发
数据发送主要由线控制寄存器、计数器、FIFO控制器、发送FIFO、发送移位寄存器等实现。在波特率设置好后,计数器统计帧数据的位数,确保发送的帧数据包括起始位、有效数据位、奇偶校验位、停止位。发送FIFO可以暂存总线接口发送过来的数据,数据从发送FIFO移入到输出移位寄存器,每16个时钟时间向外发送一位数据,先发送起始位,有效数据从移位寄存器的高位逐位移出,最后输出奇偶检验位和终止位。当发送FIFO内的数据低于FIFO设置触发深度时,会触发发送FIFO空中断。
数据接收由线控制寄存器、计数器、接收FIFO和输入移位寄存器等组成。接收数据的线控制寄存器、计数器功能同发送模块。接收器始终监视着串行输入端,将8位串行数据逐位接收进来。数据接收后会通过移位寄存器暂存在接收FIFO中, FIFO深度可支持1 B、32 B、64 B、128 B等。
2.1.3 中断设计
串行接口IP核中包含一个8位的中断使能寄存器(IER)和一个8位的中断识别寄存器(IIR)。中断使能寄存器可以使能5种中断源,分别是:接收线状态中断、发送线状态中断、时间溢出中断、发送寄存器空中断、Modem状态中断等,共4个优先级。上电复位时默认状态为全部中断屏蔽。上电复位时IIR为 C1H,通过读取IIR数值可获取相应的4路中断状态信息。
2.2 总线转换桥接逻辑设计
为了实现Wishbone和Avalon总线协议之间的协议转换, 根据两种片上总线的特性, 通过状态机的使用来实现总线协议的转换, 并使用软件仿真的方法建立模型来验
- 一种消防应急灯具专用控制芯片的设计(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)