- UID
- 1023166
- 性别
- 男
- 来自
- 燕山大学
|
摘要:提出了一种基于Nios II嵌入式软核处理器的便携式二维条码识别系统的实现方法。该系统在Altera的Cyclone FPGA上实现,使用集成在QuartusII中的SoPC Buider开发组件配置生成片上系统;同时采用Nios II的定制指令提高系统性能,使得硬件执行运算速度快的优点和Nios II CPU的特点相得益彰。系统以数字水印的方式实现了基于二维条码的信息隐藏,以进行防伪和知识产权保护。 关键词:二维条形码 数字水印 定制指令 Nios II 二维条码是为了克服一维条码容量小、信赖数据库的存在、不能表示汉字等缺点而产生的。二维条形码系统是非网络环境下的高安全性信息载体系统,可同步储存照片、虹膜、指纹等生物信息及文字、声音、图像等大量内容,是实现大容量高可靠性信息存储、携带、自动识别的理想系统。现在应用最为广泛的二维条码是美国 SYMBOL公司发明的PDF417码,PDF417码是二位条码的美国标准和欧盟标准。我国也已经制定了PDF417码的国家标准GB/T17172 ——1997。二维条码较磁卡、IC卡的一个明显优势就是成本极低,可在PVC或纸卡上制作,成本几角钱。另外,二维信用条码使用寿命是磁卡、IC卡的十倍。
一个PDF417码最多可容纳1850个字符或1108字节的二晕制数据或2710个数字,其结构见图1。每行从左到右分别为左空白区、起始符、左行指示符号字符、1~30个数据符号字符、右行指示符号字符、终止符、右空白区。 二维条码的一个很重要的特点是可以引入加密机制,信息一旦生成便不可修改。当建立了自己的编译码系统时,就可以在编码过程中加入各种加密形式。比如在二维条形码表面加上水印,在译码时采用同一个水印解密的方法就可以实现条码信息的加密与防伪。在这里,数字水印就是基于二维条码进行信息隐藏的技术。可以利用变形技术对PDF417码符号字符中的各组成单元宽度加以适量的变动,采用误差累积的方式实现隐藏信息的嵌入和提取。由于二维条码使用广泛、体积小、容量大而且人眼无法分辨,因此在二维条码加入水印还有不易引起察觉、携带方便、安全性高、抵御打印扫描攻击、隐藏信息量大等优点。 我国乃至全球都在大力推行二维条码技术。随着二维条码技术的普及,对二维条码识别系统的需求日益增加。在信息安全、现代物流、现代制造、电子商务、电子政务等领域,二维条码识读系统都会有良好的应用。 1 便携式二维条码识读系统的总体设计
本系统要求在FPGA片内利用SoPC技术实现便携式的二维条码识读。它不信赖后台数据库的支持,通过对二维条码的扫描即可将得到的大容量的承载信息(包括文字、头像、指纹等个人信息)在LCD上显示,并可通过USB接口将信息拷贝,或通过RS-232接口将信息上传给PC机,也可以通过GPRS将获得的信息方便快捷地发往数据中心作验证。 本系统使用集成在QuartusII中的SoPC Builder开发组件配置生成片上系统。SoPC Builder是一个功能强大的基于图形界面的片上可编程系统的定制工具,可以在短时间内完成用户定制的SoPC设计。根据应用的需要,应从SoPC Builder库中选择IP模块、存储器、外围接口和处理器,并且配置生成一个高集成度的SoPC系统。因而选取以下一些IP模块组成片上系统:Nios 32bit CPU、Boot Monitor ROM、Communication UARTA、Debugging UART、Timer、User PIO、LCD PIO、External RAM Bus、External Flash Interface。SoPC Builder能自动产生每个模块的HDL文件,同时自动产生一些必要的仲裁逻辑来协调Avalon Bus上各功能模块的工作。 系统以Altera公司的用于可编程逻辑器件的第二代软核处理器Nios II为核心。Nios II是基于哈佛结构的32位RISC通用嵌入式处理器软核,能与用户逻辑相结合,适配到Altera公司的FPGA中。性能超过200DMIPS。它特别为SoPC设计了一套综合解决方案。本系统采用Nios II的经济型(Nios II/e)。片上系统方式能实现主功能,使系统集成度高、高等性强。 系统结构大体分为三层,由低到高分别为系统硬件层、操作系统层、应用软件层,如图2所示。 最底层的系统硬件层是系统的物理设备基础,提供操作系统和应用软件的运行平台和通信接口。系统的硬件平台在Altera公司的Nios II Cyclone嵌入式系统开发板上实现。 第二层的操作系统采用μClinux。这一层提供任务调度以及设备驱动。同时提供中断来实现系统对外界的通信请求的实时响应,如对条码扫描的控制、对 GPRS通信端 口的控制等。使用操作系统可以提高系统的运行效率和可靠性。 最上层实现条码译码核心算法。该算法能对采集到的条码图像进行高效的处理和匹配,实现译码。这部分工作采用C语言在Nios II的集成开发环境(IDE)中实现。 图3 2 系统硬件的设计与实现 CMOS图像传感芯片为光电转换元件,用于采集二维条码图像,直接输出为数字信号。由外部扩展SRAM存储该数据,再送到Nios进行图像处理。当一组二维条码信息的识别完成时,服务程序控制I/O接口给出中断申请信号,Nios响应此中断申请,进入中断服务程序。译码后的二维条码数据被送入LCD进行显示。动态采集到的二维条码图像存储在SRAM内,而软件程序和PDF417码本都储存在FPGA芯片外扩的FLASH内。 系统硬件电路主要包括以下七个部分:条码图像采集模块、Nios主控模块、GPRS无线通信模块、存储器扩展(FLASH、SRAM、CPLD)模块、输出接口(RS-232、USB模块、照明控制模块。其硬件平台结构见图3。 2.1条码图像采集模块 条码扫描器芯片采用OmniVision OV7649黑白图像传感芯片,该芯片分辨率为640%26;#215;480像素,成像速度为30帧/秒,采取逐行扫描方式,输出为数字信号。条码图像采集的程序流程是:首先Nios初始化OV7649的各个寄存器,主要包括状态寄存器(STA)、数据和时钟控制寄存器(CLKRC)和自动增益控制寄存器(AGC)的设置;然后查询等待,条码图像被OV7649采集进入数据寄存器后,通过DMA方式存入SRAM。Nios再从SRAM中提取数据进行译码。这一部分的工作原理见图4。 2.2 Nios主控模块 Nios软核CPU实现主要的控制功能。当OV7649准备采集条码图像数据时,Nios发出一个初始信号,控制SRAM重新分配地址块,同时 OV7649开始采集条码图像数据。采集完数据并送到SRAM中存储后,Nios开始调用译码程序对图像进行译码。译码完成后,Nios控制条码信息在 LCD中显示。 2.3 存储器扩展模块 该模块包括FLASH、SRAM、CPLD三个部分。其中,CPLD用于存储配置FPGA的程序,FLASH用于存储系统软件,而SRAM用于存放动态采集到的大量条码图像数据。按照量化位数的不同,选用不同容量的SRAM作为外部扩展,这里选择了IDT71V016,它的容量是 64K%26;#215;16Bit。 3 系统软件的设计与实现 这里不采用现有条码扫描大多采用的直接用模拟电路探测条码的条空分界信号的方法,因为这种方法扫描结果将使条空分界线钝化,降低了以后操作中信号检测的准确性。而是将条码图形通过内置CMOS扫描仪整个读取,然后通过嵌入式编程完成条空分界。这种方法的译码准确率要高,而且采用编程的方法不会有前者存在的对扫描角度要求严格的问题。 |
|