高速编码器

2024-06-11

高速编码器(共7篇)

高速编码器 篇1

0 引言

吉比特无源光网络 (GPON) 是当前主流的无源光接入网技术。在其中引入RS编解码器可大幅度降低系统的误码率, 提高信息传输的可靠性。

传统RS编码器数据吞吐率为8位/时钟。而GPON系统的数据传输速率为1.244Gbit/s, 或2.488Gbit/s, 并且随着技术的更新将会更高。这就使得传统RS编码器无法满足GPON系统高速数据传输的要求。为此需要为GPON系统设计并行RS编码器以提高数据处理的速度。

文中针对GPON系统特殊的数据格式, 设计实现并行RS编码电路, 应用VerilogHDL语言编程并在QuartusII上进行功能验证。结果证明该编码器能够同时处理32位数据并正确编码, 满足GPON系统高速数据传输的要求。

1 RS编码

1.1 RS编码原理

RS码是分组线性循环码的一种, 具有严密的代数结构。通常可以采用乘法电路或除法电路来实现RS编码。前者得到非系统码字, 译码较复杂。后者得到则是系统码, 译码简单。因此为降低解码的复杂度, 常采用除法电路实现RS编码。

RS (255, 239) 码中的运算都是在伽罗华域中进行的。GPON协议规定RS码的本原多项式为:

p (x) =x8+x4+x3+x2+1

生成多项式为:

g (x) = (x-α0) (x-α1) (x-α2) … (x-α15)

则根据编码原理有:

C (x) =xn-km (x) +r (x) 其中, C (x) 为码字多项式, m (x) 为信息多项式。而r (x) 是多项式xn-km (x) 除以g (x) 的余式, 即编码后得到的校验码。

可见RS编码过程可描述如下:首先将输入的信息多项式移 (n-k) 位, 随后除以生成多项式g (x) , 得到的余式即为输出校验码。

1.2 RS编码的硬件实现

基于编码原理, 以除法电路实现RS编码运算。电路具体结构如图1所示。

基本RS编码器电路由伽罗华域乘法器、加法器、8位并行移位寄存器及开关电路和选择器组成。

电路工作原理:首先全部寄存器清零。开始工作时, 利用选择开关使输入信息码元直接输出, 同时送入除法电路进行运算。经过239个时钟, 运算完毕, 此时信息码元输出结束。寄存器中存储的数据即为编码所得的16位校验码。此后选择开关置向上方并且关闭门电路, 将16个移位寄存器中的数据依次右移输出, 接在信息码元之后形成校验码元。

2 GPON中的RS编码器

2.1 GPON中的FEC功能

协议规定, GPON系统中的ONT或是OLT均可选择性的采用FEC功能, 具体编码形式为RS (255, 239) 编码。该码码元长度为255字节, 其中信息元239字节, 校验码16字节。它能够纠正8个字节的突发错误和57字节的连续比特错误。

由于GPON系统是基于帧传输的, 具有固定帧长, 因此具有特殊的编码格式。

以速率为2.488Gbit/s的GPON下行帧为例分析:GPON下行帧周期为125μs, 因此每帧38880字节。若进行RS (255, 239) 编码, 每一帧将包含152个完整的255字节码字, 以及一个120字节的短码码字。这就要求在编码时, 将短码以零补足239个字节, 计算结束后去除零字节。同样在解码时也要进行相同的操作。

2.2 GPON中32位并行RS编码器的实现

基本RS编码电路的数据吞吐率为1字节/时钟, 而GPON的传输汇聚层传输数据为4字节/时钟, 因此需要进行并行处理。

根据编码原理以及并行操作的目标将整个编码器划分为3大模块。分别是输入控制模块、并行编码计算模块以及输出控制模块。

并行编码计算模块负责完成32位数据的直接编码计算功能, 直接输出并行信息数据及获得的校验码字。

输入输出控制模块则完成对输入输出数据格式的调整及对整个电路的时序进行控制的作用。同时, 输入输出控制模块还要负责对GPON帧中的短码进行处理, 即编码前的补零和编码后的去零操作。

2.2.1 并行编码计算模块

并行编码计算模块是整个编码器的核心, 实现32位数据的并行编码运算。基于串并转换的思想将图1所示的串行反馈移位寄存器电路直接改造为可同时输入4路数据的并行编码电路。具体操作如下:计算串行电路在4个字节的数据输入完成后各寄存器的存储状态。按照他们与4个输入信号及寄存器初始状态之间的关系来重新连接电路实现并行结构。最后, 设计计数器来控制信息位、校验位的输出即可。

通过计算推导得到并行RS编码计算电路如图2所示。

2.2.2 输入控制模块

输入控制模块首先实现对输入数据格式的调整。根据RS (255, 239) 编码规则, 其信息码元为239个字节, 完整码字255字节, 当4路数据并行输入时, 必会出现两组码字交接的情形。若直接将这样的数据送入编码模块必将得到错误的校验码。为此需要对输入数据进行格式调整, 在每255字节数据前填一个字节0, 使得总字节数刚好是4的倍数, 每一组码字可以完好的并行输入。同时根据编码原理, 在每组码字前填零并不影响编码结果, 所以上述的格式调整可以实现正确的编码。

本文利用RAM存储器来实现数据格式的调整。为了便于观察输出结果, 在设计时将32位数据分成4路, 分别以datain1~datain4表示。4路数据在系统时钟的作用下依次写入RAM中。其写地址无需做特殊处理, 只要按照时钟顺序加一递增即可。分别以dataout1~dataout4表示RAM调整后的输出数据, 为实现数据格式的调整, 需要在同一时钟下选择不同存储单元的数据输出。因此需要对读地址要特别设置。通过对输入格式及目标格式的对比观察发现第一组数据中, dataout4的读地址应该比其他输出的读地址少1;第二组数据中, dataout4与dataout3的读地址相同且比其他两个少1;依次类推。4组数据的情况均不同所以需要以4种状态来表示。

在每一种状态下控制读地址的程序段如下:

//用计数器控制读写地址选择不同存储单元中的数据读出

always@ (posedge clk)

begin

case (state)

2’b00 : rd_addr1<=wr_addr;

2’b01 : rd_addr1<=wr_addr;

2’b10 : rd_addr1<=wr_addr;

2’b11 : rd_addr1<=wr_addr;

endcase

end

always@ (posedge clk)

begin

case (state)

2’b00 : rd_addr2<=wr_addr;

2’b01 : rd_addr2<=wr_addr;

2’b10 : rd_addr2<=wr_addr-1;

2’b11 : rd_addr2<=wr_addr;

endcase

end

always@ (posedge clk)

begin

case (state)

2’b00 : rd_addr3<=wr_addr;

2’b01 : rd_addr3<=wr_addr-1;

2’b10 : rd_addr3<=wr_addr-1;

2’b11 : rd_addr3<=wr_addr;

endcase

end

always@ (posedge clk)

begin

case (state)

2’b00 : rd_addr4<=wr_addr-1;

2’b01 : rd_addr4<=wr_addr-1;

2’b10 : rd_addr4<=wr_addr-1;

2’b11 : rd_addr4<=wr_addr;

endcase

end

如此调整, 便可按目标将所需数据读出。不过此时数据的顺序还没达到最终目标, 还需要将RAM的各位输出顺序再进行一次调整。

仿真结果表明, 每一组255个字节的起始端都被填上一个0字节, 补足4的倍数, 可以直接输入到并行编码计算模块进行编码操作。

此外, 对于GPON数据帧来说, 还有一个未满239字节的短码需要处理。此处同样利用RAM实现短码数据的填零、去零操作。由仿真图可见, 短码信息前被填加34组零补足240个字节, 进而可以送入后续模块进行编码处理。

2.2.3 输出控制模块

输出控制模块的功能是将编码后的数据调整成原本的数据格式。设计中同样采用RAM来实现数据的调整。通过控制RAM的读写地址将所需数据选择读出, 进而实现数据格式的调整。具体操作与输入控制模块类似, 这里不在赘述。

2.2.4 GPON中32位并行编码器的总体仿真

将输入输出控制模块以及并行编码计算模块连接在一起得到整体的32位并行RS编码器。仿真结果如图3-4所示。

图3-4分别为完整码字、短码码字在编码后得到的校验码字, 结果与MATLAB计算结果一致, 证明编码模块结构正确。

2.2.5 结果分析

由以上仿真结果可见, 文中所设计的编码器可以实现32位输入数据的并行编码, 同时处理32位数据, 运算速度较传统编码器提高4倍。输入输出控制模块可以将数据格式进行正确的调整, 进而可以在输出端获得正确的编码结果。同时本文针对GPON特殊的帧结构, 在设计中考虑到其中的最后一组短码, 对其进行特殊处理, 使得所设计的编码器能够处理完整的GPON的数据帧。从整个编码器的编译及时序分析报告中可以见到, 本文所设计的并行编码器资源消耗较少, 而且工作频率可达159.18MHz, 满足设计要求。

3 结束语

文中设计的RS编码器可以同时处理4个字节的并行数据, 并考虑到GPON数据帧的特殊结构, 满足对GPON系统数据进行编码的要求之外也大大提高了编码运算的速度, 符合GPON系统高速数据传输的要求。

参考文献

[1]肖洁.光纤传输系统中前向纠错芯片的设计与实现[D].东南大学, 2006.

[2]陈懿.ReedSolomon编译码算法研究与硬件实现[D].南京理工大学, 2010.

[3]吴辉.基于新G.984系列协议的GPON终端—物理层和传输汇聚层关键模块设计[D].南京理工大学, 2010.

[4]周利岗.RS码的硬件实现研究[D].南京邮电学院, 2004.

[5]刘文国.基于FPGA的RS255, 223编解码器的高速并行实现[D].电子科技大学, 2009.

[6]党鑫.GPON终端TC成帧子层关键技术研究[D].南京理工大学, 2009.

[7]袁强.GPON中FEC编解码器的研究与实现[D].电子科技大学, 2006.

[8]朱海坤.ReedSolomon码编解码器的VLSI实现研究[D].复旦大学, 2002.

[9]谭丹, 聂雅琴, 蒋燕妮.高速并行ReedSolomon编解码器[J].国外电子元器件, 2008 (12) .

[10]戴小红, 潘志文.ReedSolomon编译码器的设计与FPGA实现[Z].东南大学移动通信国家重点实验室.

[11]陈文礼.RS纠错编码原理及其实现方法[M].

高速编码器 篇2

JPEG标准是由联合图像专家组(Joint Photographic ExpertsGroup)提出的图像压缩方法,由于其对连续色调、多级灰度的静止图像具有优良的压缩特性而成为国际上通用的标准。在JPEG标准ITU-T.81[1]所定义的四种不同工作模式中,基于DCT的顺序型模式(Baseline JPEG)应用最为广泛。AMBA总线[2]是由ARM公司推出的片上总线标准,随着ARM系列微处理器的广泛应用而成为流行的嵌入式系统总线标准。

本文提出了一种基于AMBA总线的JPEG编码器的设计方法,包括整体架构方案和各子模块设计方案,编码器作为独立的IP核,可以直接集成到嵌入式系统中对图像进行编码。在数码相机等对图像编码实时性有较高要求的嵌入式系统中,编码速率成为编码器的关键性能指标。本编码器合理地设计了整体架构和流水线结构,对流水线中DCT等直接决定流水编码速率的模块,采用了特殊的实现方法;同时,选用两路硬件握手模式的DMA接口与外部进行数据传输,提高了数据的吞吐效率。通过将JPEG编码器集成到AMBA总线系统中进行仿真测试及FPGA验证,并与软件编码结果对比,所设计的编码器编码结果正确,在系统中使用效率在70%以上,核心部分(8*8编码单元)的流水编码速率达到1像素周期,从而较好地满足了实时编码的要求。

1 编码器设计方案

1.1 整体架构

图1显示了JPEG编码器的架构框图。JPEG编码器由AHB接口模块(AHB Interface),存储器寄存器模块(Mem.&Reg.File),色彩空间转换模块(Color Space Converter),编码核心模块(JPEG Encoder Core)以及编码控制模块(JPEG Encoder Controller)五部分组成。

其中,AHB接口模块进行总线和内部的信号转换;存储器寄存器模块对存储器和寄存器进行管理,供外部总线和编码器内部访问使用;色彩空间转换模块将RGB格式的输入数据转换为YCbCr格式以进行编码;编码核心模块完成对一个8*8的编码单元编码的全过程;编码控制模块处于居中调度的地位,产生各模块输入信号的时序,控制各个模块协同工作。

为了提高编码器的编码速率,主要从以下两方面入手:一是合理设计编码控制模块及数据存储和传输方案,以提高编码器在系统中的使用效率,减少空闲时间;二是对编码核心模块进行流水线结构设计,提高其流水编码的速率。

1.2 编码控制模块及数据存储传输方案设计

JPEG编码器作为独立的IP核,具有标准的AHB从设备的接口,可以集成到AMBA总线系统中。由于在编码过程中需要持续输入图像源数据并输出编码结果,数据吞吐量较大,而在实际的AMBA总线系统中,如果频繁使用微处理器进行数据交换、控制命令的操作,将会大大影响系统的整体运行效率。

为了在编码过程中尽量减少微处理器的参与,决定以一幅图像作为外部微处理器控制编码器工作的单位。微处理器使用读写寄存器及中断的方式控制编码进程:在一幅图像编码开始之前,微处理器配置图像的色彩格式、图像包含的8*8编码单元数量等信息,以及在编码过程中用到的色彩转换系数、量化系数表等参数,然后启动编码器编码;在一幅图像编码结束之后,编码器发出中断信号通知总线,微处理器从状态寄存器中读出当前图像编码结果的长度等信息,一幅图像编码结束。

由于存储器容量的限制,不可能一次缓存整幅图像的数据,这里采用两路DMA接口,输入和输出数据各用一路,使用硬件握手模式,由编码器根据当前编码状态发出输入输出数据的传输请求信号,外部DMA控制器响应请求,发起数据传输并在传输结束后给出应答信号。这样,微处理器只需在图像编码之前对DMA控制器进行相应配置,即可在整个编码过程中实现输入输出数据的独立并行传输,不需微处理器的参与,从而有效地提高了系统效率。

编码器使用2块双口RAM分别存储输入源数据和输出编码结果,为了防止读写冲突,输入RAM外部只写内部只读,而输出RAM外部只读内部只写。它们的位宽采用与总线位宽相匹配的32bit。输入RAM的大小为256*32bit,可以一次缓存1个16*16的像素块或者4个8*8的像素块的数据;输出RAM大小为512*32bit,作为一个环形FIFO结构使用。

整个编码器的使用效率与输入输出数据传输请求信号的发出时机是密切相关的,为了避免由于输入RAM数据空或者输出RAM数据满导致编码器处于停滞状态,做了如下设计。

对于输入RAM,由于外部AHB总线输入数据的速率(全速情况下为32bit周期)高于内部使用数据的速率(8bit周期),因此仿照乒乓原理设计了输入源数据的请求信号逻辑,不等当前RAM中数据全部使用完毕就发出下一次数据传输请求,考虑到总线环境对输入数据传输速率的影响,设计成可配置的方式,根据总线环境,可以在当前RAM中的数据使用了25%,50%,75%等不同时机发出下一个传输请求信号,尽可能减少编码器的空闲时间。

对于输出RAM,由于其内部实现为环形FIFO结构,编码器将编码结果循环存储到这块区域中,在达到单次DMA传输的数据量后发出请求信号由外部DMA读取,设置读写指针监控RAM中的数据状态,在数据满时暂停编码,发出中断信号。只要恰当地选取单次DMA传输的数据量,例如设置为RAM总容量的1 4(128个字),即可基本保证输出RAM中的数据及时得到传输,减少这类中断的产生以及由其引起的编码器停滞。

1.3 编码核心模块的设计

编码核心模块是JPEG编码器的核心部分,实现对单个8*8像素块编码的功能。它接收由编码控制模块产生的控制信号和串行输入的64个8bit数据,经过编码后将编码结果以32bit为单位返回编码控制模块。

如图2所示,该模块主要的算法流程包括二维DCT变化之字形重排(2D-DCT&Zigzag),量化(Quantity),游程编码(Run-length Encoder)和哈夫曼编码(Huffman Encoder)四部分。由于哈夫曼编码对于游程编码存在反馈信号,为了便于控制,在这两部分之间加入一个双口FIFO进行缓冲,该FIFO深度很小,用寄存器实现即可。最后,根据标准的规定,需将码流中为“FF”的字节替换为“FF00”,这一功能由编码检查器(Code Checker)来实现。

基于上述考虑,可以将编码核心模块划分为图2所示的6个功能独立的部分,形成一个6级流水线结构,在级与级之间传递控制信号和串行数据。如果能够将每一级使用的时间控制在64个周期以内,就可以使得整条流水线连续工作而不存在等待时间,整个模块的流水编码速率将达到1像素周期。

在流水线各级中,量化级采用非恢复型除法器(non-restoring divider)[3]实现量化功能,游程编码级、哈夫曼编码级可以在数据串行输入的同时对数据进行分析处理,以上各级都能够比较容易地在64个周期的流水时间内完成。因此,整个流水线的瓶颈在二维DCT变换这一级。一般地,二维DCT运算可以分解为2次一维DCT运算来进行,一维DCT则可以通过快速算法来实现[4]。这样做虽然可以得到一个较理想的速度面积比,但是这种实现方法完成8*8的二维DCT最快也要260个周期左右[5],无法满足设计中对流水时间的要求。

本设计不采用二维DCT的快速算法,而是采用了余弦乘法值查表结合乘法器、累加器的使用来完成二维DCT运算。具体地,固化11bit的二维DCT余弦乘法值表到内部ROM中,实现64路并行的11*8定点乘法器及累加器,在64个8bit串行数据输入的同时,通过查表取出相应的11位余弦乘法值,与当前输入数据相乘并累加,这样可以在64个数据串行输入结束的5个周期内,完成二维DCT运算,完全满足了对流水时间的要求。同时,选用改进的Booth型乘法器[6]结构,并仔细优化余弦乘法表,利用余弦值的对称性,减少其中的冗余项目。通过上述设计方法,使得二维DCT部分在保证流水时间达标的前提下,其面积也控制在可以接受的范畴之内。

2 测试与验证

按照前述的设计方案完成整个编码器的RTL设计后,将编码器集成到具有AMBA总线的SOC系统中,进行了测试和验证。

2.1 测试环境的建立

如图3所示,搭建验证平台进行测试。整个平台由5部分组成:待测试的JPEG编码器,DMA控制器,外部存储器SRAM,总线主设备AHB Master以及总线仲裁器AHB Arbiter。

其中,DMA控制器使用Opencores上的开源IP核,该IP支持多通道硬件握手的链模式传输;SRAM用来存放输入源数据、编码结果以及量化系数表;AHB Master用来对JPEG编码器和DMA控制器的寄存器进行配置,测试中使用的是JTAG接口,AHB Arbiter则对总线进行简单地仲裁。

验证平台搭建完成之后,选取不同尺寸、特点的图像作为输入源数据,分别进行RTL仿真和FPGA验证。RTL仿真是使用Cadence公司NC-Sim6.0进行的。在仿真过程中,通过生成的Log文件结合仿真波形验证编码器功能是否正确,编码速率是否达到设计的要求。使用Altera公司的StratixII型号的FPGA以及配套的开发板进行FPGA验证,JTAG接口通过并口与本地PC机相连,即可通过PC机访问AHB总线的地址。DMA控制器和JPEG编码器则使用QuartusII8.0在60M的时钟约束下综合后下载到FPGA中。

2.2 测试结果

对于同一bmp格式图像,将FPGA验证输出的编码结果加上文件头组装成JPEG文件,与Windows系统自带的软件编码结果进行对比。图4为对一幅图像测试的结果。JPEG编码器编码的图像、软件编码的图像与源图像三者几乎完全一致,没有出现失真现象。使用编码图像相对于bmp格式源图像的PSNR值作为评价指标,JPEG编码器编码图像的PSNR值为41.832763,软件编码图像的PSNR值为41.831751,相差在10-3db数量级,这些微小的差别是在DCT变换和量化的舍入过程中造成的,难以绝对避免。对30幅各种类型的图像重复进行了上述对比测试,均得到了相同的结果,这也就证明了JPEG编码器功能的正确性。

图5选取了编码器整体工作情况的仿真波形和二维DCT流水工作的波形。由波形可以看出,在实际的总线环境中编码器的整体使用效率在70%以上;二维DCT模块可以在输入数据串行输入完毕的5个周期之内完成DCT变换,满足了对流水工作时间的要求,编码核心模块的流水线各级无停滞地工作,流水编码速率达到1像素周期。

以上测试结果表明,所设计的JPEG编码器编码结果正确,无论是整体编码效率还是核心模块的流水编码速率都达到了预想的设计目标,并且通过了FPGA验证,具备了在实际SOC系统中的应用价值。

3 结束语

从SOC系统的实际应用出发,设计了具有标准AHB从设备接口的JPEG编码器IP核。按照高速编码的设计要求,阐述了整体架构方案和核心编码模块的设计方法。所设计的JPEG编码器能够方便地集成到AMBA总线的SOC系统中,经过仿真测试和FPGA验证,编码器功能正确,整体使用效率在70%以上,核心部分的流水编码速率达到1像素周期,完全能够满足数码相机等需对图像进行高速实时编码的应用要求。

摘要:提出了一种基于AMBA总线系统的JPEG编码器的设计方案。通过总体架构方案和各个子模块的优化设计,在编码器的整体和局部两个层面提高了编码速率。通过仿真测试和FPAG验证,所设计的JPEG编码器在实际AMBA总线系统中正常工作,整体使用效率在70%以上,其核心部分(8*8的编码单元)的流水编码速率达到1像素/周期,完全可以满足数码相机等对图像进行实时编码的系统的需求。

关键词:JPEG编码器,AMBA总线,高速编码

参考文献

[1]CCITTT.81.Information Technology Digital Compression and Codingof Continuous Tone Still Image Requirements and Guidelines[EB/OL].http://www.itu.int/ITU-T/publications/recs.html.

[2]AMBASpecification(Rev.2.0)[EB/OL].http://www.arm.com.

[3]刘冀.一种非写回整数除法器的并行结构设计[J].电子工程师,2007(2).

[4]Christoph Loeffler,Adriaan Ligtenbergand George S.Moschytz,Prac-tical Fast 1-D DCTAlgorithms With11 Multiplications[C].IEEEIntl.Conf.on Acoustics,speech&signal processing,1989:988-991.

[5]贺军.基于FPGA的JPEG图像压缩芯片设计[D].电子科技大学,2003.

高速编码器 篇3

简支梁冲击试验机适用于各种非金属材料和农业物料的冲击韧性测试,是科研机构、大专院校、相关厂矿进行质量检验和农业原料性能研究测试的常用设备。传统简支梁冲击试验机的测量结果数据一般采用刻度盘指针式显示。这种刻度盘是通过机械式转换方式进行显示,受摩擦力和人为读取数据等因素影响,易造成测量数据误差和读数误差。

为了解决以上问题,本文根据旋转编码器、PLC高速计数器的工作原理和扩展功能,对冲击试验机的数据测量系统进行改进,以提高测量结果的准确性。旋转编码器通过光电转换,可将输出轴的角位移、角速度等物理量转换成相应的电脉冲以数字量输出,其在精密定位、速度、长度、加速度、振动等方面得到广泛的应用,特别是在数控机床的精密定位方面使用较多[1]。可编程序控制器(简称为PLC),是一种具有数字运算操作功能的电子装置。它采用可以编程的存储器,执行逻辑运算、顺序运算、计时、计数和算术运算等操作指令,通过高速脉冲计数功能,可以连接编码器脉冲信号并进行处理,是当代工业自动化过程中的主要控制装置之一[2]。

1 冲击试验机测量原理

根据国标[3]对能量指示装置的要求,冲击试验机既可以用升角标度,也可以用吸收的冲击能量标度,二者的关系式如下:

式中:W—冲击能量,单位为焦耳(J);MH—摆锤的水平力矩,单位为牛顿米(Nm);α0—起始角,单位为度(0);αR—升角,单位为度(0)。

由公式(1)可以看出,冲击能量与摆锤的水平力矩、起始角和升角三者有关。对于合格出厂的冲击试验机来说,摆锤的水平力矩,起始角出厂时都已给定,是一定值,故冲击能量只与升角有关,如果能精确测量升角值,就能准确计算冲击能量。

2 增量式旋转编码器及在冲击测量中的应用

旋转编码器是一种集光、机、电为一体的数字化检测装置,它具有分辨率及精度高、结构简单、使用可靠、性价比高等优点,广泛应用于工业领域的速度或角度(位置)的检测[4]。增量式光电编码器是旋转编码器的一种,主要由光源、码盘、检测光栅、光电检测器件和转换电路组成。增量式光电编码器输出A、B两相互差90度电度角的脉冲信号(即所谓的两组正交输出信号),根据正交信号的先后顺序,可方便地判断出旋转方向。

增量编码器是一种将角位移转换为一连串数字脉冲信号的旋转式传感器,其中角位移的转换采用光电扫描原理,其转换系统以由交替的透光窗口和不透光窗口构成的径向分度盘(码盘)的旋转为依据,同时被一个红外光源垂直照射,光把码盘的图像投射到表面覆盖着一层衍射光栅,并具有和码盘相同的窗口宽度接收器表面上。

利用以上特点,在冲击试验中,当锤转轴带动编码器码盘转轴同轴转动时,接收器感受码盘转动所产生的变化,然后将光变化转换成相应的电变化,并通过电子电路处理后以高、低电平交替的形式输出标准方形脉冲信号。为提高测量系统的稳定性,输出信号传输采用差分方式,有效消除了干扰,可精确记录摆锤的角度。增量编码器输出的正交信号可分为A、B两通道,其中一个通道给出与转速相关的信息,同时,通过两个通道信号进行顺序对比,得到旋转方向的信息[5]。

3 PLC CPU 224的高速计数器及在冲击测量中的应用

西门子公司的S7-200系列可编程序控制器(PLC)具有模拟量处理、通讯联网、系统诊断、中断处理和高速计数等功能。CPU 224是S7-200系列PLC中的典型产品,其具有13KB程序和数据存储空间;基本单元有14点输入和10点输出,最大扩展到168路数字量I/O点或35路模拟量I/O;6个独立的30KHz高速计数器,支持×1方式的正交脉冲(AB相)输入,支持×4方式的正交脉冲(AB相)输入,支持具有内/外部方向控制的单相输入及具有两个时钟输入的双相输入等12种模式的计数功能;具有1个RS-485通信/编程口,是S7-200系列中应用最广的产品[6]。

高速计数器常用于对CPU扫描速度无法控制的高速事件进行计数。每次旋转的指定计数脉冲,作为高速计数器的输入,故在工程上,通常把高速计数器与增量式编码器结合用于角度(位置)的测量[7]。

在进行冲击试验时,用编码器提供标准方形脉冲信号,高速计数器对脉冲信号计数,通过相关程序计算出能量值,并显示在TD200文本显示器上。

4 应用设计

运用旋转编码器和PLC高速计数器对传统机械刻度盘指示冲击试验机进行数字化改造,可分为硬件电路设计及高速计数器等相关程序的设计。

4.1 硬件电路设计

硬件系统组成方框图,如图1所示,编码器使用PLC提供的24V直流电源,其输出信号可不经脉冲信号放大直接接入PLC的高速计数器输入端子进行处理。处理后的数据TD200文本显示设备,直接显示冲击后的能量值。

4.2 程序设计

4.2.1 程序框图(如图2所示)

4.2.2 程序代码及注释

(1)把转存的最大冲击角度值计算为能量值

5 结论

在简支梁冲击试验机上应用增量式旋转编码器和高速计数器,把编码器提供的转轴脉冲作为高速计数器的输入信号,充分利用了编码器的时间、角度高分辨率特性和高速计数器的时效性,避免了刻度盘指针式读数对测量结果带来的误差,从而实现了冲击试验机冲击能量的高精度测量。本设计进一步扩展了增量式旋转编码器和高速计数器的应用领域,为简支梁冲击试验机冲击测试系统设计及工程实验方法提供了实用的参考。

摘要:传统的简支梁冲击试验机的测量数据一般采用刻度盘指针式显示,易造成读数误差、操作不便等缺点。本设计将旋转编码器和PLC高速计数器等电控装置及其功能应用于冲击试验机的测量系统中,分别对硬件电路和控制程序进行设计和编程,使试验机冲击测量结果由刻度盘的指针显示转化为数字显示,从而达到提高冲击试验机测量精度和使用方便性之目的。

关键词:冲击试验机,旋转编码器,PLC高速计数器

参考文献

[1]刘文魁,石建玲.光电旋转编码器在角度测量中的应用[J].现代制造工程,2006,(11):90-91.

[2]廖常初.PLC基础及应用[M].第二版.北京:机械工业出版社.

[3]GB/T21189-2007,塑料简支梁、悬臂梁和拉伸冲击实验用摆锤冲击试验机的检验[S].

[4]蒋晶,蒋东方,高航.高可靠性增量式光电编码器接口电路设计[J].测控技术,2009,28(2):1-4.

[5]常春,胡瑜,董彬.光电旋转编码器的研究与应用[J].仪表技术与传感器,2001,(12):34-35.

[6]赵光.西门子S7-200系列PLC应用实例详解[M].北京:化学工业出版社,2010.

高速编码器 篇4

1 RS(255,223)译码原理

RS(255,223)的参数指标如下:每个符号的比特数为8,码字长度为255,信息符号长度为223,校验符号长度为32,最大纠错能力为16个符号。假设编码后的码字多项式为C(x)=c254 x254+c253x253+…+c1x1+c0,编码在信道中由于传输噪声引起的错误图样多项式为E(x)=e254 x254+e253x253+…+e1x1+e0,接收端的接收码字多项式为R(x)=r254x254+r253x253+…+r1x1+r0,则有R(x)=C(x)+E(x),其中ri=ci=ei,(i=0,1,…,254)。译码的基本思路是:从接收码字多项式R(x)中找出错误的位置和错误值,即求得错误图样多项式E(x),然后从R(x)中减去E(x)就得到了解码后的正确码字C(x)=R(x)-E(x)。

RS译码算法主要分为两种:时域译码算法和频域译码算法。若采用硬件实现频域译码算法,则电路结构非常复杂,耗费的硬件资源非常大。而时域译码算法具有速度快、硬件资源耗费少、控制电路少等优点。因此,采用时域译码算法来实现RS(255,223)译码器。RS(255,223)的时域译码步骤如下:

(1)由接收码字计算RS(255,223)的伴随多项式S(x);

(2)采用RiBM算法通过伴随多项式求解关键方程,从而求解出错误位置多项式σ(x)和错误值多项式ω(x);

(3)利用钱氏搜索法求解出错误位置多项式的根,得到错误位置;错误位置多项式的根的倒数即是错误位置;

(4)利用Forney算法由错误值多项式求解出各个错误位置对应的错误幅值;

(5)FIFO控制器所存储的接收码字与错误幅值相减得到正确的传输码字。

2 RS(255,223)译码器设计

为了提高译码器的处理速度,采用三级流水线结构来实现RS(255,223)译码器,其结构如图1所示。译码过程中的计算都是基于有限域的,其基本计算单元是有限域乘法器和加法器。RS (255,223)译码器包括:伴随式计算模块、关键方程求解模块、钱氏搜索模块、Forney算法模块以及FIFO模块5个部分。

2.1 伴随式计算模块的电路设计

定义伴随多项式为S(x)=s32x32+s31x31+…+s2x2+s1x,由接收码字多项式R(x)来计算伴随式si的值,伴随式的计算公式如下[2]:

码元符号从r254到r0顺序发送,则伴随式si就可以用以下的递归公式来计算:

qj称为第j步的部分和,并且有q-1=0和si=q254。由递归公式(2)可知,32个伴随式是独立并行计算的,且各自是递归运算,其结构非常规则,易于硬件实现。为了提高译码速度,设计采用32个并行的计算模块,分别计算所需要的32个伴随式。伴随式计算模块的电路结构如图2所示,feedback信号用于控制寄存器的反馈,当一个码字分组的第一个符号r254进入译码器时,必须使其处于低电平,使得所有寄存器的反馈值为0,即q-1=0,以确保当前码字分组的伴随式计算不会受到前一个码字分组的影响。电路工作过程如下:码元符号从r254到r0顺序发送,当码元符号r255-j-1到达后,寄存器中存储的部分和qj与αi相乘,然后与r255-j-1相加得到新的部分和qj+1并存入寄存器中,当r0到达后,伴随式计算完成。

2.2 关键方程求解模块的电路设计

关键方程求解的常见方法主要有欧几里得算法、BM算法及它们的改进形式,这些算法都属于快速迭代算法;其中BM算法的译码时延比欧几里得算法小,实现电路较简单,所以在工程中较为常用。文章中关键方程求解模块采用RiBM算法,与BM算法相比,RiBM算法去掉了复杂的求逆过程,可以采用规则的脉动阵列实现,控制信号少、速度快、硬件实现更方便。采用RiBM算法,单个时钟周期内的运算量减少,可以提高译码器的工作频率,因此采用RiBM算法可以显著地提高译码速度。RiBM算法的主要思路是并行实现,其硬件结构采用规则的脉动阵列实现,RiBM算法的硬件结构主要包括两部分:一部分是49个功能相同的PE计算单元的串接组合实现多项式的脉动计算;另一部分是控制电路,实现差值更新。其硬件实现结构如图3所示。

定义错误位置多项式为定义错误值多项式为电路工作过程如下:初始时刻,PE0~PE31内的寄存器的值更新为当前计算出的伴随式s1~s32,PE32~PE47内的寄存器的值更新为0,PE48内的寄存器的值更新为1;经过32个时钟周期的运算后,关键方程求解完毕,PE0~PE15分别输出错误值多项式ω(x)的系数ω0~ω15,PE16~PE32分别输出错误位置多项式的系数σ0~σ16。

2.3 钱氏搜索模块和Forney算法模块的电路设计

在RS(255,223)的译码算法中,采用钱氏搜索法来求解错误位置多项式σ(x)的根,并确定错误位置。为了检验码元符号r255-l(l=1,2,…,255)是否有错,译码器需要确定α255-l是否为错误位置数,等效于检验αl是否为σ(x)的根。因此,若σ(αl)=0成立,则可以确定r255-l产生了错误。钱氏搜索电路的实现结构如图4所示。电路工作过程如下:初始时刻,寄存器Di的初始值分别更新为错误位置多项式σ(x)的系数σi。对于每个时钟周期,第i个寄存器Di的值与αi相乘,并将结果存入寄存器Di。在第k个时钟周期时,所有寄存器的累加和为通过判断它的值是否为0,就可以判断r255-k是否是错误位置。

假设错误值为ek,则利用RiBM算法计算出的ω(x)所对应的Forney公式为:

其中σodd(x)为错误位置多项式σ(x)的奇数次幂项之和,βk-1为错误位置多项式σ(x)的根。Forney算法的实现结构如图5所示,其中计算ω(βk-1)的电路结构与钱氏搜索电路结构类似。电路工作过程如下:初始时刻,寄存器D0~D15的初始值分别更新为错误值多项式ω(x)的系数ω0~ω15,寄存器D16的初始值更新为1,采用ROM查表法实现σodd(βk-1)的求逆,经过255个时钟周期的运算后,错误值计算完毕。因为钱氏搜索模块和Forney算法模块是独立并行工作的,所以,此时接收码字也纠错完毕。

3 实现结果的验证与分析

译码器的功能验证是在Modelsim SE 6.2b和QuartusⅡ7.1环境下完成的。验证所采用的芯片是CycloneⅡ系列芯片EP2C8T144C8。经过编译后,占用芯片的4 327个逻辑单元,占用逻辑单元比文献[4]的方案少4 855个。为了验证该译码器能否纠正16个错误,在编码后的码字中加入16个错误,作为译码器datain端的输入,如图6所示,correctcode为编码器编码后的正确码字,用来作为参照;errorflag为错误标志。译码输出结果如图7所示,outflag为高电平时,译码器输出端dataout开始输出译码结果。仿真结果显示,该译码器的伴随式计算模块耗时约为255个时钟周期,关键方程求解模块耗时约为32个时钟周期,钱氏搜索模块和Forney算法模块独立并行地工作,其总耗时约为255个时钟周期。与ME算法相比,关键方程求解采用RiBM算法,可以大大提高译码速度。系统时钟频率设为100 MHz,经过548个时钟周期(5.84μs)后得到译码结果,与软件译码方式相比,其耗时非常少。对图6和图7进行比较,可以看出,译码器成功地纠正了16个错误,证明该译码器能很好地实现译码功能。

文章完整地阐述了基于RiBM算法的RS (255,223)高速译码器的设计以及FPGA实现,仿真和编译结果表明该译码器与ME算法实现的译码器硬件复杂度相近,译码时延大大减小,极大地提高了数据吞吐率,其装置可以应用于诸如光通信系统等需要高速译码的通信系统中。

摘要:提出了一种基于RiBM算法的RS(255,223)高速译码器设计方案,并采用FPGA和VerilogHDL实现了该译码器。译码器采用三级流水线结构实现,其中关键方程求解模块采用RiBM算法,具有译码速度快、占用硬件资源少等优点。仿真结果验证了该译码器设计方案的有效性和可行性。

关键词:RS(255,223),FPGA,RiBM算法

参考文献

[1]严来金,李明,王梦.RS(255,223)译码器的设计与FPGA实现[J].微计算机信息,2005,21(1):148-149.

[2]张玲,张立,何伟.截短Reed-Solomon码译码器的FPGA实现[J].电子技术应用,2009,35(7):65-67.

[3]陈曦,谢军,邱琪.基于RiBM算法的RS译码器设计实现[J].光通信技术,2008(11):48-50.

高速编码器 篇5

随着高速公路建设的进一步发展和完善, 为满足高速公路使用者的呼叫响应, 交通运输部已指定“12122”特服电话号码专用于全国高速路网的统一应急救援, 并以此部署覆盖全路网的呼叫中心。各省基于高速公路路网的统一呼叫中心正在逐步建设发展当中, 省中心接听全省统一的客服电话“12122”, 根据呼叫人员所处位置将呼叫电话转接至相应的路段中心, 各路段中心接受省中心的统一呼叫与调度, 具体来进行救援或处理, 并与省中心联动。

伴随着高速路网的不断发展, 高速公路之间的交叉连接、互通立交上的弯道匝道以及道路行进方向等, 对于高速路上的驾乘人员的自我定位带来不小的困惑;同时路网越来越复杂, 路段的管理边界也越来越模糊, 作为管理者, 既有可能无法针对本道路用户的呼叫给出准确的定位, 也有可能接收到行驶在其他路段上的用户因无法定位而错呼的电话。显然, 这对于应急事故和紧急救援的及时处理非常的不利, 因此非常有必要针对高速公路路网特点制定一套面向道路用户自我定位的精确标识。

2007年9月26日, 交通部颁布了《国家高速公路网命名和编号规则》[1], 在《国家高速公路网相关标志更换工作实施技术指南》[2]中, 对于道路的命名和编号规则给出了统一解释与要求, 并要求统一标识并更换国家高速路网的道路桩号。

国家高速公路名称的统一命名、道路桩号的统一标定, 向社会公众呈现出了一个完整一致的路网标识, 无论是对于道路的描述与称谓还是对于数字交通信息组织, 均奠定了基础。然而, 这种标定的信息辨识规则虽然构造了路网的标识框架与基础, 但尚不能直接面向用户的在途应用, 即道路的使用者依然无法通过这种标定实现自身的准确定位标识, 亦无法在呼叫中心的电话求助中确切有效报送自身所在的道路精确位置, 具体差异如下。

1) 道路编号与路桩标识分离。

路网标识设立了里程牌与百米牌。里程牌标出了道路编号与公里数, 设置间隔为1 000 m, 百米牌标出了公里数与百米数, 设置间隔为100 m。显然, 每100 m出现的百米牌最容易被用户读取, 但其中却没有道路标识的编号, 要想知道在哪条路上, 还得去看里程牌, 这给呼叫用户的自我定位带来了一定的困难。

2) 百米牌无法指示行驶方向。

高速公路标识的百米牌确已足够精细, 但其给出的还只是断面标识, 无法确认呼叫者所处的道路的上下行位置, 这给紧急救援的部署和出警带来了困难。

3) 驾乘人员无法确定行驶方向和空间位置。

特别是当互通立交较为复杂时, 更是无法得知自身的立体空间位置, 增加了用户定位的难度, 延长在电话中描述自身位置的时间, 严重影响救援的时效和进程。

因此, 应当在《国家高速公路网命名和编号规则》的基础之上细化并建立一套基于“12122”应急救援与客户服务呼叫中心用的路网精细化标识与定位方法, 其最为直接的目的就是使管理者通过应用系统能在第一时间准确获知呼叫者的道路精确位置, 无论用户身处道路的什么位置 (立交、匝道、上下行等) , 总能在第一时间找到定位标识并顺利读出识别码, 从而指引管理部门快速反应, 为救援的及时响应和处理获得宝贵的时间。

1 设计原则

由于高速公路的定位, 既涉及到道路的上下行关系, 也存在汇接枢纽同一平面坐标上下盘道的高度差, 采用GPS或其他类似的手机定位技术, 无法在工程上实现道路的精确定位[3]。因此, 采用交通标识的方法应是行业的选择, 也是交通精细化管理实施目标的基础。

采用交通工程标志牌的道路精细定位, 关键在于报送简捷、查找准确, 前者方便于呼救者, 后者得益于施救方。考虑到高速公路的用户来源于社会各个阶层, 并具有不同地域的地方口音, 据此设计了专门用于语音报送数字的VDC (voice digital code) [3]编码, 在高速公路精细化标识的编码规则研究中, 应遵循下列原则:

1.1 统一编码

交通定位标识的编码集合涉及省内联网运行的所有高速公路, 数量相当庞大。为保障道路标识的一致性, 省内国家高速公路主线和连接线应使用全国统一编码;省内地区高速公路, 其道路交通标识应在全省高速路范围内进行全面统一编码。

1.2 简洁易读

高速公路交通定位标识直接为道路的呼救者所使用, 简洁易读是编码规则的首要原则。编码一般是由呼救者念读给呼叫中心人员, 构成交通定位标识的元素的种类、数量越少越好, 其编码愈简单愈好。考虑到文化和口音差异, 仅用数字符号来标识, 8位定长设计, 其中4位一组, 中间间隔空格, 便于记忆咏读, 不但方便呼救者记忆, 也方便施救者准确记录其报出的交通定位标识。

1.3 精确定位

交通定位标识的编码应足够精确, 方便呼救者和施救者准确地进行道路定位。由于高速公路封闭运行的特点, 道路的精确定位包括:使用的道路、道路的区间、行进的方向等三要素。为方便施救者准确定位, 本设计将定位精度精确到百米, 即间隔一百米设置定位标识符, 使用数字统一标识出行驶道路、区间和方向。

1.4 传输校验

为避免在语音读报和传输过程中产生错误与混乱, 防止全国各地不同方言发音所导致的识别疑义与传输差错, 提高标识位置在读取、传输、识别和定位过程中的准确程度, 应当在编码中的设置校验位, 用于对传输数据进行差错检验, 验证其传输过程中的正确性。

2 编码结构

定位标志的编码结构由道路编号、道路百米桩号、行进方向编号和校验码4项基本要素共8位数字组成, 编码结构见图1。

2.1 道路编号

道路的编号应在全省甚至是全国范围内来对省内的所有道路进行统一编号, 道路编号具有唯一性, 应能唯一确定路网中的一条线路。通过对各省高速公路网的调研与分析, 高速公路的编号规则分别有按国家公路网统一编号、按道路特点编号、按业主代码编号3种方式:

1) 国家路网统一编号。省内国家高速公路主线和连接线应根据《国家高速公路网命名和编号规则》, 使用全国统一编号。

2) 地区道路特点编号。为了体现道路的固有特性, 不受道路的管理分类等人为因素的影响, 地区高速公路可按道路特点的规律进行统一编号。省内联网收费的高速公路, 可按省会放射线、南北纵线、东西横线、环绕城线、隧道大桥等道路特点分别顺序编号。

3) 依据业主代码编号。精细化标识中的道路编号需考虑与已经建成和即将要建成的道路在编码上保持一致, 应具有一定的延续性, 为了体现高速公路客户服务中心系统建设与高速公路三大系统建设的连贯性, 方便计算机网络环境的连接和调试, 确保应用软件和计算机网络环境的匹配, 交通定位标识编码的前两位可采用全省高速公路业主代码, 不再重新编号。

2.2 百米桩号

公路里程桩指公路路线上由起点至终点, 沿每公里等长顺序设置的、标识公路里程与编号的碑石群, 用以计算路线或路段长度和标注公路上某一地点的沿线位置。精细化标识编码中的道路里程百米桩号由公路里程桩 (公里桩) 和百米号码组合而成, 其编号规则如下:

交通定位标识编码中的道路里程百米桩号的前3位数字取自公路里程桩号中的后3位数字, 以000, 001, …, 999表示, 可编码里程最大为1 000 km。

交通定位标识编码中的道路里程百米桩号的最后一位数字取自于公路里程桩的百米数, 将每公里路段划分为10个百米区间, 以0、1, …, 9来表示。

2.3 行进方向

行进方向编码用以表示道路的行进方向、互通交叉转弯方向和道路的出入口匝道方向等, 使用行进方向码可以精确的表示出车辆当前正行进在互通立交的哪一条交叉连接线上或道路的哪一个出入口匝道上, 正确的区分上下行方向, 编码以一位数字表示, 其含义见表1。

2.4 传输校验

在道路精细化编码设计中, 为了防止全国各地不同方言发音所导致的识别歧义与传输差错和传输过程中的错误与混乱, 尽量提高标识位置在读报和传输过程中的准确程度, 在编码的最后一位 (第8位) 设置了传输校验码, 用于对前面7位数据进行差错检验, 验证其传输过程中的正确性。

道路精细化编码使用8位十进制数据作为基本信息流x1x2x3x4x5x6x7P, 其中, x1~x7位为数据位, 对应于实际的道路精细化编码, P为校验位, 其计算公式如下:

Ρ=10- (i=17ximod10) (1)

3 编码规则

在精细化标识编码过程中, 直行路段的编码规则比较简单, 在确定了道路编码和里程桩号以后, 按规则顺序编码即可。对于具有多个连接匝道和出入口的交通枢纽的编码则较为复杂, 为了更加准确的完成对道路主线和交通枢纽的统一编码, 提高编码的一致性和规范性, 特规定编码规则如下:

道路直行线根据统一的道路编号、里程桩号和行进方向依次编码:

1) 交通枢纽直行线、连接线和出入口匝道的道路编号与主线保持一致。

2) 交通枢纽直行线、连接线和出入口匝道的道路里程桩号与主线保持一致。

3) 多条连接线并线形成一条连接线, 行进方向相同时以右侧连接线编码优先。

4) 多条连接线并线形成一条连接线, 行进方向不相同时靠右侧分别编码。

5) 多个出入口匝道并线形成一条匝道, 行进方向相同时以右侧匝道编码优先。

6) 多个出入口匝道并行形成一条匝道, 行进方向不相同时靠右侧分别编码。

7) 连接线与出入口匝道的共用段行进方向相同时采用连接线编码优先。

8) 连接线与出入口匝道的共用段行进方向不相同时靠右侧分别编码。

4 标牌设计制作

根据GB5768—2009《道路交通标志和标线》[4]中关于交通指示标志设计的具体要求, 用于高速公路的指示标志应使用绿色, 文字与衬边采用白色, 绿底白字的配色方案符合高速公路指示标志的要求。标志尺寸为280 mm×80 mm, 字高60 mm, 字宽30 mm, 衬边宽度3 mm。为使标志版面更加美观, 对标志底板的边缘和尖角应适当倒棱, 使呈圆滑状。

精细化标识版面内容为8位阿拉伯数字, 4位数字一组从左至右顺序排列, 2组数字之间间隔一个数字宽度空白。定位指示标志图样见图2。

为了提高定位标志在恶劣条件下的指示功能, 定位标志应采用高速公路用反光膜, 反光等级不低于二级高强反光膜, 所采用反光膜应符合GB/T 18833-2002《公路交通标志反光膜》[5]的要求, 反光膜外表面应平滑、光洁, 不应有明显的划痕、条纹、气泡、颜色不均匀或逆反射性能不均匀等缺陷或损伤。其防沾纸也应平滑、干净、无气泡、无污点或其他杂物。

5 标牌安装施工

为了将精细化定位标志应用于公路的使用者, 使呼救者知道自己所处的位置, 应在其有效的视觉范围内布设定位标志。安装标志的耐候性和附着性能应符合JT/T 279—2004《公路交通标志板》[6]中的相关要求。

在高速公路沿线百米桩迎行车方向设置标识牌, 设置密度可按100 m距离设置一块, 在互通立交等变向道路上, 应在弯道的开始处及结束处设置变向后的定位标志。由于标志面积较小, 行车时不会对驾驶员形成视觉干扰, 在需要定位时行至路边即可清楚看到。

精细化定位标识标牌应安装在护栏的显眼位置, 对于无法安装护栏的等殊路段, 精细化定位标识标牌可安装在路侧柱式轮廓标上, 安装位置见图3。

在定位标识的安装施工过程中还应遵循以下施工技术要求:

1) 定位标志采用直接贴膜的方式, 其形状、字体、颜色应严格按照设计图纸要求制作。

2) 定位标志设置与实际情况有出入时, 可在小范围内调整布设桩号并根据实际情况重新确定标志的数量及版面内容。

3) 定位标志与交通流方向平行粘贴, 设置位置按照设计图纸要求。

4) 在互通立交等变向道路上, 弯道的开始处及结束处设置变向后的定位标志。

6 精细化编码的应用

随着我国高速公路建设的不断深入, 对高速公路的深化管理和全方位服务已经成为交通行业发展的首要目标, 而无论是从高速公路的管理或是服务角度出发, 面向道路使用者的精细化标识, 应当成为现代交通工程进一步完善的内容。省级呼叫中心无论采取哪种模式, 报警呼叫者的精确定位都是至关重要的, 采用精细化定位标志是实现紧急救助中心的道路定位行之有效的一个途径。

定位标志能有效指出车辆当前行进在路网中的哪条线路;线路上哪段区间 (100 m长的一条线段区间) , 车辆在区间中是上行还是下行, 左转还是右转;行进在互通立交的那条匝道上, 空间位置等都能做到精确的描述。

在用户呼救的过程中, 为了便于呼叫中心工作人员准确的定位呼救者的详细位置, 更加直观的显示出用户所处位置的精确定位, 尽快查找周边救援力量并为救助队伍提供出最佳最合理的救援路线, 精细化编码应与呼叫中心交互式操作管理界面相结合。在呼叫中心操作界面上, 要精确显示呼救者的精确定位, 并要以醒目的颜色标识出来。

例如, 呼叫中心接线员接到一个用户的求救电话, 询问得知用户所处位置的精细化编码为“2106 3873”, 在对编码校核正确无误后, 接线员的操作界面上将会立即显示出该用户正行驶在绕城高速曲江互通立交上, 并且使用醒目的红色标识出用户目前所处位置的百米区间, 如图4中箭头所指的部分所示。

如果用户此时想要咨询路况, 接线员可根据用户此时的位置信息, 解答用户关于行车路线或道路状况的询问;如果用户此时需要救助, 接线员可优选周边救援力量并协助救助工作人员准确的定位呼救者的详细位置, 为救助队伍规划出最佳最合理的救援路线, 以使救援队伍以最快的速度到达救援现场, 最大限度的争取救援时间。

摘要:结合现有高速公路路政客户服务呼叫中心在应急事故和紧急救援时所面临的用户定位问题, 分析了现行道路定位方式在行驶方向、立交匝道等处精确定位时所存在的不足, 提出一种建立于国家统一路网命名和编号规则基础之上, 包含道路编号、百米桩号、行进方向和传输校验4大要素的路网精细化定位编码标识, 并给出了编码规则和标志制作安装方法, 使得高速公路的管理人员和司乘人员能方便快捷的获取精确的道路定位, 从而指引管理部门快速反应, 为交通应急指挥和紧急救援赢得宝贵的时间。

关键词:交通信息工程,交通应急指挥与救援,精细化编码,精确定位

参考文献

[1]JTG A03—2007, 国家高速公路网命名和编号规则[S].北京:人民交通出版社, 2007.

[2]中华人民共和国交通部.国家高速公路网相关标志更换工作实施技术指南[M].北京:人民交通出版社, 2007.

[3]孙大跃.高速公路紧急救援体系研究[D].西安:长安大学, 2006.

[4]GB5768-1999道路交通标志和标线[S].北京:中国标准出版社, 2009.

[5]GB/T 18833—2002, 公路交通标志反光膜[S].北京:中国标准出版社, 2002.

高速编码器 篇6

在单片机软件设计上,采用简单易懂的C语言编程.C语言具有良好的模块化功能,便于程序的编写、扩展和阅读[2].将硬件电路尽可能的放在高速复杂可编程逻辑器件(CPLD)内编写,即可以节省大量的外围空间,又可以提高电路的稳定性、移植性和扩展性.

1 总体结构及工作原理

图1是高速编码半导体激光器控制电路的总体设计框图.主要包括:(1)单片机模块;(2)CPLD处理模块;(3)液晶模块;(4)键盘;(5)RAM存储电路;(6)驱动电路;(7)半导体激光器.

电路的工作原理:用户通过4×4键盘输入的数值信息,经过键值识别电路后送到单片机中,通过软件处理,将送来的数值信息合成脉冲编码(脉宽和周期)信息.合成的脉冲编码信息经编址和缓存电路后,按一定的次序存储在外部RAM中.等所有的编码信息设置完毕后,单片机控制编码产生电路工作.当一个编码脉冲信号产生时,RAM寻址电路将被启动.通过对RAM的寻址,下一个编码周期值被读入到编码产生电路中.产生的编码脉冲信号经驱动电路后,触发半导体激光器产生激光脉冲序列编码.液晶模块负责对操作菜单和相关信息的显示.

2 主要模块设计

高速编码半导体激光器控制电路主要由3个模块组成:单片机模块、CPLD处理模块和驱动电路模块.

2.1 单片机模块

单片机模块包括硬件部分和软件部分,其中硬件部分包括复位电路和时钟电路[1].

软件部分通过高级C语言编写,主要有2个软件模块组成:编码设置模块和液晶信息显示模块.主程序流程图如图2.

编码设置模块:单片机根据CPLD处理电路送来的键值信息,完成对编码码值信息的合成,形成最后要在RAM中存储的编码周期值,编码周期值最小单位是1 μs.

液晶信息显示模块:通过液晶显示屏,可以将大量的数据信息显示出来.并且可以根据用户的需要,编写友善而美观的显示界面.设计中,使用了1 s定时中断,当编码产生电路工作后,每隔1 s依次循环显示各输出编码的周期值.

2.2 CPLD处理模块

CPLD处理模块,是设计的核心部分.由图1可以看出,处理模块的主要组成部分是编址和缓存接口电路、键值识别电路、RAM寻址电路和编码产生电路.将这4个电路集成在同一片CPLD内,不但节省了大量的外部硬件资源,更增强了整个处理电路的抗干扰能力,使得电路工作更加快速、稳定与可靠[3].

2.2.1 编址和缓存接口电路

编址和缓存电路是连接单片机模块和CPLD处理模块的纽带.主要由译码器、8位数据锁存器和数据选通器组成.单片机到CPLD方向: 单片机生成的编码码值信息,经此电路选通后按序存储到外部存储器RAM中;单片机对CPLD处理模块的相关命令,经编址后传达到处理电路内. CPLD到单片机方向:经此电路的选通,将键值识别电路识别出的键值传给单片机.

2.2.2 键值识别电路

键值识别电路,负责识别外围4×4键盘的按键信息.电路的工作流程如图

4×4矩阵式键盘,接口由4根行线和4根列线组成,行线做输出、列线做输入.按键扫描电路每隔一定时间向某一行输出一个低电平信号,如果此时有按键按下,马上启动延时去抖电路,对按键进行8 ms的防抖处理.之后,对码值进行识别和锁存,同时产生一个低电平信号,该信号引到单片机的中断输入端引起单片机中断,单片机对此按键信息进行读取.

2.2.3 RAM寻址电路

RAM寻址电路工作框图如图4,此电路为纯硬件寻址电路,码值的读取完全由硬件寻址完成.当脉冲编码产生电路生成一个编码脉冲时,触发读指令电路产生3次(每个编码周期值由3个字节组成)读RAM数据指令.经过编址电路的编址,计算出每次读取RAM单元的具体地址,将该地址单元中的数据按序写入码值合成电路,最后将合成的编码码值赋给脉冲编码产生电路.硬件读取速度很快,读取一个完整的编码值(读取RAM内的3个字节),所需的时间<100 ns.而如果利用单片机先中断后寻址的方式进行读取,所需的时间至少在10 μs以上.因此通过硬件寻址电路,可以产生频率高达1 MHz的频率信号.

硬件对RAM寻址的时序如图5所示.

2.2.4 编码产生电路

编码产生电路,主要由24位计数器和24位比较器组成.计数器选用50 MHz外部时钟,从RAM寻址电路选取的编码周期值作为24位比较器的基准数据,由计数器产生的数值作为输入数据,当计数器产生的数据和比较器的基准数据相等时,计数器将产生一个高电平信号,此信号即为脉冲编码信号.此信号的脉宽可以通过脉宽调整电路调整,以便得到所需的脉宽.

此编码脉冲电路,可以产生1-1 MHz的周期编码信号.由于外部RAM的容量为64 KB,所以通过键盘输入,可以设置的编码个数大于2 000个.

2.3 驱动电路模块

图6是半导体激光器的信号驱动电路.图6中V1、V2、V3和T1组成自激式直流升压电路,V1和V2为NPN三极管,V3为PNP型三极管,T1为磁罐变压器.接通电源后,由于三极管的β值存在差异,三极管V1和V2的导通速度不同.假如V1导通较快,那么它的集电极电流上升较快,经过一个正反馈过程,V1迅速饱和导通,而V2截止,此时变压器内的磁通量近似线性增加.当磁通量接近饱和时,磁通量的变化接近于零,因而感应电势将反极性,使V1截止而V2迅速饱和导通.如此周而复始,在T1的输出端输出较高的交流电压.交流电压经整流桥D1整流后,最高可获得8倍于输入电压的直流电压.V6和D2A组成基准电压参考电路,给比较器提供阀值.采样电路电压如不等于该阀值,比较器将给出信号直流升压电路的电源供给,这是一个负反馈过程,起到保持输出电压稳定的作用,V6为精密电压基准,TL431,D2A为电压比较器LM293.V5使用低栅压N型增强型场效应管IRLU110,便于在5 V电压下控制,通过CPLD处理电路产生的正极性脉冲信号,控制V5的导通和截止,从而为半导体激光器提供工作所需的电流和电压[4].

3 实验结果

基于单片机和CPLD技术成功地设计出高速精确的脉冲序列编码, 编码经驱动电路后触发半导体激光器工作.设置脉冲宽度为60 ns,周期为{1,2,3,4,5,6,7,8}μs的编码信号,通过示波器(TDS5104B)对产生的信号进行观测,编码波形如图7所示. 通道1所示波形为CPLD处理电路产生的编码信号;通道2所示波形为激光探测器探测到的激光编码信号.选择第一通道中周期间隔为1.0 μs的信号进行放大测量,由示波器测得的数值如图8所示.由此可知,控制电路产生的编码信号精度高、速度快、间隔可变,设计达到预期要求.

4 结束语

高速编码半导体激光器控制电路,基于纯硬件电路寻址理念设计,可产生频率高达1 MHz的精确变间隔码信息.电路同时具有集成度高、工作性能稳定和可扩展性强等优点.

参考文献

[1]周强,李世成,耿晓蕾,等.一种新型任意波形发生器的设计[J].光电技术应用,2006,21(6):42-44.

[2]赵亮,候国锐.单片机C语言编程与实例[M].北京:人民邮电出版社,2005:1-21.

[3]刘宝琴,张芳兰,田立生.ALTERA可编程逻辑器件及其应用[M].北京:清华大学出版社,1995:283-295.

高速编码器 篇7

关键词:低密度奇偶校验码,准循环码,编码器,解码器

0 引言

1962 Gallager首次提出了LDPC(Low-Density Parity-Check)码的概念[1]。但直到20多年后,Tanner用二分图对LDPC的码结构进行分析,这种性能优良的信道编码方式才被人们重新认识[2]。之后,很多新的码字设计方法被提出,著名的有MacKay的MacKay方法、Tong Zhang的(3,k)码[3]、Lin和Kou的欧氏/映射几何方法[4]等。虽然LDPC码具有逼近香农限的性能,但在实现过程中有2个问题必须考虑:① 码字要有足够的结构信息,否则编码/解码矩阵太庞大无法用于FPGA或ASIC;② 码字的误码平底(error floor)要足够低,不然必须引入级联编码而使系统复杂。

本文采用Lin的欧氏几何方法设计并在FPGA上实现了一个码长8176、码率3/4的LDPC码编译码器。本编译码器的误码平底在BER=10-9以下,在BPSK调制、高斯信道条件下距离香农限约1.4 dB,理论吞吐率可达250 Mb/s。

1 码字设计

首先分析基于有限几何的LDPC码校验矩阵的设计流程,然后给出可在FPGA/ASIC中实现的生成矩阵和编码方法。

1.1 校验矩阵设计

LDPC码的校验矩阵H具有如下特点:每行含有γ(行重)个1,每列含有ρ(列重)个1;任何2列之间位置相同的1的个数(用λ表示)不大于1;γρ与码长相比很小,也即H为稀疏阵。如果H具有不变的行重γ和列重ρ,称该码字为规则码,否则为非规则码。

考虑有限域GF(2s)上的m维欧氏几何EG(m,2s),其中的m维向量a=(a0,a1,…,am-1)称为EG(m,2s)中的一个点,全0向量O=(0,0,…,0)称为原点,EG(m,2s)中这样的点共有2ms个。若a不是EG(m,2s)上的原点,称2s个点{βa:βGF(2s)}构成一条直线。EG(m,2s)上共有

J=2(m-1)s(2ms-1)2s-1

条直线。设a0、a1、b0为EG(m,2s)上的点且a0、a1线性独立,此时直线{βa0+b0}和直线{βa1+b0}仅有一个交点b0,称直线{βa0+b0}和{βa1+b0}交于b0。EG(m,2s)上共有

κ=2ms-12s-1

条直线通过b0。

Hln列,r=(r0,r1,…,rn-1)是H中的某一行,该行是EG(m,2s)中直线的关联向量,那么H中的列向量c=(c0,c1,…,cl-1)表示BG(m,2s)中的每个点。由于BG(m,2s)上的点和有限域GF(2ms)是一一对应的,因此r也是GF(2ms)的关联向量。H的行、列数目可表示为:

由于去掉原点后可得到准循环矩阵形式的H,因此常将直线上的原点去掉,最后H的行列数目修正为:

l1=J-κ=(2(m-1)s-1)(2ms-1)2s-1,(1)n1=2ms-1(2)

至此,如果给定ms,不难计算出矩阵H:

① 设αGF(2ms)的本原元,在GF(2ms)上构造一个含有2s个元素的子域Fc;

② 令a0、b0在GF(2ms)上选取,β在子域Fc上选取,可得EG(m,2s)上所有l1条不过原点的直线{βa0+b0};

③ 将l1条去掉原点的直线排成一列可得校验矩阵H,该矩阵可以写成准循环矩阵的形式。

1.2 校验矩阵行列分解

校验矩阵H具有这样的特点:任何2列之间位置相同的1的个数λ不大于1,也即H上没有长度为4的环。通常这样得到的矩阵H还不是十分“稀疏”,在FPGA或ASIC中如果采用一步或多步大数逻辑译码尚可实现,而采用和积译码(Sum-Product译码,或belief- propagation译码)则不可能。因此,还需对H进行进一步行列分解。

Hc为是H的一个循环子阵,h1是Hc的首列,h1的列重为ω,那么可以将h1的ω个1分配到ω列中。将这些列分别表示为hc,1、hc,2…,hc,ω,并保证h1=hc,1+hc,2+…+hc,ω。然后,将hc,1、hc,2、…hc,ω分别列循环移位可得ω个置换阵Hc,1、Hc,2…Hc,ω。将这些置换阵排成一行,得到Hcc:

Hcc=[Hc,1,Hc,2,…,Hc,ω]。

这样,就得到了Hc的列分解矩阵Hcc。类似的,可以对Hc进行行分解得到矩阵Hcr

H的某p个子矩阵Hc同时进行行、列分解可得到p个分解阵Hc,1crHc,2crHc,pcr,将此p个分解阵排成一行最终得到了LDPC码的校验矩阵Hf:

Hf=[Hc,1cr,Hc,2cr,…,Hc,pcr]。 (3)

Hf不但保持了原来Hλ≤1的特点,而且还增加了新的好的特性:矩阵中1的比例大大降低,更加“稀疏”;矩阵变成了由数个置换矩阵组成的准循环阵,可以方便地在FPGA中实现;矩阵中长度为6的环数目降低,码字性能有很大提升。

1.3 生成矩阵设计

Hflfnf列,Hf的秩为rf,1.1节介绍的设计方法不能保证Hf满秩,即有lfrf。简单来看,使用Gauss-Jordan法可以方便地得到一个秩为rf的矩阵Hr,Hr具有如下形式:

其左边为rf×rf单位阵,右边的R是一个随机矩阵,那么令生成矩阵G为:

可保证HrG中的行向量正交:

Hr×GT=O

然而,这样得到的生成矩阵G中的子阵RT不但没有任何结构信息,而且也不是稀疏矩阵,因此除计算机仿真外并不能真正硬件实现。数学已证明,如果Hf是一个满秩的准循环矩阵,那么线性空间中与Hf行向量正交的其他向量也可以写成准循环矩阵的形式:

式中的子阵Bi,j为循环矩阵。如果Hf不满秩,那么生成矩阵GQC2有下面的形式:

式中,子阵Pnf列、lf-rf行。GQC2的具体求解过程这里就不再详细讨论了。

由于GQC2中除子阵P外都是循环矩阵,因此GQC2可以方便地在FPGA/ASIC中使用循环移位-累加器来实现。

2 码字实现与性能测试

2.1 码字的实现

本文采用GF(23)上的3维欧氏几何EG(3,23)设计了一个码长为511×16的LDPC码。根据式(1)和式(2),GF(23)上共有511个非原点的点和4 599条不过原点的直线,

l1=(2(3-1)3-1)(23×3-1)23-1=4599,n1=23×3-1=511

每条直线上有23-1=8个点,过每个点有

κ=23×3-123-1=73

条直线,其中72条不过原点。

根据这些直线可以得到一个4 599×511的矩阵H。将H分成若干个子矩阵然后分别进行行列分解、重组并按式(3)排成一行,可得到8 176×2 044的校验矩阵Hf。根据Hf可以计算出准循环生成矩阵GQC2。

下面以Altera公司的中小容量的Stratix II 60系列FPGA为例,给出本设计的资源使用情况。其中ALUT、专用逻辑寄存器、M4K、M512的使用数量分别约为11 000、12 000、108和56,分别占全部资源的23%、25%、42%和17%。在和积译码时,整个译码器采用8 bit量化。考虑到该码字长度中等且占用资源并不太多,为减小量化损失,量化bit数较多(一般取6 bit也可)。

上述资源占用情况是在编解码器设计为部分并行工作而得出的,FPGA采用Stratix II系列时最高吞吐量大约为90 Mb/s。如果改为全并行实现,占用资源数目将加倍,但最高吞吐量可以达到250 Mb/s。

2.2 性能测试

在分析LDPC码的误码性能时有2点必须注意:① LDPC码的码字长度是现有信道编码方式中较长的,为分析码字是否有误码平底问题,必须测量足够多的码字,特别要保证一定的误码字数(误帧数),仅计算机仿真很难得到BER=10-5以下的准确结果;② LDPC码的BER-Eb/N0曲线瀑布区很陡,若要结果可信,必须仔细校对噪声功率,避免噪声功率测量不准带来误差。

本文采用硬件实测来得到码字的BER-Eb/N0曲线,测试平台如图1所示。为得到准确的噪声功率,在FPGA中设计有一个噪声功率统计器。图2是最后得到的BER-Eb/N0曲线,其中的每个点由编码器产生bit测量后得到。

根据图2可以看出:该码字的误码平底至少在BER=10-9以下,在BPSK调制、高斯信道条件下的性能距离香农限不大于1.4 dB。

3 结束语

LDPC码是目前可逼近香农限的一类非常重要的信道编码方式,在中、长码的情况下性能甚至优于Turbo码。由于LDPC码只有在码长为数千bit、软判决、和积译码的条件下才能获得良好的性能,因此它的缓存、译码、编码都比较困难,难以硬件实现。本文针对LDPC码的这些特点设计的码字的编码、解码矩阵都为准循环矩阵。经过实测,该码字的误码平底至少在BER=10-9以下,其性能距离香农限不大于1.4 dB。由于编码、解码矩阵都为准循环矩阵,编解码器可比较方便的在FPGA中实现,占用资源规模也很小。

参考文献

[1]GALLAGER R G..Low Density Parity Check Codes[J].IRE Trans.Inf.Theory,1962,IT-8(1):21-28.

[2]TANNER R M.A Recursive Approach to Low Complexity Codes[J].IEEE Trans.Inf.Theory,1981,IT-27(9):533-547.

[3]ZHANG T,PARHI K K.A54Mbps(3,6)-regular FPGA LDPC Decoder[J].Signal Processing Systems,2002(10):127-132.

[4]YUK,LINS.LowDensity Parity Check Codes Based on Finite Geometries:ADiscovery and Newresults[J].IEEE Trans.Inf.Theory,2001,47(11):2711-2736.

上一篇:养殖组织下一篇:超越预算理念