新聞中心

EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > FPGA實(shí)現(xiàn)的任意波形發(fā)生器的設(shè)計(jì)

FPGA實(shí)現(xiàn)的任意波形發(fā)生器的設(shè)計(jì)

作者: 時(shí)間:2010-12-20 來源:網(wǎng)絡(luò) 收藏


地址分配模塊采用一個(gè)3/8譯碼器來實(shí)現(xiàn)地址選通的功能,如圖4所示。
由于累加器的清零是當(dāng)“clr”=1的時(shí)候,所以在與門后加一個(gè)反相器,而頻率寄存器清零的條件是“clr”=0,所以,就可以直接與門后相連即可。3/8譯碼器的使能端接VCC,G2AN和G2BN連起來接CS,作為整個(gè)模塊的片選信號(hào),當(dāng)?shù)碗娖降臅r(shí)候選中,各模塊才開始工作。
地址鎖存模塊主要解決單片機(jī)P0口的分時(shí)復(fù)用問題。本設(shè)計(jì)選用的單片機(jī)為51系列單片機(jī),其PO口既作為數(shù)據(jù)口,又作為地址總線的低8位,因此在使用時(shí),需要將地址信號(hào)從分時(shí)復(fù)用的地址/數(shù)據(jù)總線中分離出來。本設(shè)計(jì)選用8D鎖存器7415373來作為地址鎖存器。當(dāng)74LS373用作為地址鎖存器時(shí),應(yīng)使OEN為低電平導(dǎo)通輸出,此時(shí),鎖存使能端G為高電平時(shí),輸出Q1~Q8狀態(tài)與輸入D1~D8狀態(tài)相同;當(dāng)G發(fā)生負(fù)跳變時(shí),輸入端數(shù)據(jù)D1~D8鎖入Q1~Q8。因此在使用74LS373時(shí),51單片機(jī)的ALE信號(hào)可以直接與74LS373的G相連。
1.2 相位累加器設(shè)計(jì)
相位累加器用于對(duì)輸入頻率控制字進(jìn)行累加運(yùn)算,輸入頻率控制字決定輸出信號(hào)的頻率和頻率分辨率。因此相位累加器是整個(gè)DDS性能的關(guān)鍵部分。傳統(tǒng)的相位累加器是用1個(gè)加法器加1個(gè)D觸發(fā)器組成,調(diào)用其中的1個(gè)宏模塊設(shè)置成32位數(shù)據(jù)相加,再加另一個(gè)32位的宏模塊,就可以組成相位累加器。它在QuartusII軟件中的最高編譯頻率只有262.12 MHz,顯然不能滿足設(shè)計(jì)要求。其時(shí)序仿真如圖5所示。


通過仿真,當(dāng)直接采用32 bit累加器的時(shí)候系統(tǒng)時(shí)鐘最大只能達(dá)到大約25 MHz,顯然是達(dá)不到要求的。從設(shè)計(jì)上看,它實(shí)質(zhì)上是一個(gè)帶反饋的32位加法器,把輸出數(shù)據(jù)作為另一路輸入數(shù)據(jù)和從單片機(jī)傳來的頻率控制連續(xù)相加,產(chǎn)生有規(guī)律的32位相位地址碼。一般位數(shù)小的累加器可以通過中的進(jìn)位鏈得到快速高效的電路,但是進(jìn)位鏈必須位于臨近的LE(邏輯單元)或LAB(邏輯陣列塊)中,長(zhǎng)的進(jìn)位鏈會(huì)減少供其他邏輯使用的布線資源,同時(shí)過長(zhǎng)的進(jìn)位鏈也會(huì)制約系統(tǒng)頻率的提高,所以進(jìn)位鏈不能太長(zhǎng)。因此,在相位累加器的設(shè)計(jì)中,要解決的難題是設(shè)法提高工作速度。為了解決速度難題,需從兩個(gè)方面進(jìn)行改進(jìn)。
1.2.1 改進(jìn)的流水線結(jié)構(gòu)
在時(shí)序電路設(shè)計(jì)中為了提高速度,流水線結(jié)構(gòu)是一種常用的設(shè)計(jì)方法。對(duì)于累加器來講,流水線結(jié)構(gòu)就是把一個(gè)位數(shù)很長(zhǎng)的加法拆分成N個(gè)位數(shù)較短的加法,在N個(gè)時(shí)鐘周期內(nèi)做完然后輸出運(yùn)算結(jié)果,N就是流水線的級(jí)數(shù)。采用流水結(jié)構(gòu)以后由于加法器的字長(zhǎng)變短了,對(duì)于來講加法器字長(zhǎng)變短對(duì)工作頻率的提高是相當(dāng)可觀的。當(dāng)然,流水結(jié)構(gòu)的使用并不能無限制地提高電路的工作速度。因此對(duì)于不同的器件來說,采用多少級(jí)流水對(duì)性能的提升比較大這個(gè)要經(jīng)過仿真實(shí)驗(yàn)才能得到一個(gè)比較肯定的值。
本文運(yùn)用流水線結(jié)構(gòu)對(duì)相位累加器進(jìn)行設(shè)計(jì),當(dāng)m=8、n=4的情況下,相位累加器的工作頻率是最高的,達(dá)到了約70 MHz。但是為了進(jìn)一步提高工作頻率,還需要結(jié)合下面的并行進(jìn)位方法。
1.2.2 并行進(jìn)位加法器
DDS累加器電路的設(shè)計(jì)采用了流水線結(jié)構(gòu),由8級(jí)4位加法器完成對(duì)32位控制字的累加。32位累加器的結(jié)果在送入相位幅度變化電路時(shí),進(jìn)行了高位截?cái)?,只取?2位數(shù)據(jù)進(jìn)行查表。因而,在8級(jí)的流水線結(jié)構(gòu)中,前5級(jí)4位加法器實(shí)際上只貢獻(xiàn)了進(jìn)位,在設(shè)計(jì)時(shí),前4級(jí)加法器采用了超前進(jìn)位鏈,而高位加法器不僅要給出進(jìn)位值,還要獲得加法的結(jié)果,因此采用了QuartusII自帶的宏模塊結(jié)構(gòu)。通過每一位的Pi、Gi和Ci-1值很容易求得該位進(jìn)位值Ci。再與該位的和(Ai+Bi)相異或就得到最后的結(jié)果Si。即

采用上述結(jié)構(gòu),極大地提高了累加器的工作速度,其功能仿真圖如圖6所示,從圖中可以看出,此4 bit超前進(jìn)位加法器完全滿足4位全加器的邏輯功能。
下面就將前5級(jí)采用超前進(jìn)位加法器的32位累加器和宏模塊中調(diào)用的4位全加器組成的32位相位累加器性能進(jìn)行比較。
普通流水線累加器的模塊是由4位D觸發(fā)器,5位D觸發(fā)器和4位全加器作為基本元件,采用原理圖輸入的方法設(shè)計(jì)的流水線累加器。該模塊的設(shè)計(jì)參照流水線累加器結(jié)構(gòu)進(jìn)行,不同之處在于:由于相位累加器只用高位尋址,所以低位上為了和高位結(jié)果同時(shí)輸出而做延時(shí)作用的D觸發(fā)器件均被去掉了。這樣做的結(jié)果是,相位累加器輸出的低20位會(huì)因?yàn)樘崆拜敵龆靵y,但是由于高12位的輸出一定是正確的,這樣做既節(jié)省了資源,對(duì)結(jié)果又沒有任何影響。仿真結(jié)果證明假如不用流水線結(jié)構(gòu),32 bit相位累加器工作頻率最高達(dá)到約25 MHz。消耗的資源是82個(gè)LEs,而用了8級(jí)流水線結(jié)構(gòu)后,編譯工作頻率最高達(dá)到了約317.79 MHz,資源消耗為186個(gè)LEs??梢娫谫Y源上的消耗換來了在性能上的極大提高。
流水線累加器的時(shí)序仿真如圖7所示:可以看出當(dāng)輸入數(shù)據(jù)確定后,輸出結(jié)果要經(jīng)過8個(gè)時(shí)鐘周期的延時(shí)后輸出,這是因?yàn)椴捎昧?級(jí)流水結(jié)構(gòu)。采用多少級(jí)流水結(jié)構(gòu),輸出就會(huì)延時(shí)多少個(gè)周期。同時(shí)也說明,對(duì)于輸入數(shù)據(jù)切換來說,該系統(tǒng)會(huì)有8個(gè)時(shí)鐘周期的延時(shí),這是累加器采用流水線結(jié)構(gòu)所不可避免的后果。事實(shí)上目前許多DDS專用芯片由于也采用流水線結(jié)構(gòu),所以本身也存在這樣的問題。由于8個(gè)時(shí)鐘周期的延時(shí)與系統(tǒng)時(shí)鐘相比,實(shí)際上還是很小的,在一般的應(yīng)用場(chǎng)合下也是可以接受的。由于輸出的低20位未用,被省略了,只用了輸出的高12位,所以仿真波形中只有高12位的輸出結(jié)果。從輸出結(jié)果來看,高12位的輸出值是沒有錯(cuò)誤的,與設(shè)計(jì)思想吻合。



關(guān)鍵詞: FPGA 任意波形發(fā)生器

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉