深入理解7816(1)---- 关于F/D和etu

深入理解7816(1)---- 关于F/D和etu

对于刚接触智能卡的工程师来说,在阅读7816-3规范的时候,常常被其中的一些术语迷惑,读起来会觉得有些别扭。尤其是在看到复位应答中的F和D设置以及对应的etu的时候,会觉得有些复杂和难以理解。

其实从本质上说7816-3定义了智能卡(这里指的是接触式CPU卡,对于逻辑加密卡以及非接触IC卡不在此列)和读写设备之间的通讯协议,说白了就是数据位传输的格式。

如果学习或者接触过单片机,那么对于RS232一定不会陌生,它属于异步串行通讯接口(UART),通过RxD、TxD进行数据的收发,RS232曾经是PC机的标配,但是目前在多数PC上基本不复存在了(当然还可以通过USB-232转换器来扩展)。

接下来我们看看7816-3定义的通讯协议,其实基本上可以说是RS232的翻版并在此基础上进行的改进,7816中只有一个IO同时兼具数据收发的功能,这点和RS232用RxD和TxD进行数据收发是不同的。在RS232中我们有9600波特率、起始位、奇偶校验位、停止位这些概念,而在7816-3中都完整地保留了下来,只不过7816-3中引入了etu,没有使用bps,但是基本原理是一致的。etu的定义可以更加精确地描述每个数据位在传输过程中收发双方的职责和角色转换。

根据定义在智能卡上电复位的时候 1 etu = 372 / f ,其中f
= 读写设备通过CLK管脚提供给智能卡的时钟频率,通常在1--5
MHz之间。

etu的单位是时间单位秒(毫秒、微秒),等同于传输每个数据位所需的时间。对其取倒数得出来的就是每秒传输的数据位,也就是bps。我们取f
= 3.579545 MHz,用3579545除以372结果等于9622.4约为9600
bps。

通用的etu计算公式: 1
etu = (F / D) * (1 / f) ,F和D的值根据7816-3规范中的约定来进行设置。对于上电复位时的取值 F
= 372,D = 1即作为默认值Fd和Dd。如果智能卡支持其他速率则需要在ATR中的TA1来指出其他的F和D的值,比如设定F=372,可以把D分别设定为2/4,那么智能卡能支持的通讯速率可以分别为19200/38400。

那么为什么要选择时钟频率为3.579545 MHz?为什么默认的F值选择为372呢?首先3.579545
MHz 是常用石英晶振的标称值,9600 * 372 = 3.5712 MHz,与之最为接近。再说为什么是372,372
= 12 * 31。标准的8051单片机每个指令周期为12个时钟周期,而且定时/计数器也按照1/12 进行分频后再计数的,这样设定对于智能卡芯片来说可以比较容易实现对IO数据通讯的控制,也可以更好地和PC机串口9600速率配合(当然这是指上个世纪80年代的时候,对于现在的智能卡芯片设计技术而言实现任意分频的控制都不是问题了)。

由此可见,这些参数的选择都是为了能够更好地利用当时既有的标准和技术,要知道7816-3在1989年的时候就已经制定了,按照当时的主流PC机配置把串口速率设为9600,用一个232接口芯片(比如Max232)再加上3.579545MHz的晶振,再配合几片74系列的门电路外加5伏的直流电源和几个阻容器件,这就是最基本的RS232串口读卡器了。

时间: 2024-10-24 16:40:50

深入理解7816(1)---- 关于F/D和etu的相关文章

深入理解7816(1)---- 关于F/D和etu【转】

本文转载自:http://blog.sina.com.cn/s/blog_4df8400a0101gkss.html 深入理解7816(1)---- 关于F/D和etu 对于刚接触智能卡的工程师来说,在阅读7816-3规范的时候,常常被其中的一些术语迷惑,读起来会觉得有些别扭.尤其是在看到复位应答中的F和D设置以及对应的etu的时候,会觉得有些复杂和难以理解. 其实从本质上说7816-3定义了智能卡(这里指的是接触式CPU卡,对于逻辑加密卡以及非接触IC卡不在此列)和读写设备之间的通讯协议,说白

深入理解7816(2)---关于ATR【转】

本文转载自:http://blog.sina.com.cn/s/blog_4df8400a0102vcrk.html 深入理解7816(2)---关于ATR 智能卡(此处主要指接触式CPU卡)本身始终处于被动的状态,所以终端设备在和智能卡进行数据交互的时候,需要首先给智能卡发指令,智能卡才会对应地给出应答.而智能卡告诉终端的第一句话就是ATR,亦即“复位应答”. 想象一下,如果让你为智能卡设计一个通讯协议,该怎么设计? 因为ATR是智能卡上电后说的第一句话,所以一定要确保这句话被准确地接收.在设

通俗理解T检验与F检验的区别【转】

转自:http://blog.sina.com.cn/s/blog_4ee13c2c01016div.html1,T检验和F检验的由来一般而言,为了确定从样本(sample)统计结果推论至总体时所犯错的概率,我们会利用统计学家所开发的一些统计方法,进行统计检定. 通过把所得到的统计检定值,与统计学家建立了一些随机变量的概率分布(probability distribution)进行比较,我们可以知道在多少%的机会下会得到目前的结果.倘若经比较后发现,出现这结果的机率很少,亦即是说,是在机会很少.

通俗理解T检验与F检验的区别

声明:此文内容来源于网络,本文只作用个性化标注和解释说明. 1.T检验和F检验的由来    一般而言,为了确定从样本(sample)统计结果推论至总体时所犯错的概率,我们会利用统计学家所开发的一些统计方法,进行统计检定.    通过把所得到的统计检定值[1],与统计学家建立了一些随机变量的概率分布(probability distribution)进行比较,我们可以知道在多少%的机会下会得到目前的结果.倘若经比较后发现,出现这结果的机率很少,亦即是说,是在机会很少.很罕有的情况下才出现:那我们便

对于闭包的一些理解

一.闭包的定义 关于闭包的定义众说纷纭,下面是一些权威给出的说法: 高程3:“闭包是指有权访问另一个函数作用域中的变量的函数”: 犀牛书:“函数对象可以通过作用域链相互关联起来,函数体内部的变量都可以保存在函数作用域内,这种特性在计算机科学文献中称为‘闭包’”: 你不知道的JavaScript(上卷):“当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行”. 而我对于闭包通俗直白的个人理解是:函数定义的作用域链在函数执行后不会消失,而是由内部函数持有对这个函

便于理解mysql内幕的各种逻辑图组

便于理解mysql内幕的各种逻辑图组 http://blog.sina.com.cn/s/blog_445e807b0101ggtl.html 以下是个人一直以来从网络等各种途径收集到的一些对理解mysql有重要意义的图,现共享给大家,共同学习,希望能够为您更好的理解mysql的各种内幕有所帮助,废话不多说,直接上图: 1,顶顶有名的官方mysql架构图,理解mysql整体机构必不可少 2,更直观性mysql整体逻辑机构图: f3,innodb引擎架构图,对理解innodb内部结构大有裨益 f

数据结构与算法:算法分析

目录 实验研究 常用函数 渐近分析  一.实验研究(Experimental studies) 1.运行时间测量 时钟时间 time.time() CPU时间 time.clock() 基准时间 timeit.timeit() 在执行算法的时候,我们可以通过改变输入规模的大小和记录花费的时间来研究运行时间. 在python中使用time模块的time函数来记录算法的运行时间: from time import time start_time=time() run algorithm end_ti

第六次作业 业务流程、知识管理、项目整体绩效评估

一.业务流程管理与重组1.流程管理的本质与核心是什么: 流程管理的本质就是构造卓越的业务流程,核心是流程. 2.流程管理与BPR的区别: 流程管理包含了BPR,但是比BPR概念更广泛,更适合现实的需要 3.业务流程改进的过程和方法中,分析问题用哪2个图:寻找原因用什么图. 矩阵图    寻找原因用鱼骨图 4.流程的分析与设计方法是哪六条(只答小标题): (1)价值链分析法 (2)ABC成本法 (3)流程建模和仿真 (4)基于UML流程分析和建模方法 (5)头脑风暴法和德尔菲法 (6)标杆瞄准法

01背包初始化的细节问题与循环下限的改进

转自:背包久讲 Tianyi Cui 初始化的细节问题 我们看到的求最优解的背包问题题目中,事实上有两种不太相同的问法.有的题目要求“恰好装满背包”时的最优解,有的题目则并没有要求必须把背包装满.一种区别这两种问法的实现方法是在初始化的时候有所不同. 如果是第一种问法,要求恰好装满背包,那么在初始化时除了f[0]为0其它f[1..V]均设为-∞,这样就可以保证最终得到的f[N]是一种恰好装满背包的最优解. 如果并没有要求必须把背包装满,而是只希望价格尽量大,初始化时应该将f[0..V]全部设为0