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