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