国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

用FPGA實現數據遠距離的高精度傳輸

發布時間:2012-4-1 11:13    發布者:諸葛孔明
關鍵詞: FPGA , 高精度傳輸
1 意義

簡單的多機間數據通信在我們的設計中很普遍,一般情況下數據傳輸距離很短,不會超過百十m,因此僅采用雙絞線加RS232或RS485標準就可以有效傳輸。但有時多機之間的距離也會很遠,如我們所設計的一個氣象項目,就要求子站遍布在基站1km范圍內。因此在考慮成本、不增加很多設備的前提下,有效防止噪聲干擾,保證子站與基站的數據高精確傳輸就很重要。

通常多機短距通信中,可以在收發端加入奇校驗、累加和校驗等出錯就重發的防噪聲措施;但以上措施都只能檢錯,不能糾錯,也就是說傳輸過程中不能容錯。在遠距離、干擾大、出錯概率非常高的情況下,單純的出錯就重發措施會失去工作效率和意義。因此,我們需要一種能容錯的數據傳輸方式,就要對數據編碼。因此,不同傳輸環境的噪聲性質不相同,對應的編碼方式也不一樣,所以我們設計編碼時強調更多位的糾錯冗余,以適合較多的環境,但相應地就降低了傳輸速率。另外,出于通用性和簡易性的考慮,我們的設計應可直接加載于原有的有線或無線通信系統上,除數據連線外,不需對原有系統做任何改變。 在此,我們采用了交錯編碼技術來增加數據傳輸過程的容錯能力。編解碼設備插入加載到通信系統原來的數據收發端口。因此,微處理器要發送的數據由原先的直接經發送端(無線通信為調制器和發送器)發送,變為先經編碼設備編碼,然后再經原有的發送端發送;同理,接收端(無線通信為接收器和解調器)收到信息,經解碼設備解碼出數據,再傳送給微處理器。

2 設計方案

為適應多種信道,要求我們的設計能同時糾隨機錯和突發錯,并且能有多位的糾錯冗余。因此,我們基于常用的卷積碼和循環碼特性,自定義一種簡單的線性分組碼作為糾錯編碼,以便我們刻意去提高糾錯的位數。同時我們采用交錯發送技術來提高糾突發錯能力,并利用FPGA去實現該方案。

(1)方案的應用范圍

我們所設計的方案用于遠距離的多機通信。根據實際經驗,本方案默認微處理器收發的數據為8位并行數據+1位同步時鐘,因此提供8位數據線和1位同步線。對于串口,則可增加串行轉換的移位寄存器來轉化。

(2)方案的實現

方案的實現如圖1所示。



①在子站、基站的收發端口與微處理器之間分別加入相應的編解碼設備,使得子站與基站間傳輸的數據先經過編解碼再傳輸,以達到增強容錯的能力。
②用幀結構實現碼字的交錯。
③遠距離傳輸,收發端最好選用同步方式,但這不是本設計的內容,不予以討論。
   
(3)基于精度,對數據的每一位單獨編碼

實際應用中,對數據精確的定義并非數據的完全重合,而是要求某一個精度。完全重合只對用做標志的數據有意義,對單純計算用的數據并沒有必要。基于精度要求,顯然一個數據信息的高位對精度影響遠比低位大(如:FFH,當最高位出錯變為7FH時,精度變化最大,而最低位出錯變為FEH時,精度變化最小)。因此,我們并沒有對8位數據信息進行整體編碼,而是逐位分開進行編碼:高數據位,采用更長的編碼,以保證更高的正確率;低數據位,則可采用較短的編碼,兼顧效率和設備容量。具體編碼如表1所列。

表1
8位數據最低位(3,1)碼        0對應010,1對應101,漢明距3,糾1錯
8位數據第二位(3,1)碼        0對應010,1對應101,漢明距3,糾1錯
8位數據第三位(5,1)碼        0對應01010,1對應10101,漢明距5,糾2錯
8位數據第四位(5,1)碼        0對應01010,1對應10101,漢明距5,糾2錯
8位數據第五位(7,1)碼        0對應0101010,1對應1010101,漢明距7,糾3錯
8位數據第六位(7,1)碼        0對應0101010,1對應1010101,漢明距7,糾3錯
8位數據第七位(9,1)碼        0對應010101010,1對應101010101,漢明距9,糾4錯
8位數據最高位(9,1)碼        0對應010101010,1對應101010101,漢明距9,糾4錯

表2
         第1位        第2位        第3位        第4位        第5位        第6位        第7位        最高位
0        010        010        01010        01010        0101010        0101010        010101010        010101010
1        101        101        10101        10101        1010101        1010101        101010101        101010101
對8個位遠逐位編碼,8個生成矩陣為1維矢量。因此用FPGA實現編碼時,采用查表法更方便,如表2所列。
之所以選用010等作為碼字,是因為01相間在組合為幀發送時,可以減少連0或連1的出現概率。

(4)幀結構實現交錯發送技術

為糾突發錯,碼字要按交錯格式發送。因此,用幀實現碼字的交錯,數據發端按幀發送,數據收端按幀解碼。8個碼字共48位(6字節),加幀頭2字節,所以,幀為8字節。為說明幀結構,暫以字母表示碼字各位:
碼字0:a2a1a0; 碼字3:d4d3d2ed1d0;
碼字1:b2b1b0; 碼字4:e6e5e4e3e2e1e0;
碼字2:c4c3c2c1c0; 碼字5:f6f5f4f3f2f1f0;
碼字6:g8g7g6g5g4g3g2g1g0;
碼字7:h8h7h6h5h4h3h2h1h0;
幀結構如表3所列。
利用幀頭1和幀頭2的重合特點來檢測幀頭,因為碼字交錯發送時相鄰兩字節對應位基本01相間的。由表3可得,第3字節到第8字節,相鄰字節至少有6位不相同。因此可借用漢明距的糾錯思想,認為幀頭1和2不重合的位在2位以內,則表示正確收到幀頭。
表3
幀頭1        1        1        0        1        0        1        0        0
幀頭2        1        1        0        1        0        1        0        0
第3字節        a0        c0        e0        f6        f0        g0        g6        h0
第4字節        a1        c1        e2        d0        f1        g1        g7        h1
第5字節        a2        c2        e2        d1        f2        g2        g8        h2
第6字節        b0        c3        e3        d2        f3        g3        h6        h3
第7字節        b1        c4        e4        d3        f4        g4        h7        h4
第8字節        b2        e6        e5        d4        f5        g5        h8        h5


3 FPGA實現設計

(1)單工條件下的實現

用兩塊FPGA分別實現編碼器解碼器。按前面的編解碼原理,編碼器接收子站8位信息和1位同步,輸出8字節×8位幀結構編碼作遠程傳輸,解碼器收到幀結構編碼,輸出8位信息和1位同步給基站。(在實際應用中,子基站兩MPU還要加入通常的累加和檢錯或偶校驗檢錯。因不屬編解碼內容,不作討論。)



為檢驗電路設計,假設輸入信號為11001010,編碼輸出的幀結構為表4。
表4
幀頭1        1        1        0        1        0        1        0        0        =D4
幀頭2        1        1        0        1        0        1        0        0        =D4
第3字節        0        0        0        0        0        1        1        1        =07
第4字節        1        1        1        1        1        0        0        0        =FB
第5字節        0        0        0        0        0        1        1        1        =07
第6字節        1        1        1        1        1        0        1        0        =FA
第7字節        0        0        0        0        0        1        0        1        =05
第8字節        1        0        1        1        1        0        1        0        =BA

同步信號clk_in上升沿到來時,編碼器讀入數據信息11001010,并按內部的波特率clk;在下降沿產生正確的幀格式編碼輸出(D4、D4、07、FB、07、FA、05、BA)。



當解碼器判斷收到幀頭(兩個D4),則將同步信號clk_out置高,再按內部波特率clk在上升沿收6字節的幀結構碼字,在同步信號的下降沿輸出譯碼(11001010)。



當傳輸過程出現突發錯時,第5字節改為FF,第7字節改為00,譯碼器給出信息11001010。



因為信息最低位的編碼能糾1位錯,最高位能糾4位錯,所以,當第3~5字節、第6~8字節分別出現一個8位的突發錯,譯碼器均能完全糾正。出現多個突發錯時,相應的信息低位將出錯,但信息高位因具有更多位的糾錯能力而仍能保持準確性。我們設計的目標也正是盡可能保證高位的正確,以保證精度。

(2)基于單工的雙工通信

此時一片FPGA內集成了編碼器和解碼器,與MPU相連的數據通信接口仍為8位數據線,由MPU發W/R寫讀信號來控制編解碼,因此同一時間只能單向傳送數據,編解碼不能同時進行。準確地說,為半雙工通信。(要改為全雙工,須將MPU的數據線接口翻倍,非常占資源。)



(編碼器,解碼器與單工的相同。)

實際上,我們對編碼器和解碼器的輸出分別加了一個傳輸門(transfer_X器件)。該傳輸門由W/R信號控制,一旦傳輸門關閉,則將傳輸門的輸出置于高阻態?quot;Z"),因此,編解碼器的輸入輸出不會相互干擾,從而能在同一數據線上進行半雙工傳輸。



MPU向FPGA寫信息,FPGA編碼輸出。W/R=0,信息為11001010。
MPU讀FPGA的信息,FPGA收幀結構并解碼。W/R=1,解碼得11001010。

4 總結

①我們的設計目的主要在于增加數據的容錯能力。FPGA設備加載于MPU的數據接口與數據通信芯片接口之間,數據仍按原系統的發送方式遠距離傳輸,如圖8所示。因此原有的通信設備不必作改動,就能很方便地加載我們的設計。同時,因為編碼采用的分組碼的位數可以根據實際應用場合再做簡單調整,因而能夠提供更大的噪聲冗余。



②FPGA內部提供統一的編解碼波特率,最高由FPGA時鐘頻率決定,仿真圖中采用100ns(10MHz)。MPU收發信息的波特率最高為編碼波特率的1/8,因為1字節的數據信息要轉換為8字節幀結構。也就是說,我們是以降低通信的最高速率為代價來換取數據的高精度的。因此,我們的設計主要應用于不要求過高速率的通信場合。
本文地址:http://www.4huy16.com/thread-88607-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 電動兩輪車設計生態系統
  • Microchip第22屆中國技術精英年會——采訪篇
  • 技術熱潮席卷三城,2025 Microchip中國技術精英年會圓滿收官!
  • “芯”光璀璨,鵬城共賞——2025 Microchip中國技術精英年會深圳站回顧
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表