
图1 Smart Card控制逻辑框图

图2 Smart Card控制逻辑状态
波特率计数器Baud Rate Counter用来控制位宽,无论是接收位还是发送位,计数值都是372并以同步数据传输。接收数据时,当计数器值为186时采样接收位,这恰好是接收位的中央。
计数器Bit Counter用来统计发送/接收字符的位数。
计数器Byte Counter用来统计发送/接收的字节数,字节数还被用来确定读数据周期或发送命令周期的结束。
此ACOS1卡接收到19个复位应答字符后,状态机进入发送命令状态Send Command。Smart Card控制器这时会按照T=0协议,准备好发送命令和接收响应。解码器会检测字符计数器以确定什么时候发送命令、发送什么命令,以及多少个字符将会被接收到。发送到卡的第1个命令由5个字节组成,即80、A4、00、00和02,当卡回应一个字节A4后,控制器发送两个字节,即F0和00,Smart Card日向应状态字节为91和00。从T=0命令表中可以看出,A4
用来选择文件地址,F0和00为选定的文件地址。接下来的命令是选择数据记录并取数据,所有的数据和命令长度都己经定义并且是固定的。在此设计中,io_rw控制移位寄存器从Card io读数据或从data encoder移位数据到card_io,所有操作都是基于字节计数器的。在本设计中,姓名记录位于第38~69个字节。性别、状态和年龄记录是字节92、93和94;存款余额记录是字节126和127。Data_ready信号用来滤除无用数据,此信号被SRAM接口用来控制从SmartCard到SRAM写数据。
(2)Main Control Logic(主控逻辑)
主控状态机用来控制各功能模块的工作顺序,并控制从SRAM读数据,然后将其解码后发给LCD控制逻辑以供显示。主控逻辑包含一个延迟计数器,用其拆分发送到LCD上显示的数据,因此显示在LCD上的每条信`患之间将会有1~2 s的间隔。主控逻辑框图如图3所示,流程如图4所示。状态机上电进入IDLE状态,等待Smart Card控制器读数据,并将其存储于SRAM中;当smartcard done变高,状态机进入standby状态,等待lcd_ready。卡名与LCD显示采用的是相同的ASCII格式,因此不需要解码卡名字符,所有从SRAM读取的字符将会被送到LCD显示。下一个记录为性别,解码后如果是“1”,则代表男性; “2”代表女性。之后是状态记录,解码后如果是“1”,则代表单身; “2”代表已婚。年龄信息以二进制存储在Smart Card中,发送到LCD之前必须转换为ASCII码,二进制码到ASCII码转换模块独立于顶层模块。

图3 主控逻辑框图

图4 主控逻辑流程
(3)SRAM Interface:SRAM接口
SRAM接口由主控逻辑控制,sram_w为SRAM接口写使能信号,在读smart card过程中保持为高。当主控状态机进入standby状态写数据到LCD屏时,地址计数器将被复位,然后数据按照存储顺序被读出。
(4)LCD Control: LCD控制
LCD控制逻辑用来初始化LCD屏,并将解码数据送到LCD显示。此模块使用简化的时序控制LCD显示,每个字符的写周期被设置为30 000个时钟周期,这个值远远高于LCD控制器所要求的数百毫秒。
(5)设计范例和实现
源代码及测试序可从Xi1inx 网站上。本设计在XC2C256中实现,资源使用率如表所示。
如表 资源使用率

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。