1 硬件模块设计射频卡实时消费记录系统组成,主要分为以下几部分:fpga、电源管理、射频卡通信、sd卡、液晶显示、蜂鸣器等。
1) fpga的选用——ep2c8q208c8n
ep2c8q208c8n是altera公司推出的cyclone ii芯片,该芯片有8 256个逻辑单元,208个引脚、用户可用的i/o引脚为138个、18个嵌入式乘法器和2个锁相环。与其他90-nm fpgas同类产品相比在性能上提高了60%并且减少了一半的能量消耗。基于fpga平台设计的射频消费记录系统具有设计灵活、可裁剪、可扩充、可升级及软、硬件在系统可编程的优势。
2) 电源部分
本系统通过一个开关电源提供5 v的电源。系统中fpga的工作电压为3.3 v与1.2 v,配置芯片epcs4s18工作电压为3.3 v,射频卡读写模块、液晶显示模块还有蜂鸣器需要5 v供电,sd卡工作在3.3 v,通过ams1117-1.2与ams1117-3.3稳压器把5 v的转换成1.2v和3.3v。
3) 液晶显示
液晶选用带字库的lcd12864。液晶显示器工作电压为5 v,通过开关电源来供电。液晶显示系统可以显示界面,如“一卡通研发”、“卡号”、“消费”、“余额”等信息。
4) 射频卡通信
考虑到开发性和经济性等因素,这里选用了复旦微电子股份有限公司设计的fm1702sl(该芯片与rc632结构类似),是基于iso/ec14443标准的非接触卡读卡机专用芯片,工作频率为13.56 mhz,并且支持多种加密算法。射频卡我们选用的是phihps公司的mifare标准ic卡,该类型卡的作用距离为10 cm,属于紧耦合卡。
iso/iec组织根据接口设备与卡作用距离的不同定义了3个国际标准。
iso/iec14443标准又分为iso/iec14443a(代表产品是philips公司的mifare射频卡)和iso/iec14443b(st、motorola、samsung、oti和nec公司生产的产品)标准。
5) sd卡模块
sd卡是一种基于半导体快闪记忆器的新一代记忆设备,由日本松下、东芝及美国sandisk公司共同研发,它具有微型、低功耗、防震、非易失性和保存数据无需能量消耗等特点,并且兼容mmc闪存卡,广泛应用于手机、数码相机、智能机器人、gps、电子测试设备和大容量存储设备。
sd卡支持spi和sd两种通信接口模式,由于altera公司提供了spi接口ip核,因此在我们设计的系统中采用的是spi模式。相对sd模式,spi模式应用的更广泛一些。
2 软件设计
2.1 射频通信模块的软件设计
系统采用的是fm1702sl非接触卡读卡机专用芯片和philips公司的mifare标准ic卡共同组成了射频卡读写模块。了解s50非接触式ic卡和fm1702sl的内部结构与读写操作过程是编写程序的关键,因此对其做简单介绍。
mf1 ic s50由1kb的eeprom、rf接口和数字式控制单元组成,能量和数据都通过天线传送,天线由几匝线圈组成并直接连接到mf1 ic s50。其与pcd之间的工作原理为:读写器向m1卡发一组固定频率的电磁波,卡片内有一个lc串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,lc谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2 v时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。
卡的内部有16个扇区,每个扇区分为4块,分别是块0、块1、块2、块3。块0~块2为数据块,用于存储数据。块3为控制块,包括了密码a、存取控制、密码b。每个块为16个字节,以块为存储单元。第0扇区的块0,用于存放厂商代码,已经固化不可更改。
每个扇区的密码和存储控制都是独立的,根据实际需要设定各自的密码及存储控制。在控制块中密码a和密码b各占6个字节,存储控制占4个字节,在存储控制中每个块都有相应的3个控制位,通过设定不同的数就具有不同的意义。例如,存储控制的4个字节为0xff078069,表示块0~块3中分别对应的3个控制位都为0,通过验证密码a或者密码b的正确性后就可以对数据块0、1、2进行读、写、加、减、转存和恢复操作,对于控制块3来说,密码a不能读,存储控制不能写,通过验证密码a或密码b的正确性后可以对密码a进行写、密码b进行读或写、存取控制读操作。
fm1702sl包含512字节的eeprom和64字节的fifo,fm1702sl的内部寄存器组按功能不同分成8组,每组为一页,包含8个寄存器,内部还带有加密单元,在fm1702sl中,6字节的密钥必须以规定的格式存放在eeprom内,需要12字节eeprom。fm1702sl与s50 ic卡之间的通信可以简单的分为下面几个过程:
1) 复位应答
射频读写模块上电复位后,然后进入复位应答模式。按照定义好的协议和波特率,读卡器会对其有效工作范围内的卡进行检验,验证卡片的类型。
2) 防冲突机制
所谓防冲突就是当有多张卡在其工作范围内时,射频读写模块会根据控制命令选中其中的一张卡片进行后续操作。
那些没有选中的卡片会处于空闲状态等待下一次选卡操作。
3) 选卡
射频读写模块对放入fm1702sl操作范围之内的某张卡片进行选中,获得其卡序列号和卡片容量大小。
4) 三次相互认证
当一张卡按照iso14443a协议被选中后,射频读写模块根据命令访问扇区号中的控制块,并对该控制块的密码进行检验,检验方式使用三次认证令牌机制,该认证过程在执行authent1和authent2指令时自动完成,在认证指令执行之前,用户必须保证在密钥缓冲器中已经准备好了密钥,当密码得到验证,我们就可以通过加密进行相互通信了。
5) 对卡的操作
通过认证后,就可以对特定扇区中的块进行读、写、减值、加值、存储、传输和中止操作。
2.2 液晶显示模块
通过阅读液晶数据手册了解清楚基本原理后,根据我们项目的需求写了12 864的驱动函数。驱动函数包括延时函数、液晶初始化函数、写数据函数、写命令函数、写数据函数、液晶显示函数、数值的转换格式函数、显示数值函数和射频卡序列号显示函数。
在液晶初始化函数中对通信方式、功能、显示还有输入方式进行了设置,同时也对液晶进行了清屏操作。在我们设计的模块中选择的是并口方式(psb=1),功能设置为0x30(8字节界面、基本指令集),显示设置为0x0c(整体显示、光标不显示、光标不反向),输入方式设置0x06(光标右移、地址位加1、整体右移)。根据读写时序图,我们对写数据函数和写命令函数进行了编写。同时,根据项目要求对液晶界面显示内容的格式也进行了编写。