基于FPGA的高速數(shù)字相關(guān)器設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:在數(shù)字通信的數(shù)據(jù)傳輸過程中,需要保持?jǐn)?shù)據(jù)在傳輸過程中的同步,因此要在數(shù)據(jù)傳輸過程中插入幀同步字進(jìn)行檢測(cè),從而有效避免發(fā)送數(shù)據(jù)和接收數(shù)據(jù)在傳輸過程中出現(xiàn)的異步問題。文中提出了一種采用流水線技術(shù)、基于 FPGA設(shè)計(jì)高速數(shù)字相關(guān)器的方法。仿真結(jié)果表明設(shè)計(jì)方案是可行的。
在數(shù)字通信系統(tǒng)中,常用一個(gè)特定的序列作為數(shù)據(jù)開始的標(biāo)志,稱為幀同步字。在數(shù)字傳輸?shù)倪^程中,發(fā)送端要在發(fā)送數(shù)據(jù)之前插入幀同步字。接收機(jī)需要在已解調(diào)的數(shù)據(jù)流中搜尋幀同步字,以確定幀的位置和幀定時(shí)信息。幀同步字一般為一系列連續(xù)的碼元,在接收端需要對(duì)這一系列連續(xù)的碼元進(jìn)行檢測(cè),如果與預(yù)先確定的幀同步字吻合,則說明接收端與發(fā)送端的數(shù)據(jù)是保持同步的,開始接收,否則不能進(jìn)行接收。完成幀同步字檢測(cè)工作的正是數(shù)字相關(guān)器。本文采用流水線技術(shù),研究了基于 FPGA的高速數(shù)字相關(guān)器的設(shè)計(jì)方法,并給出了 MAX+PLUSII環(huán)境下的仿真結(jié)果。
1 數(shù)字相關(guān)器原理
數(shù)字相關(guān)器在通信信號(hào)處理中實(shí)質(zhì)是起到數(shù)字匹配濾波器的作用,它可對(duì)特定碼序列進(jìn)行相關(guān)處理,從而完成信號(hào)的解碼,恢復(fù)出傳送的信息。其實(shí)現(xiàn)方法是進(jìn)行兩個(gè)數(shù)字信號(hào)之間的相關(guān)運(yùn)算,即比較等長(zhǎng)度的兩個(gè)數(shù)字序列之間有多少位相同,多少位不同。昀基本的相關(guān)器是異或門,例如,y=a⊕b,當(dāng) a=b時(shí),y=0,表示兩位數(shù)據(jù)相同;當(dāng) a≠b時(shí),y=1,表示兩位數(shù)據(jù)不同。多位數(shù)字相關(guān)器可以由一位相關(guān)器級(jí)連構(gòu)成。 N位數(shù)字相關(guān)器的運(yùn)算通??梢苑纸鉃橐韵聝蓚€(gè)步驟:對(duì)應(yīng)位進(jìn)行異或運(yùn)算,得到 N個(gè) 1位相關(guān)運(yùn)算結(jié)果;統(tǒng)計(jì) N位相關(guān)運(yùn)算結(jié)果中 0或 1的數(shù)目,得到 N位數(shù)字中相同位和不同位的數(shù)目。
當(dāng)數(shù)字相關(guān)器接收到一組數(shù)據(jù)時(shí),在時(shí)鐘的上升沿對(duì)幀同步字進(jìn)行檢測(cè)。對(duì)于幀同步字是一個(gè)連續(xù) 16位的碼元,數(shù)字相關(guān)器在進(jìn)行檢測(cè)的過程中,只有當(dāng)連續(xù)檢測(cè)到 16位的碼元與預(yù)先設(shè)定的幀同步字完全相同時(shí),才由輸出端輸出信號(hào)表示幀同步。否則,任何一位出現(xiàn)不相等,數(shù)字相關(guān)器又將重新開始進(jìn)行檢測(cè),直到出現(xiàn)連續(xù)的 16位碼元與預(yù)先設(shè)定的 16位碼元完全相等時(shí)才進(jìn)行輸出。數(shù)字相關(guān)器的設(shè)計(jì)一般考慮采用串行輸入或并行輸入兩種輸入檢測(cè)方式,由于串行輸入是在 16個(gè)時(shí)鐘周期內(nèi)依次對(duì)兩路串行輸入信號(hào) A、B進(jìn)行異或運(yùn)算,并統(tǒng)計(jì)數(shù)據(jù)位相同個(gè)數(shù),檢測(cè)速度較慢,要提高檢測(cè)速度,就要考慮采用并行輸入檢測(cè)方式。
2 高速數(shù)字相關(guān)器的 FPGA實(shí)現(xiàn)
在 16位并行數(shù)字相關(guān)器中,由于實(shí)現(xiàn) 16位并行相關(guān)器需要的乘積項(xiàng)、或門過多,因此為降低耗用資源,可以分解為 4個(gè) 4位相關(guān)器,然后用兩級(jí)加法器相加得到全部 16位的相關(guān)結(jié)果,其結(jié)構(gòu)圖如圖 1所示,如果直接實(shí)現(xiàn)該電路,整個(gè)運(yùn)算至少要經(jīng)過三級(jí)門延時(shí)。隨著相關(guān)數(shù)目的增加,速度還將進(jìn)一步降低。為提高速度,采用“流水線技術(shù)”進(jìn)行設(shè)計(jì),模塊中對(duì)每一步運(yùn)算結(jié)果都進(jìn)行鎖存,按照時(shí)鐘節(jié)拍逐級(jí)完成運(yùn)算的全過程。雖然每組輸入值需要經(jīng)過三個(gè)節(jié)拍后才能得到運(yùn)算結(jié)果,但是,每個(gè)節(jié)拍都有一組新值輸入到第一級(jí)運(yùn)算電路,每級(jí)運(yùn)算電路上都有一組數(shù)據(jù)同時(shí)進(jìn)行運(yùn)算,所以總的來講,每步運(yùn)算花費(fèi)的時(shí)間只有一個(gè)時(shí)鐘周期,從而使系統(tǒng)工作速度基本等于時(shí)鐘工作頻率。
在使用 VHDL進(jìn)行高速數(shù)字相關(guān)器設(shè)計(jì)時(shí),主要實(shí)現(xiàn) 4位相關(guān)器和多位加法器模塊的設(shè)計(jì)。其元件生成圖分別是 4位相關(guān)器模塊 XIANGGUAN4、3位加法器模塊 ADD3和 4位加法器模塊 ADD4,其電路原理圖如圖 2所示。其中 4位相關(guān)器模塊 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
ab<=a xor b; --判斷 a,b是否相同
process(clk)
begin
if clk'event and clk='1' then
if ab="1111" then sum<="000"; --列出各種組合,輸出相應(yīng)相關(guān)值
elsif ab="0111" or ab="1011" or ab="1101" or ab="1110" then sum<="001";
elsif ab="0001" or ab="0010" or ab="0100" or ab="1000" then sum<="011";
elsif ab="0000" then sum<="100";
else sum<="010";
end if;
end if;
end process;
end one;
3 仿真實(shí)驗(yàn)及結(jié)論
在 MAX+PLUSII環(huán)境下,根據(jù)高速數(shù)字相關(guān)器的原理圖進(jìn)行設(shè)計(jì),這里將時(shí)鐘端 gck設(shè)計(jì)為周期 10ns的時(shí)鐘。a[15..0]端為幀同步字設(shè)置端,將其設(shè)置為 1、0交替碼; b[15..0]端為碼元輸入端,輸入連續(xù)的信號(hào),其輸入碼元的周期也為 10ns ;c[4..0]作為記錄信號(hào),記錄連續(xù)的輸入碼元與幀同步字相同的個(gè)數(shù)。然后對(duì)原理圖進(jìn)行編譯、仿真,得到仿真波形如圖 3所示??梢钥闯觯瑥倪B續(xù)的 16個(gè)碼元輸入到同步檢測(cè)輸出經(jīng)過 3個(gè)時(shí)鐘周期,輸出端 c[4..0]表示了連續(xù)的輸入碼元 b與幀同步字 a相同的個(gè)數(shù),當(dāng) c[4..0]為 16時(shí),表示 a和 b實(shí)現(xiàn)了同步。在對(duì)高速數(shù)字相關(guān)器進(jìn)行編譯、仿真成功后,對(duì)引腳進(jìn)行鎖定并將編程文件下載到 ALTERA公司 ACE1K系列芯片 EP1K30QC208進(jìn)行實(shí)驗(yàn)驗(yàn)證,實(shí)驗(yàn)結(jié)果正確,表明設(shè)計(jì)是可行的。
4 結(jié)束語
數(shù)字相關(guān)器實(shí)現(xiàn)了數(shù)字通信過程中幀同步字的檢測(cè),在數(shù)字通信系統(tǒng)中具有重要的作用,廣泛應(yīng)用于幀同步字檢測(cè)、擴(kuò)頻接收機(jī)、誤碼校正以及模式匹配等領(lǐng)域。本文采用 FPGA對(duì)高速數(shù)字相關(guān)器進(jìn)行設(shè)計(jì),并進(jìn)行了編譯仿真和下載實(shí)現(xiàn)。