任興福,林 偉
(福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350108)
隨著現(xiàn)代科技的不斷發(fā)展,人們的生活正朝著信息化和智能化的方向不斷邁進。在這種大時代背景下,物聯(lián)網(wǎng)這一新興產(chǎn)業(yè)應(yīng)運而生[1]。物聯(lián)網(wǎng)的應(yīng)用涉及多個領(lǐng)域,其中大部分應(yīng)用基于短距離無線通信技術(shù)實現(xiàn)[2]。許多應(yīng)用場合往往不需要很高的通信速率,但在成本和功耗上卻有著比較嚴格的要求。因此,滿足物聯(lián)網(wǎng)通信需求的低速率、低成本、低功耗的無線收發(fā)機也就越來越成為眾多公司和學(xué)者研究的熱點。
低功耗短距無線收發(fā)機可分為模擬射頻前端、基帶控制器以及存儲器三部分[3]。其中,數(shù)字基帶控制電路作為無線收發(fā)機的核心控制模塊,首先需要對射頻前端接收到的信號進行處理,其次根據(jù)接收到的指令對存儲器進行讀、寫等操作,最后將處理完畢的數(shù)據(jù)回寫到射頻前端。數(shù)字基帶控制器在在整個系統(tǒng)中起到控制中樞作用,不僅要完成對數(shù)據(jù)幀的處理,還要負責(zé)整個芯片工作狀態(tài)的控制,其設(shè)計實現(xiàn)對無線收發(fā)芯片的整體性能有著十分重要的影響,因此對其進行研究具有深遠的現(xiàn)實意義和較大的實用價值。鑒于此,本文設(shè)計了一種具有高速率、低功耗的基帶控制電路,提出了一種靈活的數(shù)據(jù)幀結(jié)構(gòu)格式,并對其一次性的收發(fā)操作進行了仿真驗證。
基帶控制器是無線收發(fā)芯片的核心控制部分,主要分成組幀和解幀兩大功能體系。
組幀電路的主要功能有:
(1)按照協(xié)議的要求,對存儲器分別進行正確的讀和寫操作;
(2)對處理完的數(shù)據(jù)進行組幀操作,完成循環(huán)冗余校驗碼(Cyclic Redundancy Check,CRC)校驗;
(3)回送給射頻模擬前端進行調(diào)制發(fā)射。
解幀電路的主要功能有:
(1)與前一級的模擬射頻前端良好對接,對解調(diào)后的信號進行位同步操作;
(2)對解調(diào)出來的數(shù)據(jù)進行解幀操作,依次解出數(shù)據(jù)幀包含的各字段信息并進行CRC 校驗,確認數(shù)據(jù)傳輸和解調(diào)的正確性;
(3)依次將有效信息加載到數(shù)據(jù)緩沖器中,等待主機的讀寫。
基帶處理電路的整體框架結(jié)構(gòu)如圖1 所示,虛線框中部分為基帶處理電路,按照功能劃分主要包括數(shù)據(jù)組幀模塊、數(shù)據(jù)解幀模塊、核心控制模塊以及總線控制模塊4 個部分。
圖1 基帶處理電路整體框架
總線控制模塊采用經(jīng)典的4 線串行外設(shè)接口(Serial Peripheral Interface,SPI)形式。SPI 總線是一種高速、全雙工同步的通信總線,采用主從方式工作,共有4 個接口,分別為CSN、SCK、MOSI、MISO。外部微控制器根據(jù)串口協(xié)議,可以通過該接口對基帶處理電路內(nèi)的發(fā)射、接收數(shù)據(jù)緩沖器和配置寄存器進行讀寫操作。當CSN 信號為低時,通過MOSI 接口先輸入8 bit 的控制命令,執(zhí)行相應(yīng)的讀寫操作,緊接著輸入相應(yīng)的數(shù)據(jù)信號。同時,可通過查看MISO 接口的返回值,判斷數(shù)據(jù)緩沖器內(nèi)的空、滿狀態(tài)等基帶處理電路的內(nèi)部情況。采用此總線電路命令解析的方式,相比于使用高頻率系統(tǒng)時鐘進行頻繁的讀寫操作減少了時鐘翻轉(zhuǎn)的頻率,相應(yīng)地降低了系統(tǒng)的功耗。
在通信系統(tǒng)中,收發(fā)雙方需要按照一定的通信協(xié)議進行數(shù)據(jù)的傳輸。無論有線還是無線通信方式,確定一種合適的數(shù)據(jù)幀格式都十分重要,這將直接影響到數(shù)據(jù)收發(fā)的可靠性[4]。本設(shè)計提出一種靈活的數(shù)據(jù)幀結(jié)構(gòu),其組成部分包括前導(dǎo)碼、同步碼、地址碼、控制碼、有效數(shù)據(jù)位以及CRC 校驗位,如圖2所示。
圖2 數(shù)據(jù)幀結(jié)構(gòu)圖
前導(dǎo)碼由可變長度的“0”“1”交替碼串組成。同步碼選用7 位的巴克碼“1110010”,接在前導(dǎo)碼“0”“1”交替的碼串之后,用于捕捉信息碼元的起始信息。巴克碼擁有尖銳單峰的自相關(guān)特性,誤碼率低,便于后續(xù)解幀電路的準確判決??刂谱侄稳鐖D3 所示,由3 部分構(gòu)成,分別是數(shù)據(jù)長度位、標志位以及拒絕應(yīng)答位。
圖3 控制位組成
動態(tài)數(shù)據(jù)通信使得雙方不必約定具體的數(shù)據(jù)長度,只要先讀取控制字段中的數(shù)據(jù)長度位即可獲知有效數(shù)據(jù)的長度。標志位由2 bit 數(shù)據(jù)組成,每次發(fā)射新數(shù)據(jù)包時,標志位都加1,即相鄰的2 個數(shù)據(jù)包的標志位不同,用此方式判斷是否為重復(fù)的數(shù)據(jù)包。校驗碼選擇循環(huán)冗余校驗(CRC)碼,可以用來校驗或者檢測數(shù)據(jù)在傳輸完成后可能出現(xiàn)的錯誤。在同步碼輸出有效的同時,CRC編碼模塊開始工作,對串行輸入的有效數(shù)據(jù)進行編碼。本設(shè)計選用8 位和16 位兩種CRC 碼校驗方式,由核心控制寄存器位命令控制。CRC-8 碼生成的多項式為:
CRC-16 碼生成的多項式為:
式中:x的最高冪次對應(yīng)二進制數(shù)的最高位。
接收端從模擬射頻前端接收到經(jīng)解調(diào)的數(shù)據(jù)后,要對接收到的數(shù)據(jù)幀進行同步、解析判斷等操作,主要分成位同步時鐘提取電路、解碼模塊兩部分。
2.3.1 位同步時鐘提取電路
本文設(shè)計采用一種結(jié)構(gòu)相對簡單、同步建立時間短的位同步時鐘提取電路。利用系統(tǒng)時鐘捕捉射頻前端輸入信號的跳變沿,以此調(diào)整產(chǎn)生新的基準相位。利用計數(shù)器輸出一個采樣位置在信號中間的采樣脈沖信號[5]。同步器的結(jié)構(gòu)如圖4 所示。其中pkt_in 是輸入系統(tǒng)的串行信號,clock 是頻率為串行信號碼元速率2N倍的時鐘信號(其中N為大于2 的正整數(shù)),pulse_out 是位同步時鐘。計數(shù)器分為模N-2 和2N兩種計數(shù)模式,當跳變沿捕捉到數(shù)據(jù)跳變時,計數(shù)器進行模為N-2 的計數(shù),并且產(chǎn)生采樣脈沖;當數(shù)據(jù)邊沿沒有發(fā)生跳變時,每計數(shù)2N個時鐘周期后產(chǎn)生一個采樣脈沖。通過這種方式可以調(diào)整產(chǎn)生新的基準相位,并且在信號中間輸出一個采樣脈沖信號。后面模塊使用該同步器產(chǎn)生的采樣脈沖作為時鐘,相比于使用高頻系統(tǒng)時鐘降低了功耗。
圖4 同步器結(jié)構(gòu)
2.3.2 解碼模塊
解碼模塊從模擬射頻前端接收到數(shù)據(jù)幀,按照通信協(xié)議,對接收到的數(shù)據(jù)幀進行類似流水線方式的解幀操作。解幀操作如圖5 所示,先進行同步碼的檢測,接著同時進行地址碼匹配、控制位解析、CRC 解碼校驗等操作。其中,對控制位的解析操作包括對數(shù)據(jù)長度位和標志位的解析操作,提前獲知數(shù)據(jù)位的字節(jié)長度,有助于微控制單元(Micro Controller Unit,MCU)在較少的時鐘周期內(nèi)完成對數(shù)據(jù)的讀取,可以極大地降低功耗。若上述過程中任一環(huán)節(jié)出現(xiàn)錯誤﹐則立刻停止后續(xù)操作,并重新開始對下一數(shù)據(jù)包進行同步檢測。這種方法可以極大地提高數(shù)據(jù)處理的效率。
圖5 解幀模塊框圖
核心控制模塊是基帶處理電路的控制中心,控制整體電路在不同的工作狀態(tài)間進行切換,以協(xié)調(diào)各功能模塊間的工作。整體電路可以分成掉電、待機﹑接收準備、接收、發(fā)射準備、發(fā)射6 個工作狀態(tài)。在不同的工作模式下各功能模塊的工作狀態(tài)存在差異,不需要運行的模塊將被關(guān)閉,這樣通過不同工作模式的設(shè)置可實現(xiàn)系統(tǒng)的功耗管理,以達到有效降低功耗的目的。核心處理模塊主要通過狀態(tài)機進行設(shè)計實現(xiàn),如整體電路處于待機狀態(tài)時,為方便與外部MCU 通信,只需SPI 模塊工作即可,關(guān)閉其余模塊,這樣能顯著減小電路的峰值功耗。
本設(shè)計用Verilog HDL 語言編程實現(xiàn),并在Cadence 公司發(fā)布的INCISIV 軟件下實現(xiàn),運用其中的NC-Verilog 工具實現(xiàn)仿真驗證。發(fā)射驗證如圖6 所示,完成了一次發(fā)射的組幀驗證,前導(dǎo)碼由“0”“1”交替的字符串組成,后接巴克碼“1110010”,之后是地址碼,有效數(shù)據(jù)為256’d36,數(shù)據(jù)長度為1 Byte,標志位pid 為2’d01,CRC 校驗選用CRC-8。此時輸出為pkt_out,數(shù)據(jù)幀按照之前的參數(shù)信息完成了組幀發(fā)射。接收驗證如圖7 所示,完成了一次接收的解幀驗證,檢驗到正確的巴克碼時產(chǎn)生同步信號pkt_start,電路依次完成對地址碼、數(shù)據(jù)長度、有效數(shù)據(jù)的接收操作。
圖6 發(fā)射驗證
圖7 接收驗證
本文設(shè)計了一種具有高速率、低功耗的基帶控制電路,同時提出了一種靈活的數(shù)據(jù)幀結(jié)構(gòu),依照設(shè)計的數(shù)據(jù)幀結(jié)構(gòu)對基帶控制電路分別進行了組幀發(fā)射和解幀接收的仿真驗證。結(jié)果顯示,設(shè)計的基帶控制電路可以基于提出的數(shù)據(jù)幀結(jié)構(gòu)很好地完成發(fā)射、接收操作,對低成本短距無線收發(fā)機的實現(xiàn)有著重要意義。