基于FPGA的卷積碼編譯碼器
2.3.5 判決與輸出
譯碼深度為10,譯碼的輸出只需將譯碼路徑的最高位中出現(xiàn)較多的一位輸出,當“0”和“1”的個數(shù)相等時輸出任意一個。由圖4所示的卡諾圖可得,譯碼輸出的邏輯表達式為:
dataout=(route0 (9) and routel (9)) 0r (route2 (9) and route3 (9))本文引用地址:http://m.butianyuan.cn/article/190979.htm
2. 3.6 譯碼初始化
由于剛開始譯碼的第一步和第二步,譯碼路徑并未完全展開,“加-比-選”與后面的步驟略有不同。因此設(shè)置一個譯碼步驟計數(shù)器step,對譯碼前兩步的“加”進行單獨處理,而不改變“比選”部分。
2.3.7 路徑量度的溢出
由于路徑量度是一直累加的,如果不進行處理則計數(shù)器將溢出。設(shè)計中發(fā)現(xiàn),各條路徑之間的路徑量度相差不會太大。解決的辦法是:如果有一個路徑量度超過了某一門限,就將所有記錄的路徑量度減一個小量。在實際中,由于(2,1,3)卷積碼每一步譯碼后路徑量度最多增加2,因此為避免溢出,設(shè)置門限為8,當超過該門限時各路徑量度都減小2。這樣就可以用很少容量的寄存器保存任意長的路徑量度。
3 仿真結(jié)果
仿真在MaxplusII10.2環(huán)境下進行,選擇FLEX1OK系列中的EPF10K30RC240-3器件。以下是部分仿真結(jié)果。
3.1 卷積碼編碼器仿真
卷積碼編碼器的仿真波形如圖5所示。在編碼使能之后輸入序列data_in為110111001000…(每個bit持續(xù)2個時鐘周期),編碼輸出序列data_out為110101000110011111101100……(每個bit持續(xù)1個時鐘周期),結(jié)果與文獻中的例12-1完全一致。
3.2 維特比譯碼器仿真
維特比譯碼器的仿真波形如圖6所示。其中圖(a)為輸入無誤碼時的情形,圖中輸入序列為1101010001100111…,譯碼輸出序列為110111 00…;圖(b)為輸入有誤碼時的情形,圖中假設(shè)輸入序列為1001010101100101…(其中黑體的bit為誤碼),則譯碼輸出序列仍為11011100…。
由仿真結(jié)果可以看出。用上述方法設(shè)計的卷積碼編/譯碼器功能正確,并具有較好的糾錯能力。
4 結(jié)論
本文用VHDL語言和FPGA芯片設(shè)計并實現(xiàn)了(2,1,3)卷積碼編碼器及維特比譯碼器。仿真結(jié)果表明,編/譯碼器的功能正確,達到設(shè)計要求。在設(shè)計中采用了模塊化結(jié)構(gòu),維特比譯碼器設(shè)計采用了截尾譯碼算法,節(jié)省了存儲空間。另外,設(shè)計中還較好的解決了譯碼過程中的支路度量計算、路徑量度和譯碼路徑的更新與存儲以及譯碼判決與輸出等關(guān)鍵技術(shù)問題。
由于卷積碼具有相似的結(jié)構(gòu)和特點,所以文中(2,1,3)卷積碼編/譯碼器的設(shè)計思路,對其他形式的卷積碼編/譯碼器也是適用的。
評論