原创 基于Nios软核的双网卡路由选择

2009-9-22 19:26 1703 4 4 分类: FPGA/CPLD
基于Nios软核的双网卡路由选择
作者:张帅,王典洪,孔令斌,杨进    时间:2007-04-23    来源: 
 
      

摘要SoPC是Altera公司提出的一种灵活、高效的片上系统设计方案,他将处理器、存储器、I/O等系统设计需要的组成集成到一个PLD器件上,构成一个可编程的片上系统。Nios是Altera公司开的可进行SoPC设计的软核处理器,他可以与用户自定义逻辑结合构成SoC系统。本文通过Nios配置一个双网卡路由选择的设计,其功能相当于一个网络中简单的交换机,利用Quartus软件结合SoPC软件实现Nios设计的流程。首先对Nios,SoPC进行简要介绍,然后详细分析了双网卡路由选择的硬件、软件设计,提出基于Nios的解决方案。


关键词:Nios;FPGA;IP核;SoPC Build


由于IC设计与工艺水平提高,集成电路规模越来越大,复杂程度越来越高,同时随着系统向高速度、低功耗、低电压和多媒体、网络化、移动化的发展,对电路的要求越来越高。传统的集成电路设计方法已经不再适应当前设计的需要,从而产生了一种新的设计方法——SoC(System on Chip)。SoC从整个系统的角度出发,把处理机制、模型算法、芯片结构、各层次电路,直至器件的实际紧密连接起来,在单个(少数几个)芯片上完成整个系统的功能。SoPC(Systemona Programmable Chip)是由Altera公司提出的一种更灵活、高效的SoC解决方案,他将处理器、存储器、I/O口、LVDS,CDR等系统设计需要的功能模块集成到一个PLD器件上,结合Altera公司为用户提供系统设计所需的功能模块,即IP核,用来构建SoPC系统。SoPC芯片在应用的灵活性和价格上有极大的优势,代表了半导体产业未来的发展方向。


Nios介绍


Altera公司的Nios处理器是一种采用流水线技术,单指令流的RISC处理器,针对Altera的可编程器件及片上可编程系统的设计思想,做了相应的优化,其大部分指令可以在一个时钟周期完成。他有2个版本:16位和32位。这2个版本的位宽分别是16位和32位。Nios处理器是一种可配置的软核CPU,即一种可特许通用的RISCCPU,Altera公司以IP核的方式将Nios提供给用户。用户可以用他与其他外设、指令或用户自定义逻辑结合,构成一个SoPC系统,下载到Altera的可编程器件中去。


Nios采用的Avalon总线是一种相对简单的总线结构,主要用于连接片内处理器和外设,以构成片上可编程系统(SoPC)。他描述了主从构件的端口连接关系以及构件间通信的时序关系。Avalon总线规范了各种选项来控制总线信号与时序,以满足不同类型外设的需要。SoPCBuilder自动产生Avalon总线,Avalon也包括许多特性和约定,以支持SoPCBuilder软件自动生成系统、总线和外设。


SoPC技术介绍


SoPC是以PLD取代ASIC的一种灵活,高效的SoC解决方案,是由Altera公司提出来的。代表一种新的系统设计技术,也是一种初级的软硬件协同设计技术,其特点在于可编程性。进入SoPC的设计环境SoPCBuilder,他集成在EDA工具QuartusⅡ中。用户通过SoPC Builder可以从Nios中自带的IP库中选择一些部件,例如:SRAM,TIMER,PIO,UART等,配置好各个部件的参数即可生成系统。对于一些特殊的IP,用户可以自己编写或者向Altera公司及第三方购买。


SoPC系统的核心电路用一片FPGA实现,可将嵌入式处理器、存储器、逻辑单元以及高性能I/O集成在一个芯片中,采用自顶向下的设计方法,对整个系统进行方案设计和功能划分,用硬件描述语言HDL完成系统行为设计,最后通过综合器和适配器生成最终的目标器件。SoPC Builder自动生成和目标硬件相匹配的软件开发环境,这样当硬件设计改变时SoPC Builder能够节省调试时间。
SoPC Builder为硬件和软件仿真提供了一个完整的环境。


SoPC Builder自动生成系统的仿真模型,测试模型和完整的环境,包括Modelsim工程文件,格式化总线接口波形和测试平台。图1为SoPC系统开发流程图。


20070423162211422.jpg
图1 SoPC系统开发流程


硬件设计


在本文的设计中NiosCPU,ROM,SRAM接口,FLASH接口,LED结口,UART串口,定时器等设备都由Altera公司以IP核的方式提供。这个设计最终目地是实现使多台PC机能够通信,PC机上的网卡是PCI网卡,而标识每块网卡的是他的MAC地址,那么设计中就要以PC机的MAC地址作为操作基础来实现数据的分发,当一个PC机发送一个数据给FPGA,在FPGA内部对数据进行处理,根据网络传输协议解析数据包,得到接受PC机网卡地址,然后将数据直接传给相应的PC机,如果PC机来不及接受,可以将数据存储在一个外部缓存中,滞后再发。


Nios是32位处理器;SRAM是系统主存;ROM相当于BIOS,用来存放启动程序;AvalonTri ̄stateBridge:Nios中不可或缺的总线,所有的外设和FPGA内部的存储器等都要挂到总线上才能与CPU通信;FLASH存放编写的应用程序,系统的初始化以及后期系统运行的程序都从中调用;
UART0,UART1实现FPGA和PC机通信,对FPGA的配置监控时能用到;


20070423162219847.jpg
图2 SoPC设计框图


Cs8990是网络接口控制器,在选取EthernetInterfacer时有两种选择:CS9800 Interface和LAN911c111Interface,但是LAN911c111并不支持PCI类型的网卡,而整个系统要实现PC机的通信,只能选择CS9800;Timer用于系统内部定时。


20070423162228272.jpg
表1 各部分功能、地址


SoPCBuilder选用表1所列的部件后生成各个部件的HDL逻辑文件,C程序的头文件和库文件、模拟文件等。利用QuartusⅡ软件对网表和HDL的混合文件,进行布局布线并编译,生成硬件映像文件,然后使用ByteBlasterII线缆通过JTAG下载到开发板中的选用的FPGA芯片中,并以FLASH文件格式下载到板上FLASH。将配置文件下载到FPGA中后,就可以通过QuartusⅡ自带的程序进行调试,直至满足要求。到这里对硬件编程就结束了,此时的FPGA结合外设就成为要设计的网络数据中转装置的硬件基础。


软件实现


在软件设计过程中主要完成网络协议栈设计、应用级代码的编写。主要涉及到串口通讯和以太网通讯。软件运行在SoPC芯片上的Nios中。由于串口通讯速度和网络通讯速度之间不同步,因此在程序中设置相应的缓冲区用来暂存数据,设置两个4k的缓冲区,分别称为接收缓冲区RXBUF和发送缓冲区TXBUF,其中RXBUF用来接收串口发来的数据,并将此缓冲区中的数据从以太网口发送出来,TXBUF用来接收来自以太网的数据,并将此缓冲区中的数据从串口发送出去。两个缓冲区均分别设置两个指针:数据接收指针和数据发送指针,数据接收指针用来指示将数据存入缓冲区的位置,数据发送指针指示所要发送数据在缓冲区中的位置。


Altera公司提供了类似Unix的命令行界面来开发软件,即NiosSDKShell。SDK中包含的头文件和库文件,提供了硬件映象地址和一些基本的硬件访问子程序。在软件设计过程中主要完成网络协议栈设计、应用级代码的编写。用C或C++来对Nios编写应用程序的源代码,在写网络协议栈时,可用到由SoPC Builder生成的SDK包里面的src/plugs文件中的程序,他支持以下一些网络协议:
IP,ARP,ICMP,UDP,TCP。然后程序经充分调试后下载到FLASH中。软硬件都完成后在开发板上进行调试,看是否符合系统的要求。


将设计中所需要的模块通过SoPCBuilder软件组合在一起,系统将自动生成对应的HDL文件和原理图,然后直接通过对原理图定义引脚做约束等步骤,使用Byte BlasterII线缆通过JTAG下载到开发板中的Cyclone芯片中,最后利用嵌入式软件开发包编写、调试应用程序,并以FLASH文件格式下载到板上FLASH中。


结语


本文介绍了基于Nios的双网卡路由选择设计。系统采用Altera公司推出的Cyclone系列(该系列器件具有较高的性价比)中的EP1C12芯片作为核心,在其中内建Nios软核处理器,实现了以太网数据的收发,该系统可以扩展为多路以太网数据收发。


得益于可编程逻辑器件日益提高的性能和新开发工具,Altera公司提供的Nios处理器的出现,使得片上可编程系统SOPC以其灵活的设计方式、高效的开发手段、廉价的设计成本实现了过去不可能实现的更高的系统性能,将在通信领域、工业控制、计算机相关产品和消费类电子得到广泛的应用。


show_label.gif标签:  Nios  FPGA    SoPC



 发表评论
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条