天天看點

5位無符号陣列乘法器設計_基于FPGA器件FLEX10k30A實作成形濾波器的設計用方法

5位無符号陣列乘法器設計_基于FPGA器件FLEX10k30A實作成形濾波器的設計用方法

根據Nyquist第一準則,基帶信号成形能夠消除碼間串擾的影響。随着超高速數字內建電路的發展,成形濾波器已經由過去的基帶頻域模拟成形濾波器變成現在的基帶時域數字成形濾波器。與基帶模拟成形濾波器相比,基帶數字成形濾波器具有高精度、高可靠性和高靈活性等優點;同時還具有便于大規模內建、易于實作線性相位等特點。實作基帶數字成形的方法很多,與傳統算法相比,分布式算法可以極大地減少硬體電路的規模,提高電路的執行速度。本文采用基于分布式算法思想的時域成形方法來實作基帶信号成形。

1 分布式算法的基本原理

一個線性時不變網絡的輸出可以用下式表示:

5位無符号陣列乘法器設計_基于FPGA器件FLEX10k30A實作成形濾波器的設計用方法

其中,y(n)為第n時刻網絡的輸出;xk(n)為第n時刻的第k個輸入變量;Ak為第k個輸入變量的權值。線上性時不變系統中,對于所有n時刻,Ak都是常量。如果該網絡表現為濾波器,常量Ak即為濾波器抽頭系數,變量xk為單一資料源的抽樣資料。仔細觀察(1)式可以看出,輸出單個y(n)需要将k個乘積累加,這種累加可以通過查找表來實作,大大提高了運算的效率。為了使乘法之後的資料寬度不至于展寬,先把資料源資料格式規定為浮點數2的補碼形式。需要注意的是,常量Ak不一定要進行格式轉換來比對輸入資料的格式,它可以根據所要求的精度進行定義。變量xk可用下式表示:

5位無符号陣列乘法器設計_基于FPGA器件FLEX10k30A實作成形濾波器的設計用方法

式中,xkb為二進制數,即取值為0或1;xk0為符号位,“1”表示資料為負,“0”表示資料為正。式中,時間參數“n”已經被省略掉,因為在以下的推導中與時間參數無關。将(2)式代入(1)式中,得:

5位無符号陣列乘法器設計_基于FPGA器件FLEX10k30A實作成形濾波器的設計用方法

從(4)式可以看出,每個方括号中進行的是輸入變量的某一個資料位和所有常量A1~Ak的每一位進行位相“與”然後求和,而指數部分則說明了求和結果的位權重,這種權重可以通過移位來實作。而方括号中的計算可以通過建立查找表來實作,具體的操作可通過所有輸入變量的同一位進行尋址來完成。通過(4)式,(1)式就可以用加法、減法和二進制除法來計算了,這樣就避免了頻繁地使用乘法器,進而節約了系統的資源,并且大大縮短了運算的時間[1]。

2 時域成形的原理

(4)式中的查找表方法可以縮短運算的時間,但是二進制除法還是會消耗掉大量的系統時鐘。因為要設計的是基帶信号成形濾波器,是以可以通過直接在時域上成形的方法來完成。

如果輸入為二進制雙極性資料,采用升餘弦滾降濾波器進行脈沖成形,其系統函數為:

5位無符号陣列乘法器設計_基于FPGA器件FLEX10k30A實作成形濾波器的設計用方法

圖中,h′(t)為h(t)的截短。由圖1可知,隻需要求出Δ時間段的波形疊加值,依次輸出,就可以得到輸入信号的成形波形。若在段内抽樣8點,則每個樣點有24個可能值,共有24×8=128個資料。将這128個資料存入查找表中,用連續四個輸入信号進行尋址,就可以不必計算二進制除法,進而提高系統的運算速度。其硬體原理圖如圖2所示。

5位無符号陣列乘法器設計_基于FPGA器件FLEX10k30A實作成形濾波器的設計用方法

圖中,SSR是一個四位移位寄存器,資料串行輸入,并行輸出,初始狀态預置為“0000”,每一時鐘信号讀入一位資料,同時串行移位;計數器為8位,每次時鐘從000計數至111;ROM的寬度為7位,存儲27個資料,對應各個樣點的數值,每次時鐘到來時,輸出8個10比特寬的資料[2]。

3 用FPGA實作

由圖2可知,系統主要由移位寄存器、計數器和查找表組成,其中查找表(ROM)對系統運算速度的影響最大。如果直接用寬度為7的查找表進行尋址的話,最長的尋址路徑需要27個系統時鐘,這樣損失太大。是以考慮用尋址寬度小的查找表。假定系統輸入資料的碼速率為4.352Mbps,濾波器的滾降系數α=0.35,則用FPGA可實作成形濾波器。

3.1 輸入單元

輸入單元由移位寄存器和選擇網絡組成。移位寄存器是由四個帶異步複位端的D觸發器級連而成,資料串行輸入,并行輸出,共用同一個時鐘和異步複位信号,其作用是将輸入資料讀入查找表中。選擇網絡是為了減小查找表的尋址寬度,根據前三個輸入資料的值來選擇對應的查找表。選擇網絡的電路圖如圖3所示。

5位無符号陣列乘法器設計_基于FPGA器件FLEX10k30A實作成形濾波器的設計用方法

圖中的“F_SWITCH”子產品是一個開關電路,當使能端為高電平時,将輸入端的資料輸出,否則輸出端為高阻态。根據圖3的原理,目前三個輸入信号為100時,選中第5個開關。這樣,隻要将第5個開關選通的查找表中資料依次輸出,就可以得到成形信号。這時查找表的尋址寬度為3位,大大節約了尋址時間。查找表尋址方式的電路圖如圖4所示。

5位無符号陣列乘法器設計_基于FPGA器件FLEX10k30A實作成形濾波器的設計用方法

在圖4中,計數器的作用是在第四位資料到來時,激勵查找表将其存儲的8個資料依次輸出。L_ROM是尋址寬度為3位的查找表。

3.2 查找表

5位無符号陣列乘法器設計_基于FPGA器件FLEX10k30A實作成形濾波器的設計用方法
5位無符号陣列乘法器設計_基于FPGA器件FLEX10k30A實作成形濾波器的設計用方法

将表1中每一行的值轉化為二進制補碼形式,寫入尋址寬度為3位的16個查找表中。此查找表帶有使能端,當使能端為高電平時,輸出端選中資料,否則輸出端為高阻态。這種查找表對于時鐘上升沿的延時最大為14.5ns,而輸入信号的碼元周期為230ns,是以能夠很好地滿足系統的要求。

4 設計結果

用FLEX10k30A器件實作成形濾波器,将得到的輸出資料轉化為十進制數,并畫出相應的波形。當輸入信号為“1010001”時,成形信号的時域波形如圖5所示。

5位無符号陣列乘法器設計_基于FPGA器件FLEX10k30A實作成形濾波器的設計用方法

由圖5可以看出,在各個取樣點碼之間串擾很小,達到了基帶信号成形的目的。

本設計基于分布式算法思想,在時域上對基帶信号直接成形。利用FPGA豐富的查找表資源,提出了一種高效的成形算法。通過FPGA驗證,證明工作正常,性能良好。

今天的分享到這裡就結束了,今天的内容是否對您有幫助呢,如果覺得我們的文章對您有幫助,勞煩您動動您的手指分享轉發下我們的文章吧~

關注睿感電子科技訂閱号~

帶您玩轉硬體,不迷路~

5位無符号陣列乘法器設計_基于FPGA器件FLEX10k30A實作成形濾波器的設計用方法