戚皖青,卜 剛,李姝萱
(南京航空航天大學(xué) 電子信息工程學(xué)院,江蘇 南京 211106)
隨著科技的發(fā)展,集成電路的規(guī)模變得龐大和復(fù)雜,電子系統(tǒng)設(shè)計(jì)(Electronic System Level,ESL)流程是目前最先進(jìn)片上系統(tǒng)設(shè)計(jì)流程方法。
SystemC和Verilog/SystemC Verilog相互結(jié)合的方法學(xué)為越來越復(fù)雜的片上系統(tǒng)設(shè)計(jì)提供了一套從系統(tǒng)級(system)到RTL級設(shè)計(jì)的可行性方案。相比于傳統(tǒng)的設(shè)計(jì)流程,首先采用高級語言來對系統(tǒng)進(jìn)行設(shè)計(jì),之后再采用硬件描述語言對寄存器傳輸級進(jìn)行設(shè)計(jì)。應(yīng)用以上的方法學(xué),使得片上系統(tǒng)的設(shè)計(jì)過程變得簡單和高效。
射頻識(shí)別技術(shù)RFID的原理為閱讀器(reader)與標(biāo)簽(tager)之間以進(jìn)行非接觸式的數(shù)據(jù)通信的方式來起到標(biāo)簽識(shí)別目標(biāo)的作用。
UHF RFID的工作頻率為860 MHz~960 MHz,而UHF RFID空中接口協(xié)議ISO/IEC18000-6C是相關(guān)標(biāo)準(zhǔn)化組織制定的最新版本[1]。
UHF RFID技術(shù)憑借其識(shí)別距離遠(yuǎn)、傳輸可靠且安全、數(shù)據(jù)傳輸速率高等優(yōu)勢,在業(yè)界得到廣泛關(guān)注[2]。
在整個(gè)的電子系統(tǒng)設(shè)計(jì)流程中,首先以電子系統(tǒng)級設(shè)計(jì)為起點(diǎn),其中包括的項(xiàng)目分別是選擇體系架構(gòu)、制定產(chǎn)品規(guī)范以及虛擬軟件執(zhí)行平臺(tái)的開發(fā)。電子系統(tǒng)設(shè)計(jì)流程的益處是硬件和軟件能夠并行開發(fā),既繼承已有邏輯設(shè)計(jì)模塊,又為待設(shè)計(jì)的新邏輯模塊提供詳細(xì)的規(guī)格,并提供事物處理級的虛擬模型,為軟件開發(fā)任務(wù)提供執(zhí)行平臺(tái)原型,而邏輯模塊也可以基于此原型進(jìn)行驗(yàn)證[3-5]。在完成電子系統(tǒng)級的設(shè)計(jì)之后,可以進(jìn)行RTL的設(shè)計(jì)和驗(yàn)證工作,與此同時(shí)軟件開發(fā)任務(wù)也可以同時(shí)進(jìn)行。在上述設(shè)計(jì)流程中,可以采用高層次綜合工具CatapultC或者Vivado HLS等產(chǎn)生的硬件模型進(jìn)行RTL級的設(shè)計(jì)。在此過程中,CatapultC或者Vivado HLS可以直接將高層次設(shè)計(jì)綜合成RTL級代碼。
SystemC是以通過采用系統(tǒng)級設(shè)計(jì)的思想,在結(jié)合了軟件算法和硬件實(shí)現(xiàn)的優(yōu)勢之后,對項(xiàng)目工程進(jìn)行系統(tǒng)級設(shè)計(jì),使得系統(tǒng)設(shè)計(jì)的效率和準(zhǔn)確性得到有效提高。SystemC類庫添加進(jìn)C++之后,對系統(tǒng)級模型開發(fā)的實(shí)現(xiàn)提供了充分的代碼設(shè)計(jì)基礎(chǔ),同時(shí)可以快速實(shí)現(xiàn)設(shè)計(jì)的仿真和驗(yàn)證[6-7]。
SystemC語言包括端口、信號(hào)、模塊和進(jìn)程等,而這些都是硬件描述語言應(yīng)該具備的基本條件。同時(shí)由于特殊庫函數(shù)對于時(shí)鐘信號(hào)的描述,SystemC語言簡化了對時(shí)鐘信號(hào)的定義[8-9]。
基于已有的設(shè)計(jì)理念,一個(gè)SoC系統(tǒng)的設(shè)計(jì)可以劃分為硬件設(shè)計(jì)模塊和軟件設(shè)計(jì)模塊。本文根據(jù)UHF RFID協(xié)議,針對物理層的數(shù)據(jù)傳遞以及標(biāo)簽識(shí)別層的信息交互,結(jié)合ESL軟硬件協(xié)同設(shè)計(jì)的理念以及SoC的設(shè)計(jì)方法,設(shè)計(jì)了整個(gè)UHF RFID系統(tǒng)模型[10-11]。
基帶通信鏈路設(shè)計(jì)模塊則是實(shí)現(xiàn)物理層相關(guān)功能的實(shí)現(xiàn),鑒于SystemC的自頂向下的設(shè)計(jì)優(yōu)勢,采用SystemC語言設(shè)計(jì)實(shí)現(xiàn)閱讀器的識(shí)別層與標(biāo)簽的識(shí)別層的信息交互,以及閱讀器和標(biāo)簽的之間的通信鏈路的設(shè)計(jì)。
根據(jù)UHF RFID的協(xié)議標(biāo)準(zhǔn),對于協(xié)議的設(shè)計(jì)可以分為物理層結(jié)構(gòu)設(shè)計(jì)和標(biāo)簽識(shí)別層結(jié)構(gòu)設(shè)計(jì)。在物理層結(jié)構(gòu)的設(shè)計(jì)過程中,首先實(shí)現(xiàn)基帶編碼,生成符合UHF RFID的協(xié)議標(biāo)準(zhǔn)的數(shù)據(jù)包,并且規(guī)定數(shù)據(jù)包格式、數(shù)據(jù)校驗(yàn)及編解碼方式、射頻調(diào)制方法、射頻包絡(luò)參數(shù)設(shè)定、數(shù)據(jù)傳輸速率等問題;而主要處理閱讀器與標(biāo)簽信息交互的各種命令,則是在標(biāo)簽識(shí)別層結(jié)構(gòu)的設(shè)計(jì)中完成,以函數(shù)調(diào)用的方式實(shí)現(xiàn)命令傳遞,并且通過選擇、盤存和訪問來進(jìn)行管理標(biāo)簽群。在協(xié)議標(biāo)簽識(shí)別層結(jié)構(gòu)的設(shè)計(jì)中主要是處理UHF RFID協(xié)議的命令體系,標(biāo)簽相應(yīng)的狀態(tài)轉(zhuǎn)化[12-13]。協(xié)議中不僅對規(guī)定的命令和規(guī)范做了介紹,還可以保證用戶在預(yù)留的空間內(nèi),進(jìn)行自定義相關(guān)命令和規(guī)范[14]。閱讀器與標(biāo)簽之間的對應(yīng)的基本管理操作如圖1所示。
圖1 閱讀器與標(biāo)簽之間的基本管理操作
3.2.1 標(biāo)簽識(shí)別層設(shè)計(jì)
根據(jù)已有的UHF RFID的協(xié)議標(biāo)準(zhǔn),標(biāo)簽識(shí)別層設(shè)計(jì)的思路首先是遵循閱讀器的命令,標(biāo)簽調(diào)整到相應(yīng)的狀態(tài),同時(shí)對閱讀器作出應(yīng)答。在兩者通信過程中,閱讀器處于主動(dòng)地位,閱讀器主要實(shí)現(xiàn)鏈路時(shí)序控制部分。在實(shí)現(xiàn)標(biāo)簽識(shí)別層的過程中,可以采用設(shè)計(jì)狀態(tài)機(jī)的方式進(jìn)行狀態(tài)之間的轉(zhuǎn)換,具體標(biāo)簽狀態(tài)之間的轉(zhuǎn)換圖如圖2所示。
圖2 標(biāo)簽狀態(tài)轉(zhuǎn)換圖
按照狀態(tài)圖的轉(zhuǎn)換過程進(jìn)行SystemC建模仿真,分別編寫reader.cpp以及tag.cpp文件,在頂層文件里面進(jìn)行例化和調(diào)用,標(biāo)簽識(shí)別層狀態(tài)轉(zhuǎn)換模型圖如圖3所示,實(shí)現(xiàn)標(biāo)簽的不同的狀態(tài)之間的轉(zhuǎn)換,標(biāo)簽識(shí)別層狀態(tài)轉(zhuǎn)換仿真圖如圖4所示。
圖3 標(biāo)簽識(shí)別層狀態(tài)轉(zhuǎn)換模型圖
圖4 標(biāo)簽識(shí)別層狀態(tài)轉(zhuǎn)換仿真圖
3.2.2 標(biāo)簽鏈路層設(shè)計(jì)
標(biāo)簽數(shù)字基帶發(fā)送鏈路,主要實(shí)現(xiàn)的是標(biāo)簽發(fā)送信息,閱讀器接收并處理。按照標(biāo)準(zhǔn)協(xié)議,標(biāo)簽的數(shù)字基帶部分將處理器要發(fā)送的信息編碼為特定的格式傳輸?shù)缴漕l端。同樣在發(fā)送信息的過程中,處理器在數(shù)字基帶模塊的寄存器寫進(jìn)將要發(fā)送的數(shù)據(jù),數(shù)字基帶模塊接收數(shù)據(jù)和使能信號(hào)后按照協(xié)議處理數(shù)據(jù)。發(fā)送鏈路需要產(chǎn)生標(biāo)簽反向散射頻率、數(shù)據(jù)格式轉(zhuǎn)化、生成CRC校驗(yàn)碼、FIFO緩存、FM0編碼和Miller編碼、添加同步碼等模型功能。鑒于以上的設(shè)計(jì)思路,標(biāo)簽的數(shù)字基帶發(fā)送鏈路模型設(shè)計(jì)如圖5所示。
圖5 標(biāo)簽基帶發(fā)送鏈路
閱讀器數(shù)字基帶發(fā)送鏈路將數(shù)據(jù)發(fā)送到射頻端后,由射頻模塊發(fā)送出去,標(biāo)簽數(shù)字基帶接收鏈路實(shí)現(xiàn)射頻信號(hào)接收并處理。接收鏈路需要對接收到數(shù)據(jù)實(shí)現(xiàn)檢測、PIE解碼、校驗(yàn)、格式轉(zhuǎn)化等操作[15]。
圖6為標(biāo)簽基帶鏈路ENCODE_T模塊,在Microsoft Visual C++6.0中對數(shù)據(jù)“1001001001011001”進(jìn)行fm0miller編碼仿真之后,在Modelsim中查看的仿真波形圖。
圖6 標(biāo)簽基帶鏈路ENCODE_T模塊波形仿真圖
Vivado工具為Xilinx公司推出的一款設(shè)計(jì)套件,主要任務(wù)是針對于FPGA開發(fā)板的集成化一體式設(shè)計(jì)。Vivado工具包含了所有產(chǎn)品系列的開發(fā)環(huán)境,例如芯片級IP核、交叉編譯工具等,開發(fā)人員的工作量得到極大的減少,項(xiàng)目開發(fā)效率也得到提升[16]。
Vivado HLS是一款高層次綜合工具,可以將C、C++以及SystemC等高級語言綜合成Verilog HDL(HardDescription Language)或VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)等語言,軟件描述的系統(tǒng)模型綜合成RTL(Register Transfer Level)級的代碼。與此同時(shí)也大大降低了開發(fā)人員的開發(fā)設(shè)計(jì)難度,并且有效地縮短設(shè)計(jì)周期[17]。
Vivado HLS設(shè)計(jì)流程如圖7所示,第一步設(shè)計(jì)具有預(yù)期功能的C測試平臺(tái)和源代碼。第二步使用C仿真器,例如Microsoft Visual C++6.0來驗(yàn)證程序?qū)崿F(xiàn)的函數(shù)是否滿足預(yù)期的要求。如果C仿真器仿真出的結(jié)果滿足當(dāng)初的設(shè)計(jì)要求,Vivado HLS工具可以將C生成的算法轉(zhuǎn)換為相應(yīng)的RTL級模塊。具體Vivado HLS綜合流程如圖7所示。
圖7 Vivado HLS綜合流程圖
根據(jù)程序?qū)λ惴ǖ木幾g生成的RTL_Schematic如圖8所示。
圖8 ENCODE_T模塊Vivado HLS仿真圖
ESL設(shè)計(jì)方法學(xué)為規(guī)模越來越龐大的集成電路設(shè)計(jì)提供了有效設(shè)計(jì)思路和解決方法,具有建模層次高、仿真速度快等優(yōu)點(diǎn)。采用高層次建模,對UHF RFID標(biāo)準(zhǔn)協(xié)議進(jìn)行從識(shí)別層到鏈路層的設(shè)計(jì)。首先對識(shí)別層和鏈路層采用SystemC語言建模,并通過Microsoft Visual C++6.0中對數(shù)據(jù)“1001001001011001”進(jìn)行fm0miller編碼仿真之后,在Modelsim中查看的仿真波形,如圖5所示,結(jié)果滿足編碼設(shè)計(jì)要求。完成SystemC設(shè)計(jì)之后將ENCODE_T模塊導(dǎo)入到Vivado HLS中轉(zhuǎn)換成RTL電路,實(shí)現(xiàn)從高層建模、逐步細(xì)化的工作要求。