NiosⅡ系统

2024-06-01

NiosⅡ系统(精选7篇)

NiosⅡ系统 篇1

1 引 言

目前FPGA技术在数字电路系统设计领域中发展迅速, 它不仅可以解决电子系统小型化、低功耗、高可靠性等问题, 而且其开发周期短、投入少、芯片价格又在不断下降。而FPGA的SOPC (可编程片上系统) 能够满足系统对体积、灵活性, 以及稳定性的要求, 在图像采集和图像处理系统中得到了广泛的应用[1]。

在图像采集方面采用的乒乓操作是FPGA设计中最常用的一种数据缓冲方法, 简单而且实用。在图像处理方面采用的面积换速度原则可以通过面积的复制换取速度优势, 速度越高意味着可以实现更高的产品性能[1]。而在图像处理的整个过程中, 图像采集是图像处理的基础和前提, 特别是高速的图像采集部分更是关键所在。实际上, 高速图像采集在工业、医学上都有广泛的应用。因此, 依靠FPGA技术设计一种高速图像采集系统具有体积小、功耗低以及成本低的优点, 且具有很强的实用价值。

2 系统总体设计

本系统的FPGA采用Alter公司CycloneⅡ系列的EP2C5Q208C8芯片, 配置了双NiosⅡ软核cpu的设计架构, 其中一个处理器负责图像采集, 另一个处理器负责图像处理 (图像压缩) 和图像传输, 并采用邮件作为两个NiosⅡ核之间的通信方式[2]。这样做可有效地提高处理器处理能力。具体硬件结构如图1所示。

其中, 两个cpu软核之间采用Avalon总线和Mutex硬件互斥进行连接, 交互信息在SRAM中进行提交交换。本系统由于采用了同一片FPGA配置了两个软核cpu的方式, 因此信号传输可以实现无缝连接, 大大地提高了系统信息传递的速度和能力。

3 NiosⅡ双软核构架的实现

实现NiosⅡ双核架构最大的难点是信息处理和存储器争用问题, 互斥信号量 (MUTEX) 是解决多处理器争用存储器的关键[3], 它的位宽为2×32 bit。而在多核环境也可以用信箱 (Mailbox) 在多核之间通信, 本系统结合两者优点, 在互斥信号量的基础上用信箱方式来解决双处理器争用存储器的问题。

使用SOPC Builder开发平台可以方便地构建片上系统。SOPC Builder提供了众多的片内资源, 用户只需根据设计要求进行裁剪, 具体添加的IP核如图2所示, 添加完后, 自动生成地址和中断。最终生成.bsf文件。

4 图像采集模块设计

选择NiosⅡcpu0软核为图像采集模块的操作系统, 具体采用乒乓操作原理实现。图像采集模块的具体实现原理如图3所示。

4.1 图像采集模块原理

在图3中, OV7620为图像传感器, 采集到的图像通过图像采集芯片传给输入数据选择开关[3], 输入数据选择开关是用来控制两片SRAM存储的关键。输入的图像数据经过选择开关后, 分别进入SRAM1和SRAM2。当图像数据读写入SRAM1的时候, 数据处理单元从SRAM2中读取数据;当图像数据写入SRAM2的时候, 数据处理单元从SRAM1读取数据, 然后, 反复交替切换就构建了一个完整的乒乓操作。应该注意的是:在切换过程中, 还应保证帧图像数据的完整性。

采用乒乓操作最大的特点是数据无缝缓冲与处理, 通过“输入数据选择开关”和“输出数据选择开关”互相配合的切换[4], 数据在经过SRAM时没有时间停顿就被送到数据处理单元, 同时这种方式还具有SRAM随机存取的优点, 易于得到较大容量的高速SRAM且价格适中。

4.2 图像采集模块软件部分

采用Verilog语言作为图像采集模块乒乓操作部分的编程语言。Verilog语言是FPGA常用的一种编程语言, 下面是图像采集模块的部分主要代码:

4.3 乒乓操作仿真

在ModelSim仿真器中对乒乓操作进行了功能仿真, 具体仿真结果如图4所示。

5 图像处理模块设计

选择NiosⅡcpu1软核作为图像处理模块的操作系统, 采用了面积换速度的原则, 可以提高图像处理及传输的速度。最终, 将处理后的数据传输给上位机 (PC) 。

5.1 面积换速度的原理

具体采用面积换速度的原则, 面积的复制可以换取速度的提高, 支持的速度越高, 就意味着可以实现更高的产品性能[5]。具体实现原理如图5所示。

首先, 使用简单的串并转换实现多路的速度降频, 图中将总的频率分为三路, 则每路经过1/3的频率;其次, 每一路的速度用相同的算法但各占设计资源的处理模块进行相对低频的处理;最后将每一路的处理结果进行并串转换, 成为高频的输出数据。

5.2 图像压缩处理过程

系统中图像压缩是其中的难点之一, 采用JPEG2000压缩标准, JPEG2000是基于JPEG标准的更新标准, 既是一种有损压缩也是一种无损压缩。它与JPEG最大的不同在于放弃了传统的以离散余弦转换 (Discrete Cosine Transform) 为主的区块编码方式, 转而采用以小波转换 (Wavelet Transform) 为主的多解析编码方式[6]。小波转换的主要目的是要将图像的频率成分抽取出来。其编码过程如图6所示。

5.3 JPEG2000算法

JPEG2000中主要采用的是小波变换的压缩算法, JPEG2000标准的核心编码系统采用的是Le Gall 5/3滤波器之提升实现的整数小波变换。Le Gall 5/3是D. Le Gall 与 A. Tabatabai于1988年基于样条5/3变换而提出的一种可逆滤波器[7]。

Le Gall 5/3 DWT的提升实现如下:

正变换:

undefined

逆变换:

undefined

6 实例仿真

在设计中采用了ModelSim仿真器对部分节点进行了仿真测试, 图像采集在时钟clk下完成, 并通过DMA把采集到的图像数据写入相应的存储地址, 最后完成图像数据的输出。图7和图8为图像采集读取和写入仿真波形图。

7 结 论

高速图像采集系统是图像处理的第一步, 可广泛应用于工业、农业等涉及到图像处理的方方面面, 具有较高的实用价值。该系统采用了双NiosⅡ软核cpu构架和模块化设计方法, 并且采用verilog HDL硬件描述语言, 系统结构简单、硬件流程清晰, 具有高集成度、高信噪比、低功耗、低成本, 以及速度快等优点。通过仿真验证本系统可以稳定工作, 基本达到了高速采集的要求。

摘要:为了进一步提高图像采集速度和质量, 提出了一种基于NiosⅡ多核的高速图像采集方法。介绍了一种基于FPGA的高速图像采集系统, 在该系统中, 使用Altera公司的CycloneⅡ型FPGA, 并配置了NiosⅡ双软核cpu的构架方式, 采用结合乒乓操作原理和面积换速度原则的方法设计图像采集系统, 提高了图像采集的速度, 然后融合JPEG2000图像压缩的算法保存并传输给上位机, 从而提高了图像采集质量。最终完成一种高速图像采集系统, 仿真结果表明, 与传统的图像采集方法相比, 该方法具有更高的图像采集速度和图像采集质量。

关键词:图像采集,NiosⅡ,FPGA,乒乓操作原理,图像压缩

参考文献

[1]孙凯, 程世恒.NiosⅡ系统开发设计与应用实例[M].北京:北京航空航天大学出版社, 2007.

[2]华清远见嵌入式培训中心.FPGA应用开发入门与典型实例[M].北京:人民邮电出版社, 2008.

[3]凌朝东, 杨亮亮, 李国刚.基于NiosⅡ多核驾驶疲劳检测系统设计[J].计算机工程与设计, 2009, (6) :45-47.

[4]李成, 贺洋.基于FPGA的图像采集模块的设计[J].电子设计工程, 2009, (3) :34-36.

[5]董秀洁, 杨艳, 周游.FPGA/CPLD选型与设计优化[J].化工自动化及仪表, 2009, 36 (3) :60-63.

[6]刘正光, 刘子小, 申旭刚.JPEG2000算法原理及实现框架[J].计算机工程, 2004, (20) :21-24.

[7]何秋阳, 朱恩.JPEG2000标准中无损压缩部分的FPGA实现[J].信息化研究, 2009, (7) :35-37.

NiosⅡ系统 篇2

SOPC是一种灵活、高效的片上系统解决方案,它将处理器、存储器和I/O口等系统设计所需要的功能模块集成到一个现场可编程逻辑(FPGA)器件上,从而构成一个可编程的片上系统。SOPC技术的实现方式分为基于嵌入式硬核的SOPC系统和基于嵌入式软核的SOPC系统。其中嵌入式软核以其低成本、高灵活性和易于升级等优点获得了诸多设计者的青睐。A1tera公司推出的Nios II就是最具代表性的嵌入式软核处理器。基于Nios II软核的片上可编程系统,配以丰富的集成外设功能特性,用户可以构成各种不同的智能系统,广泛应用于通信、家电和控制等众多领域。

1 系统设计

1.1 系统开发流程

基于Nios II的SOPC系统设计首先要根据系统要求确定功能模块,然后分别进行硬件设计和软件设计,如图1所示。

硬件设计由用户通过SOPC Builder工具软件定制系统硬件,通常采用HDL语言增加其他逻辑模块,通过Quartus II工具软件生成目标代码。软件设计首先根据定制的硬件信息生成与目标硬件相匹配的板级支持包(BSP),通常采用C语言增加应用程序,通过GNU工具链完成编译、连接生成目标文件。然后将软硬件设计结果分别下载到FPGA,进行调试验证。

1.2 设计实例

笔者基于A1tera公司的Cyclone II系列芯片EP2C35完成SOPC系统设计,实现模拟用户单元功能。模拟用户单元是交换机中最常用的接口单元,完成模拟电话、模拟传真等设备的接入,实现3种编解码处理,并具有回波抵消、业务适配及端到端信令处理功能。模拟用户单元组成框图如图2所示,主要包括:FPGA、时钟电路、同步数据随机存储器(SDRAM)、异步串口(UART)电路、模拟用户接口电路、闪存(FLASH)、编解码模块、背板接口电路和电源模块。其中核心部分为FPGA片上系统,下面详细介绍其软硬件设计过程。

1.2.1 硬件设计

硬件设计通过Quartus II 9.1工具软件完成。首先根据系统功能确定片上系统组件:Nios II软核处理器、片内定时器、锁相环、片内存储器RAM、异步串口UART、SDRAM接口、FLASH接口、Avalon三态桥以及CPU接口。

打开Quartus II 9.1软件,建立新工程,启动SOPC Builder工具软件,添加CPU组件Nios II Processor,选择Nios II/f型,时钟为50 MHz,添加定时器组件,定时周期设为5 ms,为方便调试,添加片内存储器RAM组件、异步串口组件,添加SDRAM接口组件,根据外部SDRAM芯片访问要求设定地址、数据宽度以及访问时序,由于SDRAM的时钟需要固定相位偏移,添加锁相环组件,设定固定偏移相位,添加FLASH接口组件,根据外接FLASH芯片访问要求设定地址、数据宽度以及访问时序,由于FLASH接口必须通过Avalon三态桥连接到总线,添加Avalon三态桥组件,并连接FLASH接口。另外,由于交换矩阵、业务适配及编解码模块需要16位CPU接口,背板接口电路需要8位CPU接口,因此添加自定义组件CPU接口,选择添加新组件New Component选项,在Templates菜单栏选择Add Typical Avalon-MM Tristate Slave选项,修改信号定义、类型、宽度及方向等,并设定访问时序,生成自定义组件CPU_16bit和CPU_8bit,添加自定义组件,默认情况下,CPU接口与FLASH接口共享地址和数据总线,为了方便调试,将CPU接口与FLASH接口地址、数据总线分开,增加Avalon三态桥组件与CPU接口连接,至此完成各组件定义。

根据组件定义配置CPU启动和异常处理地址。选择System菜单下Auto-Assign Base Address选项以避免各组件的访问地址冲突,然后生成处理器模块SOC,在工程中添加SOC模块,并将其他常规设计的FPGA内部逻辑模块与之相连,进行编译生成目标文件通过调试接口下载到FPGA进行调试。

1.2.2 软件设计

软件设计采用Nios II 9.1工具软件基于Micro C/OS-II多任务实时操作系统实现。首先获得目标硬件的BSP,SOPC Builder生成硬件CPU模块SOC的同时也生成了SOC.sopcinf文件,利用SOC.sopcinf可以生成与目标硬件相匹配的BSP文件。打开Nios II 9.1工具软件,新建一个工程,根据Nios II Application and BSP Templates向导选择相应的SOC.sopcinf文件,设定工程、BSP的名称及位置,完成新工程的建立。而后设置BSP属性中Editor选项的各个条目,生成一个用户定制的BSP文件,该BSP与SOPC Builder生成的硬件处理器模块SOC相匹配,其中system.h文件体现了各组件的特性及访问地址。在新工程中添加用户应用程序,Micro C/OS-II多任务实时操作系统提供了任务创建和消息队列创建、处理函数,通过这些函数可以很方便地创建多个任务,并通过消息队列完成任务间通信。软件主程序首先定义任务栈大小,确定任务优先级,完成任务创建、任务编写,然后调用OSStart()系统函数启动任务。用户应用程序添加完毕后编译整个工程即可生成.elf文件,通过选择Debug as Nios II Hardware选项将编译生成的文件下载到FPGA进行软件程序调试。

2 关键技术及优势分析

2.1 关键技术

基于Nios II的SOPC系统关键技术包括以下几个方面:Nios II CPU的内核体系结构、系统总线结构、外围设备设计、操作系统和系统性能优化方法。

2.1.1 Nios II CPU的内核体系结构

Nios II CPU是采用流水线技术和哈佛结构的通用精简指令集计算机(RISC)处理器。其功能单元包括寄存器文件、算术逻辑单元、用户逻辑接口、异常控制器、中断控制器、指令Cache、数据Cache、指令和数据的紧耦合存储器及调试模块。其中算术逻辑单元用来完成数据处理任务,用户逻辑接口可连接用户定制逻辑电路和Nios II内核,由于该处理器采用哈佛结构,因此其数据总线和指令总线分开,紧耦合存储器不仅能改善系统性能,而且可以保证装载和存储指令或数据时间的准确,中断控制器和异常控制器分别用于处理外部硬件中断事件和内核异常事件,Nios II的寄存器文件包括32个通用寄存器和6个控制寄存器,并允许将来添加浮点寄存器,为调试方便,Nios II还集成了一个调试模块。

Nios II CPU支持3种可配置的类型:Nios II/e(经济型)、Nios II/s(标准型)和Nios II/f(快速型)。其中,Nios II/e消耗的FPGA资源最少,但性能最低;Nios II/f性能最高,但消耗资源最多;Nios II/s介于2者之间。

2.1.2 系统总线结构

在系统总线方面,Nios II采用Avalon交换式总线结构。Avalon总线是Altera公司为SOPC系统开发的一种专用内部连线技术,是一种用于处理器和外设之间的理想的内联总线。它需要极小的FPGA资源,提供完全的同步操作。Avalon总线规范为外设的端口与总线模块之间的数据传输提供了互连模式,它定义了一种可配置的互连策略,允许设计者只保留支持特定的数据传输模式所需要的信号。这种互连策略使设计者在不了解主端口或从端口细节的情况下,可以将任意主设备和从外设互连。Avalon总线同时提供多主机体系结构,可提高系统带宽,消除带宽瓶颈,从而实现无与伦比的系统吞吐量。

2.1.3 外围设备设计

Nios II系统提供一些常用的标准外围设备库。主要包括并行输入输出接口、通用异步收发器、定时器、SDRAM控制器、FLASH控制器以及以太网接口等。设计者能够利用SOPC Builder开发工具来添加所需外设,并配置映像地址、主/从关系和中断优先顺序等。另外,用户还可以添加自定义外设,完成用户需要的特殊功能。

2.1.4 操作系统

Nios II集成开发环境可支持多种嵌入式实时操作系统,包括Micro C/OS-II、Nucle-us Plus、Micro CLinux、e COS和KROS等。其中基于抢占式的实时多任务操作系统Micro C/OS-II具有可固化、可剪裁、高稳定性和可靠性的特点,可以提供任务调度以及接口驱动,非常容易使用。Altera提供对Micro C/OS-II的完整支持,使得软件工程师可以快速地为Nios II处理器系统创建一个可裁减的实时操作系统(RTOS)配置。

2.1.5 系统性能优化方法

基于Nios II的软核处理器可以通过定制用户指令、定义基于Avalon总线的用户外设、硬件加速编译器C2H和优化系统编译选项的方法来提高系统性能。定制用户指令可以把一个复杂的标准指令序列简化为一条用硬件实现的单个指令,以减少系统中关键算法的耗时,增强实时处理能力。定义基于Avalon总线的用户外设可以将占用CPU资源较多的处理转化为硬件实现提高系统性能。C2H加速编译器是指可以将C代码中的某些函数通过C2H指令由硬件电路实现,它帮助设计者以最少的资源消耗达到提高性能的目的。另外,通过更改系统参数、优化编译选项,同样能够提高Nios II系统性能。

2.2 优势分析

基于Nios II的SOPC系统与传统的处理器相比,具有以下优势:

(1)易于实现

基于Nios II的SOPC系统提供自动化系统开发工具。它采用一种基于表格的录入系统,具有直观的图形用户界面,系统列出定义的单元模块,并为每个元件提供了一个向导,利用该向导能很容易地定义单元模块功能。

(2)易于升级

传统的处理器的配置是固定不变的,无法适应最新技术的发展,而Nios II嵌入式处理器是基于硬件描述语言构建的,可配置的程度很高,如果用户系统需要进行升级,传统处理器可能需要更换芯片,重新构建硬件系统,而基于Nios II的SOPC系统只需修改FPGA片内的CPU结构配置,简单方便。

(3)节约成本

在系统设计中,除了CPU模块,一般还需要FPGA完成一些用户逻辑,如果采用SOPC系统即可充分利用FPGA资源,省掉CPU芯片,节约了成本也减小了体积。

(4)缩短开发周期

传统的系统设计需要先建立硬件平台,在硬件平台之上进行软件开发,而Nios II开发环境支持指令集仿真器,允许用户在建好目标硬件平台之前就开始开发程序,可以像真实的目标硬件平台一样开发程序,这样软硬件设计同时进行,缩短开发周期。而且在Nios II硬件系统生成的同时,也生成相应的BSP,即对应于目标硬件系统的底层驱动,这样免去开发底层驱动的麻烦,节省大量的开发时间和精力。

(5)方便调试

传统的CPU模块除了需要专门的开发软件,还需要仿真器并安装相应的软件才能进行调试,而基于Nios II的SOPC系统只需一台装有Nios II集成开发环境的计算机,即可完成软硬件系统的开发调试,非常方便。

3 系统测试结果分析

采用基于SOPC系统设计的模拟用户单元进行系统测试,以验证基于Nios II的SOPC系统功能与性能。将2块模拟用户单元板插入交换机,加电,模拟用户单元正常启动,查询插板信息可以看到2块模拟用户板,将每块模拟板各接出1部模拟话机,在对应的话路注册电话号码,互相拨打,通话正常,设置不同的编解码方式,重新拨打,通话正常,表明基于Nios II的SOPC系统功能正常。

采用斯博伦公司的呼叫模拟测试仪Abacus 100对2块模拟用户板进行16路到16路的呼叫测试,测试时间4 h,呼叫次数为55 304次,呼叫完成率100%。通过测试仪的测试以及在工程中的应用表明基于Nios II的SOPC系统工作稳定、可靠。

4 结束语

SOPC技术使开发者能够在软硬件系统的综合与构建2个方面发挥自己的创造力和想象力,从而多角度、多因素和多结构层面对自己的设计进行优化。它更广泛和深入地利用计算机这一科研开发的主流技术,使设计者最大限度地优化系统的性能。基于Nios II的SOPC系统设计简单灵活,开发周期短,成本低,系统维护升级方便,是许多中、低速系统设计不错的选择,今后必将在各个领域得到更广泛的应用。

参考文献

[1]杨宗德,张兵.uC/OS-II标准教程[M].北京:人民邮电出版社,2009.

[2]侯建军,郭勇.SOPC技术基础教程[M].北京:清华大学出版社,2008.

[3]罗力凡,常春藤.基于VHDL的FPGA开发快速入门.技巧.实例[M].北京:人民邮电出版社,2009.

[4]李兰英.NiosII嵌入式软核SOPC设计原理及应用[M].北京:北京航空航天大学出版社,2006.

[5]杨国林.基于NiosII处理器的SOPC应用平台的研究与应用[D].山东大学硕士学位论文,2008.

NiosⅡ系统 篇3

通常驾驶员都利用后视镜作为辅助工具来观看车后景象,不仅看不到车后挡风玻璃以下物体,而且由于其他干扰的影响造成车后盲区,在倒车时发生事故。另一方面,在交通事故发生后,通常办案人员只能靠观看事故现场,根据当事人及周围目击者提供的口供对事故发生的当时情景进行分析判断。但是当某些证据不完全,以及其准确性受到质疑的时候,就会影响到公安机关的办案,甚至可能会导致误判。基于上述原因,本系统实现了辅助驾驶视频监控系统,主要包括前视视频抓拍存储子系统和后视倒车测距子系统,整个系统利用EP2C35F672C6 FPGA芯片采用Altera公司的Nios II解决方案[1]。

1 系统总体方案

如图1所示,本系统分为汽车前视和汽车后视2个部分,用2路摄像头分别进行数据采集。Nios II作为系统的中央处理器,负责系统的控制和数据处理,以及存储器的读写、键盘的扫描和LCD的显示等。前视部分中,前视监控摄像头将摄取到的模拟视频信号,送往A/D转换电路,转换后的数字视频信号经处理器压缩后,存储在SD卡中。在需要的时候,Nios II从SD卡中读取视频信号,经过解压缩,送往VGA显示器显示。后视监控中,处理器发出的超声波脉冲,经过功率放大电路,驱动超声探头放出超声波,超声波遇到障碍物后返回,超声探头接收后转换为电脉冲,经过带通滤波放大电路,送往Nios II处理,计算出所测距离。同时,后视模拟摄像头将摄取到的模拟视频信号,一路送往字库扫描电路,提取行频和场频信号,一路送往字模叠加电路,和Nios II处理器控制的距离字符和汉字字模叠加在一起,构成既有后视景像、又有测距及其提示的视频信号,输出送往TFT液晶显示器显示。下面就对前视监控和后视监控的主要功能部分进行设计分析。

2 前视监控系统

2.1 前视视频传输设计

如图2所示,摄像头采集到的视频信号为模拟量,首要的任务是将模拟量来转换成数字量,利用I2C总线来配置ADV7181,使其实现对PAL制式的视频信号的转换。从ADV7181中出来的数据为YCbCr格式的,符合ITU-BT.656电视TV标准[2]。但是TV与VGA的场频相差很大,要解决两个场频相差很大的系统实现协调工作,即由隔行信息变成逐行信息,这里就需要将行频变为原来的两倍。可以把TV的场频与变换成的VGA的场频送到外部的示波器上来观察频率的关系。在这里倍频不采用PLL来实现,而是用Verilog语言来描述一个倍频的过程,采用了将场频的起始和中间生成两个脉冲来实现。其次完成将TV信号转换成VGA显示器所需的RGB基色[3],这里采用的是色度空间的转换来实现。色度空间的转换首先是先转换一幅图像,转换完成的RGB为数字量,需要经过数模转换才能送到VGA上显示,这3个分量经过芯片ADV7123来完成数模转换。

2.2 视频压缩

前视监控系统要求对模拟摄像头采集的视频图像进行实时传输和存储,由于图像信息量大,必须进行压缩处理。而目前的图像压缩算法都比较复杂且耗时很多,因而仅靠软件压缩难以满足前视监控的要求,通常的做法都是将硬件压缩和软件压缩结合起来实现图像的实施传输和存储。

模拟图像经过数字化后符合ITU-BT.656标准,系统实现了从隔行数据到逐行数据的转换,图像的分辨力为640×480。每一幅灰度图片大小都高达300 kbyte,向SD卡里写入的数据量太大,并且软件处理的速度与硬件的处理的速度相差甚远,达不到存储的要求。因为监控图像信息的细节要求不是很高,因此,采取简单压缩的处理方法就可以实现。即对图像信息进行隔行与隔点的抽取,使数据量降低到原来的1/4,每幅图片达到了75 kbyte。为了解决软件与硬件的处理速度问题,采用了片上RAM作为缓存。图像的压缩提高了图像的存储速度和效率,并且也满足了向SD卡里写入数据时软件处理速度不足的问题。

2.3 SD卡的读写

本系统采用SD卡实现图像的实时存储。SD卡定义了两种可选择的通信模式——SD模式和SPI模式,应用中可选择其中之一。对于主机来说,方式选择是透明的,SD卡在复位时接收命令以确定工作在哪种通信模式。在应用时,可以使用现有的主机,兼容性好,相对于SD模式其传输性能有所降低。

FPGA(主机)与SD卡的SPI通信模式需要4个信号:CS为FPGA到SD卡的选通信号,CLK为FPGA到SD卡的时钟信号,Datain为FPGA到SD卡的数据信号,Dataout为SD卡到FPGA的数据信号。SPI模式面向字节传输,传输中的命令或者数据都以8 bit为单位,且和CS信号保持同步。SPI模式支持单数据块和多数据块的读写操作,且仅使用两个单向信号Datain和Dataout。如图3所示,当SD卡接收到一个有效的读命令后,首先进行应答响应,紧接着传送数据块,数据块的长度在先前传送的SET_BLOCKLEN命令中定义。每个数据块后紧接着16 bit的CRC进行校验,CRC由标准CCITT多项式x16+x12+x5+1产生。当接收到STOP_TRANSMISSION命令后,就停止多数据块的读操作。

如图4所示,当SD卡接收到一个有效的写命令后,首先进行应答响应,然后等待FPGA传送数据块。其中CRC、数据块长度和起始地址的定义和读操作中完全一样。当一个数据块接收后,SD卡立即向FPGA返回一个响应信息。经过CRC校验数据无误后,SD卡进行编程操作,在编程操作中,SD卡同时向FPGA返回连续的忙信息。SD卡读写的程序设计完全按照其读写时序进行。

3 后视监控系统

3.1 后视视频传输及测距设计

图5是后视视频传输及测距系统设计框图。Nios II处理器控制BA(00,01,10,11)通道选择,发出一串超声波脉冲。处理器关闭中断,启动定时器定时。超声波经过相应的通道(0X,1X,2X,3X),输出的脉冲经过功率放大,驱动收发换能器(超声波传感器),发出超声波。为避免发出超声信号本身返回引起的中断,经过适当的延时后,Nios II处理器打开中断。超声波遇到障碍物返回后,经由相应的通道(0Y,1Y,2Y,3Y),经过中心频率为40 kHz的带通放大器后,与设置号的固定门限比较,消除噪声(非返回脉冲),比较器输出的低电平信号作为Nios II处理器的中断信号,处理器接收到中断信号后,关中断,停止计数器计时,读出计数器计数值,根据相应的公式换算出所测距离。如此周期性地循环下去。

为了将所测距离和车后景物实时显示给司机,还设计了声音报警电路和视频显示电路。Nios II处理器根据所测距离长短不同,发出不同频率的脉冲,驱动蜂鸣器发声,距离越短,频率越高,蜂鸣器发声越急促。当距离小于设定的门限时,发出连续的长鸣声,以提示司机倒车。视频显示电路部分的主要作用是将车后景况实时地显示给司机,并将所测距离叠加在屏幕上,根据距离的不同,分别显示“请停车”、“请注意”等提示。所需要显示的字符和汉字的字模存储在ROM芯片中,与字模对应的ROM地址存储在RAM芯片中。车后摄像头摄取的视频信号,经过信号提取电路,提取出行频信号和场频信号,行频信号和场频信号控制高速计数器的时钟和清零信号,计数器的输出作为多路选择器的一个输入,Nios II处理器的输出作为多路选择器的另一个输入,多路选择器的输出作为RAM芯片的地址。这样设计的好处是,Nios II处理器只需在更新显示时,一次性将需要显示的字模地址存储在RAM芯片中,然后释放对外部电路的控制,外部电路就工作在DMA方式,大大减轻了处理器的工作负担。

3.2 实时字符叠加

后视系统里的字符叠加是由Nios II 控制器来控制外部电路实现的,如图6所示。首先控制CD74LS157多路选择器选择由地址0端口送入的信号,而此信号作为TMM2016 RAM芯片的高8 bit地址。同时控制另一路由地址1送来的信号作为RAM 中存储的数据,存储到相应的地址中去。再控制多路选择器选择视频行同步和场同步信号,由它们来选择相应的地址,将地址中已存储的数据发出。这些数据又作为TMS2764 ROM芯片的地址,地址中所存储的数据就是所需要叠加的字模数据,通过寻址,将地址中所存储的数据并串转换后发送出去。发送出去的电平再经过3次反相,来控制模拟开关,从而选择是低电平输出还是高电平输出。由于视频中显示的字符是以低电平方式点亮的,所以当从并串转换芯片中发送来的是低电平的时候,模拟开关闭合,输出低电平,从而点亮相应的点。这样,就实现了字符叠加到液晶显示屏上的功能。

3.3 超声波测距

汽车处于倒车状态时,控制器控制探头发射40 kHz的超声波信号,发射后再检测超声波的回波信号。超声波的发射是由Nios II内核控制器通过定时器定时由pio口来发射一串40 kHz的脉冲信号,经放大电路放大后,由探头发射出去。实验证明,使控制器发射5个40 kHz的脉冲信号,既能检测很近的距离,又能准确接收到信号。由于超声波探头在发射超声波信号后还有一段时间的残余超声波,所以在Nios II控制器发射5个超声波脉冲信号,并打开Nios II中的定时器开始计数后,需要延时一段时间再开启Nios II中的外部pio中断,其过程如图7所示。

4 系统测试

如图8所示,由SOPC构建Nios II处理器对整个系统进行组合,使用μC/OS-II实时操作系统调度切换任务。整个系统并没有使用复杂的IP核,软硬件之间的通信基本上都是靠pio口来实现。对SD卡的读写操作,是通过pio模拟SD卡的读写时序来完成的。对后视控制的操作,是通过3个定时器和1个pio中断来完成的。一个定时器是用来发送40 kHz的超声波的,另一个用来控制发波的间隔,最后一个用来对波发送和返回时间间隔的计数。pio中断主要用来关定时器计数。同时在SOPC中构建了一些pio口,用来引入一些控制信号和叠加字符的地址信号。

利用Quartus开发系统自带的Signal Tap II来观察各个模块中内部节点[4],测试显示信号的变化是正确的,说明了软件的内部流程是符合逻辑的。采集的视频在VGA上显示,观察输出结果与摄像头采集到的图像信息一致,说明视频的采集是正确的。将其中的输出设为一个固定值,写入到SD卡里,图像像素的色度值与设定值相同,证明软硬件的通信是正确的。存储图像的分辨力为320×240,色深为8 bit,每帧图像大小约为75 kbyte。对于后视监控系统,显示器可以清晰地显示车后120°范围内的景象,超声波最小测距为0.30 m,最远测距为2.99 m,测距精度为0.01 m,满足实际应用的需要。

5 小结

本文根据汽车行驶过程中辅助驾驶的工作需求,应用Nios II处理器,实现了基于SOPC的汽车前视与后视的监控系统。系统利用2路摄像头进行视频采集。前视监控是利用摄像头采集汽车前方景象,经过压缩处理,把图片存储到SD卡;后视监控是利用摄像头采集汽车后方景象,并送往LCD液晶屏幕显示。同时利用超声波探头测距,将汽车与障碍物的距离叠加到液晶屏幕上。利用MicroC/OS-II实时操作系统切换调度前视、后视监控任务。整合测试表明,系统软硬件工作正常,满足实际工作需要,具有很强的实用价值。

摘要:为满足汽车辅助驾驶视频监控的应用需求,利用SOPC技术,采用Nios Ⅱ解决方案,在以单片FPGA芯片为核心的系统中,完成了包括汽车前视监控和后视监控等功能。通过μC/OS-Ⅱ嵌入式实时操作系统来调度系统初始化、前视频数据传输、视频压缩、SD卡读写、后视视频传输、字符叠加和超声测距等任务,保证了辅助驾驶的实时性要求。测试表明,该系统功能完善,满足辅助驾驶的性能要求,具有较高的应用价值。

关键词:NiosⅡ,SOPC,视频监控,测距

参考文献

[1]郭书军,王玉华,葛纫秋,等.嵌入式处理器原理及应用[M].北京:清华大学出版社,2004.

[2]宋占伟.电视原理[M].西安:西安电子科技大学出版社,2011.

[3]李江辉,王景存.基于FPGA的视频采集与显示系统设计[J].电视技术,2010,34(13):19-21.

NiosⅡ系统 篇4

随着高速LVDS数据传输方式在图像采集系统中的广泛应用,如何实时可靠地接收LVDS数据具有很重要的意义。在图像采集系统中,需要实时将采集到的数据进行连续的监测和纪录,以便事后进行分析。本文主要基于Altera公司的嵌入式处理器NiosⅡ,设计了一种基于SoPC的LVDS图像数据缓存系统,将DMA技术和由SRAM构成的乒乓结构应用于图像数据转存过程中,并可方便地将数据传给上位机,大大提高了图像数据采集的实时性和可靠性。

1 基本原理和系统总体结构

LVDS数据传输方式以其速度快、干扰少、功耗低等特点被广泛应用于图像数据传输系统中[1]。本设计主要是完成LVDS图像数据的缓存和转发功能。由于图像数据传输速度快,为了保证其实时性,在图像数据接收过程中采用由两片SRAM构成的乒乓结构来提高系统的可靠性。同时,在图像数据存储过程中采用DMA方式进行数据转存,保证能够实时接收图像传感器产生的图像数据。图像数据缓存系统的设计结构如图1所示。由图像传感器采集的图像数据经由LVDS接口下发给图像数据缓存系统,经过解串后将接收到的图像数据存储到两片片外扩展的SRAM中进行缓冲,数据的写入和读出是通过乒乓模式实现的。NiosⅡ软核处理器将数据从SRAM中读出后通过Avalon总线以DMA方式将数据存储到Flash中或者转发至异步FIFO中,上位机通过USB接收图像数据,最终完成图像数据的缓存和传输。

2 NiosⅡ嵌入式处理器模块

SoPC即可编程片上系统,是一种嵌入式系统,它将处理器、存储器、I/O接口、LVDS接口、CDR等系统设计需要的功能模块集成到一个可编程器件上,构成一个可编程的片上系统。Altera公司的NiosⅡ是基于RISC架构的嵌入式处理器软内核,主要包括一个CPU、I/O中断申请、计时器、UART口及大量的通用寄存器[2]。在构建NiosⅡ处理器的硬件时,根据系统要实现的功能,选择合适的CPU和外部设备,然后通过QuartusⅡ和SoPC生成具有相应功能的软核。同时,设计者还可以通过Verilog、VHDL或者使用第三方的IP Core定制用户外设和用户指令来实现各种应用要求。在NiosⅡ系统设计中,一般可以通过两种途径扩展自定义外设,一种是将自定义外设接入Avalon总线,另一种是使用PIO接口[3]。

本设计NiosⅡ外设主要包括以下几个部分:LVDS图像数据接口,SRAM,SDRAM,Flash控制器,DMA控制器和FIFO控制模块。系统配置的组件以及接口模块见图2。

3 LVDS数据接收模块

LVDS接口模块完成LVDS电平转换,实现图像同步信号与图像数据的分离和输出。在图像同步信号作用下,将LVDS接口传入的图像数据保存至单帧数据缓存中。LVDS数据发送及接收端必须采用同样的时钟频率进行控制,才能保证数据传送的成功同步,解串后的图像信号时序如图3所示。本系统接收的数字图像格式为320×240×8。帧同步信号VSYN为高电平,同时行同步也为高电平时,图像数据有效,像素时钟PCLK为8 MHz。帧同步为高电平时,行同步有效,一帧包含240行;行同步为高电平时,图像数据有效,一行包括320个像素点。

4 SRAM缓存模块

针对图像数据传输速率高的特点,需要对图像数据进行流水线处理。为了保证在图像处理过程中不丢失采集的数据,系统采用两片高速SRAM交替工作,完成数据流无缝缓存,构成乒乓机制工作性质。一个SRAM用于接收图像数据,另外一个用于图像数据的处理。每片SRAM可以存储2帧图像数据。乒乓控制逻辑实现在两片SRAM之间进行切换。在一片执行写操作的同时,另一片执行读操作。乒乓结构模块的原理如图4所示。

乒乓操作的处理流程描述如下:输入数据流通过输入数据选择单元等帧,将数据流分配到两个数据缓冲区。在第1个缓冲周期,将输入的数据流缓存到数据缓冲SRAM1;在第2个缓冲周期,通过输入数据选择单元的切换,将输入的数据流缓存到数据缓冲SRAM2,同时将SRAM1中缓存的第1个周期的数据通过输出数据选择单元的选择,送到控制处理单元进行处理;在第3个缓冲周期,再次切换数据的进入与输出缓冲模块,如此循环。

5 DMA数据转存模块(SRAM-FIFO)

为了保证图像数据传输的实时性和连续性,提高CPU的处理速度和数据传输能力,使用基于DMA的图像数据转存方式,在片上系统中引入了DMA控制器。同时为了完成图像数据的接收和上传之间的速率匹配,需在系统的输出端加入一块异步FIFO。这样在FIFO和数据处理单元以及存储器之间形成以DMA方式直接控制高速数据传输模式。由于图像数据的存储采用了乒乓结构,可以在一片SRAM执行DMA传输的同时,另一片执行写操作,这样不会造成数据丢失,状态也比较容易控制。DMA模式不过分依赖CPU,可以大大节省系统资源,是在内存与外设之间进行批量数据传输的最佳模式[4]。本系统主要利用行与行之间的消隐间隔来完成DMA传输,将图像缓存SRAM中的一帧数据搬移到片内FIFO。由于行消隐的时间不做图像采集,把它用来完成DMA传输可大大提高数据传输效率。

该模块的主要功能是,NiosⅡCPU在SRAM中设置了帧缓冲,处理器将一帧数据(320×240×8)存入帧缓冲,在主程序进行DMA初始化后,系统首先通过DMA启动一次SRAM向FIFO的DMA传送,同时FIFO控制接口通过CY7C68013将FIFO中的数据上传至上位机。当FIFO向CY7C68013输出数据过程中,FIFO的数据减少到设定的容量域值时,FIFO控制接口的准备信号经由Avalon总线向DMA控制器提出传送请求。DMA控制器接受请求后,直接控制数据从SRAM经FIFO控制接口的写数据端口写入FIFO,以此完成一次SRAM向FIFO的DMA传送。在整个运行过程中,程序不停地将SRAM中的图像数据传输给异步FIFO。

6 USB通信模块

由于在具体设计中,既要进行设备控制,又要完成高速数据传输,所以本系统选用Cypress公司的EZ-USB FX2接口芯片CY7C68013。EZ-USB FX2集成了USB2.0微处理器、SIE(串行接口引擎)、增强的8051微控制器、4 kbyte FIFO存储器和可编程的外围接口。GIPF(General Programmable Interface)和主/从断点FIFO(8位或16位数据总线)为ATA,UTOPIA,EPP,PCMCIA和DSP等提供了简单和无缝连接接口[5]。设计者在使用该USB芯片与上位机进行通信时,需要使用CY7C68013的GPIF接口来实现与FPGA之间的高速数据传输。EZ-USB FX2的通用可编程接口(GPIF)有16位数据线,支持8位或16位的数据传输;有6个RDY信号和6个CTL信号,支持多个Ready输入和Control输出。通过寄存器配置可以将CTL信号作为输出控制信号,通常用作读写时钟信号以及非总线输出信号;同时RDY信号作为等待信号,GPIF端口总是连续高速采样RDY信号,用来判定指定信号的高电平或者低电平状态的出现,以确定GPIF端口是否进行数据传输[6]。EZ-USB FX2在高速模式下数据传输的码率可以达到480 Mbit/s,本系统的实时图像数据的速率为64 Mbit/s,因此CY7C68013可将图像数据完整地接收至上位机。

USB图像数据传输部分主要实现将上位机软件发出的控制命令字下传给FPGA,并实时判读FIFO的半满信号,准备将缓存中的图像数据上传给上位机。上位机的命令字通过单片机的PE端口传送给FPGA,图像数据通过GPIF端口上传给上位机。为了匹配单片机与FPGA的传输速度,还应在FPGA中设置一个2 kbyte的软FIFO用于图像数据的缓存。CY7C68013单片机通过RDY2引脚实时判读FIFO的半满信号,若FIFO达到半满,单片机通过CTL0引脚产生读FIFO信号,将图像数据实时上传至上位机。Cypress公司为了简化和加快开发基于EZ-USB FX2芯片的外围设备,提供了一个基于EZ-USB FX2的固件框架,该框架主要包含初始化、处理标准USB设备请求以及USB挂起时的电源管理等,提供了现成的8051程序代码,只需要简单地提供USB描述符表及编写外设功能代码,就可以开发出一个功能完善的USB外设。

7 系统调试结果

图5为QuartusⅡ提供的Signal TapⅡLogic Analyzer逻辑分析仪对图像数据上传进行实时采样的时序分析图,描述了NiosⅡ处理器将SRAM缓存中的数据写入FIFO和CY7C68013判读FIFO半满信号,并将图像数据上传上位机的时序关系。图6为经上位机软件还原的图像,恢复的图像清晰无误码,实现了图像数据的实时传输,满足了设计要求。

8 小结

随着高速LVDS技术在图像传输系统中的广泛应用,介绍了一种基于NiosⅡ的LVDS图像数据缓存方案,实现了高速LVDS图像数据的实时缓存和上传。设计中采用了乒乓缓存结构和DMA数据传输机制,保证了图像数据的连续性和完整性。本设计采用了SoPC技术,整个系统的性能和稳定性有了很大提高,适用于通信、雷达、电子对抗等高速数字信号处理设备,具有广泛的应用前景。

参考文献

[1]孙春凤,袁峰,丁振良,等.基于LVDS技术的高速图像采集系统的设计[J].仪表技术与传感器,2009(3):46-51.

[2]Altera Corporation.NiosII software developer's handbook[EB/OL].[2011-01-01].http://www.altera.com/literature/hb/nios2/n2sw_nii5v2.pdf.

[3]蔡伟纲.NiosII软件架构解析[M].1版.西安:西安电子科技大学出版社,2007.

[4]袁海林.基于NiosII的数字图像回放系统的设计[J].湖北民族学院学报:自然科学版,2008,26(3):357-360.

[5]钱峰.EZ-USB FX2单片机原理、编程、及应用[M].北京:北京航空航天大学出版社,2006.

NiosⅡ系统 篇5

1 Nios II的So PC系统在时统系统中应用涉及的方案

(1)方案的总体设计。在Nios II的So PC系统在时统系统中的应用要加强方案的总体设计。总体设计要符合实际方案的要求,同时也要体现设计的总体性和总体要求,这是设计的重中之重,用范围的总体性带动设计方案的总体性。在逻辑设计上也要体现总体性,逻辑的总体要符合相关的逻辑,软件的开发要采用集成开发工具。总体设计中要创新,用创新带动设计,在应用中要开创技术的新领域,在新领域取得先进的成果。方案的总体设计一定要过关,它是设计的前面步骤,如果出现不过关的现象,会使后面的步骤出现短路的现象。方案的总体设计也一定要符合设计的流程,要在总体中加强为后面带路的原则,前面的应用使后面的技术出现引导的作用,前期就取得好的效果,更加深后面技术的研制。并且思想上一定要严谨,用严谨的思路把总体把握好,在方案的总体设计中要更清晰更准确,用好的设计带动应用能力,让应用能力得到提高。

(2)方案的硬件设计。在Nios II的So PC系统在时统系统中的应用中要加强方案的硬件设计。硬件设计一定要过硬,外围的电路设计一定要过关,在外围的电路设计中要加强管理,电路一定要清晰,实现为硬件设计服务的功效,同时用户的逻辑设计也要到位,使设计与用户端可以互通,加强硬件的逻辑性。系统设计也要到位,在系统中各系统要有规律的设计,让系统可以共同运行,为硬件的设计做到规律化和系统化,让方案的硬件设计带动整体系统在时统系统中的应用。

(3)方案的软件设计。在Nios II的So PC系统在时统系统中的应用中要加强对方案的软件设计的投入,软件的设计一定要过硬,软件的编辑一定要过关,在编辑过程中要根据步骤来编辑,并且要符合系统规则。在软件的编译中对数据和各种不同的语言设计要做到准确无误,为软件设计打好基础。同时对软件的调试一定要过关,要调试到最好的范围,用准确的调试为软件系统服务。在应用的程序中,包括Main主程序,此程序包括对时间程序的显示和对时间信息的有效控制。要加强对软件的合理控制,让软件设计有突出效果,做到服务总体的功效。

2 Nios II的So PC系统在时统系统中开发要注意的环节

(1)要注意方案的灵活性。在Nios II的So PC系统在时统系统中要加强开发方案的灵活性。灵活的开发、灵活的运用。要使各步骤做到灵活,为下面的步骤提高灵活的空间。投入应用中可以让应用者灵活使用,并且灵活的做到下载和安置灵活的步骤。方案灵活的为设计者、开发者、应用者进行有效的转化,让设计者更灵活的把方案交给开发者,开发者灵活交给应用者,互相很好的转交和投入到使用中。用方案的灵活性带动各层面的灵活性。让灵活性不再受到繁琐技术的制约,投入到灵活性的战斗之中。

(2)要注意开发成本的优势。在Nios II的So PC系统在时统系统中要加强开发成本的优势。成本一定要在最适合的范围内。不可过分追求效益最大化,把成本变相减少。也不可出现浪费的情况。要注意开发成本的优势。在系统的开发中,系统的开发成本有了好的优势,它相对于其它的通信工程成本较少,并且在研制过程中也对成本的依赖性不大,加深了此系统的研制量,让更多的设计者取得更好的经济利益,带动更多的技术能量和好的心态,用最少的资金取得长足的发展,让大多的研发者投入到Nios II的So PC系统研发中,为时统系统的开发做出卓越的贡献,同时减少对系统的研制浪费现象,让研发体现绿色化理念。通过开发成本的优势带动系统的研制,用优势带动产业链,使产业得到发展。

(3)要注意IP设计。在Nios II的So PC系统在时统系统中要加强IP设计,它的设计会使设计更加完美,并带动系统的开发,用IP的设计潜心为设计的灵活性做服务。它的设计有独特的标准,要以标准化为主,不可设计越位,让设计成为不科学的。同时要加强IP设计的完美性,用完美地设计为系统服务,并更深层系带动系统产业。同时IP设计也要注意不可投入过多的成本,要体现成本上的优势,用好的技术、好的设计、好的成本体现好的系统和好的IP设计,让设计体现理念和效率性,把IP设计的产业做到最好。

3 总结

在Nios II的So PC系统在时统系统中的应用开发中要发挥好的文化和经济效益,为系统的长足发展做贡献,让好的系统、好的技术带动通信工程的发展,在发展中会遇到很多困难,好的理念、有效的资金带动产业结构,相信在开发者研制者和应用者的共同努力下能使这项事业取得最好的发展,为通信工程服务,为高科技服务,为我国的通信事业服务,把系统做强做大。为我国的经济政治文化和高科技产业服务,用高科技的具有良好经济效益的特色带动各产业的蓬勃发展。

摘要:在现在通信工程的不断研发和应用中,NiosII的SoPC系统在时统系统中得到了广泛的应用,也得到了计算机工作者的潜心研究。它属于新范畴的技术,在研制中要注意新技术需结合以往的技术,并加强在时统系统中的应用与开发,让此信息工程技术在应用中得到实践,在实践中也要开发,在开发中得到好的传播,让此技术为更多的人服务,为更多的领域服务,在服务中做到与各种领域的高科技完美结合,让高科技与应用开发做到合理分配。

关键词:NiosII,SoPC,通信,开发

参考文献

NiosⅡ系统 篇6

VOD(视频点播)技术为人们提供了一种交互式的信息获取方式,并随着技术的完善不断扩展着其应用范围和影响力。传统的VOD系统主要是以服务器作为视频的信息源,通过局域网进行点播,适合服务于住宅小区或公营机构。而对于缺乏网络支持、移动性较强的环境,如公共交通工具,传统的VOD系统显然难以实现。

本文针对特定的用户环境,提出采用Altera的SOPC(片上可编程系统)解决方案,利用NiosⅡ软核处理器和FPGA(现场可编程门阵列)配置灵活、IP资源丰富、硬件设计和软件编程方便的特点,通过扩展IDE(集成开发环境)接口,以硬盘作为存储媒介,实现多路VOD系统的设计方案。该系统体积小、成本相对低廉,体现了嵌入式电子产品的优势。与传统的VOD系统相比,使用范围更具针对性,装配更灵活,升级扩展更方便,具有很广阔的前景。

1 系统功能划分

该系统从功能上可划分为系统控制核心、多路视频数据读取单元、视频解码模块和用户点播终端4个部分。

1.1 系统控制核心

系统以NiosⅡ软核为控制核心,主要负责硬盘初始化、提取视频节目簇链、生成节目列表、人机交互控制等工作。上电后,NiosⅡ控制器先初始化硬盘的传输模式和读写状态,然后读取主引导记录,寻址到基本分区的操作系统引导记录区,计算保留扇区和FAT(文件分配表)大小,分别得到FAT和根目录的入口。对目录树上的文件进行分析后,提取出视频文件的文件名、文件首簇,根据首簇指针再次查找FAT,追溯出文件的簇链,最后烧写到Flash存储器中。完成以上工作后,初始化中断,对用户端进行轮询,等待用户请求,分析用户指令包,作出相应响应。

1.2 多路视频数据读取

为实现海量视频数据的存取,该系统需外扩展硬盘作为存储介质。通过用户自定义的硬盘DMA(直接存储器存取)控制模块实现对硬盘数据的读写,功能包括为上层程序提供控制硬盘和多路数据输出的接口,产生硬盘DMA操作状态机信号。数据从硬盘读出后,以乒乓操作的方式交替存储在两片SRAM中,内存中的数据按照对应的输出端口并行排列。同时,根据用户终端提出的点播需求,数据往点播端口扇出。

1.3 视频解码

本系统采用外扩展的视频解码板作为硬解码模块。解码芯片是LSI LOGIC公司CL680视频CD MPEG 1音频/视频解码器。该芯片以CL480/484架构为基础,用于MPEG-1音频/视频解码,整合数字NTSC/PAL编码功能和加强KTV功能[6]。

1.4 用户点播终端

为解决多用户终端远距离通信的问题,系统采用RS-485收发器作为主机与用户点播终端的连接桥梁。RS-485收发器采用平衡发送和差分接收,具有抑制共模干扰的能力,加上接收器的高灵敏度,能检测低达

200 mV的电压,极大地提高信号传播的可靠性。

主机与终端间的通信方式采用类似令牌总线的通信协议。主机不断发出查询包,收到查询包的客户端被赋予发送控制命令的权限,客户端可选择发送命令或直接丢弃查询包,这样就避免了多个客户端同时向总线发送数据、导致通信失败的情况。

系统采用MB90092视频字符叠加模块,在用户终端屏幕中叠加功能菜单,建立友好的用户操作界面,用户可通过控制面板进行点播操作。

2 系统设计

2.1 系统硬件结构

系统硬件结构如图1所示。

为实现对硬盘的控制及两片内存的乒乓控制,系统使用了定制的DMA控制模块,通过SOPC Builder 软件,以用户逻辑形式挂到Avalon总线上。

2.1.1 DMA控制模块

DMA控制模块框图如图2所示。

DMA控制模块主要功能是控制硬盘进行多路视频数据的并发传输。为保证视频质量,需考虑到数据读写速度的提高。本系统采用按照ATA/ATAPI-6协议编写的DMA模块,控制置硬盘以Ultra-DMA方式传输数据,可实现最大传输速率为66 Mbit/s[5],满足多路MPEG-1视频码流的并发传输。除了解决传输速率问题,该系统涉及到同时处理多路数据的读写,因此引入相应的功能子模块,以乒乓操作的方式控制两片SRAM的读写,并对多路数据的存储分区进行地址管理。

模块的主要子模块有DMA控制器、DMA状态机、switch和SRAM控制器。

DMA控制器作为Avalon总线与硬盘的接口,主要功能是接收上层程序的控制命令,再对硬盘的控制寄存器进行读写,在NiosⅡ程序的控制下将硬盘的传送模式设置为Ultra-DMA模式进行数据传输。

DMA状态机模块是根据T13小组发布ATA(ATA/ATAPI-6)文档为设计标准,用Verilog HDL(硬件描述语言)实现的有限状态机。在控制终端的设置下传输方式转为Ultra-DMA模式后,硬盘向控制器发出DMA请求,此时DMA状态机启动。主机端向硬盘发送响应信号,握手成功,解除DMA STOP状态,同时使IDE_HDMARDY有效表示主控端已准备好。接着,数据流从硬盘流出,并发出一双沿锁存信号,SRAM控制器在该信号控制下将数据锁存入内存。直到DMA请求结束,STOP信号生效,DMA传输结束。整个过程遵守ATAPI-6协议,使用Verilog HDL描述出硬盘DMA传输过程的时序。

Switch和SRAM控制器模块主要负责在DMA传输过程中在两片SRAM间调度数据,从而实现数据的乒乓存取。Switch模块用于完成两块RAM之间的切换及数据的分区存储。它工作于两个状态:以Flag为标志位,Flag为0时做写RAM1的操作;Flag为1时做写RAM2的操作。在DMA方式下,一次DMA读取硬盘一个扇区刚好写满一片RAM,Switch模块挂起数据写入,等待中断。当另一片RAM中的数据被全部读出后中断发生,此时Switch模块交换两片内存的读写端口地址。

2.1.2 RAM分区读写

由于系统要提供多路视频的播放,因此,在进行DMA传输的过程中需实现各路视频数据的分区读写。在写内存时,采用双时钟控制机制。若要实现32路VOD系统,将一片512 k的RAM分为32个单元,每个单元长度为16 k,定义RAM的地址为:

wraddress2=wraddress1+wraddress

wraddress1为每个内存分区的基地址,它的取值分别是0 k,16 k,32 k,48 k,…,496 k,另外是一个偏移地址wraddress。内存分区方式如图3所示。

定义时钟C0为写内存分区时钟,C1为写内存偏移时钟,C0的频率为写C1的32倍。当偏移地址为某一值时,权值地址的取值会从0 k~496 k遍历一次,即每一内存单元读写周期,写入每个分区的一个单元。

同样,对内存中的数据也要分区读出并送往相应端口。该模块使用一种内存地址的计数方法:将地址线的长度设置为10位,再将低5位的地址和高5位的地址互换,目的是从高5位开始计数,计数满了进位到低5位。高5位表示分区地址,低5位为分区的偏移地址,地址从第6位开始累加,刚好遍历32个分区,完成高5位的依次累加后,进位到低5位的分区偏移地址,表示开始读下一轮分区的第2个内存单元。如此类推。根据计算出的地址可实现对各分区的数据依次读取。地址算法示意图如图4所示。

2.1.3 移位输出模块

该模块主要实现的功能是:在分路时钟的控制下,将从内存中读出的多路数据移位输出。该模块定义了一组长度为16位的移位寄存器。数据I/O读写的时间和速度由video_clock确定,video_clock的频率是12.5 MHz,负责控制SRAM_R控制器,移位输出模块和视频解码板的同步。模块中还设置了一个累加计数器div3,工作频率与 video_clock相同。当SRAM_R控制器依次将各路视频文件读入一个寄存器后,每一个时钟下降沿到来时移出1位,直至全部移出。若加大时钟频率和缓冲内存空间,可以增加移位寄存器的数目,从而增加视频输出端口的数量,实现系统点播路数的增加。

2.2 系统软件工作流程

系统程序划分为主机程序和点播终端两大部分。主机程序主要实现3个功能:管理硬盘,提取簇链;播放节目,点播控制;响应请求,串口中断。管理硬盘的方式主要是通过自定义的DMA控制模块对硬盘的控制寄存器进行操作,驱动硬盘后访问FAT32文件系统下的相应扇区,追朔簇链,将簇链提取出来写入到Flash ROM中,为播放做准备。点播端程序则主要负责生成指令包。本系统软件工作流程如图5所示。

本系统要处理多路视频数据,并且视频信号数据量大,在点播过程中系统必须集中大部分处理器时间来处理各路视频信号,而视频文件的文件名和簇链结构必须通过相对低速的PIO操作来获得。为了解决簇链读取速度的瓶颈,本文设计了适合本系统应用的数据结构来优化对数据的管理,加快读取速度。定义的数据结构有:

客户端的状态和播放进度也由专门的结构体来记录和管理。定义的数据结构有:

3 结束语

SOPC=NiosⅡ软核+FPGA这个创新的概念为嵌入式设计带来的极大的便利和灵活性。利用强大的SOPC开发平台和丰富的IP资源,可大量缩短系统设计周期,而且系统的改进也变得十分方便。本文提出的通过把用户自定义的硬盘读写模块整合到SOPC平台上,与NiosⅡ无缝接合,成功实现了多路视频数据的并发点播。

摘要:随着公路及铁路系统基础建设的不断扩展,长途客运及旅游业正飞速发展。为了提高客运服务标准,吸引更多客源,不少交通运营单位开始更换高级客车及旅客列车上旧式的车载影碟播放系统,改用功能更强大、互动性更强的视频点播系统。针对传统视频点播系统主要依靠视频服务器作为载体、系统性价比不高的问题,介绍了Altera SOPC平台上嵌入式多路视频点播系统的实现方案。通过Nios Ⅱ控制用户自定义模块以乒乓操作的方式实现对硬盘视频数据与两片内存间的DMA(直接存储器存取)传输,根据用户的指令,将分区存储的视频数据经解码后发送到相应用户终端,从而满足多路视频数据的并行点播。

关键词:SOPC,嵌入式,视频点播,NiosⅡ

参考文献

[1]任爱峰.基于FPGA的嵌入式系统设计[M〗.西安:西安电子科技大学出版社,2005.

[2]王冠.Verilog HDL与数字电路设计——硬件电路工程师从入门到提高丛书[M].北京:机械工业出版社,2006.

[3]Altera Corporation.NiosⅡsoftware developer′s Handbook[DB/OL].http://www.altera.com/literature,2005.

[4]Altera Corporation.QuartusⅡversion 5.1 handbook,volume5:Altera embedded peripherals[DB/OL].http://www.al-tera.com/literature,2005.

[5]Technical Committee T13.Information technology:At attach-ment with packet interface-6[DB/OL].http://www.t13.org/Documents,2002.

NiosⅡ系统 篇7

1 硬件

系统中顾客使用终端触摸屏浏览服务信息并实现相关操作,通过无线局域网络和前台通信。各个点菜终端作为独立系统工作,所有数据传到前台上位机协调处理。本文仅介绍与μC/GUI相关的点菜终端构成部分。终端硬件框图如图1所示,利用片上可编程系统(So PC)技术将Nios II处理器、外设接口控制器等功能模块集成到FPGA,构成可编程片上系统[2]。SDRAM、Flash控制器用于处理程序和数据的存储;512 KB SRAM作为图像数据缓存区;FPGA内部自定义LTM控制器和SD卡控制器模块,辅助软核工作,操作触摸屏并读取SD卡内的JPEG图片;UART接口用于和移植到CC2430的Zig Bee模块通信;采用定时器以嵌入μC/OS II操作系统。

触摸显示屏是4.3英寸数字LCD触碰面板TRDB-LTM,长宽比为15:9,支持24 bit并行RGB接口,能通过内置模数转换器(AD7843)将触碰点X/Y坐标转换成对应数字信息。触摸屏物理分辨率为800×480,支持16 bit RGB565格式。

2 μC/GUI移植

本系统的用户界面采用μC/GUI,其最新版本是3.98,其中一些组件不太完整。根据点菜系统使用需求,特添加3.94版本的JPEG模块来显示图片数据。ucgui398StartConfig和ucgui398StartGUI是源码包最重要的两个文件夹,其中包括各种配置文件、μC/GUI内核文件、与字体相关的代码文件、LCD驱动代码文件、μC/GUI支持的控件代码以及视窗管理部分代码等[3]。

2.1 修改LCD配置文件

为使系统正确工作,必须修改文件LCDConf.h(GUI目录中)中的一些配置宏。该文件与硬件直接相关,根据所使用的LCD类型和LCD控制器进行配置。由于μC/GUI提供不同型号的LCD配置文件(文件夹SampleLCDConfxxx中,xxx代表LCD驱动器名称),应用程序开发者可直接在此基础上修改程序。实际应用中,选择LCDLin.c驱动文件。由于LTM控制器对显示分辨率进行硬扩处理,因此LCD尺寸选择400×240。系统底层配置的部分宏如表1所示。

LCD_READ_MEM(off)、LCD_WRITE_MEM(off,data)宏定义是μC/GUI与LTM控制器接口的关键[4]。SRAM_BASE是512 KB SRAM读写操作的基地址,这些宏定义能实现对图像数据缓存区的16 bit读写操作。此外,一般移植操作必须定义LCD_INIT_CONTROLLER(),以实现LCD屏初始化配置。LTM控制器初始化了触摸屏,因此软件配置中省略此项。

2.2 修改GUI和触摸屏配置文件

在调整系统或减小内存消耗时需配置LCDConf.h。具体步骤如下:(1)备份原始配置文件;(2)检查所有配置开关;(3)删除配置中不使用部分。除此之外,系统工程编译时,会出现一些未定义错误,需要将SampleGUI_XGUI_X.c添加到工程中,该文件定义GUI与操作系统的接口,以及Debug错误报告等函数。由于系统使用μC/OS II,可选择GUI_X_u COS.c文件,并在文件结尾处添加以下函数:

同时将GUI_X_Exec Idle()中的OS_X_Delay(1)替换为OSTime Dly(1)。

GUI文件夹中另一个需要配置的文件是GUITouchConf.h,根据触摸屏类型不同,宏参数也不同。执行触摸屏操作的主要流程在GUICoreGUI_TOUCH_Driver Analog.c文件中。头文件部分宏配置如表2所示。

2.3 触摸屏与GUI接口

μC/GUI支持键盘、鼠标、触摸屏等外设,并在源码级对其消息响应。为使触摸屏正常工作,系统除对相应配置文件修改和添加一些相关函数外,必须实现触摸屏底层驱动,即修改LCDLin.c驱动文件。

理论上,GUI_TOUCH_AD_LEFT和GUI_TOUCH_AD_RIGHT取值应当为0或1 024,但实际操作时,必须根据具体情况校准。系统取触摸屏四个角坐标作为校正标准,经过多次试验,四个坐标分别是(29,160)、(3 936,160)、(29,3 900)和(3 936,3 900)。在GUICoreGUI_TOUCH_Driver Analog.c中修改相应宏,再据实际情形确定余下开关宏的值。

通过调用GUI_TOUCH_Exec()函数来获得触摸屏触点位置:系统通过中断服务程序读回触点实际坐标值(x,y);接着将实际坐标值转换到逻辑坐标;最后调用GUI_TOUCH_Store State(x,y)保存逻辑坐标值。为实时得到触点坐标,需不断调用GUI_TOUCH_Exec()函数,因此建立单独任务对该函数调用,以保证触摸屏任务的实时响应。该部分设计难点在于中断标志清零,如果每次得到触点位置后不能即刻清零,则会影响GUI内部去抖操作和校准处理,因此在保存稳定坐标值后再清除标志位。

3 μC/GUI应用开发

3.1 触摸屏消息响应机制

GUI所有外设输入均以消息形式发送给当前窗体回调函数处理,具体流程如图2所示[5]。触摸屏的消息传递实质是对全局变量_State记载和更新。_State有3个成员变量:消息发生点x坐标、y坐标、外设按下与否的操作状态。外设输入消息统称为WM_TOUCH,函数WM_Handle PID()专门处理这种消息。通过GUI_PID_GetState获取GUI_PID_STATE结构的WM_TOUCH消息,将新获取消息与函数内静态旧消息变量比较,包括该消息发生点的屏幕坐标及外设操作状态。状态发生变化是将操作状态变化作为独立消息WM_PID_STATE_CHANGED发送,再发送WM_TOUCH消息。构造WM_TOUCH消息所用到的数据,需要获取当前焦点窗体句柄,当前焦点窗体是用WM_h Capture全局变量记载,如果为0则调用函数WM_Screen2h Win(),根据消息发生点屏幕坐标获取窗体句柄。向当前焦点窗体发送消息后,更新当前消息到旧消息变量,结束本次消息处理。

3.2 窗口、控件和对话框应用

系统界面丰富,频繁用到页面切换,因此使用μC/GUI视窗管理器(WM)进行窗口创建、显示、隐藏和删除等。用户程序中对不同窗口指定不同回调函数,当指定事件发生时,通知图形系统调用指定函数,如窗口内容改变时自动重绘的场合等。图3(a)、图3(b)分别为菜品推荐及菜单显示窗口。

为使点菜系统功能更加丰富,界面中加入按钮、列表框、单选按钮、框架窗口等控件。控件是构造用户接口的元素,能自动对某些事件反应。控件也是通过其构造函数返回的句柄而引用。控件使用视窗管理器,一旦一个控件建立,它被处理成与其他窗口一样,WM保证它在需要时能正确显示(及重绘)。

控件消息响应机制在使用中十分重要,包括按钮触碰响应、单选按钮序列号获取、列表框滑动等。下面以按钮为例介绍其功能。Button按钮在其回调函数中对相关消息(WM_MOUSEOVER/WM_PID_STATE_CHANGED/WM_TOUCH)进行处理,在button.c文件中可找到相关实现函数,用触摸屏点击该按钮时发送以下三种消息之一:WM_NOTIFICATION_MOVED_OUT、WM_NOTIFICATION_RELEASED、WM_NOTIFICATION_PRESSED,之后在该按钮父窗口捕获并处理消息。系统是通过捕获WM_NO-TIFICATION_RELEASED消息实现按钮触碰功能的。

系统除了点菜外,还能存储会员信息,用于累积会员积分,如图3(c)。对于新建和登录账户界面,使用对话框是很需要的。建立对话框需要做两件基本工作:一个资源表,定义包括的控件;另一个是定义控件的初始化。对话框包含多个控件(框架窗口、按钮、编辑框、文本框),通过对不同控件的选择向系统发出请求信息。多数消息被对话框自动处理,其他传送给对话框指定的回调函数。其中,将WM_INIT_DIALOG和WM_NOTIFY_PARENT两种类型的附加消息传送到对话框窗口进行处理。对话框显示前,WM_INIT_DIALOG消息立即被发送到对话框处理,对话框程序用这个消息初始化控件以及实现其他影响对话框显示的初始化任务;通过对话框的子窗口发送WM_NOTIFY_PARENT消息到对话框,通知父窗口以保证事件同步。

3.3 μC/OS II应用

系统使用接口函数OSTask Create Ext创建任务,根据系统要求,设计四个任务,分别是:初始化任务(Task Start)、接收消息任务(Task Rxmsg)、响应触摸任务(Task Touch)和更新任务(Task Update)。任务间通过信号量、全局变量等方式通信,具体状态转移如图4所示。

(1)初始化任务

优先级别最高,用于建立和调用系统初始化函数。系统上电后,首先对各个硬件模块、软件内各数据初始化,如果SD卡读取不成功、无线运行不正常,LED灯提示系统初始化失败,同时系统退出运行状态。反之,初始化完毕,系统开始任务调度。

(2)接收消息任务

接收上位机传回的确认信息,实时显示菜单状态:准备中、制作中、传送中和已上菜。由于无线发回数据不定时,且为了避免数据丢失,该任务优先级别高于TaskTouch。该任务与Task Touch之间用信号量通信。

(3)响应触摸任务

用于执行GUI_TOUCH_Exec()函数,更新触摸点状态,设置窗口、对话框等的回调函数,进行界面切换。放弃对CPU占用后,系统调度将CPU占用权交给Task Update。

(4)更新任务

由于使用视窗管理回调机制,该任务必须实现,并定期调用(至少每秒钟100次),优先级别最低。仅从一个任务调用GUI更新函数(即GUI_Exec(),GUI_Delay()),有助于保持程序结构清晰。任务完成后,按任务优先级高低开始新一轮调度。

以μC/OS-II操作系统为基础,系统在响应触摸任务和更新任务中分别调用μC/GUI函数。该项工作通过在配置中使能多任务支持及配合内核接口函数来完成。由于任务实时行为只受运行在更高级别任务的影响,所以在低级别任务中设置用户界面,使其切换到用户界面时不会影响实时行为。

本文介绍的系统,在Nios II架构上移植了可视化图形库μC/GUI,系统重点研究了如何应用μC/GUI。在实现触摸屏操作的基础上,结合消息响应机制实现窗口、控件和对话框的使用,并融合多任务操作系统提高点菜的实时性。LTM触摸屏显示带有Windows风格图形界面,顾客可根据菜品图片、营养介绍及价格随时点餐。通过GUI整合的触摸操作,实现了自助点菜、查看菜品状态、加菜、退菜以及结账功能,可提供更优质、更人性化的服务。

参考文献

[1]Altera Corporation.Nios II processor reference handbook[M].2005.

[2]李兰英.Nios II嵌入式软核SOPC设计原理及应用[M].北京:北京航空航天大学出版社,2006.

[3]Micrium Inc.μC/GUI manual Rev.0[M].2002.

[4]Qiu Chuanfei,Zhang Wei,Zhou Quanzhi,et al.PortingμC/GUI To LCD and VGA in Nios II system[C].InternationalConference on Measuring Technology and MechatronicsAutomation,Changsha,2010.

上一篇:承接能力下一篇:院感监测