《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > EDA與制造 > 設(shè)計應(yīng)用 > 基于FPGA的∑-Δ D/A轉(zhuǎn)換器的設(shè)計與實現(xiàn)
基于FPGA的∑-Δ D/A轉(zhuǎn)換器的設(shè)計與實現(xiàn)
摘要: 數(shù)模轉(zhuǎn)換器可以將一個二進制數(shù)字量轉(zhuǎn)換成與該數(shù)字量成正比的電壓值,,可應(yīng)用于可編程電壓源、波形發(fā)生器等,。本文采用數(shù)字化技術(shù),,用FPGA實現(xiàn)了一個簡單的一階8位∑-Δ 型DAC,,只占用幾個CLB。FPGA的速度和柔性的輸出結(jié)構(gòu)非常適合該DAC的實現(xiàn),。
關(guān)鍵詞: ∑-Δ DAC FPGA VerilogHDL Virtex
Abstract:
Key words :

  引言

  在各類電子系統(tǒng)中,,數(shù)字電路所占比重越來越大。這主要是因為數(shù)字電路相對于 電路有一些突出的優(yōu)點,,例如:1 數(shù)字電路中的有源器件工作在飽和區(qū) 與截止區(qū),,工作狀態(tài)穩(wěn)定;2 數(shù)字電路處理的是二值信號,,易于存儲和再生,;3 數(shù)字電路是由大量相同的基本單元,如門,、觸發(fā)器等所組成,,易于大規(guī)模集成,易于自動化設(shè)計工具的應(yīng)用等,。再加上數(shù)字計算機和數(shù)字信號處理技術(shù)的迅速發(fā)展,,使得數(shù)字電路從集成規(guī)模、應(yīng)用范圍及設(shè)計自動化程度等方面都大大超過了模擬電路,,越來越多的由模擬電路實現(xiàn)的功能轉(zhuǎn)由數(shù)字電路實現(xiàn),,進入了電子系統(tǒng)設(shè)計的數(shù)字化時代。

  1  變∑-Δ換的原理

  ∑-Δ變換采用過取樣技術(shù),,將信號按時間分割,,保持幅度恒定,具有高取樣率,、噪聲整形和比特字長短的特點,。變換可以在低取樣率、高分辨率的量化器或者高取樣率,、低分辨率的量化器中進行,,在數(shù)字音頻中很有用,如用于音頻信號數(shù)字化的∑-Δ ADC及可將已經(jīng)數(shù)字化處理后的音頻信號還原為模擬聲音信號的比特數(shù)時所帶來的量化非線性誤差、糾錯困難的缺點,。


  ∑-Δ變換是將信號按時間分割,,保持信號幅度恒定。它用高電平或低電平的脈沖表示信號,,例如可以采用脈沖密度調(diào)制(PDM),,如圖1所示恒定幅度的脈沖信號,不論電平高或低都能夠重建輸出信號波形,?! 〈騻€比方來說明如何用1比特替代16或更多比特:傳統(tǒng)的階梯變換器像16個電燈泡,連接到各自的開關(guān)上,,每個都有不同的亮度,,用各種組合方式可以得到216(即65536)種不同的亮度。然而,,燈泡間的亮度差會引入誤差,,某種組合也并不總是能夠產(chǎn)生所要求的亮度。1比特變換技術(shù)采用完全不同的方法,,不用那么多燈泡和開關(guān),,只用一個燈泡和一個開關(guān)。房間亮度的變化可以通過簡單的改變開,、關(guān)燈泡的次數(shù)來得到,。如果燈泡開的次數(shù)增加,房間的亮度就會增加,。

恒定幅度的脈沖信號

 圖1 脈沖密度調(diào)制

  2  ∑-Δ DAC的結(jié)構(gòu)

  傳統(tǒng)的應(yīng)用電流模技術(shù)的DAC當位數(shù)達到10位以上時,,要在某一溫度范圍保持精度非常困難,。本文的∑-Δ DAC運用了數(shù)字技術(shù),,因此與電流模DAC相比,不受溫度變化的影響,,且能在可編程邏輯器件如FPGA" title="FPGA">FPGA中實現(xiàn),。∑-Δ DAC實際上是高速1位DAC,應(yīng)用數(shù)字反饋技術(shù)從輸入二進制數(shù)字量產(chǎn)生等幅的脈沖串,,脈沖串的平均占空比與輸入二進制數(shù)字量成正比,,脈沖串再通過一RC模擬低通濾波器就能重建模擬波形。∑-Δ DAC非常適合于低頻,、高精度的應(yīng)用,,尤其在數(shù)字音頻領(lǐng)域應(yīng)用廣泛。

  作為例子,,本文中所描述的∑-Δ DAC的二進制8位輸入數(shù)字量是無符號數(shù),,模擬輸出電壓值都是正值。輸入“00000000”產(chǎn)生輸出電壓0V,“11111111”產(chǎn)生輸出電壓的最大值Vmax,,Vmax非常接近VCCO,,其中VCCO是FPGA芯片I/O端口的供電電壓。         

<a class=∑-Δ DAC" title="∑-Δ DAC">∑-Δ DAC的內(nèi)部結(jié)構(gòu)圖 " border="0" height="319" hspace="0" src="http://files.chinaaet.com/images/20100811/1130b331-9554-44dd-af03-bba3467f2219.jpg" style="WIDTH: 577px; HEIGHT: 319px" width="577" />

  圖2  ∑-Δ DAC的內(nèi)部結(jié)構(gòu)圖    

       術(shù)語“∑-Δ”分別代表算術(shù)和與差,,都可用二進制加法器來產(chǎn)生,。雖然Δ加法器的輸入是無符號數(shù),但Δ和∑兩加法器的輸出被看作有符號數(shù),。Δ加法器用來計算DAC輸入與當前DAC輸出之間的差值,。由于DAC的輸出只有一位,非0即1,,即全0或全1,。如圖2 ∑-Δ DAC的結(jié)構(gòu)圖所示,Δ加法器的另一個輸入值由∑鎖存器最高位L[9]的兩個拷貝后面跟8個0產(chǎn)生,,這也彌補了DAC輸入值是無符號數(shù)的問題,。∑加法器將它的上一次輸出(已經(jīng)保存在∑鎖存器)與Δ加法器的當前輸出求和。

  3 ∑-Δ DAC的FPGA實現(xiàn)

  如圖2所示,,∑-Δ DAC的內(nèi)部僅由2個10位的二進制加法器,,1個10位的鎖存器和一個D觸發(fā)器組成,用FPGA實現(xiàn)時只需耗費極少的邏輯資源,,即使用最小的FPGA也能實現(xiàn),,本文采用了Xilinx Virtex" title="Virtex">Virtex FPGA,圖3給出了FPGA實現(xiàn)的頂層原理圖,。輸入信號有8位寬的二進制數(shù)字量DACin[7:0],、時鐘信號CLK和復位信號Reset;輸出信號為等幅脈沖串DACout,,通過一個驅(qū)動緩沖器OBUF_F_24(是Xilinx FPGA特有的SelectI/O資源,,OBUF表示輸出緩沖器,F(xiàn)表示它的轉(zhuǎn)換速率快,,24表示它的驅(qū)動能力即輸出驅(qū)動電流是24MA,,基于LVTTL I/O標準)驅(qū)動FPGA外部的模擬RC低通濾波器,該緩沖器的輸出端連接到FPGA的I/O端口,,則它的驅(qū)動電壓即為FPGA的I/O端口的供電電壓VCCO,。表1列出了∑-Δ DAC的接口信號。

FPGA實現(xiàn)∑-Δ DAC的頂層原理圖

  圖3  FPGA實現(xiàn)∑-Δ DAC的頂層原理圖

∑-Δ DAC的接口信號

  表1  ∑-Δ DAC的接口信號    

  圖3虛線框內(nèi)的電路都在FPGA里面實現(xiàn),,其中的DAC模塊的原理圖見圖2,,在本文中是用可以綜合的VerilogHDL" title="VerilogHDL">VerilogHDL語句來描述的。VerilogHDL描述的可綜合性是指其可被綜合工具所識別,,將其寄存器傳輸級(RTL)描述綜合成門級網(wǎng)表,,最終能通過FPGA的布局布線工具映射到FPGA當中成為能完成指定功能的硬件電路。VerilogHDL語言最初是面向建模和仿真的,只有10%可以被綜合稱為可綜合子集,。對于不同的綜合工具,,可綜合子集的內(nèi)容并不相同。IEEE的一個工作組目前正在撰寫一個名為IEEE Std 1364.1RTL的綜合子集的規(guī)范,,定義了一個最小的可綜合的Verilog語言要素的子集,,以便得到各綜合工具提供商的支持。

  圖3中緩沖器的輸出端DACoutDrvr連接到FPGA的輸出引腳上,,驅(qū)動外部的模擬RC低通濾波器,。圖

 

中R=3.3kΩ,C=0.0047μF,,VOUT即為最終轉(zhuǎn)換所得的模擬信號,。下面給出了DAC模塊的可綜合的VerilogHDL描述:

  ‘timescale 100 ps / 10 ps

  //This is a Delta-Sigma Digital to Analog Converter

  module dac(DACout, DACin, Clk, Reset);

  output DACout,; // This is the average output that feeds low pass filter

  reg DACout,;

  input [7:0] DACin; // DAC input

  input Clk,;

  input Reset,;

  reg [9:0] DeltaAdder; // Output of Delta adder

  reg [9:0] SigmaAdder,; // Output of Sigma adder

  reg [9:0] SigmaLatch,; // Latches output of Sigma adder

  reg [9:0] DeltaB; // B input of Delta adder

  always @(SigmaLatch) DeltaB = {SigmaLatch[9],,SigmaLatch[9]} << (8),;

  always @(DACin or DeltaB) DeltaAdder = DACin + DeltaB;

  always @(DeltaAdder or SigmaLatch) SigmaAdder = DeltaAdder + SigmaLatch,;

  always @(posedge Clk or posedge Reset)

  begin

  if(Reset)

  begin

  SigmaLatch <= #1 1’bl << (8),;

  DACout <= #1 1’b0;

  end

  else

  begin

  SigmaLatch <= #1 SigmaAdder,;

  DACout <= #1 SigmaLatch[9],;

  end

  end

  endmodule該程序經(jīng)過Xilinx的FPGA集成開發(fā)工具ISE6.2編譯(含綜合過程),、仿真后,,再選擇Virtex系列FPGA芯片進行配置。設(shè)置CLK=100MHz(最高可達219MHz),。

  4 結(jié)論

  ∑-Δ DAC是高速FPGA芯片用于數(shù)字模擬混合信號系統(tǒng)設(shè)計的嘗試,,可應(yīng)用于可編程電壓源、波形發(fā)生器,、聲音發(fā)生器,、RGB顏色發(fā)生器和ADC的參考電壓發(fā)生器等,極大的減少了系統(tǒng)的元件數(shù)目,降低了系統(tǒng)的成本,,有很好的實用價值,。

  參考文獻

  [1] (美)巴斯克爾著,孫海平譯《VerilogHDL綜合實用教程》,,清華大學出版社,,2004

  [2] 王誠,薛小剛《FPGA/CPLD設(shè)計工具:Xilinx ISE5.x使用詳解》,,人民郵電出版社,,2003

  [3] (美)Ken C.Pohlmann著,蘇菲譯《數(shù)字音頻原理與應(yīng)用》第四版,,電子工業(yè)出版社,,2002

  [4] www.xilinx.com,Xilinx公司在線文檔

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。