1. XADC介紹
xadc在 所有的7系列器件上都有支持,通過將高質量模擬模塊與可編程邏輯的靈活性相結合,可以為各種應用打造定制的模擬接口,XADC 包括雙 12 位、每秒 1 兆樣本 (MSPS) ADC 和片上傳感器。其中12位指的是ADC轉換的精度,1MSPS說的是采樣速率。如圖所示,是XADC在FPGA內部電路的邏輯示意,注意區(qū)別于IP核形成的電路。
1.圖中1部分是溫度傳感器和電壓傳感器,可監(jiān)測如圖所示的多組電壓。
2.圖中2部分是FPGA bank上的引腳。可以用來接模擬源,總共有17對差分組。其中VP-0與VAUXP有所區(qū)別,VP-0在不用來接模擬源時要接地,VAUXP在不用做模擬時,可與普通的數字IO一樣使用。支持模擬輸入的 FPGA I/O 在封裝文件名中包含_ADxP_ 和 ADxN 標識,例如 IO_L1P_T0_ AD0P 35 是模擬輔助通道 VAUXP[0] 的輸入引腳。IO_L1N_T0 AD0N _35 為模擬輔助通道 VAUXN[0] 的輸入引腳。Kintex-7 設備不支持輔助通道 6、7、13、14 和 15。可以在 I/O 組中啟用任意數量的輔助模擬輸入,并將剩余的用作數字 I/O。如果一個組中混合有模擬和數字 I/O,則該 I/O 組必須由滿足所用數字 I/O 標準規(guī)范所需的電源供電。在這種情況下,模擬輸入信號不應超過 I/O Bank 電源電壓 (V CCO )。
3.圖中3部分是ADC部分所需的模擬電壓的基準源,可以選擇外部基準源,基準源電壓是1.25V,也可以選擇內部基準源,這時VRE管腳要接地。
4.圖中4部分是兩個12位精度的ADC模數轉換器。其中ADC A接內部的溫度、電壓傳感器,ADC B主要接外部輸入的模擬源。
5.圖中5部分是對外的接口,可以使用JTAG或者FPGA內部邏輯通過訪問DRP接口來讀寫內部的控制寄存器和讀取狀態(tài)寄存器。
2.輸入要求
ADC 的標稱模擬輸入范圍為 0V 至 1V。在單極模式(默認)下,當輸入電壓為 1V 時,ADC 的模擬輸入會產生FFFh (12 位)的滿量程代碼。在雙極性模式下,ADC 使用二進制補碼編碼,并在 +0.5V 輸入時產生7FFh的滿量程代碼,在 –0.5V 輸入時產生800h的滿量程代碼。
如下圖所示,是xilinx推薦的模擬源的外部電路示意。阻器 R1 和 R2 將 10V 電源分壓至 1V,以便與 XADC 配合使用。R5 已與 R1 和 R2 的并聯電阻進行阻抗匹配。模擬輸入是高阻抗差分輸入。差分輸入方案可以抑制任何外部應用的模擬輸入信號上的共模噪聲。由于每個輸入(例如 V P和 V N )的高阻抗,輸入交流阻抗通常由傳感器、驅動電路的輸出阻抗或其他外部組件確定。
3.輸出
基于上述的了解,我們得出結論,配置好電路之后,AD轉換之后的結果將會存在相應的寄存器中。然后通過專用的引腳去讀寄存器就可以了。如圖所示,溫度傳感器的寄存器地址為00h。但是溫度需要一個轉換的過程,例如讀出的ADC采樣的值為997h,他所對應的值應該是25℃。因為要符合用以下公式轉換。
? ?
需要注意,讀出的寄存器位寬16bit,但只有12bit數據有效,12 位數據對應于 16 位狀態(tài)寄存器中的 12 個 MSB(最高有效位)。
DRP時序
如果DWE為邏輯低,則執(zhí)行DRP讀操作。當 DRDY 變高時,該讀操作的數據在 DO 總線上有效。因此,應使用 DRDY 來捕獲 DO 總線。對于寫操作,DWE 信號為邏輯高電平,DI 總線和 DRP 地址 (DADDR) 在 DCLK 的下一個上升沿被捕獲。當數據成功寫入 DRP 寄存器時,DRDY 信號變?yōu)檫壿嫺唠娖健T?DRDY 信號變低之前,無法啟動新的讀或寫操作。
4.XADC IP核使用
可以使用原語來讀取ADC轉換后的值,也可以使用IP核。本文實現使用XADC IP核讀取FPGA內部溫度。
A.選擇DRP接口,如果不需要讀出具體的AD轉換之后的數值,則選擇none;IP核的實際電路比上述XADC的電路多了AXI-Lite用于配置寄存器。在沒有軟核和PS端時,用DRP更為方便。
B.選擇連續(xù)采樣模式,包括了電壓采集和電壓轉換兩個階段。在連續(xù)采樣模式下,ADC 在當前轉換周期結束時自動啟動新的轉換。在事件采樣模式下,您必須在當前轉換周期結束后使用 CONVST 或 CONVSTCLK 輸入啟動下一次轉換,適用于精準時刻采集。
C.通道選擇,這里選擇單一通道,只工作在單一通道監(jiān)測溫度即可。° Simultaneous Selection允許同時監(jiān)測兩個通道。° Independent ADC獨立監(jiān)視外部通道,同時監(jiān)測溫度和電壓。Channel Sequencer 任意監(jiān)視多個通道。
其余關于DRP的配置、是否勾選AXI-Stream、以及復位信號的選擇保持默認即可。
第二頁配置一些ADC的增益、補償、沒有深入研究,保持默認。Alarms頁配置相關通道的報警信息,本次演示不需要,只看到溫度值即可,這里不勾選。由于前面選了單一配置,這里channel頁也無需配置直接生成IP即可。
如下圖所示為實測結果,在den_in有效時向地址為0的寄存器下發(fā)讀取指令,在drdy_out為高時,do_out輸出有效,可以看到寄存器中16bit的值為39392,右移4為的值2462帶入上述溫度轉換的式子得到當前FPGA溫度值為29.77攝氏度。
部分代碼如下,有每個引腳含義的注釋可供參考
reg [31:0]tim_cnt;
always @(posedge clk_100 or negedge clk_rst) begin
if(!clk_rst)begin
tim_cnt<= 0;
den_in<= 0;
end
elsebegin
den_in<= 0;
tim_cnt<= tim_cnt + 1;
if(tim_cnt== 32'd100_000_000)begin
tim_cnt<= 0;
den_in<= 1;
end
end
end
xadc_wiz_0 xadc_fun (
.di_in(di_in), // Inputdata bus for the dynamic reconfiguration port (DRP).
.daddr_in(daddr_in), //input wire [6 : 0] daddr_in
.den_in(den_in), //Enable signal for the dynamic reconfiguration port.
.dwe_in(dwe_in), //Write enable for the dynamic reconfiguration port.
.drdy_out(drdy_out), //Data ready signal for the dynamic reconfiguration port.
.do_out(do_out), //Output data bus for the dynamic reconfiguration port.
.dclk_in(clk_100), //input wire dclk_in
.reset_in(~clk_rst), //input wire reset_in
.vp_in(vp_in), //input wire vp_in
.vn_in(vn_in), //input wire vn_in
.channel_out(channel_out), //Channel selection outputs. 只是正在采樣的通道
.eoc_out(eoc_out), //End of Conversion signal.
.alarm_out(alarm_out), //output wire alarm_out
.eos_out(eos_out), //End of Sequence
.busy_out(busy_out) //ADC busy signal
);
原文鏈接:
https://blog.csdn.net/weixin_40615338/article/details/143944324
-
FPGA
+關注
關注
1630文章
21796瀏覽量
605441 -
IP核
+關注
關注
4文章
331瀏覽量
49595 -
XADC
+關注
關注
0文章
9瀏覽量
3433
原文標題:XADC IP核
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論