蘇桂芝 楊志謙 邵 威 夏 勇
(中國電子科技集團第三十八研究所 合肥 230088)
數字圖像是由模擬圖像轉換而來的一組數據矩陣信息[1],可以對其進行特征提取、圖像分析、圖像處理以及圖像識別等工作。在現代化的工業生產中,正越來越多的使用數字圖像技術對目標進行檢測、跟蹤和定位,從而大大的提高了工作的效率。一般情況下,數字圖像通過電纜從采集點傳送到信息處理中心,但是在一些難以使用電纜的場合,如旋轉、移動的圖像采集設備或大范圍、遠距離的視頻監控系統中,則大多采用無線通信作為有效的傳輸方法[2]。無線通信方式雖然可以不受地形等因素的限制,但極易受到周圍電磁環境的影響,并且數字圖像的數據量一般都較大,在無線傳輸鏈路中容易產生誤碼和丟幀的現象,使得最終的顯示結果出現較大的失真。HDLC協議是一種高級數據鏈路控制協議,它具有差錯檢測功能強大、實時和同步傳輸的特點。為了在圖像傳輸過程中降低誤碼率,并且保證其高速性和實時性,本文設計了一種基于HDLC協議的傳輸鏈路。
通常人眼觀察到,未經采樣與量化的圖像稱為模擬圖像,但是計算機無法接受模擬圖像,因而必須對它進行采樣和量化使之轉換成為數字圖像才能被處理,即圖像的數字化[3]。
取樣是將模擬圖像在空間上離散化,是將一幅連續圖像在空間上分割成M×N個網格,把取樣網格點上對應的連續亮度轉換為單個特定數碼的過程,稱之為量化。行數、列數和量化等級都取2的整數次冪,且每級只取整數值。這樣就形成一個矩陣,其每個元素稱為圖像元素,簡稱象素。象素的值稱為灰度級,通常量化為 256級,用 0、1、2、…、255表示[4]。圖像上每一點的灰度級與其亮度相對應。一般說來,灰度級越大,圖像越亮,顏色越淺,這樣就得到一幅數字圖像。
在數字圖像的無線傳輸過程中,數字圖像采用函數的形式來表示。黑白圖像可以應用二維函數f(x,y)表示,x,y是平面的兩個軸的坐標,f(x,y)表示點(x,y)的亮度值(灰度值)。彩色圖像可用f(x,y,λ)表示,λ為波長?;顒硬噬珗D像可用f(x,y,λ,t)表示,λ 為波長,t表示時間。
在準備傳送前,將數字圖像的象素信息按照八方向鏈表形式進行編碼,形成一組數據。正東方向零度為000,逆時針方向依次為001——111。按照后點相對于前點的方向進行編碼,如圖1所示。

圖1 八方向鏈表
HDLC(High Level Data Link Control)協議是國際標準化組織(ISO)推出的高級數據鏈路控制協議[5]。HDLC是面向位的鏈路控制規程,在 HDLC協議中,采用幀結構傳輸數據,用一幀表示一組完整的信息,如圖2所示,它既可以用于通信的控制,也可以用于數據的傳輸。
HDLC協議規定,所有信息的傳輸必須以個標志字開始,且以同一個標志字結束,這個標志字就是0x7E。接收方可以通過搜索0x7E來判斷幀的開始和結束,以此建立幀同步[6]。地址字段表示鏈路上站的地址,控制字段實現了HDLC的許多重要功能,根據其最前面兩個位的取值,可將HDLC幀劃分為:信息幀(I)、監督幀(S)和無編號幀(U)。信息字段為所要傳輸的數據。幀校驗采用循環冗余校驗碼CRC[7],對地址、控制和信息字段進行校驗,插入的“0”不在校驗范圍。16位幀校驗序列碼多項式為:

32位幀校驗序列碼多項式為:

HDLC協議包含幀發送控制和幀接收控制,因確定0x7E(01111110)為控制字符時,傳輸的幀的比特序列中就不能出現與它相同的比特序列,否則就會出現判斷的錯誤。這也就是幀數據傳輸的透明性問題。同樣,在兩個01111110的標志字段之間的比特序列中,如果出現了和標志字段一樣的比特組合,那么就會誤認為是幀的邊界。為了避免出現這種錯誤,HDLC規定采用插零/刪零的方法。

圖2 HDLC幀結構
插零/刪零的方法規定:發送端在兩個標志字段之間的比特序列中,如果檢查出連續的5個1,不管它后面的比特位是0或1,都增加一個0;那么在接收過程中,在2個標志字段之間的比特序列中檢查出連續的5個1之后就刪除一個0。在數據發送端,經過0比特插入后的數據就可以保證不會出現6個連續1。在接收一個幀時,首先找到標志字段以確定幀的邊界,接著再對其中的比特序列進行檢查,每當發現5個連續1時,就將這五個連續1后的一個0刪除,以便將數據還原成原來的比特。這樣就保證了在所傳送的比特序列中,不管出現什么樣的比特組合,也不至于引起幀邊界的判斷錯誤。采用插零/刪零的方法后,幀內就可以傳送任意組合的比特序列,即可以實現數據鏈路層的透明傳輸。具體發送接收流程如圖3所示。

圖3 傳輸鏈路流程
將HDLC協議用于無線的數字圖像傳輸,一方面要保證數據的同步通訊,另一方面要實現數據的透明傳輸。
圖像數據信息經過數據總線和地址總線不斷的從CPU傳送至FPGA,由FPGA將大量的數據按照HDLC協議的格式進行打包,發送出去[8]。為了保證數據傳輸的同步性,在發送數據的同時,提供數據的同步時鐘,且時鐘的連續性和時鐘頻率是可控的,在接收數據時就可以通過同步時鐘來判斷數據流的標志位,實現幀同步。FPGA內部的HDLC協議處理流程如圖4所示。

圖4 HDLC協議處理流程
HDLC的幀同步方式利用“0比特插入法”對數據實現透明傳輸,傳輸信息的比特組合無任何限制。在發送端和接收端相應地進行“插零”及“刪零”操作。這樣使得HDLC具有良好的透明傳輸特性。
實現“插零”和“刪零”操作的部分源代碼如下:

通過示波器觀察發送出來的數據,波形如圖5。

圖5 HDLC數據與時鐘
首先對設計的HDLC鏈路進行仿真測試,采用無線電臺發送一組0~255連續有序數據,在接收端CPCI計算機接收數據并存文件,將發送端的數據與接收到的數據加以比較,以測試整個鏈路的有效性。
采用MATLAB進行數據分析,由圖6可看出,收到數據和發出數據完全重合,證明該鏈路是有效的。

圖6 模擬傳輸測試圖
當仿真測試完全正確后,還需對真實的圖像數據進行傳輸測試,為了證明HDLC協議的有效性,分別采用普通方法傳輸和本文設計的鏈路進行無線傳輸,并對發送和接收到的數據進行比較,如圖7、圖8所示。

圖7 實際圖像傳輸比較(普通)
分析圖7和圖8,可以看出,在普通方式下傳輸圖像數據,收到的數據和實際發送的數據存在明顯的差別,即誤碼較多,而運用HDLC協議的傳輸鏈路收到的數據和實際傳輸的數據完全吻合,大大的降低了傳輸的誤碼率,滿足數字圖像數據的無線傳輸要求。

圖8 實際圖像傳輸比較(HDLC)
數字圖象傳輸具有數據量大、實時性要求高的特點。本文將HDLC協議應用在數字圖像的無線傳輸中,實驗結果表明,本方法是可行、有效的,并且相比普通的無線傳輸,其誤碼率較低,傳輸過程穩定、可靠。
[1] 沈蘭蓀.圖象編碼與異步傳輸[M].北京:人民郵電出版社,1998.
[2]申長軍,吳慶宏.低功耗無線數字傳輸塊的設計與應用[J].電子技術應用,2004(9).
[3] 楊新偉,計欣華,陳金龍.三維白光數字圖象頻域分析法及其應用[J].機械強度,2009(04).
[4] 王劍.基于MATLAB的小波變換在圖象壓縮中的應用[J].計算機工程與應用,2003,(01).
[5]CHEN He,HAN Yue qiu.ASIC Design of High-Speed Low-Power HDLC Controller[J].JournalofBeijing Institute ofTechnology,2003,vol.12.
[6] 文冠果.一種新型的128路多通道HDLC引擎設計[J].微電子學與計算機,2004,21,(9).
[7] 石建平,黃鄉生.基于FPGA的循環冗余校驗算法實現[J].信息與電子工程,2008,6,(5).
[8] 談國文,張煒,朱丹,顧英.基于HDLC協議的實時通信軟件的設計與實現[J].計算機工程與科學,2000,(04).