新闻中心

EEPW首页>手机与无线通信>设计应用> CPLD在射频卡读写器中的应用

CPLD在射频卡读写器中的应用

作者: 时间:2009-07-15 来源:网络 收藏

CRC-CCITT算法生成多相式为:x 16+x 12+x 5+1[4]。计算CRC实际上是将数据通过线性反馈移位寄存器,所有数据移入后CRC寄存器的值即为16位CRC值。并行CRC运算模块每次输入8位数据,相当于一次并行运算就得到了串行移位运算时需要8位移位所得的结束。由表1~表4可以知道并行CRC实现的原理:每个时钟到来时完成8bit数据 CRC值计算;下一个8bit数据到来时,把上一个8bit数据的CRC值C15~C0作为初值,继续完成并行CRC计算。即每次处理一个字节。

表1 移位前CRC寄存器值(初值)

本文引用地址://m.amcfsurvey.com/article/157983.htm
R15 R14 R13 R12 R11 R10 R9 R8 R7 R6 R5 R4 R3 R2 R1 R0
C15 C14 C13 C12 C11 C10 C9 C8 C7 C6 C5 C4 C3 C2 C1 C0

表2 1次移位后CRC寄存器值

R15 R14 R13 R12 R11 R10 R9 R8 R7 R6 R5 R4 R3 R2 R1 R0
X0
C15
C14
C13
C12
C11
X0
C10
C9
C8
C7
C6
C5
C4
X0
C3
C2
C1

表3 2次移位后CRC寄存器

R15 R14 R13 R12 R11 R10 R9 R8 R7 R6 R5 R4 R3 R2 R1 R0
X1
X0
C15
C14
C13
C12
X1
C11
X0
C10
C9
C8
C7
C6
C5
X1
C4
X0
C3
C2

表4 8次移位后CRC寄存器值

R15 R14 R13 R12 R11 R10 R9 R8 R7 R6 R5 R4 R3 R2 R1 R0
X7
X3
X6
X2
X5
X1
X4
X0
X3

X7
X2
X6
X1
X5
X0
C15
X4
C14
X3
C13
X2
C12
X1
C11
X7
X0
C10
X6
C9
X5
C8
X4

表中参数说明:Ri为CRC移位寄存器值(R0为低位),Ci为CRC移位寄存器初值(C0为低位),Di为输入数据(D0为低位),Xi=Di XDR Ci,同一栏中数据的运算关系是异或(XOR)。

每次并行数据到来时,各CRC寄存器值按表4运算关系更新。最后一个字节数据输入后CRC寄存器的值(R0~R15)即为该数据组的CRC值。模块设计采用了VHDL语言,同步更新R0~R15寄存器的值,从表中看出,一次CRC计算最多完成4组XOR运算。如:R3=C11 XOFR D7 XOR C7 XOR D0 XOR X0;R15=D7XOR C7 XOR D3 XOR C3。

3 控制模块

单片机扩展了RAM后,P2口只有P2.5~P2.7可以用来提供控制信号,不能满足需要,因而在内部将3路信号扩展为8路控制信号,以实现对各部分进行协调控制。主要有编码器和译码器的启动信号、复位信号、指令标志信号、CRC输出信号等控制信号。

4 性能分析

这里选用1片XILINX XC95144实现整个数据处理模块的功能,使用软件平台是Xilinx Foundation 3.1i。XC95144内部有144个宏单元、3200可用门。图5和图6分别给出了编码器和译码器的部分时序仿真结果及其说明。可以看到,二者均实现了协议要求,编码器在准确的位置实现脉冲位置调制,译码器能准确地对曼彻斯特码数据进行译码,并计算出输入数据的CRC值。

用AT89C51单片机提供编码数据以及模拟待译码曼码数据流对模块功能进行实测,用示波器观察各测试点信号,结果基本上与时序仿真的波形图相同,达到了预期设计的目标。

本文较系统地介绍了一类远距离数字处理模块的设计,特别在于:(1)采用单片实现了数字模块功能,采用了原理图和VHDL 相结合自顶向下的设计方法[2][5],样机PCB版面积小,开发周期短,性能稳定。其设计方案和思路对其他类别设计具有一定的参考价值。(2)提出了一种快速实现CRC-CCITT的并行运算方法,该方法适用于高速数据传输场合。

为了提高系统的安全性,可以对对写入卡中的数据进行加密处理,即引入数据加密模块,并将整个设计配置到一片容量更大的或FPGA中。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭