摘要:在數字通信的數據傳輸過程中,需要保持數據在傳輸過程中的同步,因此要在數據傳輸過程中插入幀同步字進行檢測,從而有效避免發送數據和接收數據在傳輸過程中出現的異步問題。文中提出了一種采用流水線技術、基于 FPGA設計高速數字相關器的方法。仿真結果表明設計方案是可行的。 在數字通信系統中,常用一個特定的序列作為數據開始的標志,稱為幀同步字。在數字傳輸的過程中,發送端要在發送數據之前插入幀同步字。接收機需要在已解調的數據流中搜尋幀同步字,以確定幀的位置和幀定時信息。幀同步字一般為一系列連續的碼元,在接收端需要對這一系列連續的碼元進行檢測,如果與預先確定的幀同步字吻合,則說明接收端與發送端的數據是保持同步的,開始接收,否則不能進行接收。完成幀同步字檢測工作的正是數字相關器。本文采用流水線技術,研究了基于 FPGA的高速數字相關器的設計方法,并給出了 MAX+PLUSII環境下的仿真結果。 1 數字相關器原理 數字相關器在通信信號處理中實質是起到數字匹配濾波器的作用,它可對特定碼序列進行相關處理,從而完成信號的解碼,恢復出傳送的信息。其實現方法是進行兩個數字信號之間的相關運算,即比較等長度的兩個數字序列之間有多少位相同,多少位不同。昀基本的相關器是異或門,例如,y=a⊕b,當 a=b時,y=0,表示兩位數據相同;當 a≠b時,y=1,表示兩位數據不同。多位數字相關器可以由一位相關器級連構成。 N位數字相關器的運算通常可以分解為以下兩個步驟:對應位進行異或運算,得到 N個 1位相關運算結果;統計 N位相關運算結果中 0或 1的數目,得到 N位數字中相同位和不同位的數目。 當數字相關器接收到一組數據時,在時鐘的上升沿對幀同步字進行檢測。對于幀同步字是一個連續 16位的碼元,數字相關器在進行檢測的過程中,只有當連續檢測到 16位的碼元與預先設定的幀同步字完全相同時,才由輸出端輸出信號表示幀同步。否則,任何一位出現不相等,數字相關器又將重新開始進行檢測,直到出現連續的 16位碼元與預先設定的 16位碼元完全相等時才進行輸出。數字相關器的設計一般考慮采用串行輸入或并行輸入兩種輸入檢測方式,由于串行輸入是在 16個時鐘周期內依次對兩路串行輸入信號 A、B進行異或運算,并統計數據位相同個數,檢測速度較慢,要提高檢測速度,就要考慮采用并行輸入檢測方式。 2 高速數字相關器的 FPGA實現 在 16位并行數字相關器中,由于實現 16位并行相關器需要的乘積項、或門過多,因此為降低耗用資源,可以分解為 4個 4位相關器,然后用兩級加法器相加得到全部 16位的相關結果,其結構圖如圖 1所示,如果直接實現該電路,整個運算至少要經過三級門延時。隨著相關數目的增加,速度還將進一步降低。為提高速度,采用“流水線技術”進行設計,模塊中對每一步運算結果都進行鎖存,按照時鐘節拍逐級完成運算的全過程。雖然每組輸入值需要經過三個節拍后才能得到運算結果,但是,每個節拍都有一組新值輸入到第一級運算電路,每級運算電路上都有一組數據同時進行運算,所以總的來講,每步運算花費的時間只有一個時鐘周期,從而使系統工作速度基本等于時鐘工作頻率。 在使用 VHDL進行高速數字相關器設計時,主要實現 4位相關器和多位加法器模塊的設計。其元件生成圖分別是 4位相關器模塊 XIANGGUAN4、3位加法器模塊 ADD3和 4位加法器模塊 ADD4,其電路原理圖如圖 2所示。其中 4位相關器模塊 XIANGGUAN4的主要源代碼為: entity xiangguan4 is port(a,b:in std_logic_vector(3 downto 0); sum:out std_logic_vector(2 downto 0); clk:in std_logic); end ; architecture one of xiangguan4 is signal ab :std_logic_vector(3 downto 0); begin abprocess(clk) begin if clk'event and clk='1' then if ab="1111" then sumelsif ab="0111" or ab="1011" or ab="1101" or ab="1110" then sumelsif ab="0001" or ab="0010" or ab="0100" or ab="1000" then sumelsif ab="0000" then sumelse sumend if; end if; end process; end one; 3 仿真實驗及結論 在 MAX+PLUSII環境下,根據高速數字相關器的原理圖進行設計,這里將時鐘端 gck設計為周期 10ns的時鐘。a[15..0]端為幀同步字設置端,將其設置為 1、0交替碼; b[15..0]端為碼元輸入端,輸入連續的信號,其輸入碼元的周期也為 10ns ;c[4..0]作為記錄信號,記錄連續的輸入碼元與幀同步字相同的個數。然后對原理圖進行編譯、仿真,得到仿真波形如圖 3所示。可以看出,從連續的 16個碼元輸入到同步檢測輸出經過 3個時鐘周期,輸出端 c[4..0]表示了連續的輸入碼元 b與幀同步字 a相同的個數,當 c[4..0]為 16時,表示 a和 b實現了同步。在對高速數字相關器進行編譯、仿真成功后,對引腳進行鎖定并將編程文件下載到 ALTERA公司 ACE1K系列芯片 EP1K30QC208進行實驗驗證,實驗結果正確,表明設計是可行的。 4 結束語 數字相關器實現了數字通信過程中幀同步字的檢測,在數字通信系統中具有重要的作用,廣泛應用于幀同步字檢測、擴頻接收機、誤碼校正以及模式匹配等領域。本文采用 FPGA對高速數字相關器進行設計,并進行了編譯仿真和下載實現。 本文作者創新點:提出了采用流水線技術實現并行高速數字相關器的設計方法,為高速數據流的設計提供了參考。 |