楊 湲
(西華師范大學(xué) 電子信息工程學(xué)院,四川 南充 637009)
基帶信號(hào)在傳輸時(shí)若不進(jìn)行調(diào)制,那么便要對(duì)其編碼,使其適應(yīng)信道[1-3]. 由于HDB3碼低頻成分少,連續(xù)0的個(gè)數(shù)不超過(guò)三個(gè),且無(wú)直流特性,因此便于在接收端恢復(fù)出原始信號(hào),所以HDB3碼是較常使用的碼型[1-4]. 本文研究了HDB3碼編碼、譯碼原理,并采用VHDL語(yǔ)言,實(shí)現(xiàn)了HDB3碼編碼、譯碼.
HDB3碼編碼原理如表1所示. 當(dāng)輸入序列為1101100001010000101時(shí),若檢測(cè)到連續(xù)的四個(gè)0,則將第四個(gè)0變?yōu)閂,那么便可得到插V后的信號(hào);繼續(xù)檢測(cè)插V后的序列,兩個(gè)V符號(hào)間非0碼的個(gè)數(shù),若為偶數(shù),則將其間后一非0碼后的0變?yōu)锽,輸出插B后的信號(hào);而HDB3碼是雙極性信號(hào),則需將序列中非0碼與B統(tǒng)一進(jìn)行正負(fù)變化(V的極性與前一非0碼保持相同),從而得到極性形成信號(hào)[5-7]. 在上述三個(gè)步驟完成后,若要將信號(hào)從目標(biāo)芯片中輸出,則需將V、B換成1,即可得編碼輸出信號(hào)[8-9]. 還需注意,quartus仿真不能實(shí)現(xiàn)雙極性,因此將+1,-1,0用兩位二進(jìn)制表示(2代表+1、1代表-1、0代表0).
表1 HDB3碼編碼原理
HDB3碼譯碼是編碼的逆過(guò)程,原理如表2所示[1-4]. 當(dāng)接收到HDB3碼時(shí),如收到2102100012012002102序列,則首先識(shí)別序列中V所在位置(由于V的極性與前一非0碼相同,所以一旦檢測(cè)到兩符號(hào)極性相同,則判斷該位是V),并在該位置用3標(biāo)注,接著減去序列中的B(將B換成0),然后將序列中的+1,-1(2和1)用1替換,V(3)用0替換,便可譯碼出原始信號(hào)[1,5-8].
表2 HDB3碼譯碼原理
該編碼硬件電路由四個(gè)模塊組成,分別是插V模塊(chaV)、插B模塊(chaB)、極性形成模塊(jixing)、輸出模塊(shuchu)[1-3]. chaV模塊將input輸入序列中連續(xù)四個(gè)0處插入V,輸出out_v信號(hào);chaB模塊計(jì)數(shù)out_v序列,兩個(gè)V符號(hào)間非0碼的個(gè)數(shù),若為偶數(shù),則立即輸出B,得到out_b信號(hào)(由于chaB模塊采用了移位寄存器,因此使得最終輸出的B在兩個(gè)V碼中后一非0符號(hào)后)[1,5-8];jixing模塊將out_b信號(hào)中非0碼、B、V進(jìn)行正負(fù)極性交替變化,輸出out_t信號(hào);shuchu模塊將out_t信號(hào)中的B、V用1替換,輸出hdb3_out(HDB3碼)[1,5-8].
圖1 編碼硬件電路圖
該譯碼硬件電路由三個(gè)模塊組成,分別是識(shí)別V模塊(shibie_v)、減去B模塊(jian_B)、恢復(fù)原始信號(hào)模塊(v_1)[1-3]. shibie_v模塊識(shí)別出hdb3_out中V所在位置,并用3標(biāo)注該位置,輸出y_out_v信號(hào);jian_B模塊將y_out_v信號(hào)中的B換成0,輸出y_out_B信號(hào)(因?yàn)閂是連續(xù)的第四個(gè)0,因此一旦檢測(cè)到輸入碼元是V時(shí),立刻輸出0,又由于jian_B模塊采用四級(jí)移位寄存器實(shí)現(xiàn),因此最終使得兩個(gè)V符號(hào)間后一非0碼(B)變?yōu)?)[1,8];v_1模塊將y_out_B信號(hào)中+1、-1換成1,V換成0,輸出譯碼信號(hào)jidai.
圖2 譯碼硬件電路圖
該電路由兩個(gè)模塊組成,編碼模塊(bianma)是由圖1生成的模塊,譯碼模塊(yima)是由圖2生成的模塊[1-3].
在仿真圖4中,clk為100 MHz時(shí)鐘端,input是輸入的原始碼,clr是清零端[1-5]. 由仿真可得,當(dāng)輸入1101100001010000101時(shí),插v后的信號(hào)out_v是11011000V101000V101(其中0代表0、1代表1、2代表B、3代表V,那么對(duì)應(yīng)的十進(jìn)制為:1101100031010003101),插B后的信號(hào)out_b是11011000V101B00V101(其中0代表0、1代表1、2代表B、3代表V,那么對(duì)應(yīng)的十進(jìn)制為:110110003101B003101). 極性轉(zhuǎn)化后的信號(hào)out_t是+1-10+1-1000-V+10-1+B00+V-10+1(其中0代表0、1代表-B、2代表-1、3代表-V、5代表+B、6代表+1、7代表+V,那么對(duì)應(yīng)的十進(jìn)制為:6206200036025007206)[1-2]. 編碼輸出hdb3_out是+1-10+1-1 000-1+10-1+100+1-10+1(其中2代表+1、1代表-1、0代表0,那么對(duì)應(yīng)的十進(jìn)制為:2102100012012002102)[1,8].
圖3 頂層硬件電路圖
shibie_v模用3標(biāo)注hdb3_out中V的位置,輸出y_out_v信號(hào)(2102100032012003102);jian_B模塊將y_out_v信號(hào)中的B換成0,輸出y_out_B信號(hào)(2102100032010003102);v_1模塊將y_out_B信號(hào)中+1、-1換成1,V換成0,譯碼輸出jidai (1101100001010000101).
由于設(shè)計(jì)中使用了移位寄存器,導(dǎo)致編碼、譯碼輸出均有延遲[1-2].
圖4 系統(tǒng)仿真結(jié)果
圖5 資源占用圖
資源占用如圖5,組合邏輯占用59個(gè),邏輯單元共占用74個(gè)[1-2,5-6].
在100 MHz的時(shí)鐘下,本設(shè)計(jì)的編譯碼系統(tǒng)所占用的總邏輯資源較少,邏輯單元共占用74個(gè). 雖由于編碼時(shí)插B模塊采用了移位寄存器,導(dǎo)致編碼輸出有延時(shí),但編碼器能夠正確的得到HDB3碼;譯碼時(shí)jian_b模塊采用了移位寄存器,導(dǎo)致譯碼輸出也有延時(shí),但譯碼器也能夠正確的恢復(fù)原始信號(hào),從而驗(yàn)證本設(shè)計(jì)的正確性.
周口師范學(xué)院學(xué)報(bào)2019年5期