劉瓊
(湖南工業(yè)職業(yè)技術學院,湖南長沙 410082)
DS2433在即插即用設備部件認證中的應用研究與仿真
劉瓊
(湖南工業(yè)職業(yè)技術學院,湖南長沙 410082)
即插即用設備部件的關鍵技術是身份識別,利用DS2433器件能讓設備部件實現身份識別和自我描述。文中介紹了DS2433的結構、存儲器功能命令,利用二叉樹路徑搜索算法設計了1-Wire總線上所插接的多個DS2433在部件即插即用中質詢與響應認證過程,并通過一個具體的Proteus仿真實例,驗證了系統(tǒng)的可行性和穩(wěn)定性。
DS2433;即插即用;二叉樹;認證
在競爭激烈的嵌入式電子設備市場上必須解決的問題是確保原設備部件的質量,防止產品被非法復制,這些因素均是一個設備或系統(tǒng)成功與否的關鍵。設備上眾多部件的硬件和軟件知識產權的安全管理,是實現這個關鍵的唯一途徑。因此,設備部件身份識別在系統(tǒng)中至關重要。設備的主機要能夠識別各個重要部件,并能實時檢測到新插入的部件,實時獲取其合法身份信息,并在存儲器中添加該部件的記錄。
DS2433是一款基于1-Wire總線的4096位EEPROM,具有3引腳PR-35小體積封裝形式或8引腳SOIC封裝,能安裝到印制電路板上或進行引線,其典型應用包括:存儲校準系數、電路板標識認證以及產品升級狀態(tài)等,很適合運用到即插即用系統(tǒng)中。它除了具有一般1-Wire器件的特性外,還有一些特殊的結構和要求。
DS2433內部結構如圖1所示。?DS2433帶有一個由工廠光刻的注冊碼,其中包括:48位唯一序列碼、8位CRC校驗碼和8位家族碼(23h)。它的4096位EEPROM分為16頁,每頁256位。它的256位暫存器作為一個附加頁面,在寫存儲器時可用作緩沖器使用。數據先被寫入暫存器中,在此對其進行校驗。隨后采用復制暫存器命令將數據傳送到EEPROM中。64位注冊碼為每個器件提供了一個保證唯一的認證標識,確保每個器件的絕對可追溯性,當有多個DS2433同時掛接在1-Wire總線上并形成本地網絡時,可作為設備部件的節(jié)點地址使用。數據按照1-Wire協(xié)議串行傳送,僅需一條數據線和一條地線。
圖1 DS2433內部結構圖
3.1 Write Scratchpad[0Fh]寫暫存器
Write Scratchpad命令適用于數據存儲器和寄存器頁中的可寫地址。為了保證暫存器中的數據能夠被正確復制到存儲器陣列中,用戶必須保證寫暫存器命令中的32個數據字節(jié)開始于一個有效行邊界處,發(fā)出Write Scratchpad命令后,主機(微控制器)必須首先發(fā)送2個字節(jié)的目標地址,接著發(fā)送要寫入暫存器的數據。
3.2 Read Scratchpad[AAh]讀暫存器
Read Scratchpad命令可以用來校驗目標地址和暫存器數據的完整性。主機發(fā)送命令代碼后開始讀取數據。開頭的兩個字節(jié)是目標地址,下一個字節(jié)是結束偏移量/數據狀態(tài)字節(jié),接著是暫存器數據。
3.3 Copy Scratchpad[55h]復制暫存器
Copy Scratchpad命令用來將暫存器中的數據復制到EEPROM,發(fā)出Copy Scratchpad命令后,主機必須提供一個3字節(jié)的授權模式,該數據應該通過緊鄰此條命令的前一個Read Scratchpad命令獲得。該3字節(jié)模式數據必須與三個地址寄存器(依次為TA1,TA2,E/S)中的數據正確匹配。
3.4 Read Memory[F0h]讀存儲器
Read Memory命令通常用于從DS2433讀取數據。發(fā)出命令后,主機需要提供2個字節(jié)的目標地址。在這兩個字節(jié)之后,主機開始讀取始于目標地址的數據。
DS2433的基本操作流程:初始化→ROM功能命令→存儲器功能命令→數據傳輸。與一般的1-Wire器件類似,所有數據處理均從初始化開始,數據傳輸都是從低位開始。初始化過程由主機發(fā)送的復位脈沖和DS2433發(fā)送的在線應答脈沖組成。應答脈沖用于通知主機,DS2433已掛接在總線上,并已準備就緒。一旦主機檢測到在線應答脈沖,就可以發(fā)出四條常用ROM功能命令中的一個。所有ROM功能命令的字長均是8位,表1是這些ROM命令的簡要介紹。
表1 DS2433的ROM常用操作命令
5.1 搜索操作的基本信息
1-Wire總線器件的64位ROM注冊碼由8位CRC校驗碼、48位序列號、8位家族代碼構成,這64位注冊碼分布于一棵二叉樹同根節(jié)點到某個葉子節(jié)點的64條邊上,樹中每一節(jié)點的左分支對應編碼0,右分支對應編碼1。搜索總線上所有ROM編碼的過程就是按某種算法遍歷該二叉樹由根節(jié)點到所有葉子節(jié)點的所有“路徑”的過程。
按照1-Wire總線的特性,總線上的從機之間為“線與”的關系。當主機發(fā)出搜索命令后,所有從機同時發(fā)送自身ROM注冊碼中的最低有效位(即家族代碼最低位),結果相當于全部最低有效位的邏輯與;主機讀入從機發(fā)送的第n位數據的原碼后,再啟動下一位操作,接著從機發(fā)送第n位數據的取反值,主機再讀入第n位數據的取反值;從兩次讀入的情況可以對ROM注冊碼的第n位做出判斷,如表2所示。
表2 ROM編碼第i位的判斷情況
搜索過程中,主機必須向總線上的從機發(fā)回一個指定位a;如果從機ROM注冊碼的當前位的值與a匹配,則繼續(xù)參與搜索過程;若從機器件的當前位與之不匹配,則該器件轉換到等待狀態(tài),并保持等待狀態(tài)直到下一個1-Wire復位信號到來。其余63位ROM碼的搜索依然按照上述“讀入兩位,寫出一位”的模式進行重復操作。按照這種搜索算法進行下去,最終除了一個從機器件外所有從機將進入等待狀態(tài),經過最后一輪檢測,就可得到最后保留(未進入等待狀態(tài))器件的ROM注冊碼。在后續(xù)搜索過程中選用不同的路徑來查找另外器件的ROM注冊碼。
5.2 基于二叉樹路徑搜索的ROM編碼搜索算法
圖2給出了參照二叉樹路徑搜索一條1-Wire總線所有器件64位的ROM注冊碼的流程,搜索過程選擇“左子樹優(yōu)先”。下面結合表2討論搜索算法的實現細節(jié),搜索到的注冊碼保存于ROMCODE數組。
由表2可知,搜索過程中將遇到四種不同的2位組合,下面逐一進行討論研究:
①“11”表明總線上無從機,主機執(zhí)行下面的指令后直接返回:if(bit_1==1&&bit_2==1)return 1。
②“01”表明未被屏蔽器件的ROM注冊碼當前位均為0,這些器件余下的注冊碼位全部分布于左分支路徑(即左子樹),故置ROMCODE[n]=0,隨后主機向總線寫0,使為0的從機繼續(xù)通信,搜索左子樹,并屏蔽為1的從機。
③“10”表明未被屏蔽器件的ROM注冊碼當前位均為1,這些器件余下的編碼位全部分布于右分支路徑(即右子樹),故置ROMCODE[n]=1,隨后主機向總線寫1,使為1的從機繼續(xù)通信,搜索右子樹,并屏蔽為0的從機。
上述“01”和“10”組合情況處理的示意性代碼如下:if (bit_1!=bit_2){ROMCODE[n]=bit_1;Write_DQ(bit_1);}
④“00”表明未被屏蔽器件的ROM注冊碼當前位有0和1,是最為復雜的一種情況,因為當前位出現搜索分支,其左子樹與右子樹均存在。第一次搜索從器件的注冊碼時,如果左子樹和右子樹都存在,則需要記錄該分叉結點的深度,并沿左子樹的方向向下搜索。當搜索深度達到64時,獲得一個從器件的注冊碼,并取出該搜索路徑最后的分叉結點的深度,然后主機執(zhí)行第二次搜索過程。在該搜索過程中,如果結點的深度值大于最后一個分叉結點的深度,按照“左子樹優(yōu)先”的原則,可認為當前位為0,并向總線寫入此值,對左子樹進行搜索;如果結點的深度值小于最后一個分叉結點的深度,則要根據上次搜索最后一個分叉結點注冊碼的相應位果是否為0來決定是否記錄深度值,并向總線發(fā)送這位;如果結點的深度值等于最后一個分叉結點的深度,說明“左子樹已搜索完”,則當前位為1,并向總線寫入此值,對右子樹進行搜索。這樣,每搜索到一個深度為64的葉子結點,就會得到一個從器件的注冊碼,一直搜索到記錄中沒有分叉結點為止。
搜索算法流程圖2中,ROMCODE[n]表示64位的變量存放器件的ROM注冊碼,Level記錄當前分支結點的位置,Last_Level記錄前次搜索的最后分支的結點位置,n反映二叉樹當前搜索深度,也表示搜索的位序。
圖2 1-Wire總線所有器件ROM注冊碼的搜索算法流程圖
搜索ROM注冊碼的技術是一個實現即插即用技術的途徑,當設備每次上電時,主機能對設備部件進行動態(tài)管理。對于新增加的或更改的部件,主機可以動態(tài)地獲得它的注冊碼,從而可以在數據庫中增加此設備的記錄,并進行質詢與認證,判斷其是否合法。對于從系統(tǒng)中撤離的設備,由于主機沒有檢測到它的注冊碼,所以可在數據庫刪除此設備的記錄。此算法已經在作者主持的一項課題中得到了很好的應用,實現了在線檢測設備的各部件的注冊碼。
根據DS2433在即插即用設備部件認證中的要求,設計了多個DS2433與微控制器連接的Proteus仿真實例,如圖3所示。以激光打印為例,用一個DS2433作為硒鼓的認證模塊,用另一個DS2433作為墨粉盒的認證模塊,一個DS18B20作為設備溫度檢測模塊。該仿真實例用DS2433實時存儲了所有部件的注冊碼,完全滿足即插即用系統(tǒng)進行校驗、質詢、認證的要求。通過運行測試,驗證了本文提出的搜索算法及器件即插即用功能設計的可靠性與穩(wěn)定性。
圖3 DS2433在即插即用設備部件認證中的仿真
[1]Maxim公司DS2433芯片手冊[EB/OL].http://datasheets.maximintegrated.com/en/ds/DS2433.pdf,2011-06-12.
[2]彭偉.單片機C語言程序設計實訓100例[M].北京:北京航天航空大學出版社,2012.
[3]劉建華.二叉樹算法在單總線技術中的應用[J].自動化儀表,2006,27(3):63~64.
[4]周志光,朱志偉,劉瓊.DS2430A在即插即用傳感器系統(tǒng)中的應用[J].單片機與嵌入式系統(tǒng)應用,2010,10(6):68~70.
[5]李貢湘,郭忠文,遲曉晨.面向即插即用的物聯(lián)網傳感設備數據采集系統(tǒng)[J].中國海洋大學學報,2013,43(5):112~119.
[6]彭偉.1-Wire總線器件ROM搜索算法與即插即用技術研究[J].艦船電子工程,2012,32(4):95~99.
TP274
A
1671-5136(2014)02-0126-03
2014-05-31
2013年湖南省科技廳科研攻關項目(項目編號:2013GK3049)。
劉瓊,女,湖南工業(yè)職業(yè)技術學院教授,主要從事電子技術的研究與教學工作。