□唐雨辰 吉明明 蘇圣超 馬笑塵 王慧然 蔡昭嶸 張嘉興
基于FPGA相較于嵌入式編程更為靈活、處理速度更快的特點,本文使用FPGA設計一個可以檢測環境溫度與濕度并將其顯示在液晶屏上、能夠對火情進行報警的公共交通環境綜合檢測系統,并使用循環冗余校驗碼對所采集的數據進行傳輸。本文簡要介紹了基于XILINX ISE 12.4的循環冗余校驗碼仿真實驗以及由循環冗余校驗碼進行數據校驗的環境監測系統構成和設計思路,并將其與基于嵌入式的公共交通環境綜合檢測系統進行對比。在此基礎上,簡要分析嵌入式系統與FPGA系統對初學者的利與弊,從而方便在今后項目中的選擇使用。
本文選用XILINX的Spartan6系列芯片XC6SLX9作為仿真芯片,以并行硬件方式對循環冗余校驗碼進行實現。
(一)循環冗余校驗碼。CRC(Cyclic Redundancy Check)是各類數字通信系統中應用最為廣泛的錯誤檢測算法之一,它代表著循環冗余碼校驗或簡單的循環冗余校驗[1]。大多數流行的通信協議都使用循環冗余校驗進行錯誤檢測,是因為循環冗余校驗碼使用極其廣泛、漏檢率較低且便于實現[2]。
(二)線性反饋移位寄存器。LFSR(linear feedback shift register),即線性反饋移位寄存器,是給定前一狀態的輸出,將該輸出的線性函數再用作輸入的移位寄存器,而循環冗余校驗正可以通過LFSR進行實現[3]。如表1所示,展示出了輸入數據經過LFSR多次移位后依據“0⊕X=X”化簡的結果:CX為輸出循環冗余校驗碼的位數,DX為輸入數據的位數,“⊕”為異或運算符。
(三)仿真實現。根據表1的移位化簡結果進行編程,并使用ISE 12.4軟件進行仿真,可以得到如圖1所示的仿真波形。由于“reset”信號的存在,在該信號保持高電平的情況下,校驗碼會被正常運算,如果該信號因為故障或者人為拉低,整個校驗碼的計算過程將會停止,其存儲的值也將被清零。

表1 LFSR多次移位化簡結果

圖1 循環冗余校驗仿真波形
FPGA系統選用XILINX的Spartan6系列芯片XC6SLX9作為控制器,采用12864B液晶顯示屏、DHT11溫濕度傳感器、YG1006火焰傳感器等I/O設備。
(一)系統構成。FPGA系統選用并行收發模式下的12864B液晶顯示屏與拉高狀態下的4*4按鍵組成人機交互界面;串行收發總線的DHT11溫濕度傳感器以及1位二進制輸出的YG1006火焰傳感器作為外界條件接收裝置;3.3V供電的有源蜂鳴器作為警報裝置。各個部件之間的邏輯關系通過Verilog的“always @ (*)”塊進行連接,并通過串口通信與上位機(計算機)取得數據上傳鏈路,傳輸過程使用循環冗余校驗碼作為數據收發有無誤碼的校驗方式。
(二)系統對比。FPGA系統與基于嵌入式的公共交通環境綜合檢測系統在代碼編程上進行對比,可以明顯發現兩者編程思路不同——FPGA系統更傾向于各個部件運行時的時序關系,而嵌入式系統更傾向于各個部件運行時的邏輯關系。從而導致在部件增多,即相互制約影響因素增多的情況下,嵌入式編程難度會隨之上升,代碼的臃腫程度也不言而喻。
在系統運行方面,FPGA系統運行更為流暢,尤其是在4*4鍵盤的掃描讀取上,誤讀與漏讀情況明顯較少。但是,FPGA系統的層次結構較嵌入式系統而言較為單調,無法像嵌入式系統那般層層遞進,有一套邏輯性強的菜單關系。
本文簡單介紹了循環冗余校驗碼的并行硬件實現原理,并對該方法的實現做了仿真,之后對基于FPGA的環境檢測系統的系統構成作了說明,并通過與嵌入式系統下的環境監測系統對比,得出了:時序性強、邏輯功能要求較低的情況下FPGA占優勢,反之嵌入式在邏輯關系要求高的情況下有不可替代的作用。