LS碼及其FPGA的實現(xiàn)
LS碼的自相關特性如圖2所示,從圖中可以看出,LS碼的自相關的副峰值除了原點外處處為0。由于LS碼的特性,任意兩個碼字之間的“零相關窗”長度并不相同。圖3是LS碼的互相關特性,可以看出,LS碼的互補互相關性在原點周圍的一定范圍內為0,這個范圍也就是所謂的“零相關窗”,所選的兩個LS碼字的“零相關窗”長度為127。本文引用地址:http://m.butianyuan.cn/article/191898.htm
2 LS碼在FPGA中的實現(xiàn)
和一般的FPGA開發(fā)過程一樣,LS碼在FPGA中的實現(xiàn)需要經過可行性分析、算法驗證、設計輸入、仿真和下載測試幾個過程。針對某個軟件無線電平臺的要求,可以合理地設計碼速率和碼長,擴頻前的碼速率為64 Kb/s,C碼和S碼的長度都為16,擴頻后的碼速率為1.024 Mb/s。
2.1 LS碼的實現(xiàn)算法
為了提高FPGA的處理效率,采用查找表的形式,首先生成了長度為16的C碼和S碼,生成碼的算法是基于圖1的樹形結構,C碼和S碼關系為:
式中:n為C碼和S碼每一位的位置編號,N為碼長。表1是所生成的長度為16,個數(shù)也為16的C碼。S碼可以根據(jù)式(1)求得,限于篇幅,這里不再單獨列出,實驗中只選取了表1中序號為1的一組C碼和相應的S碼作為查找表使用。
2.2 設計輸入和仿真
FPGA的設計輸入有多種表達方式,最常用的是原理圖方式和HDL文本方式,這里采用的是混合輸入方式,首先采用Verilog HDL的文本輸入方式將算法做成模塊,然后再通過原理圖的方式定義連接和接口,這樣不僅使得邏輯描述性、可重用性和移植性強,而且使得接口描述和連接關系清晰、直觀。圖4是所設計的原理圖結構,為了表示清楚,只截取了C碼的擴頻和解擴模塊,其中spread C_part是C碼的擴頻模塊,Baud_parr和serial_out模塊的輸出分別為并行輸出和串行輸出,這樣做的目的是為了方便之后其他算法功能模塊的輸入,如果后面要加入例如調制、波形成型之類的模塊,就可以方便地選擇并行輸入或者串行輸入,提高了設計的靈活性。receiveC_parr為C碼的并行解擴模塊,這里只考慮了對Baud_parr所輸出的并行數(shù)據(jù)進行解擴,這樣能提高接收端的處理效率。輸入端口SCLK為32.768 MHz的時鐘,輸出端口SERIAL C為seri al_out模塊的串行輸出,Cout為receiveCparr模塊的解擴輸出。
在設計中,spreadC_part模塊的擴頻輸出速率并不是所需的碼速率,而是經過Baud_parr和serial_out模塊后再構成所需的碼速率。
當完成設計輸入后,就需要對所設計的算法進行時序仿真,驗證算法的正確性。圖5的時序圖是采用ModelSim對C碼的擴頻模塊spreadC_part、擴頻的并行輸出模塊Baud_parr、串行輸出模塊serial_out以及并行解擴模塊receiveC_parr所進行的仿真時序。如圖5所示,Baud16x是一個1.024 MHz的時鐘,INDATA是速率為64 Kb/s的輸入碼元、D C(15:0)為spreadC_part模塊輸出的擴頻數(shù)據(jù)。注意到此時的D_c(15:0)為總線結構的16位數(shù)據(jù),速率為Baud16x/8=128 Kb/s,在空閑時刻輸出的都是0,這個數(shù)據(jù)輸入到Baud_parr模塊和seriaI_out模塊。SC(15:0)和SERIAL_C分別對應這兩個模塊的并行輸出和串行輸出??梢钥闯鯯C(15:0)是16位總線數(shù)據(jù),速率為1.024 Mb/s,SERIAL_C的串行數(shù)據(jù)速率也為1.024.Mb/s。Cout為將SC(15:0)的并行數(shù)據(jù)解擴后恢復出來的碼元,可以看出,Cout正確地恢復出了IN-DATA的碼元。
評論