作者:Mike Byrne and Ken Kavanagh
在使用模數(shù)轉(zhuǎn)換器設(shè)計(jì)系統(tǒng)時(shí),一項(xiàng)關(guān)鍵任務(wù)是實(shí)際選擇要使用的轉(zhuǎn)換器。功耗、價(jià)格和尺寸等限制因素以及系統(tǒng)對(duì)分辨率和性能參數(shù)的要求將縮小選擇范圍。但是,設(shè)計(jì)人員可能仍然會(huì)留下許多轉(zhuǎn)換器,乍一看,這些轉(zhuǎn)換器將在應(yīng)用中執(zhí)行。一種選擇是簡(jiǎn)單地根據(jù)數(shù)據(jù)手冊(cè)信息選擇轉(zhuǎn)換器;但謹(jǐn)慎的工程師實(shí)際上希望了解零件在應(yīng)用要求的條件下的性能。然而,問(wèn)題在于如何盡可能少地花在評(píng)估上,因?yàn)槠渲写蟛糠謺r(shí)間將用于評(píng)估將被排除在考慮之外的轉(zhuǎn)換器。
評(píng)估轉(zhuǎn)換器并非易事。需要硬件設(shè)計(jì)工作和仔細(xì)的PCB布局,以使該器件達(dá)到其指定的模擬性能。即使使用標(biāo)準(zhǔn)評(píng)估板解決了硬件問(wèn)題,也需要軟件例程來(lái)控制器件并回讀數(shù)據(jù)。在當(dāng)今多樣化的市場(chǎng)中,各種可用的轉(zhuǎn)換器,尤其是來(lái)自不同制造商的轉(zhuǎn)換器,都采用專有引腳排列,通常需要不同的軟件例程進(jìn)行控制和訪問(wèn)。
鑒于這種背景,歡迎任何使設(shè)計(jì)人員能夠更輕松地評(píng)估轉(zhuǎn)換器的工具。這些工具可加快選擇轉(zhuǎn)換器的過(guò)程,為設(shè)計(jì)人員節(jié)省開發(fā)系統(tǒng)以評(píng)估器件所需的時(shí)間和精力。除了更快、更輕松地選擇轉(zhuǎn)換器外,還應(yīng)通過(guò)快速簡(jiǎn)便的方法來(lái)測(cè)試應(yīng)用中的部件,從而進(jìn)一步加快設(shè)計(jì)過(guò)程。為了 有用, 測(cè)試 系統(tǒng) 應(yīng) 有效 自 包含, 在 設(shè)計(jì) 者 隨時(shí) 可用 的 平臺(tái) 上 運(yùn)行, 并 實(shí)現(xiàn) 兩 個(gè) 不同 的 功能: 提供 一種 快速 的 方法 來(lái) 演示 轉(zhuǎn)換 器 的 性能, 以及 為 在 用戶 應(yīng)用 中 評(píng)估 轉(zhuǎn)換 器 提供 開發(fā) 平臺(tái)。
這些是中高速通用模數(shù)轉(zhuǎn)換器評(píng)估系統(tǒng)的設(shè)計(jì)目標(biāo),使用標(biāo)準(zhǔn)PC作為評(píng)估設(shè)備的平臺(tái)。PC有兩個(gè)用于外部通信的端口,一個(gè)串行RS-232端口和一個(gè)并行打印機(jī)端口。由于這兩個(gè)端口都無(wú)法以每秒超過(guò)10,000個(gè)采樣的吞吐速率運(yùn)行ADC所需的速度運(yùn)行,因此,如果要以指定的吞吐速率運(yùn)行ADC,則無(wú)法在PC和ADC之間直接連接。
因此,為了便于控制ADC并以指定速度運(yùn)行ADC,需要在PC外部提供額外的處理能力。還需要一個(gè)內(nèi)存緩沖區(qū)來(lái)存儲(chǔ)以較高吞吐率收集的數(shù)據(jù),然后再以與其移植速度兼容的較低速率將其上傳到PC。一種方法是構(gòu)建具有處理能力和存儲(chǔ)器的評(píng)估板。但這有一個(gè)缺點(diǎn),即每個(gè)評(píng)估板上都需要一個(gè)處理器;評(píng)估板作為開發(fā)板的靈活性降低。
ADI位于利默里克的通用轉(zhuǎn)換器應(yīng)用事業(yè)部采用的方法是簡(jiǎn)化評(píng)估板,并將存儲(chǔ)器、處理能力和PC通信移至單獨(dú)的控制器板。該控制器板標(biāo)有EVAL-CONTROL BOARD,提供PC的RS-232端口與目標(biāo)設(shè)備的評(píng)估板之間的鏈路。它提供了一種控制轉(zhuǎn)換器(子)板并以最大吞吐速率操作轉(zhuǎn)換器的方法,同時(shí)在PC上演示結(jié)果。Eval-Control 板能夠與一套子評(píng)估板一起使用,每個(gè)子評(píng)估板都針對(duì)特定轉(zhuǎn)換器或系列的特定需求。用戶購(gòu)買一個(gè) Eval-Control 板,可以通過(guò)標(biāo)準(zhǔn) 96 引腳連接器將子評(píng)估板連接到該控制器板。系統(tǒng)配置如圖 1 所示。
圖1.臺(tái)架測(cè)試設(shè)置。
所有與 Eval-Control 板兼容的子評(píng)估板的名稱都以字母 CB 結(jié)尾。迄今為止,有10個(gè)子ADC評(píng)估板可用于控制器板;其性能范圍為12位、600 ksps AD7892至16位200 ksps AD976A。
為了滿足設(shè)置獨(dú)立的要求,可以使用具有 12A 電流容量的標(biāo)準(zhǔn) 1V 交流變壓器為系統(tǒng)供電。然后,Eval-Control Board從中產(chǎn)生自身和子板所需的所有功率(圖2)。該板的功能基于ADI公司ADSP-2111數(shù)字信號(hào)處理器(DSP)。ADSP-2111具有兩個(gè)高速串行鏈路,一個(gè)2K x 24內(nèi)部程序存儲(chǔ)器RAM和一個(gè)1K x 16內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM。處理器控制采樣速率和評(píng)估板的數(shù)據(jù)采集。對(duì)于串行接口,它能夠以 8 MHz 的比特率獲取數(shù)據(jù);對(duì)于并行接口,它的字速率為 3.2 MHz。
圖2.評(píng)估控制板框圖
Eval-Control Board和PC之間的通信由8051微控制器控制。8051上的UART端口連接到PC的COM-1串行端口,信息通過(guò)標(biāo)準(zhǔn)RS-232電纜傳輸。8051連接到ADSP-2111的主機(jī)接口端口(HIP)。相應(yīng)子評(píng)估板的軟件通過(guò)2111下載到ADSP-8051。同樣,當(dāng)ADSP-2111采集并處理數(shù)據(jù)樣本后,它們會(huì)通過(guò)8051傳輸回PC進(jìn)行分析。Eval-Control Board的8K x 16位RAM允許存儲(chǔ)多達(dá)4000個(gè)樣本,然后再將其傳輸?shù)絇C進(jìn)行處理。它還包括一個(gè)14位單芯片DAC和ADC (AD7869)。因此,它可以獲取模擬數(shù)據(jù),并在用戶愿意的情況下生成模擬輸出信號(hào)。
評(píng)估軟件在DOS 4.0或更高版本下運(yùn)行,允許用戶控制包含被測(cè)器件的子板的操作。樣品以高達(dá)轉(zhuǎn)換器最大吞吐速率的速率收集,然后上傳到PC進(jìn)行顯示和分析。前端PC軟件具有許多屏幕顯示;這些示例如圖 3 所示。
一個(gè)。正弦波及其數(shù)字化頻譜。
b.直方圖分析
圖 3.數(shù)據(jù)呈現(xiàn)示例。
該軟件與一系列功能鍵,熱鍵和屏幕按鈕一起運(yùn)行。有了它,用戶可以選擇采樣率、要采集的樣本數(shù)量、模擬輸入范圍、工作模式和片上寄存器的控制。該軟件還可以對(duì)捕獲的數(shù)據(jù)執(zhí)行窗口功能,執(zhí)行快速傅立葉變換(FFT),計(jì)算信噪比并顯示結(jié)果。它還可以顯示直流輸入的代碼分布,并計(jì)算分布的平均值和標(biāo)準(zhǔn)偏差。該軟件允許將捕獲的數(shù)據(jù)存儲(chǔ)到文件中,從中可以導(dǎo)出以供其他軟件包處理。數(shù)據(jù)可以從文件中獲取(而不是從評(píng)估板捕獲)并離線處理。
因此,Eval-Control Board滿足了其要求,即使用上述功能的全套軟件例程來(lái)演示標(biāo)稱性能。一旦設(shè)計(jì)人員進(jìn)入評(píng)估階段,就可以調(diào)整這些例程,以在特定應(yīng)用條件下評(píng)估器件。在這里,Eval-Control Board可以作為一個(gè)真正的開發(fā)平臺(tái)運(yùn)行。為了為此目的調(diào)整和開發(fā)軟件,首先需要了解Eval-Control Board的軟件是如何工作的。
軟件
該軟件分為兩個(gè)主要部分。第一個(gè)是用 C 代碼編寫的,在 PC 上運(yùn)行;第二個(gè)是在評(píng)估控制板上運(yùn)行的DSP代碼,基于ADSP-21xx代碼。我們以具有并行數(shù)據(jù)總線的12位ADC為例。在檢查 21xx 代碼之前,應(yīng)該了解當(dāng)用戶從 PC 軟件中選擇命令時(shí)會(huì)發(fā)生什么。
每個(gè)子評(píng)估板都需要自己的軟件例程;它們存儲(chǔ)在PC上,并在使用該特定評(píng)估板時(shí)下載到Eval-Control板。主板特定的軟件文件稱為主機(jī)接口端口(HIP)文件。當(dāng)用戶選擇要加載的程序時(shí),該程序的HIP文件將通過(guò)PC的串行端口加載到Eval控制板上。加載程序后,DSP 程序會(huì)使其等到獲得命令后再執(zhí)行任何進(jìn)一步的操作。當(dāng)用戶從PC選擇操作時(shí),四字節(jié)代碼通過(guò)串行端口發(fā)送到DSP。代碼的格式預(yù)格式化和后格式化分別帶有“S”和“E”字符。這些允許軟件解釋需要執(zhí)行的功能(例如,取樣,寫入寄存器等)。當(dāng)命令發(fā)送到評(píng)估控制板時(shí),微控制器剝離“S”和“E”字節(jié),并將4個(gè)字節(jié)加載到數(shù)據(jù)存儲(chǔ)器(DM)地址0x3FE1,0x3FE2,0x3FE3和0x3FE4,如圖所示。
HIP 寄存器地址
微控制器還將 0x03 值寫入 ad?3ess 0x3FE0,以指示已收到數(shù)據(jù)。這些地址稱為 HIP 寄存器。地址 0x3FE6 處還有一個(gè) HIP 狀態(tài)寄存器。檢查此寄存器以查看是否有任何新數(shù)據(jù)被 DSP 或 PC 寫入 HIP 寄存器。如果將命令行選項(xiàng) -e+ 添加到 PC 上運(yùn)行的程序名稱中,則可以看到發(fā)送到 DSP 的四字節(jié)代碼。例如,如果使用的程序是AD7892.EXE,則命令行是AD7892.EXE-e+。
為應(yīng)用程序編寫代碼的第一步是編寫DSP的所有初始設(shè)置例程,中斷向量地址,串行端口配置和可能需要的任何標(biāo)志的初始化。(這部分代碼取決于特定的應(yīng)用程序,本文不會(huì)顯示。設(shè)置DSP后,程序應(yīng)等待用戶向其發(fā)送命令。這是使用如下所示的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}
此例程僅監(jiān)視 HSR6、HIP 狀態(tài)寄存器 (0x3FE6),直到寄存器的 LSB 為 1 時(shí)才返回,表示某些內(nèi)容已寫入 HDR1 寄存器。此圖標(biāo)識(shí)了四個(gè)數(shù)據(jù)字節(jié)的內(nèi)容:
熱等靜壓寄存器功能
接收到數(shù)據(jù)后,可以加載定時(shí)器寄存器。操作數(shù)據(jù)以將 2 個(gè)字節(jié)重建為一個(gè) 16 位字(通過(guò)將高字節(jié)向左移動(dòng) 8 位并合并),并將其存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器中,如下所示:
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;
最后,需要設(shè)置并行端口(在本例中為邊緣連接器)的地址,以及要放置數(shù)據(jù)的內(nèi)存位置的起始地址。這是使用ADSP-2111的數(shù)據(jù)地址發(fā)生器(DAG)對(duì)完成的。DAG 由三個(gè)寄存器組成,標(biāo)識(shí)為 I(內(nèi)存塊的基/索引地址)、M(到下一個(gè)位置的增量步驟)和 L(內(nèi)存塊的長(zhǎng)度;L 塊是返回涉及循環(huán)緩沖區(qū)的循環(huán)開始所必需的;在此示例中,它將設(shè)置為零)。代碼如下所示。
I0=0;M0=1;L0=0; {數(shù)據(jù)的內(nèi)存位置地址}
I1=0x2000;M1=0;L1=0; {并行端口地址 }
現(xiàn)在可以設(shè)置一個(gè)循環(huán),每次發(fā)生中斷時(shí)都會(huì)讀取數(shù)據(jù)樣本。由于讀取樣本只占用整個(gè)操作(即讀取和上傳數(shù)據(jù))的一小部分時(shí)間,因此可以用數(shù)據(jù)填充內(nèi)存,并且只選擇要上傳的一部分。
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}
在此示例中,代碼被簡(jiǎn)化為僅使用計(jì)時(shí)器中斷。這可以通過(guò)等待計(jì)時(shí)器從預(yù)設(shè)時(shí)間開始過(guò)期從而導(dǎo)致中斷來(lái)完成。然后可以從數(shù)據(jù)總線讀取數(shù)據(jù),并在短暫延遲后(如果需要)開始下一次轉(zhuǎn)換。下面的代碼顯示了計(jì)時(shí)器中斷向量地址出現(xiàn)在向量表中時(shí)的外觀。還顯示了中斷服務(wù)例程。
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;
使用此技術(shù)時(shí),必須忽略要返回的第一個(gè)數(shù)據(jù)值,因?yàn)樗鼘⒃谵D(zhuǎn)換開始之前被讀入;因此它是無(wú)效的。讀入所有數(shù)據(jù)后,就可以將數(shù)據(jù)上傳到PC。關(guān)閉中斷并重置控制數(shù)據(jù)存儲(chǔ)器的 DAG 后,可以使用以下代碼檢查以確定需要上傳多少個(gè)樣本:
IMASK=0x00;MSTAT=0x10; |
{屏蔽所有中斷并停止計(jì)時(shí)器} |
I0=1;M0=1;L0=0; |
{重置DAG以啟動(dòng)數(shù)據(jù)存儲(chǔ)器} |
AR=DM(0x3fe1);MY0=256;MR=AR*MY0(UU); |
{讀取所需樣本數(shù)} |
AY0=MR0; |
{商店計(jì)數(shù)} |
來(lái)自12位ADC的數(shù)據(jù)應(yīng)進(jìn)行符號(hào)擴(kuò)展,以適應(yīng)16位寬的數(shù)據(jù)寄存器。這可以通過(guò)檢查數(shù)據(jù)來(lái)完成,如果 MSB 為 1,或者檢查具有 0xF000 的數(shù)據(jù),將最高的 4 位設(shè)置為 1,如下所示。
MORE_TO_ECHO: AX0=DM(I0,M0); |
{讀取數(shù)據(jù)值} |
AY1=0x800;AR=AX0 和 AY1;如果情商跳過(guò); |
{檢查 MSB } |
AY1=0xF000;AR=AX0 或 AY1;AX0=AR; |
{如果是 1,則將上位設(shè)置為 1} |
數(shù)據(jù)現(xiàn)在已正確格式化,可以通過(guò)主機(jī)接口端口傳輸?shù)絇C。這是通過(guò)在循環(huán)中調(diào)用 OUT_HIP 例程來(lái)完成的:
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; |
一旦將所需數(shù)量的樣本發(fā)送到PC,程序應(yīng)返回到主循環(huán)的開始并等待進(jìn)一步的說(shuō)明。
最后幾個(gè)例程是標(biāo)準(zhǔn)集;在修改 Eval-Control Board 的 DSP 代碼以滿足特定應(yīng)用條件時(shí),它們很少需要更改。上面顯示的所有例程都已用于HIP文件中,這些文件控制通過(guò)Eval控制板連接到PC的各種評(píng)估(子)板。此處顯示它們是為了指示如何修改現(xiàn)有程序以獲得附加功能。
審核編輯:郭婷
-
轉(zhuǎn)換器
+關(guān)注
關(guān)注
27文章
8736瀏覽量
147557 -
控制器
+關(guān)注
關(guān)注
112文章
16416瀏覽量
178777 -
adc
+關(guān)注
關(guān)注
98文章
6524瀏覽量
545219
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論