關於f/d和etu" rel="noopener noreferrer">深入理解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--5mhz之間。
etu的單位是時間單位秒(毫秒、微秒),等同於傳輸每個資料位所需的時間。對其取倒數得出來的就是每秒傳輸的資料位,也就是bps。我們取f = 3.579545mhz,用3579545除以372結果等於9622.4約為9600bps。
通用的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.579545mhz?為什麼預設的f值選擇為372呢?首先3.579545mhz 是常用石英晶振的標稱值,9600 * 372 = 3.5712 mhz,與之最為接近。再說為什麼是372,372 = 12 *31。標準的8051微控制器每個指令週期為12個時鐘週期,而且定時/計數器也按照1/12 進行分頻後再計數的,這樣設定對於智慧卡晶元來說可以比較容易實現對io資料通訊的控制,也可以更好地和pc機串列埠9600速率配合(當然這是指上個世紀80年代的時候,對於現在的智慧卡晶元設計技術而言實現任意分頻的控制都不是問題了)。
由此可見,這些引數的選擇都是為了能夠更好地利用當時既有的標準和技術,要知道7816-3在2023年的時候就已經制定了,按照當時的主流pc機配置把串列埠速率設為9600,用乙個232介面晶元(比如max232)再加上3.579545mhz的晶振,再配合幾片74系列的閘電路外加5伏的直流電源
和幾個阻容器件
,這就是最基本的
rs232
串列埠讀卡器了。
深入理解7816(1) 關於F D和etu
對於剛接觸智慧卡的工程師來說,在閱讀 7816 3 規範的時候,常常被其中的一些術語迷惑,讀起來會覺得有些彆扭。尤其是在看到復位應答中的f和 d設定以及對應的 etu的時候,會覺得有些複雜和難以理解。其實從本質上說 7816 3 定義了智慧卡 這裡指的是接觸式 cpu卡,對於邏輯加密卡以及非接觸 i...
深入理解C語言 深入理解指標
關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...
mysql 索引深入理解 深入理解MySql的索引
為什麼索引能提高查詢速度 先從 mysql的基本儲存結構說起 mysql的基本儲存結構是頁 記錄都存在頁裡邊 各個資料頁可以組成乙個雙向鍊錶每個資料頁中的記錄又可以組成乙個單向鍊錶 每個資料頁都會為儲存在它裡邊兒的記錄生成乙個頁目錄,在通過主鍵查詢某條記錄的時候可以在頁目錄中使用二分法快速定位到對應...