基于FPGA的多通道串行A/D轉換器的控制器設計

發(fā)布時(shí)間:2010-8-16 11:52    發(fā)布者:lavida
關(guān)鍵詞: FPGA , 串行 , 控制器
1 引言

隨著(zhù)現代電子技術(shù)的應用和發(fā)展,越來(lái)越多的電子應用由模擬系統向數字系統轉變,而A/D轉換器為模擬系統和數字系統的界面,承擔著(zhù)模擬信號轉變?yōu)閿底中盘柕娜蝿?wù),在一些多路信號采集系統和實(shí)時(shí)數字信號處理系統中,A/D轉換的多路擴展、高精度、低成本、實(shí)時(shí)性顯得越來(lái)越重要。在一般信號采集系統中,由單片機或微控制器對高精度A/D轉換器進(jìn)行控制,通常采用軟件模擬A/D轉換器時(shí)序的方法。因此增加了CPU的負擔,降低了CPU的工作效率,在多片A/D轉換器多通道擴展應用中,降低了信號采集的實(shí)時(shí)性。  

現場(chǎng)可編程門(mén)陣列FPGA(Field ProgrammableGate Array)是20世紀80年代中期在PAL,GAL等邏輯器件的基礎上發(fā)展起來(lái)的一種可編程邏輯器件,其特點(diǎn)是高集成度、高速和高可靠性,設計人員可以現場(chǎng)修改器件的邏輯功能。VHDL(VHSIC Hardvcare Description Language)是目前通用的硬件描述語(yǔ)言之一,可用來(lái)描述一個(gè)數字電路的輸入、輸出以及相互間的行為與功能。  

FPGA的高集成度和高速的特性,使之相對于單片機和微控制器,更適合用于對高速A/D器件的采樣控制。本文設計一種基于FPGA的高速串行輸入/輸出A/D轉換器的控制器,該控制器完成對ADS7844芯片的采樣控制,提高了采樣的實(shí)時(shí)性、減輕了主CPU的運行負擔。  

2 ADS7844功能介紹  

ADS7844是Burr_Brown公司推出的一種高性能、寬電壓、低功耗的12 b串行數模轉換器。它有8個(gè)模擬輸入端,可用軟件編程為8通道單端輸入A/D轉換器或4通道差分輸入A/D轉換器,其轉換率高達200 kHz,而線(xiàn)性誤差和差分誤差最大僅為±1 LSB。ADS7844在電源電壓為2.7~5 V之間均能正常工作,最大工作電流為1 mA,進(jìn)入低功耗狀態(tài)后的耗電僅為3μA。ADS7844通過(guò)6線(xiàn)串行接口與CPU進(jìn)行通信,接口簡(jiǎn)單方便。  

2.1 ADS7844的引腳功能  

CH0~CH7:模擬輸入端,當器件被設置為單端輸入時(shí),這些引腳可分別與信號地COM構成8通道單端輸入A/D轉換器;當器件被設置為差分輸入時(shí),利用CH0-CH1,CH2-CH3,CH4-CH5,CH6-CH7可構成4通道差分輸入A/D轉換器;  

COM:信號地;  

Vref:參考電壓輸入端,最大值為電源電壓;  

CS:片選端、低電平有效、該腳為高電平時(shí),其他數字接口呈三態(tài);  

Dclk:外部時(shí)鐘輸人端,在時(shí)鐘作用下,CPU將控制字寫(xiě)入ADS7844,并將轉換結果從中讀出;  

Din:串行數據輸入端,在片選有效時(shí),控制字在Dclk上升沿被逐位鎖入ADS7844;  

Dout:串行數據輸出端,在片選有效時(shí),轉換結果在DcIk的下降沿開(kāi)始被逐位從ADS7844移出;  

BUSY:“忙”信號輸出端,在接收到控制字的第一位數據后變低,只有在轉換結束且片選有效時(shí),該腳才輸出一個(gè)高脈沖;  

SHDN:電源關(guān)閉端、低電平有效。當SHDN為低電平時(shí),ADS7844進(jìn)入低功耗狀態(tài);  

Vcc,GND:分別為電源端和數字地。  

2.2 ADS7844的控制字及轉換時(shí)序  

ADS7844的控制字如表1所述。  


  
ADS7844的控制字共有8位,其中S是起始位,控制字的起始位總為“1”。A2~A0是通道選擇位,在單端輸入時(shí)分別對應8個(gè)通道,而對于差分輸入,000~011分別對應CH0-CH1,CH2-CH3,CH4-CH5,CH6-CH7,而100~111則分別對應CH0-CH1,CH1-CH0,CH3-CH2,CH5-CH4,CH7-CH6。Bit3沒(méi)有定義。SGL/DIF是模式控制位,該位為“1”時(shí)是單端輸入模式,為“0”時(shí)是差分輸入模式。PD1和PD0是電源關(guān)閉模式控制位,若為“00”,則表示ADS7844在不進(jìn)行數據轉換時(shí)自動(dòng)進(jìn)入電源關(guān)閉模式,若為“11”,芯片則始終處于電源開(kāi)啟模式。  

ADS7844有多種轉換時(shí)序,基本時(shí)序如圖1所示。  


  
從圖1中可見(jiàn),一個(gè)轉換周期需要24個(gè)時(shí)鐘周期,其中8個(gè)用于輸入控制字,16個(gè)用于讀取轉換結果?刂谱值乃形辉跁r(shí)鐘上升沿被鎖入芯片,轉換結果在時(shí)鐘的下降沿被逐位移出。所有移人和移出的數據都是高位在前、低位在后。需要說(shuō)明的是,ADS7844是12位A/D轉換器,其轉換結果只有12位,故在移出12位結果后,還需送入4個(gè)時(shí)鐘來(lái)完成整個(gè)轉換過(guò)程,這4個(gè)多余的時(shí)鐘移出的數據為“0”,使用時(shí)不應作為轉換結果處理。  

3 ADS7844控制器的設計  

用FPGA設計的采樣控制器AD_CONTROLLER與ADS7844的接口電路如圖2所示,基本時(shí)序如上所述。AD_CONTROLLER的輸入時(shí)鐘取12 MHz,經(jīng)內部4分頻后輸出至ADS7844的CLK引腳。cs_all為來(lái)自CPU的啟動(dòng)信號,當其為低時(shí)AD_CONTROLLER開(kāi)始工作。addr[3..0]為對應的ADS7844的通道地址,data[15..0]為某地址所對應通道的A/D轉換結果,當某一通道轉換結束,oe信號由低電平變?yōu)楦唠娖讲⒊掷m1個(gè)周期。  


  
AD_CONTROLLER主要由分頻模塊(fq),A/D轉換周期形成模塊(fq_cs);A/D轉換器片選信號模塊(cs_pulse);通道地址及控制字形成模塊(addr_1);A/D轉換數據輸出模塊(from_ad)和控制字移位輸出模塊(to_ad)組成,其結構如圖3所示。  



取FPGA工作頻率10 MHz,經(jīng)分頻器4分頻得2.5 MHz作為A/D轉換器的時(shí)鐘。分頻器通常用計數器實(shí)現,各VHDL教材上都已詳細講述,這里不再贅述。信號cs每隔28個(gè)clk1時(shí)鐘周期發(fā)出1個(gè)clk1周期的高電平脈沖并轉換1次模擬輸入通道,28個(gè)cIk1周期中,A/D轉換器片選cs_ad信號占用4個(gè)周期,控制字的串行輸出(di)占用8個(gè)周期,ADS7844芯片由Din引腳接收到控制字后,在下一個(gè)周期的下降沿開(kāi)始將A/D轉換后的數據串行輸出至Dout引腳,由from_ad模塊進(jìn)行串/并轉換并輸出(data[15..0]),此串并轉換需16個(gè)周期。信號stld的下降沿將由狀態(tài)機產(chǎn)生的控制字(control_word[7..0])鎖存入to_ad模塊內部的并/串移位寄存器(74165),經(jīng)過(guò)8個(gè)周期后控制字由di引腳輸入ADS7844芯片。cs脈沖的產(chǎn)生由計數器實(shí)現,這里不做詳細介紹。cs_ad片選信號通過(guò)cs_ad模塊將cs信號展寬2個(gè)周期而得到,其電路結構如下:  


  
電路由1個(gè)計數器(cs_wide)、前沿D觸發(fā)器(inst6)和后沿D觸發(fā)器(inst3)組成。當cs信號上升沿到時(shí),inst6觸發(fā),cs_ad置高電平。2個(gè)周期后,inst3由下降沿觸發(fā)輸出高電平,反相后將inst6和計數器cs_wide清零,同時(shí)cs_ad輸出低電平。由此看出,cs_ad的信號正是cs信號經(jīng)過(guò)2個(gè)周期展寬后得到。  

通道地址及控制字形成模塊(addr_1)可以實(shí)現所需的各種輸入模式,并產(chǎn)生通道地址和控制字,以單端輸入模式為例,VHDL代碼如下:  




  
這里用雙進(jìn)程的有限狀態(tài)機(FSM)來(lái)設計通道地址產(chǎn)生器。當addr<=“0000”時(shí)表示沒(méi)有通道被選擇,ADS7844沒(méi)有工作;當addr<=“0000”時(shí)表示通道1被選擇,依次類(lèi)推。  

4 計算機仿真分析  

Quartus Ⅱ 6.0進(jìn)行分析綜合、布局,共占用Altera cyclone FPGA 59個(gè)LE(logic elements),波形仿真如圖5所示。  


  
圖5中elk的周期為100 ns,clk1為系統時(shí)鐘4分頻后的工作時(shí)鐘,當cs_all為低電平時(shí),AD_CONTROLLER開(kāi)始工作。由狀態(tài)機產(chǎn)生的控制字(10000100)在stld的下降沿被鎖存入移位寄存器,當cs_ad由高變低時(shí),控制字被逐位移出至di端口。在此,假設當ADS7844接收到控制字并由ad_do端口逐位移出1通道轉換后的數據1000000000010000,經(jīng)過(guò)16個(gè)周期后oe由低變高,oe的下降沿可以將移入寄存器的數據鎖存。由圖5可見(jiàn),仿真波形與ADS78414控制波形一致,達到了設計的目的。  

5 結 語(yǔ)  

本試驗用于混合動(dòng)力汽車(chē)電池管理系統電池電壓、電流信息采集部分。電池管理系統通常采用雙單片機的結構,一個(gè)單片機完成電池信息采集功能,另外一個(gè)單片機完成電池SoC(State of Charge)計算及人機交互功能。這種系統結構復雜,可靠性降低。為解決這一問(wèn)題,該A/D控制器被封裝成基于A(yíng)valon總線(xiàn)的自定義IP核,應用于A(yíng)ltera公司FPGA所支持的NIOS Ⅱ嵌入式系統中,NIOS Ⅱ軟核CPU僅在A(yíng)/D控制器引起的中斷服務(wù)程序中讀取采集到的數據,這樣大大提高了采集速度和CPU的效率,使得有更多的CPU資源應用于SoC計算和人機交互。這種基于SoPC(Systemon Programmable Chip)的電池管理系統結構緊湊、功能齊全、可靠性大大提高。  

FPGA用來(lái)設計控制電路有很多優(yōu)點(diǎn)。FPGA不僅可進(jìn)行任意次編程,而且用戶(hù)可以借助開(kāi)發(fā)工具快速編程、編譯、優(yōu)化、仿真直到最后芯片制作。高集成性使得用戶(hù)可以利用硬件描述語(yǔ)言及開(kāi)發(fā)工具在單片FPGA芯片上實(shí)現各種復雜的邏輯電路和片上系統,提高了系統性能、減小了電路面積、降低了成本。高速性有效地解決模擬控制的精度與數字控制的速度之間的矛盾。隨著(zhù)FPGA性能的提高和成本的降低,以FPGA為基礎的數字電路和SoPC(Systam on ProgrammableChip)代表了嵌入式系統的發(fā)展方向,FPGA將應用得越來(lái)越廣泛。
本文地址:http://selenalain.com/thread-21510-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页