NiosⅡ嵌入式系统

2024-06-19

NiosⅡ嵌入式系统(共7篇)

NiosⅡ嵌入式系统 篇1

0 引 言

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.

[6]C-Cube Microsystems Inc.CL680 VideoCD MPEG-1 audio/video decoder user′s manual[M/CD].http://www.c-cube.com/products/,1997.

NiosⅡ嵌入式系统 篇2

Linux操作系统是自由软件和开放源代码发展中最著名的例子。嵌入式Linux系统利用Linux其自身的内核小、效率高、内核更新速度快、开源、免费等诸多特点适用于多种CPU和多种硬件平台。

2009年3月4日, Altera和Wind River (风河) 宣布为Altera的Nios II软嵌入式处理器提供Linux支持。为此, 记者电话采访了Altera产品市场经理王冬刚先生。

王冬刚先生介绍说:“Altera的Nios授权许可已达2万多个, 目前活跃的Nios论坛社区有1万多人, 在所有Altera市场上, 开发人员都在使用Nios II。”市场研究公司Gartner认为:Nios是业界首屈一指的软核CPU, 灵活性、易于集成和低成本特性使其在嵌入式系统中得到了广泛应用。

Nios II处理器的特点是:可定制使用方案, 随时改动硬件, 提供设计灵活性;可用于所有的Altera FPGA, 永久使用许可保护软件, 保护处理器不会过时;在FPGA中集成处理器, 减小电路板面积, 降低BOM (材料清单) 成本。

商业Linux为把Linux应用到设备的开发过程中的客户提供更多技术支持。这次与Wind River公司商业Linux的合作, 使用户可以以运行嵌入式Linux的FPGA替代现有CPU, 降低成本;保护软件已有代码, 保护处理器不会过时;可使用开放源代码软件, 缩短产品面市时间。嵌入式开发人员实现基于Nios II处理器的产品时可以在Altera全系列FPGA和HardCopy ASIC上使用Linux解决方案。

王冬刚说:“据调查, 在嵌入式操作系统中, Linux除了在医疗电子业位居第二外, 其他行业都是位居第一。商业Linux+Nios II解决方案首先会应用在通信等愿意付费的行业。”

NiosⅡ嵌入式系统 篇3

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Ⅱ嵌入式系统 篇4

关键词:NiosⅡ,彩色夜视系统,设计

0 引言

近年来,随着红外成像技术发展迅速,在夜视、导航、科学研究等领域得到了广泛的应用。其研究的核心任务是研制出红外图像实时处理系统的模块化,从而有效地提高系统的动态范围、消除非均匀型,改善图像质量。针对红外图像特征,本文对夜视红外图像处理的方法进行了研究和比较,采用色彩传递和过滤技术相结合的算法。并进行嵌入式FPGA硬件、软件设计,采用SOPC设计方法构建图像处理的硬件平台,在设计好的图像处理硬件平台上编写NiosⅡ程序,将色彩传递和过滤技术相结合的算法应用到夜视红外图像处理系统[1],通过仿真实验验证,红外图像处理后,在大多数场合增强了图像传递结果的平滑性和真实性,视觉效果明显改善,完成了彩色夜视系统的NiosⅡ实现。

1 系统总体设计

1.1 系统结构及其实现方案

典型的夜视红外图像处理系统一般主要由NiosⅡ处理器、视频图像获取与预处理、视频图像处理、视频图像显示、存储器以及各种外设接口等部分组成[2]。在夜视红外图像处理系统中FPGA处于核心位置,主要由NiosⅡ处理器和信号处理组成,软核主要完成系统管理、数据通信、数据加载、LCD字符界面控制等功能;信号处理模块主要实现色彩传递和时序状态控制;数据程序存储器包括FLASH、FLASH存放应用程序、SRAM存放图像数据及校正系数的存储。

1.2 基于NiosⅡ的彩色夜视红外图像处理系统结构的设计

系统开机或复位后,FPGA从FLASH中加载程序并完成系统的初始化和片外设备的自检;系统初始化完成后,近红外CCD探测器接到收FPGA发出的驱动控制信号后开始工作,输出图像信号经过A/D转换,送入FPGA进行处理。在本系统中,由于图像处理算法涉及的运算量比较大,对系统的快速处理能力和大数据量的吞吐能力有严格的要求,系统选择的FPGA器件为Altera公司CycloneⅡ系列的EP2C5Q208C8,配置器件为EPCS1,用于存储FPGA的配置信息。

1.3 NiosⅡ的内部系统结构的设计

随着NiosⅡ软核处理器的推出,用户可以轻松创建一款“完美”的处理器,无论是外设、存储器接口、处理数据的速度、性能特性还是成本,NiosⅡ都是一个很好的选择。这些优势的实现都借助于在Altera的FPGA上创建一个定制的片上系统。NiosⅡ与外设的接口主要包括SRAM存储器、LCD控制器、FLASH存储器、SDRAM存储控制等几部分。在设计相应接口时,如SDRAM控制器、EPCS控制器、FLASH存储器都可直接在SOPC元件库中直接选用,而后依据实际情况,对这些控制器的内核相关参数进行配置即可。

2 系统模块设计

根据彩色夜视红外图像处理系统结构图,系统一般主要由异步FIFO模块、SAA7113与异步FIFO的接口模块、视频图像处理、视频图像显示模块、存储器以及各种外设接口等组成。

2.1 FIFO模块设计

FIFO是一种先进先出电路,用来存储、缓冲、同步两个异步时钟之间的数据传输。在本系统中SAA7113芯片送过来的时钟晶振频率为24.567MHz,而FPGA系统时钟频率为48MHz。系统在不同时钟域之间传递数据,会产生亚稳态问题。解决在异步时钟域之间数据传输的方法通常有四种:双触发器同步法;脉冲同步电路法;边缘检测同步电路;使用握手信号机制和异步FIFO法四种。

2.2 SAA7113芯片与异步FIFO的接口设计

异步FIFO缓冲数据来自SAA7113芯片的数字视频数据流,因此SAA7113芯片需要与异步FIFO进行接口。不但要将SAA7113芯片的数字视频输出总线VPO与FIFO的输入数据总线相连,而且SAA7ll3芯片还要为异步FIFO提供写使能信号和写时钟信号。SAA7113芯片在每个同步时钟(LLC)的上升沿来到时,将数字视频数据打入VPO总线,所以LLC可以作为异步FIFO的写时钟信号。

2.3 LCD显示模块

NiosⅡ处理器在SDRAM中开辟帧缓冲(Frame buffer),可以是单缓冲也可以是双缓冲。以单缓冲为例。处理器将一帧图像数据存入帧缓冲,然后将帧缓冲的首地址写入到LCD控制器,并启动LCD控制器。该控制器自动从传来的首地址处开始读取数据,并按照TFT的格式输出。Avalon Bus DMA Master负责按照控制模块的指令,读取SDRAM中的数据,并写入到FIFO中,其核心部分是DMA地址累加器。当条件满足时,地址累加器开始在75MHz的时钟下以4为单位开始累加用于生成读取SDRAM的地址。读完一帧的数据后,自动复位到首地址,继续累加。图中各模块由Avalon Bus连接在一起。为了解决总线冲突,Avalon Bus自动在有冲突的接口上加入了Arbitrator这样一个仲裁模块,用于合理分配总线时间,用户通过改变每个模块的权值来改变对其分配总线时间的多少。为了保证显示流畅,多分配点总线时间给LCD控制器主端来读SDRAM中数据。

3 结束语

本文利用NiosⅡ处理器设计的彩色夜视图像处理系统实现了夜视图像的彩色化。经过软件仿真表明该系统具有以下特点:有效地提高系统的动态范围、抑制噪声、消除非均匀型,改善图像质量;在大多数场合增强了图像传递结果的平滑性和真实性,视觉效果明显改善;目前红外信号的实时处理是一个重点,而本系统的实时性还不够因此,在以后的工作中,需要完善系统结构,提高运算速度

参考文献

[1]滕秀花.基于彩色纹理信息和多维邻域特征的色彩传递算法的设计与实现[D].福州大学数学与计算机科学学院,2005,12:19-23.

[2]林青松,李立凯.基于NiosⅡ的红外图像预处理系统[J].通信技术,2009,9:171-173:24-27.

NiosⅡ嵌入式系统 篇5

随着高速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Ⅱ嵌入式系统 篇6

DMA(Direct Memory Access)是计算机学中的一种内存访问技术[1]。它允许CPU内部的某些子系统(存储器和外设)可以独立的直接读写系统存储器而不需要CPU的干预。在同等程度CPU负荷下,DMA是一种快速的数据传送方式。现在越来越多的单片机采用DMA技术以提供外设和存储器间或者存储器之间的高速数据传输。但这些单片机中所包含的DMA控制器的数量是有限的,一般为1到2个。如果实际系统中需要多个DMA控制器的,那么这些单片机就显得无能为力了。

Nios Ⅱ系统是一个用户可配置的通用32位RISC嵌入式处理器,它是SOPC的核心。处理器以软核的形式实现,具有高度的灵活性和可配置性。Nios Ⅱ系统中所有外设以及外设控制器等都是以可配置的IP核形式出现的,用户可以根据需要重复多次添加。通过添加可配置的IP核的方式,可以在Nios Ⅱ系统中实现一个或者多个DMA控制器,以解决普通单片机中DMA控制器数量有限的问题。

1 DMA控制器的原理

1.1 DMA功能介绍

Nios Ⅱ中的DMA控制器包含2个Avalon-MM类型的主控制器端口(读端口和写端口),1个用于DMA控制Avalon-MM类型的从端口以及内部一些寄存器组所构成,其结构图如图1所示[2,3]。

DMA控制器可以将数据从源地址搬移到目的地址。源地址或者目的地址可以是存储器中的一段地址范围也可以是Avalon从控制器的外设。因此,在Nios Ⅱ系统中,存在3种类型的DMA操作,即存储器到外设,外设到存储器以及存储器到存储器。DMA控制器还具备流处理能力,允许固定或者可变长度的数据传输。当DMA操作结束时,DMA控制器发出中断(IRQ)请求。典型的DMA数据传输过程如下:

(1) CPU通过写控制端口配置DMA控制器用于数据传输;

(2) DMA控制器向CPU发出HOLD信号请求占用总线;

(3) CPU响应DMA控制器的请求,并让出总线,DMA控制器获得总线的控制权;

(4) DMA控制器读端口从源地址读数据,写端口向目的地址写数据,读写端口间利用FIFO缓存数据;

(5) 当传输完指定的数据时,DMA传输结束并向Nios Ⅱ CPU发出中断请求;

(6) CPU响应中断请求,DMA交出总线控制权。

1.2 DMA寄存器组描述

DMA控制器共有8个32位寄存器,其中5个为当前有效的寄存器,另外3个为以后扩展所用。寄存器的映射表如表1所示。

状态寄存器的每个状态位指示DMA控制器内部的详细情况。状态寄存器各位的含义如表2所示。

源地址寄存器指定DMA传输的数据源的起始地址;目的地址寄存器指定了DMA传输的目标数据区的起始地址;数据长度寄存器指定从读端口传输到写端口的字节数。如果是字传输,则数据长度寄存器的值需乘以4;若为半字传输,则需乘以2。主控制器写端口每写一个字节数据时,数据长度寄存器减1。当数据长度寄存器为0时,状态寄存器的LEN位置位;控制寄存器每个位设定DMA的工作方式。控制寄存器每个位的意义如表3所示。DMA传输的数据宽度用字节、半字、字、双字和4字位指定。这些位只能有一位设置为1。数据传输的宽度由2个读/写传输设备中传输宽度窄的一方决定。例如,将数据从16位的外部SDRAM存储器中搬移到内部32位的片内存储器时,传输数据宽度应该设置为半字。

1.3 软件编程

ALTERA 提供了HAL DMA设备的驱动程序[4,5],该驱动程序把DMA传输抽象成2种数据通道:发送数据通道和接收数据通道。当存储器从外设接收数据时,使用数据接收通道;当存储器向外设发送数据时,使用数据发送通道;当存储器间进行数据传输时,既要使用数据接收通道又要使用数据发送通道。与DMA发送数据通道相关的函数有alt_dma_txchan_open(),alt_dma_txchan_send(),alt_dma_txchan_space(),alt_dma_txchan_ioctl(),alt_dma_txchan_close();而与DMA接收数据通道相关的函数有alt_dma_rxchan_open(),alt_dma_rxchan_prerare(),alt_dma_rxchan_depth(),alt_dma_rxchan_ioctl()。

alt_dma_txchan_open()和alt_dma_rxchan_open()函数分别打开DMA控制器的发送数据通道和接收数据通道,获得DMA控制器的发送数据通道和接收数据通道的句柄,返回非0值表示成功。

调用alt_dma_txchan_send()函数产生一次DMA发送数据请求。其函数原型为int alt_dma_txchan_send(alt_dma_txchan dma,const void* from ,alt_u32 length, alt_ txchan_done* done ,void* handle)。调用此函数时,length字节长度的数据将从地址from处被发送。当发送结束时,函数返回值为非负则表示DMA传输成功,否则表示传输失败。当传输结束时,回调函数done将被执行,handle为函数done的参数。

DMA接收函数的用法与DMA发送函数的用法大致相同,其函数原型为 int alt_dma_rxchan_prepare(alt_dma_rxchan dma,const void* data ,alt_u32 length, alt_ txchan_done* done ,void* handle)。参数data表示DMA接收数据存放的起始地址。Length表示接收数据的长度,单位为字节。函数返回值为非负表示接收成功。当接收结束时,回调函数done将被执行,handle为函数done的参数。另外,与发送通道和接收通道相关的还各有2个函数。与发送通道相关的函数为alt_dma_txchan_space()和alt_dma_txchan_ioctl()。alt_dma_txchan_space()返回传送到DMA发送信道的发送请求数目。alt_dma_txchan_ioctl()则是执行了与器件相关的控制操作。与接收通道相关的函数为alt_dma_rxchan_depth()和alt_dma_rxchan_ioctl()。alt_dma_rxchan_depth()函数返回DMA接收通道的最大接收请求数。alt_dma_rxchan_ioctl()执行了与器件相关的控制操作。

2 DMA控制器应用举例

在软硬件的调试过程中,有时需要将内存中的一段数据通过串口打印出来,作为调试信息,这时就可利用DMA技术进行数据传输。图2为在SoPC Builder中构建的DMA传输的硬件连接图,实现了SDRAM到串口的数据传输[6,7]。

如下的程序实现了将SDRAM中以chr为起始地址的20个字节的数据通过DMA方式发送到串口。其实现的核心代码如下:

3 结 语

在某雷达信号网络化数字传输系统的研制中,将雷达信号接口单元与网络接口单元分别映射为Nios Ⅱ系统中的2个外设,利用外设间的DMA方式进行数据传输。实践证明,利用DMA方式进行数据传输,CPU可从繁重的数据传输工作中释放出来,提高了CPU进行数据处理的能力。

摘要:详细介绍了NiosⅡ系统中DMA控制器的基本原理,数据传输过程以及DMA控制器中各寄存器的作用。重点介绍了与DMA操作有关的API函数及其使用方法,并通过一个实例描述NiosⅡ系统中如何利用DMA方式将数据从SDRAM传输到串口。实践证明,在同等CPU开销的情况下,利用DMA技术可以将CPU从繁重的数据搬移操作中释放出来,从而提高CPU的数据处理能力。

关键词:NiosⅡ,DMA控制器,DMA技术,SDRAM

参考文献

[1]邹逢兴.计算机硬件技术及其应用基础[M].长沙:国防科技大学出版社,2001.

[2]周立功.SoPC嵌入式系统基础教程[M].北京:北京航空航天大学出版社,2006.

[3]Altera Corporation.QuartusⅡhandbook,volume 4[M].[S.l.]:Altera Corporation,2005.

[4]Altera Corporation.QuartusⅡhandbook,volume 5[M].[S.l.]:Altera Corporation,2005.

[5]Altera Corporation.NiosⅡsoftware developer′s handbook[M].[S.l.]:Altera Corporation,2008.

[6]覃洪英.基于NiosⅡ的DMA传输及调试[J].石油仪器,2010(3):21-23.

NiosⅡ嵌入式系统 篇7

1 双网传真机接入网络

本文设计的双网传真机接入Internet和传真服务器进行通信,通信协议是非实时传真标准协议,通过该传真服务器中转将传真推送到目标传真机,根据目标传真机是双网传真机还是普通传真机,选择对应的Internet网络、PSTN网络进行推送。接入PSTN网络和目标传真机通过T30[1]协议进行通信。通过Internet发送,在扫描稿件时将稿件数据和信息封装成Tiff文件的形式,通过非实时传真标准协议将文件发送到传真服务器,传真服务器判断该传真是发往普通传真机还是双网传真机。如果发往普通传真机,服务器会解析Tiff文件并将解析出的传真编码数据发往普通传真机;如果发往双网数字传真机,则将该tiff文件放到用户目录中,等待双网传真机自动或者手动收取。其在整个双网传真系统中的位置如图1所示。

2 双网传真机系统设计

本文设计的双网传真机以Nios II嵌入式软核为处理器,采用So PC[2]的软硬件协同设计方法进行设计,以求最佳的性能价格比。So PC技术硬件用Altera公司的FPGA技术来实现,软件用C语言编程实现,操作系统平台采用实时操作系统内核μC/OS-II、TCP/IP协议栈使用Niche TCP/IP协议栈。以Altera Cyclone EP1C20为实验板进行系统实现和验证。

根据对传真机功能和性能的分析,提出将耗时、算法复杂、数据处理量大的模块用电路实现,需要提供精确的时序信号逻辑也用电路实现,而对时间要求不苛刻的场合、CPU处理速度能跟上的功能模块用软件来实现。同时尽量利用可以利用的软硬件模块单元,增强系统的稳定性和可靠性,减少重复设计,缩短开发周期。系统设计的结构图如图2所示。

系统开发工具采用Altera公司提供的Quartus II和Nios II IDE。在Quartus II软件内,使用So PC Builder开发硬件模块,形成硬件设计文件和自定义软件开发环境。Nios II IDE是基于GNU C/C++编译器和Eclipse IDE的,设计者可以很快开发、调试和仿真Nios II系统,开发模块驱动程序、板级支持包(BSP)及用户程序。

2.1 双网数字传真机系统硬件设计

本文设计的双网数字传真机以Altera Nios II软核为处理器、CIS扫描器件、电机、TPH打印器件、CIS、电机、TPH打印驱动板、Alter EP1C20开发板、Modem为硬件平台,通过Altera的FPGA实现硬件电路模块,主要需要实现的电路模块有A/D采样控制逻辑模块、图像二值化处理模块、MH[3]编码模块、MH译码模块、扫描、打印、电机时序驱动逻辑模块。

(1)A/D采样控制逻辑模块

通过CIS扫描器件把原稿的光信号转化为电信号,将CIS扫描器件获得的模拟电信号通过A/D转换器件转化为8 bit的数字信号输入图像处理二值化模块。A/D采样控制逻辑完成A/D器件的时序驱动。

(2)图像二值化处理模块

本模块输入数据为A/D转化后的每像素8 bit数据,根据扫描原有文本、灰度图像、图文并茂3种类型自动判别选用不同的算法,进行伪灰度处理,即根据抖动表(Dither)进行二值化处理,得到人眼感觉有层次(灰度变化)的二值图像,即半色调图像(Halftone)。灰度值图像转化为二值图像的算法原理是:通过实际的中间色调信号与存储在ROM中的阈值信号比较形成二值图像信号。

设输入的图像信号为Uij,与之对应的阈值为Dij,Dij称之为Dither矩阵或网孔表,则比较的结果为Cij:

式中Uij是图像信号经过抽样、量化后的数字信号,Dij是根据一定的法则形成的阈值,也是数字信号。常用的Dither表是Bayes型矩阵,其方法是先构造出2×2矩阵,再用递推公式构造Dij,其基本的2×2矩阵为:

递推公式为:

式中n=22、23,…,2r。U为n×n的全1矩阵。

一般传真机采用的抖动表数据是8×8的Bayes矩阵,在实验中采用该方法处理得到的效果并不理想,图像对比度不是很强烈,整体效果较暗。因此作者根据FPGA硬件处理的特性,采用16×16的抖动矩阵对传真图像进行处理。采用该方法适应了FPGA芯片拥有丰富寄存器资源的特点,用来存储改进抖动表,在不影响处理速度的情况下,明显改进图像的处理效果,提高图像对比度,图像效果比较接近原图。从得出的效果图可以明显看出,改进方案比原有Bayer抖动表做抖动的图像对比度要好得多,代价为增加了一千多位寄存器。从而较好地解决了对图像二值化处理中对比度不强的问题。

(3)编码模块

将二值化后的图像数据经一维MH编码后交付通信模块使用。MH编码是一维改进的Huffman编码,是ITU-T T.4[4]标准中的一部分,ITU-T T.4标准的全称是三类传真机终端文档传输标准。MH编码具有效率高、容易扩展等特点。三类传真机一般都实现了一维MH编码和译码,有的也实现了二维MR编码,本文用硬件电路实现一维MH编码。对于二值信源来说,一幅传真图像是由扫描线上的像素组成的。而每一扫描线又总是由一些黑像素和白像素组成。将连续发生的黑像素为连‘1’,白像素为连‘0’,也称为黑游程和白游程。连‘1’的个数称为黑游程的长度,连‘0’的个数称为白游程的长度。黑白游程交替出现。针对游程编码,哈夫曼MH码元很好地解决了传真信源的压缩问题,是T.30协议中规定的编码方式之一。实现时通过读取像素信息存储FIFO判断是黑游程还是白游程。当发生了黑白游程切换时,根据黑白游程计数形成码表访问地址,根据地址查找码表得到对应的编码码元。MHC编码硬件模块图如图3所示。

该编码数据将封装在T30协议中进行传输,T30协议规定的每样张的数据传输格式如图4所示。其中EOL为End Of Line,即行同步码,格式为000000000001。同步码是紧跟在每一行扫描线之后的特殊码字,它在有效数据中不可能出现,因而在突发错误之后能重新建立同步。特殊地,每页文件的第一个数据之前也设置一个EOL。

填充码fill的作用是保证每扫描线,即每一行的数据传输时间不小于某一规定时间T,T为发送一行编码数据所用的最小时间,ITU-T T.4标准建议中规定T=20 ms,不足20 ms时间应加入填充码,其格式为长度不一的全“0”串。RTC为返回控制码,其格式为6个连发的EOL码,表示一页文件码的传输结束。

在通过Internet进行传真时需要将MH编码数据封装在TIFF文件中,封装成TIFF文件的过程通过软件模块实现。

(4)译码模块

基于FPGA硬件电路实现图像MH译码模块,采用快速译码策略。在译码时,由于码元不等长且数据量较大,构造译码树较困难,应采用快速译码方法。快速译码算法的基本思想是采取多步合一的方法,一次输入的不是一个码元,而是多个码元。根据码表的特点可知,白游程最短码长是4,黑游程最短码长是2。由此在译码开始时,码元是以穿行的方式进入译码电路,对白游程可以直接读取4 bit,进入译码查找,若非完整编码再逐位读取;对黑游程可以直接读取2 bit,进入译码查找,若非完整编码再逐位读取。译码的具体算法如下:

①按游程类型读取对应最小编码长度编码;

①在形成码中进行匹配,若成功,按游程类型继续读取对应最小编码长度编码,转入③;否则转入④;

③终结码中匹配,失败则读取下一位继续匹配,直至成功;

④在终结码中进行匹配,匹配成功则跳入(1)重新开始;否则读取下一位编码,转入②。重复以上操作,直到本行结束;

(5)扫描、打印、电机驱动逻辑。

本硬件模块采用FPGA实现,主要提供CIS扫描器件、TPH打印器件、电机的驱动时序信号。

2.2 双网数字传真机软件设计

操作系统采用实时操作系统内核μC/OS-II,硬件抽象层HAL[5]由Nios II开发工具生成,TCP/IP协议栈使用移植到μC/OS-II上的Niche TCP/IP协议栈。Altera EP1C20开发板含有SMSC LAN91C111-NE MAC/PHY芯片,该芯片完成网络中MAC/PHY功能。软件主要完成系统控制和T30协议通信过程、非实时传真通信过程、Tiff[6]文件创建、Tiff文件解析。由于μC/OS-II是多任务的实时内核,故系统划分和设计了以下任务:

(1)Init任务:初始化任务,建立任务之间的通信量。

(2)TCP/IP协议栈任务:Inet_main任务,该任务负责TCP/IP协议的运行。

(3)clock tick任务:系统ticks任务。

(4)T30发送任务:实现发送一封传真的T30通信过程。

(5)T30接收任务:实现接收一封传真的T30通信过程。

(6)SMTP发送任务:通过SMTP命令EHLO、AUTH、RCPT、MAIL、DATA、QUIT和传真服务器进行对话,基于SMTP协议实现非实时传真通信协议,即按照服务器接收的发送传真格式发送一封特殊邮件到服务器。其中传真数据文件以附件的方式附在这封有固定格式和含义的邮件中,图像数据需要封装成Tiff文件的形式,附件发送时需要按照SMTP协议将数据重新编码为base64格式的编码数据才能进行发送。该封邮件内容固定格式中含有账号密码、发送参数、发往目标号码列表信息等内容,是非实时传真通信协议中规定的内容。

(7)POP3接收任务:通过POP3命令USER、PASS、STAT、RETR、QUIT实现与传真服务器的对话,从传真服务器收取一封特殊的邮件,该邮件的附件即为传真图像数据Tiff文件。收取下来的Tiff文件是base64编码数据,首先需要将文件数据进行base64解码还原出Tif文件。

(8)Tiff文件解码任务:Tiff文件是标签式文件,按照Tiff文件的格式和对应标签含义解析出Tiff文件的信息和具体的图像数据,然后触发MH解码电路模块工作并驱动电机和TPH打印模块打印黑白像素点。

(9)创建Tiff文件任务:根据Tiff文件信息标签组建Tiff文件。

双网传真机系统在Altera Cyclone EP1C20实验板、外加驱动板、Modem等硬件基础上开发成功,通过反复软硬件调试,软硬件运行稳定、达到系统功能指标。利用了μC/OS-II能够稳定、安全处理并发多任务这一特点,软件模块稳定运行,体现出较高的实时性和可靠性,取得了较好的实际效果。本系统可以自己设计和生产带Altera FPGA芯片的实验板,集成Ethernet MAC/PHY芯片和Modem芯片等,降低系统成本。同时本系统还可以与PC机联网,通过PC机向双网传真机发送文件和接收文件,这样可以提高工作效率并减少纸张浪费,适合于公司集团用户作为传真中转工作机,具有一定的市场应用价值。

参考文献

[1]ITU-T Recommendation T.30Procedures for document facsi-mile transmission in the general switched telephone network[S].2005.

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

[3]刘立柱.网络传真通信原理与技术[M].北京:国防工业出版社,2006.

[4]ITU-T Recommendation T.4Standardization of Group3facsimile terminals for document transmission[S].2003.

[5]Nios Ⅱ软件架构解析[M].西安:西安电子科技大学出版社,2007.

上一篇:优化网络教学论文下一篇:意外运动训练