作者:Mike Byrne and Ken Kavanagh
在使用模數轉換器設計系統時,一項關鍵任務是實際選擇要使用的轉換器。功耗、價格和尺寸等限制因素以及系統對分辨率和性能參數的要求將縮小選擇范圍。但是,設計人員可能仍然會留下許多轉換器,乍一看,這些轉換器將在應用中執行。一種選擇是簡單地根據數據手冊信息選擇轉換器;但謹慎的工程師實際上希望了解零件在應用要求的條件下的性能。然而,問題在于如何盡可能少地花在評估上,因為其中大部分時間將用于評估將被排除在考慮之外的轉換器。
評估轉換器并非易事。需要硬件設計工作和仔細的PCB布局,以使該器件達到其指定的模擬性能。即使使用標準評估板解決了硬件問題,也需要軟件例程來控制器件并回讀數據。在當今多樣化的市場中,各種可用的轉換器,尤其是來自不同制造商的轉換器,都采用專有引腳排列,通常需要不同的軟件例程進行控制和訪問。
鑒于這種背景,歡迎任何使設計人員能夠更輕松地評估轉換器的工具。這些工具可加快選擇轉換器的過程,為設計人員節省開發系統以評估器件所需的時間和精力。除了更快、更輕松地選擇轉換器外,還應通過快速簡便的方法來測試應用中的部件,從而進一步加快設計過程。為了 有用, 測試 系統 應 有效 自 包含, 在 設計 者 隨時 可用 的 平臺 上 運行, 并 實現 兩 個 不同 的 功能: 提供 一種 快速 的 方法 來 演示 轉換 器 的 性能, 以及 為 在 用戶 應用 中 評估 轉換 器 提供 開發 平臺。
這些是中高速通用模數轉換器評估系統的設計目標,使用標準PC作為評估設備的平臺。PC有兩個用于外部通信的端口,一個串行RS-232端口和一個并行打印機端口。由于這兩個端口都無法以每秒超過10,000個采樣的吞吐速率運行ADC所需的速度運行,因此,如果要以指定的吞吐速率運行ADC,則無法在PC和ADC之間直接連接。
因此,為了便于控制ADC并以指定速度運行ADC,需要在PC外部提供額外的處理能力。還需要一個內存緩沖區來存儲以較高吞吐率收集的數據,然后再以與其移植速度兼容的較低速率將其上傳到PC。一種方法是構建具有處理能力和存儲器的評估板。但這有一個缺點,即每個評估板上都需要一個處理器;評估板作為開發板的靈活性降低。
ADI位于利默里克的通用轉換器應用事業部采用的方法是簡化評估板,并將存儲器、處理能力和PC通信移至單獨的控制器板。該控制器板標有EVAL-CONTROL BOARD,提供PC的RS-232端口與目標設備的評估板之間的鏈路。它提供了一種控制轉換器(子)板并以最大吞吐速率操作轉換器的方法,同時在PC上演示結果。Eval-Control 板能夠與一套子評估板一起使用,每個子評估板都針對特定轉換器或系列的特定需求。用戶購買一個 Eval-Control 板,可以通過標準 96 引腳連接器將子評估板連接到該控制器板。系統配置如圖 1 所示。
圖1.臺架測試設置。
所有與 Eval-Control 板兼容的子評估板的名稱都以字母 CB 結尾。迄今為止,有10個子ADC評估板可用于控制器板;其性能范圍為12位、600 ksps AD7892至16位200 ksps AD976A。
為了滿足設置獨立的要求,可以使用具有 12A 電流容量的標準 1V 交流變壓器為系統供電。然后,Eval-Control Board從中產生自身和子板所需的所有功率(圖2)。該板的功能基于ADI公司ADSP-2111數字信號處理器(DSP)。ADSP-2111具有兩個高速串行鏈路,一個2K x 24內部程序存儲器RAM和一個1K x 16內部數據存儲器RAM。處理器控制采樣速率和評估板的數據采集。對于串行接口,它能夠以 8 MHz 的比特率獲取數據;對于并行接口,它的字速率為 3.2 MHz。
圖2.評估控制板框圖
Eval-Control Board和PC之間的通信由8051微控制器控制。8051上的UART端口連接到PC的COM-1串行端口,信息通過標準RS-232電纜傳輸。8051連接到ADSP-2111的主機接口端口(HIP)。相應子評估板的軟件通過2111下載到ADSP-8051。同樣,當ADSP-2111采集并處理數據樣本后,它們會通過8051傳輸回PC進行分析。Eval-Control Board的8K x 16位RAM允許存儲多達4000個樣本,然后再將其傳輸到PC進行處理。它還包括一個14位單芯片DAC和ADC (AD7869)。因此,它可以獲取模擬數據,并在用戶愿意的情況下生成模擬輸出信號。
評估軟件在DOS 4.0或更高版本下運行,允許用戶控制包含被測器件的子板的操作。樣品以高達轉換器最大吞吐速率的速率收集,然后上傳到PC進行顯示和分析。前端PC軟件具有許多屏幕顯示;這些示例如圖 3 所示。
一個。正弦波及其數字化頻譜。
b.直方圖分析
圖 3.數據呈現示例。
該軟件與一系列功能鍵,熱鍵和屏幕按鈕一起運行。有了它,用戶可以選擇采樣率、要采集的樣本數量、模擬輸入范圍、工作模式和片上寄存器的控制。該軟件還可以對捕獲的數據執行窗口功能,執行快速傅立葉變換(FFT),計算信噪比并顯示結果。它還可以顯示直流輸入的代碼分布,并計算分布的平均值和標準偏差。該軟件允許將捕獲的數據存儲到文件中,從中可以導出以供其他軟件包處理。數據可以從文件中獲取(而不是從評估板捕獲)并離線處理。
因此,Eval-Control Board滿足了其要求,即使用上述功能的全套軟件例程來演示標稱性能。一旦設計人員進入評估階段,就可以調整這些例程,以在特定應用條件下評估器件。在這里,Eval-Control Board可以作為一個真正的開發平臺運行。為了為此目的調整和開發軟件,首先需要了解Eval-Control Board的軟件是如何工作的。
軟件
該軟件分為兩個主要部分。第一個是用 C 代碼編寫的,在 PC 上運行;第二個是在評估控制板上運行的DSP代碼,基于ADSP-21xx代碼。我們以具有并行數據總線的12位ADC為例。在檢查 21xx 代碼之前,應該了解當用戶從 PC 軟件中選擇命令時會發生什么。
每個子評估板都需要自己的軟件例程;它們存儲在PC上,并在使用該特定評估板時下載到Eval-Control板。主板特定的軟件文件稱為主機接口端口(HIP)文件。當用戶選擇要加載的程序時,該程序的HIP文件將通過PC的串行端口加載到Eval控制板上。加載程序后,DSP 程序會使其等到獲得命令后再執行任何進一步的操作。當用戶從PC選擇操作時,四字節代碼通過串行端口發送到DSP。代碼的格式預格式化和后格式化分別帶有“S”和“E”字符。這些允許軟件解釋需要執行的功能(例如,取樣,寫入寄存器等)。當命令發送到評估控制板時,微控制器剝離“S”和“E”字節,并將4個字節加載到數據存儲器(DM)地址0x3FE1,0x3FE2,0x3FE3和0x3FE4,如圖所示。
HIP 寄存器地址
微控制器還將 0x03 值寫入 ad?3ess 0x3FE0,以指示已收到數據。這些地址稱為 HIP 寄存器。地址 0x3FE6 處還有一個 HIP 狀態寄存器。檢查此寄存器以查看是否有任何新數據被 DSP 或 PC 寫入 HIP 寄存器。如果將命令行選項 -e+ 添加到 PC 上運行的程序名稱中,則可以看到發送到 DSP 的四字節代碼。例如,如果使用的程序是AD7892.EXE,則命令行是AD7892.EXE-e+。
為應用程序編寫代碼的第一步是編寫DSP的所有初始設置例程,中斷向量地址,串行端口配置和可能需要的任何標志的初始化。(這部分代碼取決于特定的應用程序,本文不會顯示。設置DSP后,程序應等待用戶向其發送命令。這是使用如下所示的Wait_Confirm子例程和 ALU 輸入寄存器 AX0 和 AY1 完成的。AR 是 ALU 輸出寄存器。
wait_confirm:
AX0=DM(0x3fe6); {load HIP status register into AX0}
AY1=0x0001; {load AY1 to check HIP against register 1}
AR=AX0 AND AY1; {Has anything been written?}
IF EQ JUMP wait_confirm; {If not then repeat the loop}
RTS; {return when the commands are received}
此例程僅監視 HSR6、HIP 狀態寄存器 (0x3FE6),直到寄存器的 LSB 為 1 時才返回,表示某些內容已寫入 HDR1 寄存器。此圖標識了四個數據字節的內容:
熱等靜壓寄存器功能
接收到數據后,可以加載定時器寄存器。操作數據以將 2 個字節重建為一個 16 位字(通過將高字節向左移動 8 位并合并),并將其存儲在數據存儲器中,如下所示:
AX0=DM(0X3fe2); SI=AX0; SE=8; SR=LSHIFT SI(LO);
AX0=DM(0X3fe3); AY1=0X00ff; AR=AX0 AND AY1;
AX0=AR; AY1=SR0; AR=AX0 OR AY1;
AY0=AR;AR=AY0-1;
DM(Tcount_Reg)=AR; DM(Tperiod_Reg)=AR;
最后,需要設置并行端口(在本例中為邊緣連接器)的地址,以及要放置數據的內存位置的起始地址。這是使用ADSP-2111的數據地址發生器(DAG)對完成的。DAG 由三個寄存器組成,標識為 I(內存塊的基/索引地址)、M(到下一個位置的增量步驟)和 L(內存塊的長度;L 塊是返回涉及循環緩沖區的循環開始所必需的;在此示例中,它將設置為零)。代碼如下所示。
I0=0;M0=1;L0=0; {數據的內存位置地址}
I1=0x2000;M1=0;L1=0; {并行端口地址 }
現在可以設置一個循環,每次發生中斷時都會讀取數據樣本。由于讀取樣本只占用整個操作(即讀取和上傳數據)的一小部分時間,因此可以用數據填充內存,并且只選擇要上傳的一部分。
AY1=1; AR=8191; {set sample increment and number of samples req’d}
MSTAT=0x20; IMASK=0x01; {start the timer and unmask the interrupt}
luup: IDLE; {wait for the interrupt to occur}
luup1: AR=AR - AY1; {decrease the count}
IF NE JUMP luup; {repeat until finished}
在此示例中,代碼被簡化為僅使用計時器中斷。這可以通過等待計時器從預設時間開始過期從而導致中斷來完成。然后可以從數據總線讀取數據,并在短暫延遲后(如果需要)開始下一次轉換。下面的代碼顯示了計時器中斷向量地址出現在向量表中時的外觀。還顯示了中斷服務例程。
timer_int: jump ISR;RTI;RTI;RTI; {interrupt vector}
ISR: AX0=DM(I1,M1); {read data}
DM(I0,M0)=AX0; {Write to memory}
RESET FL0; SET FL0; {Convst}
RTI;
使用此技術時,必須忽略要返回的第一個數據值,因為它將在轉換開始之前被讀入;因此它是無效的。讀入所有數據后,就可以將數據上傳到PC。關閉中斷并重置控制數據存儲器的 DAG 后,可以使用以下代碼檢查以確定需要上傳多少個樣本:
IMASK=0x00;MSTAT=0x10; |
{屏蔽所有中斷并停止計時器} |
I0=1;M0=1;L0=0; |
{重置DAG以啟動數據存儲器} |
AR=DM(0x3fe1);MY0=256;MR=AR*MY0(UU); |
{讀取所需樣本數} |
AY0=MR0; |
{商店計數} |
來自12位ADC的數據應進行符號擴展,以適應16位寬的數據寄存器。這可以通過檢查數據來完成,如果 MSB 為 1,或者檢查具有 0xF000 的數據,將最高的 4 位設置為 1,如下所示。
MORE_TO_ECHO: AX0=DM(I0,M0); |
{讀取數據值} |
AY1=0x800;AR=AX0 和 AY1;如果情商跳過; |
{檢查 MSB } |
AY1=0xF000;AR=AX0 或 AY1;AX0=AR; |
{如果是 1,則將上位設置為 1} |
數據現在已正確格式化,可以通過主機接口端口傳輸到PC。這是通過在循環中調用 OUT_HIP 例程來完成的:
OVER: |
CALL OUT_HIP; |
{upload the data value } |
AR=AY0—1; |
{decrease the count } |
|
AY0=AR; |
{and copy it back to the register} |
|
IF GE JUMP MORE_TO_ECHO; |
{if we’re not finished then repeat} |
|
GG: |
AX0=0x00FF; |
{all the data has been |
so indicate this to the PC} |
||
DM(0X3fe3)=AX0;AX0=0; |
||
DM(0x3fe0)=AX0; |
||
JUMP cloop; |
{return to start and wait for next command} |
|
OUT_HIP |
SI=AX0; |
{input the data to the barrel shifter} |
SE=—8; |
{set the number of bits to shift by} |
|
SR=LSHIFT SI(LO); |
{and shift the data} |
|
DM(0X3FE4)=SR0; |
{ HI byte } |
|
DM(0X3FE5)=SI; |
{ LO byte } |
|
AX0=1; DM(0X3FE3)=AX0; |
{ indicate that data is available } |
|
CALL WAIT_UPLOAD; |
{and upload it to the PC} |
|
RTS; |
{return when finished } |
|
WAIT_UPLOAD: |
AX0=DM(0x3FE6); |
{check contents of HIPregister 6} |
AY1=0x0001; |
||
AR=AX0 AND AY1; |
||
IF EQ JUMP WAIT_UPLOAD; |
{repeat until ready} |
|
AX0=DM(0x3FE0); |
||
AY1=0x0003; |
||
AR=AX0 - AY1; |
||
IF NE JUMP WAIT_UPLOAD; |
||
RTS; |
一旦將所需數量的樣本發送到PC,程序應返回到主循環的開始并等待進一步的說明。
最后幾個例程是標準集;在修改 Eval-Control Board 的 DSP 代碼以滿足特定應用條件時,它們很少需要更改。上面顯示的所有例程都已用于HIP文件中,這些文件控制通過Eval控制板連接到PC的各種評估(子)板。此處顯示它們是為了指示如何修改現有程序以獲得附加功能。
審核編輯:郭婷
-
轉換器
+關注
關注
27文章
8962瀏覽量
150783 -
控制器
+關注
關注
114文章
16979瀏覽量
182992 -
adc
+關注
關注
99文章
6641瀏覽量
548309
發布評論請先 登錄
具有PSR控制器的通用交流/直流降壓轉換器參考設計
雙向降壓升壓轉換器評估板EVAL-PS-E1BF12-SIC
評估AD7091R-8 12位ADC監視和控制系統的評估板
用于評估AD7091R-2 12位ADC監視和控制系統的評估板
基于VIPer Plus的評估板VIPer0P 15V 0.15A降壓轉換器
EVAL-AD7403-8FMCZ,旨在讓用戶輕松評估AD7403-8隔離式模數轉換器(ADC)的所有功能
可有效驅動連續導通模式升壓預轉換器
數控非隔離式DC/DC降壓轉換器參考設計
母線轉換器評估板用戶指南
使用峰值電流模式控制器設計升壓轉換器

評論