国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【正點原子FPGA連載】第三十六章雙路高速DA實驗 -摘自【正點原子】新起點之FPGA開發指南_V2

李文鵬 / 3586人閱讀

摘要:本章我們將使用高速芯片實現數模轉換,產生正弦波模擬電壓信號。實驗任務本節實驗任務是使用新起點開發板及雙路高速擴展模塊模塊實現數模轉換。下載驗證將雙路高速模塊插入新起點開發板的擴展口,連接時注意擴展口電源引腳方向和開發板電源引腳方向一致。

1)實驗平臺:正點原子新起點V2開發板
2)平臺購買地址:https://detail.tmall.com/item.htm?id=609758951113
2)全套實驗源碼+手冊+視頻下載地址:http://www.openedv.com/thread-300792-1-1.html
3)對正點原子FPGA感興趣的同學可以加群討論:994244016
4)關注正點原子公眾號,獲取最新資料更新

第三十六章雙路高速DA實驗

DAC(Digital to Analog Converter,即數模轉換器)是大多數系統中必不可少的組成部件,用于將離散的數字信號轉換成連續的模擬信號,它們是連接模電電路和數字電路必不可少的橋梁。在很多場合下, DAC的轉換速度甚至直接決定了整個系統的運行速度。本章我們將使用高速DA芯片實現數模轉換,產生正弦波模擬電壓信號。
本章包括以下幾個部分:
3535.1簡介
35.2實驗任務
35.3硬件設計
35.4程序設計
35.5下載驗證
36.1簡介
本章我們使用的雙路DA模塊是正點原子推出的一款雙路高速數模轉換模塊(ATK_DUAL_HS_DA),高速DA轉換芯片是由思瑞浦公司生產的3PD5651E芯片。
ATK_HS_AD_DA模塊的硬件結構圖如下圖所示。

圖 36.1.1 ATK_DUAL_HS_DA模塊硬件結構圖
由上可知,3PD5651E芯片輸出的是一對差分電流信號,為了防止受到噪聲干擾,電路中接入了低通濾波器,然后通過高性能和高帶寬的運放電路,實現差分變單端以及幅度調節等功能,使整個電路性能得到了最大限度的提升,最終輸出的模擬電壓范圍是-5V~+5V。
下面來介紹下這款芯片。
3PD5651E是3PEAK公司(思瑞浦微電子科技股份有限公司)生產的DAC系列數模轉換器,具有高性能、低功耗的特點。3PD5651E的數模轉換位數為10位,最大轉換速度為125MSPS(每秒采樣百萬次,Million Samples per Second)。
3PD5651E的內部功能框圖如下圖所示:

圖 36.1.2 內部功能框圖
3PD5651E在時鐘(CLOCK)的驅動下工作,內部集成了+1.1V參考電壓(+1.10V REF)、運算放大器、電流源(CURRENT SOURCE ARRAY)和鎖存器(LATCHES)。兩個電流輸出端IOUTA和IOUTB為一對差分電流,當輸入數據為0(DB9DB0=10’h000)時,IOUTA的輸出電流為0,而IOUTB的輸出電流達到最大,最大值的大小跟參考電壓有關;當輸入數據全為高點平(DB9DB0=10’h3ff)時,IOUTA的輸出電流達到最大,最大值的大小跟參考電壓有關,而IOUTB的輸出電流為0。
3PD5651E必須在時鐘的驅動下才能把數據寫入片內的鎖存器中,其觸發方式為上升沿觸發,3PD5651E的時序圖如下圖所示:

圖 36.1.3 芯片時序圖

圖 36.1.4 FPGA內部時序
如圖 36.1.3中的DBO-DB9和CLOCK是3PD5651E的10位輸入數據和為輸入時鐘,IOUTA和IOUTB為3PD5651E輸出的電流信號。由圖 36.1.3可知,數據在時鐘的上升沿鎖存,因此我們可以在時鐘的下降沿發送數據,這樣使DA芯片在數據的中央采樣,保證數據采樣的準確性,如圖 36.1.4所示。需要注意的是,CLOCK的時鐘頻率越快,3PD5651E的數模轉換速度越快,3PD5651E的時鐘頻率最快為125Mhz。
IOUTA和IOUTB為3PD5651E輸出的一對差分電流信號,通過外部電路低通濾波器與運放電路輸出模擬電壓信號,電壓范圍是-5V至+5V之間。當輸入數據等于0時,3PD5651E輸出的電壓值為5V;當輸入數據等于10’h3ff時,3PD5651E輸出的電壓值為-5V。
3PD5651E是一款數字信號轉模擬信號的器件,內部沒有集成DDS(Direct Digital Synthesizer,直接數字式頻率合成器)的功能,但是可以通過控制3PD5651E的輸入數據,使其模擬DDS的功能。例如,我們使用3PD5651E輸出一個正弦波模擬電壓信號,那么我們只需要將3PD5651E的輸入數據按照正弦波的波形變化即可,下圖為3PD5651E的輸入數據和輸出電壓值按照正弦波變化的波形圖。

圖 36.1.5 3PD5651E正弦波數據(左)、電壓值(右)
由上圖可知,數據在0至1023之間按照正弦波的波形變化,最終得到的電壓也會按照正弦波波形變化,當輸入數據重復按照正弦波的波形數據變化時,那么3PD5651E就可以持續不斷的輸出正弦波的模擬電壓波形。需要注意的是,最終得到的3PD5651E的輸出電壓變化范圍由其外部電路決定的,當輸入數據為0時,3PD5651E輸出+5V的電壓;當輸入數據為1023時,3PD5651E輸出-5V的電壓。
由此可以看出,只要輸入的數據控制的得當,3PD5651E可以輸出任意波形的模擬電壓信號,包括正弦波、方波、鋸齒波、三角波等波形。
36.2實驗任務
本節實驗任務是使用新起點開發板及雙路高速DA擴展模塊(ATK_DUAL_HS_DA模塊)實現數模轉換。首先利用FPGA產生正弦波變化的數字信號,經過DA芯片后轉換成模擬信號,然后通過示波器觀察模擬信號的波形是否按照正弦波波形變化。
36.3硬件設計
ATK_DUAL_HS_DA模塊由2個型號為3PD5651E 的DA轉換芯片組成。3PD5651E的原理圖如下圖所示。

圖 36.3.1 芯片原理圖
由上圖可知,3PD5651E輸出的一對差分電流信號先經過濾波器,再經過運放電路得到一個單端的模擬電壓信號。圖中右側的RP1為滑動變阻器,可以調節輸出的電壓范圍,推薦通過調節滑動變阻器,使輸出的電壓范圍在-5V至+5V之間,從而達到DA轉換芯片的最大轉換范圍。
ATK_DUAL_HS_DA模塊的實物圖如下圖所示。

圖 36.3.2 ATK_DUAL_HS_DA模塊實物圖
本實驗中,各端口信號的管腳分配如下表所示。
表格 36.3.1 雙路高速DA轉換實驗管腳分配

36.4程序設計
根據本章的實驗任務,FPGA需要連續輸出正弦波波形的數據,才能使3PD5651E連續輸出正弦波波形的模擬電壓,如果通過編寫代碼使用三角函數公式運算的方式輸出正弦波數據,那么程序設計會變得非常復雜。在工程應用中,一般將正弦波波形數據存儲在RAM或者ROM中,由于本次實驗并不需要寫數據到RAM中,因此我們將正弦波波形數據存儲在只讀的ROM中,直接讀取ROM中的數據發送給DA轉換芯片即可。
圖 36.4.1是根據本章實驗任務畫出的系統框圖。ROM里面事先存儲好了正弦波波形的數據,DA數據發送模塊從ROM中讀取數據,將數據和時鐘送到3PD5651E芯片的輸入數據端口和輸入時鐘端口。
雙路高速DA實驗的系統框圖如圖 36.4.1所示:

圖 36.4.1 雙路高速DA系統框圖
頂層模塊的原理圖如下圖所示:

圖 36.4.2 頂層模塊原理圖
FPGA頂層模塊(hs_dual_da)例化了以下三個模塊:DA數據發送模塊(da_wave_send)、ROM波形存儲模塊(rom_1024x10b)和時鐘模塊(clk_wiz_0)。
DA數據發送模塊(da_wave_send):DA數據發送模塊輸出讀ROM地址,將輸入的ROM數據發送至DA轉換芯片的數據端口。
ROM波形存儲模塊(rom_1024x10b):ROM波形存儲模塊由Vivado軟件自帶的Block Memory Generator IP核實現,其存儲的波形數據可以使用波形轉存儲文件的上位機來生成.coe文件。
頂層模塊的代碼如下:

1   module hs_dual_da(2       input                 sys_clk     ,  //系統時鐘3       input                 sys_rst_n   ,  //系統復位,低電平有效4       //DA芯片接口5       output                da_clk      ,  //DA驅動時鐘,最大支持125Mhz時鐘6       output    [9:0]       da_data     ,  //輸出給DA的數據7   8       //DA芯片接口9       output                da_clk1      ,  //DA驅動時鐘,最大支持125Mhz時鐘10      output    [9:0]       da_data1        //輸出給DA的數據    11  );12  13  //wire define 14  wire      [9:0]    rd_addr;              //ROM讀地址15  wire      [9:0]    rd_data;              //ROM讀出的數據16  //*****************************************************17  //**                    main code18  //*****************************************************19  20  assign  da_clk1 = da_clk;21  assign  da_data1 = da_data;22  23  pll  u_pll(24      .inclk0 (sys_clk),25      .c0 (clk));26  27  //DA數據發送28  da_wave_send u_da_wave_send(29      .clk         (clk), 30      .rst_n       (sys_rst_n),31      .rd_data     (rd_data),32      .rd_addr     (rd_addr),33      .da_clk      (da_clk),  34      .da_data     (da_data)35      );36  37  //ROM存儲波形38  rom_1024x10b  u_rom_1024x10b(39      .address    (rd_addr),40      .clock      (clk),41      .q          (rd_data)42      );43      44  endmodule

在代碼的第23至25行例化了時鐘模塊,倍頻出125M時鐘給DA芯片采樣用。
DA數據發送模塊輸出的讀ROM地址(rd_addr)連接至ROM模塊的地址輸入端,ROM模塊輸出的數據(rd_data)連接至DA數據發送模塊的數據輸入端,從而完成了從ROM中讀取數據的功能。
在代碼的第38至42行例化了ROM模塊,由ROM IP核配置生成。在“高速ADDA試驗”中已經講解過rom的初始化,這里不再講解。
DA數據發送模塊的代碼如下:

1   module da_wave_send(2       input                 clk         ,  //時鐘3       input                 rst_n       ,  //復位信號,低電平有效4       5       input        [9:0]    rd_data     ,  //ROM讀出的數據6       output  reg  [9:0]    rd_addr     ,  //讀ROM地址7       //DA芯片接口8       output                da_clk      ,  //DA驅動時鐘,最大支持125Mhz時鐘9       output       [9:0]    da_data        //輸出給DA的數據  10      );11  12  //parameter13  //頻率調節控制14  parameter  FREQ_ADJ = 10"d0;  //頻率調節,FREQ_ADJ的越大,最終輸出的頻率越低,范圍0~25515  16  //reg define17  reg    [9:0]    freq_cnt  ;  //頻率調節計數器18  19  //*****************************************************20  //**                    main code21  //*****************************************************22  23  //數據rd_data是在clk的上升沿更新的,所以DA芯片在clk的下降沿鎖存數據是穩定的時刻24  //而DA實際上在da_clk的上升沿鎖存數據,所以時鐘取反,這樣clk的下降沿相當于da_clk的上升沿25  assign  da_clk = clk;       26  assign  da_data = rd_data;   //將讀到的ROM數據賦值給DA數據端口27  28  //頻率調節計數器29  always @(posedge clk or negedge rst_n) begin30      if(rst_n == 1"b0)31          freq_cnt <= 10"d0;32      else if(freq_cnt == FREQ_ADJ)    33          freq_cnt <= 10"d0;34      else         35          freq_cnt <= freq_cnt + 10"d1;36  end37  38  //讀ROM地址39  always @(posedge clk or negedge rst_n) begin40      if(rst_n == 1"b0)41          rd_addr <= 10"d0;42      else begin43          if(freq_cnt == FREQ_ADJ) begin44              rd_addr <= rd_addr + 10"d1;45          end    46      end            47  end48  49  endmodule

在代碼的第14行定義了一個參數FREQ_ADJ(頻率調節),可以通過控制頻率調節參數的大小來控制最終輸出正弦波的頻率大小,頻率調節參數的值越小,正弦波頻率越大。頻率調節參數調節正弦波頻率的方法是通過控制讀ROM的速度實現的,頻率調節參數越小,freq_cnt計數到頻率調節參數值的時間越短,讀ROM數據的速度越快,那么正弦波輸出頻率也就越高;反過來,頻率調節參數越大,freq_cnt計數到頻率調節參數值的時間越長,讀ROM數據的速度越慢,那么正弦波輸出頻率也就越低。由于freq_cnt計數器的位寬為10位,計數范圍是01023,所以頻率調節參數FREQ_ADJ支持的調節范圍是01023,可通過修改freq_cnt計數器的位寬來修改FREQ_ADJ支持的調節范圍。
WaveToMem軟件設置ROM深度為1024,倍頻系數為1,而輸入時鐘為125Mhz,那么一個完整的正弦波周期長度為10248ns = 8192ns,當FREQ_ADJ的值為0時,即正弦波的最快輸出頻率為1s/8192ns(1s = 1000000000ns) ≈ 122.0Khz。當我們把FREQ_ADJ的值設置為5時,一個完整的正弦波周期長度為5120ns(5+1) =49152ns,頻率約為20.35KHz。也可以在WaveToMem軟件設置中增加倍頻系數或者增加AD的驅動時鐘來提高正弦波輸出頻率。
36.5下載驗證
將雙路高速DA模塊插入新起點開發板的P6擴展口,連接時注意擴展口電源引腳方向和開發板電源引腳方向一致。
新起點開發板硬件連接實物圖如下圖所示:

圖 36.5.1 新起點開發板硬件連接實物圖
接下來我們將下載器一端連接電腦,另一端與開發板上對應端口連接,連接電源線并打開電源開關,將工程生成的sof文件下載到新起點開發板中后,然后使用示波器測量DA輸出通道的波形。首先將示波器帶夾子的一端連接到開發板的GND位置(可使用杜邦線連接至開發板上的任一的GND管腳),然后將另一端探針插入雙路高速DA模塊的DA通道中間的金屬圓圈內(注意將紅色的保護套拿掉),如圖 36.5.2所示。

圖 36.5.2 DA模擬電壓測量孔位
此時觀察示波器可以看到正弦波的波形,如果觀察不到波形,可查看示波器設置是否正確,可以嘗試按下示波器的“AUTO”,再次觀察示波器波形。示波器的顯示界面如下圖所示:

圖 36.5.3 示波器顯示界面

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/123010.html

相關文章

  • 全國計算機等級考試二級Python(2021年9月)備考筆記 第十二天

    摘要:本題目的考察點在于函數的格式輸出規則。方法改變隨機數生成器的種子,可以在調用其他隨機模塊函數之前調用此函數。參數改變隨機數生成器的種子。返回一個至區間包含和的整數。 ...

    Codeing_ls 評論0 收藏0
  • 全方位了解超寬帶信號高速采集記錄回放系統

    摘要:超寬帶信號高速采集記錄回放系統特點超寬帶信號采集記錄存儲與回放,用于實驗數據事后分析及外場環境重建。超寬帶信號高速采集記錄存儲回放系統基于高性能及協議,實現標準化模塊化可擴展可重構的超寬帶信號高速連續采集記錄回放產生平臺。 超寬帶高速記錄回放系統 超寬帶信號高速采集記錄存儲回放系統主要用于對...

    Jaden 評論0 收藏0
  • 全方面的了解超寬帶信號高速采集記錄回放系統

    摘要:超寬帶信號高速采集記錄回放系統特點超寬帶信號采集記錄存儲與回放,用于實驗數據事后分析及外場環境重建。超寬帶信號高速采集記錄存儲回放系統基于高性能及協議,實現標準化模塊化可擴展可重構的超寬帶信號高速連續采集記錄回放產生平臺。 超寬帶高速記錄回放系統 超寬帶信號高速采集記錄存儲回放系統主要用于對...

    nanchen2251 評論0 收藏0
  • 服務器主機怎么用-如何使用服務器主機?

    摘要:如何使用服務器主機首先需要打開電腦,在控制面板上添加管理工具中的所有功能,進行安裝,下載并安裝花生殼進行端口映射就可以實現外網也訪問網站了。注意事項花生殼端口映射最好選定未占用的端口防止沖突。如何使用服務器主機?首先需要打開電腦,在控制面板上添加Web管理工具中的所有功能,進行安裝,下載并安裝花生殼進行端口映射就可以實現外網也訪問網站了。具體步驟如下:1、右鍵點擊我們的開始菜單,選擇控制面板...

    Karrdy 評論0 收藏0
  • 服務器如何做空間主機-服務器怎么做成網站空間?

    摘要:服務器怎么做成網站空間感謝悟空問答,服務器,也稱伺服器,是提供計算服務的設備。由于服務器需要響應服務請求,并進行處理,因此一般來說服務器應具備承擔服務并且保障服務的能力。服務器怎么做成網站空間?感謝悟空問答,服務器,也稱伺服器,是提供計算服務的設備。由于服務器需要響應服務請求,并進行處理,因此一般來說服務器應具備承擔服務并且保障服務的能力。服務器的構成包括處理器、硬盤、內存、系統總線等,和通...

    gclove 評論0 收藏0
  • JS基礎入門篇(三十六)—面向對象( 三 )

    摘要:所以不會報錯函數聲明可以先調用再聲明函數聲明解析時,不會放到前面。所以會報錯報錯多個方法之間直接書寫不需要隔開我會說話解析其中方法和方法之間并沒有用逗給開。 1.class class es6 中 為 關鍵字用來聲明 一個 類 1.只能通過new調用 2.不存在變量提升 3.多個方法之間直接書寫,不需要,隔開 4.類的方法是直接定義在類的原型上的 5.定義在類中的方法不可枚舉 6.Ob...

    acrazing 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<