聶玉慶 許悅
摘 要本文研究TC9012通信協議建模實現。通過深入理解TC9012編碼協議,仔細分析一幀完整數據,對一幀數據里每一部分信息參數化,使得該模型復用性更好,適用于常用串行協議對脈沖頻率、位置和寬度調制模式。
【關鍵詞】TC9012通信協議,協議建模,SystemVerilog
1 TC9012協議簡介
TC9012通信協議使用脈沖位置編碼方式(PPM)對各比特數據進行調制,
該編碼方式效率高,抗干擾性能好。支持38KHz載波頻率,每個脈沖為560us時間寬度,邏輯1發(fā)送比特占據2.25ms時間寬度,邏輯0發(fā)送比特占據1.12ms時間寬度,調制載波占空比為1/4。
一完整數據幀為108ms,包括導引碼、用戶碼、數據碼以及同步位。導引碼包括4.5ms寬度載波作為紅外接收器增益參數和4.5ms載波關斷波形。用戶碼是連續(xù)兩次8比特數據原碼,數據碼是8比特數據原碼以及8比特數據反碼,發(fā)送兩次是為提高可靠性考慮。最后是同步位,用于確定數據碼反碼最后一比特是邏輯0還是邏輯1。一完整數據幀格式如圖1所示。
用戶操作紅外發(fā)射器時,如果一直按住按鍵,TC9012協議碼指令也僅發(fā)送一次,并在每間隔108ms時間長度發(fā)送一幀重復碼,重復碼包含4.5ms高電平增益脈沖和4.5ms低電平脈沖,以及1比特邏輯1或邏輯0,還有560us高電平脈沖同步位。數據傳送波形如圖2所示。
2 TC9012協議分析
TC9012協議可以分為四種工作模式,分別為正常非重復碼模式,正常重復碼模式,錯誤非重復碼模式和錯誤重復碼模式,下面分別進行分析。
2.1 正常非重復碼模式
導引碼是嚴格4.5ms高電平脈沖和4.5ms低電平脈沖。用戶碼雖然是16比特,但是是一個8比特序列的重復,因此只需按8比特序列處理。對每一比特,需要判斷是邏輯1還是邏輯0,并且判斷脈沖寬度。數據碼也是16比特,但是第二個8比特剛好是第一個8比特的反碼,因此也可以按8比特序列處理。對每一比特,需要判斷是邏輯1還是邏輯0,并且判斷脈沖寬度。同步位是560us寬度高電平脈沖。
2.2 正常重復碼模式
導引碼是嚴格的4.5ms高電平脈沖和4.5ms低電平脈沖。判斷導引碼后的那一比特是邏輯1還是邏輯0,并且判斷脈沖寬度。同步位是寬度為560us高電平脈沖。
2.3 錯誤非重復碼模式
無論是高低電平邏輯出錯還是脈沖寬度違例,均認為是導引碼錯誤。用戶碼8比特里任意1比特無論高低電平邏輯出錯還是脈沖寬度違例,均認為是用戶碼錯誤。數據碼8比特里任意1比特無論高低電平邏輯出錯還是脈沖寬度違例,均認為是數據碼錯誤。同時注意第二個8比特是反碼。同步位不是嚴格的560us寬度高電平脈沖,則認為同步位出錯。
2.4 錯誤重復碼模式
導引碼無論是高低電平邏輯出錯還是脈沖寬度違例,均認為是導引碼錯誤。導引碼后的那一比特,需要區(qū)分是邏輯1還是邏輯0,無論是高低電平邏輯出錯還是脈沖寬度不符合協議規(guī)范,均認為錯誤。同步位不是高電平脈沖或者寬度不是560us,均認為錯誤。
考慮到通用性,多設置一個參數,控制各數據幀之間的時間間隔。
3 實際仿真結果及分析
把開發(fā)好的TC9012協議模型集成到某驗證環(huán)境,得到實際仿真波形如圖4、圖5所示,與TC9012協議規(guī)范保持一致。
4 結論
本文研究TC9012通信協議,并使用高級驗證語言SystemVerilog實現
了協議建模。當前業(yè)界流行的三種驗證方法學VMM、OVM和UVM均使用SystemVerilog編程語言,因此便于驗證環(huán)境集成,具有很好復用性,可以在任何使用TC9012協議或基于TC9012規(guī)范自定義協議的驗證環(huán)境里作為一個VIP使用。進一步擴展開來,該方法適用于常用串行協議對脈沖頻率編碼調制、脈沖位置編碼調制以及脈沖寬度編碼調制。在協議建模時對一幀數據的每一部分信息都參數化,根據實際工作場景對各參數設置約束,通過大量跑隨機仿真用例,能夠覆蓋到所有驗證場景,并達到覆蓋率出口條件。
參考文獻
[1]Verification Methodology Manual for SystemVerilog.Janick Bergeron, Eduard Cerny,AlanHunter,Andrew Nightingale. ISBN-10: 0-387-25556-7.
[2]TC9012紅外解碼[Z].深圳市明芯微電子有限公司,2015.
[3]紅外遙控編碼資料[Z].深圳市明芯微電子有限公司,2015.
作者單位
1.炬芯(珠海)科技有限公司 廣東省珠海市 519085
2.西安聯合學院 陜西省西安市 710014