基于FPGA的射频卡实时消费记录系统设计
控制位,通过设定不同的数就具有不同的意义。例如,存储控制的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)对卡的操作
通过认证后,就可以对特定扇区中的块进行读、写、减值、加值、存储、传输和中止操作。
在本项目中,FM1702SL非接触读卡机专用芯片与S50射频卡通信的流程图如图2所示。
2.2 液晶显示模块
通过阅读液晶数据手册了解清楚基本原理后,根据我们项目的需求写了12 864的驱动函数。驱动函数包括延时函数、液晶初始化函数、写数据函数、写命令函数、写数据函数、液晶显示函数、数值的转换格式函数、显示数值函数和射频卡序列号显示函数。
在液晶初始化函数中对通信方式、功能、显示还有输入方式进行了设置,同时也对液晶进行了清屏操作。在我们设计的模块中选择的是并口方式(PSB=1),功能设置为0x30(8字节界面、基本指令集),显示设置为0x0C(整体显示、光标不显示、光标不反向),输入方式设置0x06(光标右移、地址位加1、整体右移)。根据读写时序图,我们对写数据函数和写命令函数进行了编写。同时,根据项目要求对液晶界面显示内容的格式也进行了编写。液晶部分软件流程如图3所示。
2.3 SD卡的软件设计
在SOPC builder中对SPI核进行相应的配置后,通过写一些驱动函数就可以对外围的SD卡进行读写操作了,这些读写操作只是简单的对某个数据扇区进行读写操作,目的是测试底层通信是否正确,操作流程如图4所示。
SD卡的底层通信测试正确后,我们只是把SD卡当做一块大容量的Flash在用,为了让时序写入SD卡中的信息在PC中可以直接显示,我们就要移植文件系统。目前流行的FAT文件系统模块主要有:周立功公司的ZLG/FS、美国Micrium公司的UC/FS、SourceForge.net网站上发布的开源项目efsl(Embeded File System Library)以及日本电子爱好者设计并维护的FATFS文件系统模块。由于FATFS具有开源、免费、高效等特点,并且相对其他文件系统模块成熟一些。
在我们项目中用到了FatFS Module,FatFS Module是一个小型嵌入式系统下的FAT文件系统模块,其代码完全兼容ANSI C,而且与硬件平台无关,可以简单方便的移植到8051、PIC、AVR、SH、Z80、H8、ARM等MCU上,而不要做任何修改。FatFs有FatFs、Tiny-FatFs和Petit-Fat Fs 3个版本,FatFs适合比较大的RAM的设配;Ting-FatFs适合小RAM的系统,比如单片机,代价是更慢的读写速度和更少的API函数;Petit-FatFs适合8位处理器,占用极少的RAM,只对单文件进行读写操作。SD卡文件系统结构如表2所示。
各个层的作用:硬件抽象层完成NIOS2处理器对SD卡控制器相应寄存器的设置,把对SD卡的操作抽象为对相应的寄存器的操作;CRC校验层实现了CRC校验,对命令和响应使用CRC7校验,对数据采用CRC16校验;命令层定义了各种命令和响应,以向SD卡发送命令的函数为基础,实现了读写SD卡内部寄存器等功能;操作函数接口层向FatFS文件系统提供操作SD卡的函数,包括:SD卡初始化、读单块数据、读多块数据、写单块数据、写多块数据、获取
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 基于FPGA的快速并行FFT及其在空间太阳望远镜图像锁定系统中的应用(06-21)
- 3DES算法的FPGA高速实现(06-21)
- 用FPGA实现FFT算法(06-21)
- FPGA的DSP性能揭秘(06-16)