双Nios II软核在嵌入式系统中的应用
引 言
本文引用地址:http://www.amcfsurvey.com/article/82696.htmSOPC(System On Programmable Chip)即可编程片上系统,或者说是基于大规模FPGA的单片系统,是美国Altera公司于2000年提出的。它将处理器、存储器、I/O口、LVDS、CDR等系统设计需要的功能模块集成到一个PLD器件上,将其构建成一个可编程的片上系统;具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。由于SOPC系统具有灵活的设计方式、高效的开发手段、廉价的设计成本,可以实现过去不可能实现的更高的系统性能,因此它在通信和工业控制等领域正得到日益广泛的应用。
NiosII嵌入式处理器是FPGA生产厂商Altera公司推出的软核CPU,是一种面向用户的,可以灵活定制的通用精简指令集架构(RISC)32位嵌入式CPU。NiosII以软核的方式提供给用户,并专门在Altera公司的FPGA上实现了优化,用于SOPC集成,最后在FPGA上实现。
本文将以VOD视频点播系统为例,介绍采用NiosII构建可编程片上系统SOPC的过程,以及双CPU及其同步通信技术实现的视频点播系统主机部分的设计思想和工作原理。
1 工程应用
1.1 VOD相关内容及双CPU使用的必要性
视频点播是一种交互式多媒体信息点播系统。其本质是,信息使用者可根据自己的需求主动获取多媒体信息,打破目前用户收看节目的被动方式,使用户从“播什么节目看什么节目”变成“想看什么节目就播什么节目”,从而按照自己的意愿通过网络点播视频服务器中的视频节目。视频点播以电视技术、计算机技术、通信技术为基础,它区别于信息发布的最大不同是用户具有主动性与选择性。
VOD系统主要由3部分构成:视频点播服务器、传输网络和视频点播终端。当点播终端发出点播请求时,点播服务器就会根据点播信息,将存放在节目库中的影视信息检索出来,并将视频数据流通过高速传输网络传送到各个点播终端。点播终端接收到数据流后,将其解码送到显示器播放。
本设计采用一块大容量硬盘作为VOD系统的点播数据源,将MPEG-1格式的影音文件按照FAT 32标准存放在硬盘上。由于视频点播系统对硬盘访问的速度要求非常高,采用操作系统已无法满足要求,所以利用SOPC技术将Altera公司的第2代嵌入式处理器NioslI嵌入到FPGA中,并通过DMA控制器直接对硬盘进行最底层的操作,完成对影音文件的管理、检索和数据读取,充分发挥了FPGA的高速优势。本视频点播服务器可以驱动多达64个完全独立的视频终端。
为实现64路终端实时播放影片,必须对视频数据流的传输速率严格规定,由于所有终端播放的文件均为MPEG-1格式,此格式下影片连续播放所需的数据流速率为1.416 Mb/s。本系统采用的数据收发器AM7968/7969的传输率为80 Mb/s,因此只要逻辑电路设计得当且处理器定时发送数据,就可达到视频不间断播放的设计要求。但点播系统在满足视频数据定时发送的条件下还应当实现读取硬盘中存放MPEG-1数据的功能,对终端作出的点播信息作出及时响应的功能,对USB中影音文件录入的功能以及显示屏的刷新与按键的处理功能。如果只采用一个处理器,则无法对每个环节作出及时响应,无法保证数据的定时发送和硬盘数据的按时读取,所以采取在Altera公司的高性能FPGA中嵌入双NiosII软核的方式达到系统设计目的。
1.2 系统原理框图及架构
点播服务器主要由主控制器部分和外围接口电路两大部分组成,硬件系统框图如图1所示。主控制器单元主要由FPGA、存储器电路、电源电路、时钟、复位电路和配置芯片电路组成。外围接口主要有:OLED显示屏、动态扫描键盘、数据缓冲区、SD卡、USB控制器、IDE接口、CAN总线接口、光纤接口等。
其中数据缓冲区由2个容量各为32 MB的SDRAM组成,用于暂时存放DMA控制器从硬盘读出的视频数据;USB接口用于节目源的录入;IDE接口用于与磁盘阵列连接;各终端的点播信息通过CAN总线送到点播服务器;视频数据流通过4根光纤传送到各个终端,每16个终端共用1根光纤,4根光纤可以驱动64个终端。
其中FPGA中,双NiosII逻辑设计架构实现如图2所示。
NiosII Exectltion Core 1为主CPU,在这个处理器系统里面,DMA控制器负责将视频数据从硬盘读到缓冲区中;USB驱动器负责从其他移动存储设备中录入节目源到硬盘阵列;CAN BUS驱动器负责接收终端的点播信息;Tristate Bridge用来连接外部程序存储器SDRAM和Flash;OLED驱动器用来控制OLED显示屏;Uart核为RS232接口。
Nios II Execution Core 2为从CPU,专门用于向终端传输视频数据流。最为关键的部分为Transmit BUSDriver,它负责将DMA控制器写入缓冲区的数据读出来,并送给光纤发送模块向终端发送。
此外,还必须有一个握手模块(handshake module),负责2个CPU之间的信息传递,使2个CPU协调工作。
1.3 相关设置及添加过程
(1)NiosII CPU定制
根据不同设计的要求,有3种不同的内核类型可供选择——快速型、经济型和标准型。快速型内核具有最高的处理性能,经济型内核具有最低的资源占用,而标准型在性能和资源之间作了个平衡。本设计中,CPU1需要实现硬盘数据读取、显示屏控制、总线请求、键盘处理等各种功能,因此选用标准型内核;而CPU2只要定时读取数据并发送至输出模块,功能单一,因此选取快速型内核便可胜任。
(2)NiosII外围设备定制
Altera公司推出SOPC设计技术的同时也为用户提供了一些可以选用的存储、接口和功能模块的IP核。这些核可以直接添加到用户的设计中。启动SOPC Builder后,在GUI界面中左边是可供用户选择的模块资源池,包括处理器和各种外设(其中有自己开发的模块),也包括第3方开发的模块。用户模块也可以放入资源池,用户逻辑在第一次定义后,就可以将其放人模块资源池,以后使用时当成普通模块一样使用。
(3)自定义控制组件设计
Altera公司提供了使用第3方核的简单接口。只要符合这些接口规范,就可以使用各种IP核进行SOPC设计。
由于Altera公司并未直接提供硬盘、CAN控制器、USB及2个CPU握手模块等接口,因此必须自己设计接口连接各种器件和处理器。这些接口既要符合Avalon总线规范,又要满足各种器件的工作时序。图3为点播服务器系统在SOPC Builder工作窗口中的截取图。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论