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

資訊專欄INFORMATION COLUMN

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

李文鵬 / 3578人閱讀

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

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

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

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

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

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

圖 36.1.3 芯片時序圖

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

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

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

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

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

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

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

1   module hs_dual_da(2       input                 sys_clk     ,  //系統(tǒng)時鐘3       input                 sys_rst_n   ,  //系統(tǒng)復(fù)位,低電平有效4       //DA芯片接口5       output                da_clk      ,  //DA驅(qū)動時鐘,最大支持125Mhz時鐘6       output    [9:0]       da_data     ,  //輸出給DA的數(shù)據(jù)7   8       //DA芯片接口9       output                da_clk1      ,  //DA驅(qū)動時鐘,最大支持125Mhz時鐘10      output    [9:0]       da_data1        //輸出給DA的數(shù)據(jù)    11  );12  13  //wire define 14  wire      [9:0]    rd_addr;              //ROM讀地址15  wire      [9:0]    rd_data;              //ROM讀出的數(shù)據(jù)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數(shù)據(jù)發(fā)送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數(shù)據(jù)發(fā)送模塊輸出的讀ROM地址(rd_addr)連接至ROM模塊的地址輸入端,ROM模塊輸出的數(shù)據(jù)(rd_data)連接至DA數(shù)據(jù)發(fā)送模塊的數(shù)據(jù)輸入端,從而完成了從ROM中讀取數(shù)據(jù)的功能。
在代碼的第38至42行例化了ROM模塊,由ROM IP核配置生成。在“高速ADDA試驗”中已經(jīng)講解過rom的初始化,這里不再講解。
DA數(shù)據(jù)發(fā)送模塊的代碼如下:

1   module da_wave_send(2       input                 clk         ,  //時鐘3       input                 rst_n       ,  //復(fù)位信號,低電平有效4       5       input        [9:0]    rd_data     ,  //ROM讀出的數(shù)據(jù)6       output  reg  [9:0]    rd_addr     ,  //讀ROM地址7       //DA芯片接口8       output                da_clk      ,  //DA驅(qū)動時鐘,最大支持125Mhz時鐘9       output       [9:0]    da_data        //輸出給DA的數(shù)據(jù)  10      );11  12  //parameter13  //頻率調(diào)節(jié)控制14  parameter  FREQ_ADJ = 10"d0;  //頻率調(diào)節(jié),FREQ_ADJ的越大,最終輸出的頻率越低,范圍0~25515  16  //reg define17  reg    [9:0]    freq_cnt  ;  //頻率調(diào)節(jié)計數(shù)器18  19  //*****************************************************20  //**                    main code21  //*****************************************************22  23  //數(shù)據(jù)rd_data是在clk的上升沿更新的,所以DA芯片在clk的下降沿鎖存數(shù)據(jù)是穩(wěn)定的時刻24  //而DA實際上在da_clk的上升沿鎖存數(shù)據(jù),所以時鐘取反,這樣clk的下降沿相當(dāng)于da_clk的上升沿25  assign  da_clk = clk;       26  assign  da_data = rd_data;   //將讀到的ROM數(shù)據(jù)賦值給DA數(shù)據(jù)端口27  28  //頻率調(diào)節(jié)計數(shù)器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行定義了一個參數(shù)FREQ_ADJ(頻率調(diào)節(jié)),可以通過控制頻率調(diào)節(jié)參數(shù)的大小來控制最終輸出正弦波的頻率大小,頻率調(diào)節(jié)參數(shù)的值越小,正弦波頻率越大。頻率調(diào)節(jié)參數(shù)調(diào)節(jié)正弦波頻率的方法是通過控制讀ROM的速度實現(xiàn)的,頻率調(diào)節(jié)參數(shù)越小,freq_cnt計數(shù)到頻率調(diào)節(jié)參數(shù)值的時間越短,讀ROM數(shù)據(jù)的速度越快,那么正弦波輸出頻率也就越高;反過來,頻率調(diào)節(jié)參數(shù)越大,freq_cnt計數(shù)到頻率調(diào)節(jié)參數(shù)值的時間越長,讀ROM數(shù)據(jù)的速度越慢,那么正弦波輸出頻率也就越低。由于freq_cnt計數(shù)器的位寬為10位,計數(shù)范圍是01023,所以頻率調(diào)節(jié)參數(shù)FREQ_ADJ支持的調(diào)節(jié)范圍是01023,可通過修改freq_cnt計數(shù)器的位寬來修改FREQ_ADJ支持的調(diào)節(jié)范圍。
WaveToMem軟件設(shè)置ROM深度為1024,倍頻系數(shù)為1,而輸入時鐘為125Mhz,那么一個完整的正弦波周期長度為10248ns = 8192ns,當(dāng)FREQ_ADJ的值為0時,即正弦波的最快輸出頻率為1s/8192ns(1s = 1000000000ns) ≈ 122.0Khz。當(dāng)我們把FREQ_ADJ的值設(shè)置為5時,一個完整的正弦波周期長度為5120ns(5+1) =49152ns,頻率約為20.35KHz。也可以在WaveToMem軟件設(shè)置中增加倍頻系數(shù)或者增加AD的驅(qū)動時鐘來提高正弦波輸出頻率。
36.5下載驗證
將雙路高速DA模塊插入新起點開發(fā)板的P6擴展口,連接時注意擴展口電源引腳方向和開發(fā)板電源引腳方向一致。
新起點開發(fā)板硬件連接實物圖如下圖所示:

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

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

圖 36.5.3 示波器顯示界面

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/123010.html

相關(guān)文章

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

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

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

    摘要:超寬帶信號高速采集記錄回放系統(tǒng)特點超寬帶信號采集記錄存儲與回放,用于實驗數(shù)據(jù)事后分析及外場環(huán)境重建。超寬帶信號高速采集記錄存儲回放系統(tǒng)基于高性能及協(xié)議,實現(xiàn)標(biāo)準(zhǔn)化模塊化可擴展可重構(gòu)的超寬帶信號高速連續(xù)采集記錄回放產(chǎn)生平臺。 超寬帶高速記錄回放系統(tǒng) 超寬帶信號高速采集記錄存儲回放系統(tǒng)主要用于對...

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

    摘要:超寬帶信號高速采集記錄回放系統(tǒng)特點超寬帶信號采集記錄存儲與回放,用于實驗數(shù)據(jù)事后分析及外場環(huán)境重建。超寬帶信號高速采集記錄存儲回放系統(tǒng)基于高性能及協(xié)議,實現(xiàn)標(biāo)準(zhǔn)化模塊化可擴展可重構(gòu)的超寬帶信號高速連續(xù)采集記錄回放產(chǎn)生平臺。 超寬帶高速記錄回放系統(tǒng) 超寬帶信號高速采集記錄存儲回放系統(tǒng)主要用于對...

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

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

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

    摘要:服務(wù)器怎么做成網(wǎng)站空間感謝悟空問答,服務(wù)器,也稱伺服器,是提供計算服務(wù)的設(shè)備。由于服務(wù)器需要響應(yīng)服務(wù)請求,并進(jìn)行處理,因此一般來說服務(wù)器應(yīng)具備承擔(dān)服務(wù)并且保障服務(wù)的能力。服務(wù)器怎么做成網(wǎng)站空間?感謝悟空問答,服務(wù)器,也稱伺服器,是提供計算服務(wù)的設(shè)備。由于服務(wù)器需要響應(yīng)服務(wù)請求,并進(jìn)行處理,因此一般來說服務(wù)器應(yīng)具備承擔(dān)服務(wù)并且保障服務(wù)的能力。服務(wù)器的構(gòu)成包括處理器、硬盤、內(nèi)存、系統(tǒng)總線等,和通...

    gclove 評論0 收藏0
  • JS基礎(chǔ)入門篇(三十六)—面向?qū)ο螅?三 )

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

    acrazing 評論0 收藏0

發(fā)表評論

0條評論

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