新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > FPGA實現的任意波形發生器的設計

        FPGA實現的任意波形發生器的設計

        作者: 時間:2010-12-20 來源:網絡 收藏


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


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

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 华宁县| 四子王旗| 卓尼县| 柳林县| 玉门市| 达日县| 锡林浩特市| 乌兰察布市| 汉川市| 越西县| 曲靖市| 靖州| 若羌县| 特克斯县| 庆阳市| 贡嘎县| 安化县| 岳池县| 枝江市| 阿拉善右旗| 库伦旗| 高台县| 乌恰县| 瑞金市| 通道| 铜鼓县| 枣强县| 彭阳县| 南平市| 靖远县| 沁阳市| 拉萨市| 饶河县| 濮阳县| 泸水县| 阿合奇县| 武强县| 临安市| 望江县| 团风县| 丰都县|