微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > CPLD在射频卡读写器中的应用

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

时间:08-02 来源:互联网 点击:
表1 移位前CRC寄存器值(初值)

R15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0
C15C14C13C12C11C10C9C8C7C6C5C4C3C2C1C0

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

R15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0
X0
C15
C14
C13
C12
C11
X0
C10
C9
C8
C7
C6
C5
C4
X0
C3
C2
C1

表3 2次移位后CRC寄存器

R15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0
X1
X0
C15
C14
C13
C12
X1
C11
X0
C10
C9
C8
C7
C6
C5
X1
C4
X0
C3
C2

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

R15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0
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

3 控制模块

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



4 性能分析

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

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

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

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top