基于NIO处理器的SOPC应用系统研究与设计

时间:2007-04-29

基于NIO处理器的SOPC应用系统研究与设计

张宏波 戴紫彬 孙万忠
信息工程大学电子技术学院,河南 郑州 450004

1.引言

随着微电子技术和半导体工业的不断创新和发展,集成电路的集成度和生产工艺水平得到不断提高,从而使在一个半导体芯片上完成系统级的集成已成为可能,数字技术已进入片上系统(system on a chip)时代。然而由于受生产工艺和实验条件的限制,工程师很难在实验室完成SoC设计。

可编程片上系统(System on aprogrammable chip)基于FPGA芯片,将处理器、存储器、I/O口等系统设计需要的模块集成到一起,完成整个系统的主要逻辑功能,具有设计灵活,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。受到广大电子设计工程师的青睐。

本文着重探讨了基于Altera公司FPGA的嵌入式处理器NIOS内核和SoPC软硬件设计技术,并在此基础上设计了基于PCI的NIOS开发系统。

2.嵌入式处理器NIOS的基本特性

Altera公司的NIOS是基于RISC技术的通用嵌入式处理器软内核,它专门为可编程逻辑进行了优化设计,也为可编程片上系统(SoPC)设计了一整套综合解决方案。NIOS处理器采用16位指令集,16/32位数据通道,5级流水线技术,平均一个时钟周期处理一条指令,性能高达50 M工PS。NIOS处理器内部结构如图1所示。NIOS V2.1处理器具有以下主要特征:

  • 大容量窗口寄存器堆。可以实现512个内部通用寄存器,编译程序运用这些内部寄存器可以加快子程序的调用和局部变量的存取。
  • 简单完备的指令集。32位和16位的NIOS系统都运用16位宽的指令,16位宽的指令减少了代码长度和指令存储区的宽度。

  • 强大的寻址模式。NIOS指令集包括装载和存储指令,这样,编译程序可以加快结构体和局部变量(存储栈)的存取。

  • 较强的可扩展性。用户可以直接把定制逻辑集成人NIOS算术逻辑单元(ALU)内,并且自动生成包含C语言和汇编语言下访问定制指令硬件的宏指令的软件开发工具包(SDK)。

  • 硬件辅助功能。用户可以利用硬件的优点去另创一些指令,从而促进指令执行速度(performance)。它可以有5条用户定制指令,用户可以把复杂的工作变成一个单一的指令来做。

    3.基于PCI接口的NIOS开发板卡的设计

    3.1 FPGA的选择

    NIOS CPU可以到A1tera公司的大部分FPGA器件中,如ACEXlK、APEX、Stratix及Cyclone等系列。Cyclone器件系列是目前世界上成本的FPGA。它在相对低的价格下把特性、容量和性能完美地融合在一起,采用专门设计的低成本全新体系结构,特别适合于对成本敏感和大批量应用的高端消费类。设计者可以充分利用可编程逻辑的灵活性、经济性和面市的时间优势定制出适合自己使用的片上系统。结合实际需求,本开发系统选用Cyclone系列的EPlCl2Q240C8。该芯片具有以下特征:

  • 器件容量为12,060个逻辑单元和多达234Kbits的嵌入存储器。嵌入存储器包括52个M4K RAM模块,每块的数据传输速率超过200MHz。

  • 采用1.5V,0.13um全铜工艺,173个用户I/O管脚,在成本下优
    化为逻辑容量。

  • 内置两个锁相环(PLL)和一个层次时钟结构,具有完整的片内和片外系统时钟管理能力。

  • 集成了单数据率(SDR)SDRAM,双数据率(DDR)SDRAM和FCRAM器件的专用接口电路,在133MHz时钟下数据率可高达266Mbps。

  • 支持多种单端I/O标准,包括LVTTL,LVCMOS,PCI,SSTL-2和SSTL-3。具有多达129个低电压差分信号(LVDS)兼容通道,每个性能可高达311Mbps。

    3.2开发系统硬件结构

    NIOS开发系统由NIOS处理器模块、片外ROM、片外RAM、调试与信息交互模块、I/O设备模块等构成(如图2所示)。NIOS处理器预先到板上FPGA之中,FPGA内还包括片内启动ROM、总线控制逻辑、外部并行输入输出端口(PIO)等;开发板支持片内ROM启动和片外ROM启动模式,片内ROM直接调用ALTERA公司提供的库函数实现,片外ROM选用SST公司的SST39VFl60,该芯片容量为lM× 16bit,访问速度70ns,采用两片进行位扩展到32-bit;NIOS处理器可以通过其总线直接访问片外同步SRAM,SRAM选用了MICRON公司的MT58L256L32F,该芯片容量为256K × 32bit,支持同步猝发数据传输,访问速度7.5ns。

    为便于调试,开发板与主机采用PCI接口方式进行通信。选用PCI 9054作为PCI总线桥接器,在FPGA内部构造寄存器堆,实现主机对NIOS的控制、NIOS处理器工作状态监视,在PCI9054局部总线与Avalon总线之间设置输入FIFO和输出FIFO,实现主机与NIOS系统的数据缓冲。输入输出PIFO选用IDT公司的IDT72V3650芯片,该芯片容量为2K× 32bit,支持同步数据传输,访问速度12ns。

    4.基于NIOS内核的SOPC软硬件开发

    采用NIOS处理器开发设计与采用传统的处理器开发设计不同,开发者必须先配置处理器结构、设置接口等内容。也就是说,开发者必须根据实际需求构建一个处理器,而传统的处理器具有固定接口、片内RAM和外部设备。具体步骤如下: STEPl定义处理器

  • CPU数据总线宽度:根据需要选择16-bit或32-bit数据总线,16-bit数据总线CPU更小、更快。

  • 寄存器队列:定制NIOS CPU的内部寄存器队列以满足系统需求,有效的配置是128、256或512个寄存器,寄存器的数据路径宽度即是CPU的数据总线宽度,较大的寄存器队列将消耗较多的片上存储器资源。

  • 乘法器:若程序代码需要执行极少的乘法运算,且不包含关键乘法时间,或者希望CPU内核尽可能小,可使用包含在C编译器中的软件算术运算库。另一方面,如果需要执行大量的乘法运算或者需要高速乘法运算,则选择以下一种硬件乘法器(MSTEP或MUL)。

  • 片内存储器:确定系统需要多少片内ROM或RAM,NIOS处理器使用ESBs实现片内存储器,实际受限于器件的ESBs数量。SoPC Builder限制多使用20KB片内存储器。

  • 片外存储器:NIOS CPU提供与片外存储器接口,用户可以自定义CPU与片外存储器件SRAM、FLASH、PIFO接口。

    STEP2构建处理器

    当采用Quartus II V2.2开发软件和SoPC Builder软件产生一个处理器后(如STEPl所述),被当作处理器,还需要完成以下操作:

  • 配置CPU硬件选项,包括数据总线宽度(32 or 16 bits),乘法器和自定义指令用法

  • 增加外围设备,配置外围设备硬件选项

  • 定义处理器启动地址

  • 安排外部存储器地址和范围

  • 为外围设备和接口设置所需的中断优先级

  • 配置外围设备建立和保持所需条件

  • 设置外围设备和存储器所需的等待状态

  • 设定装入指令存储器或数据存储器用于初始化片内ROM、RAM的文件一旦NIOS系统创建,可以选择与其它用户定义逻辑组合,必须采用QuartusII V2.2软件进行综合,Quartus IIV2.2软件综合后输出SOF或HEXOUT类型的器件配置文件。可以使用QuartusII V2.2软件和ByteBlaster MV电缆通过PC机直接配置Altera器件。

    STEP3创建和编译应用程序

  • 采用文本编辑器编写应用程序源代码C/C++或汇编程序。

  • 采用NIOS-build工具或makefile编译源代码生成执行代码,执行代码保存.srec文件中。

    STEP4转换为自启动代码

    一旦应用程序代码调试完毕,需要将可执行代码存储在开发板中,当NIOS CPU复位后,自动执行应用程序。存储的方式有:

  • 存储于片内存储器中,规定文件初始化ROM或RAM。

  • 存储于片外存储器,通过PCI接口,将程序存储于FLASH之中,NIOS初始化后自动执行。

    详细的NIOS应用设计流程如图3所示。

    5.结束语

    本文提出的NIOS处理器开发系统已经设计完成并经过测试,该开发系统与ALTERA公司提供的开发系统相比较具有接口通用、显示直观且可以方便的实现与PC机之间的通信的特点。随着可编程逻辑器件工艺的不断进步,成本和价格已经不再成为制约FPGA发展的理由,利用SoPC进行片上系统设计是大势所趋,SoPC设计理念将会对我们的设计方式产生新的变革,NIOS也必将在通信、信号与信息处理等领域得到的广泛应用。



      

    参考文献:

    [1]. PCI datasheet https://www.dzsc.com/datasheet/PCI_1201469.html.
    [2]. RISC datasheet https://www.dzsc.com/datasheet/RISC_1189725.html.
    [3]. ROM datasheet https://www.dzsc.com/datasheet/ROM_1188413.html.
    [4]. SST datasheet https://www.dzsc.com/datasheet/SST_1180824.html.
    [5]. 70ns datasheet https://www.dzsc.com/datasheet/70ns_1809312.html.
    [6]. PCI9054 datasheet https://www.dzsc.com/datasheet/PCI9054_1054563.html.
    [7]. IDT72V3650 datasheet https://www.dzsc.com/datasheet/IDT72V3650_835307.html.
    [8]. 12ns datasheet https://www.dzsc.com/datasheet/12ns_2105238.html.


  • 上一篇:FPGA设计中的编程技巧
    下一篇:IGCT及IGCT变频器

    免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

    相关技术资料