當前位置:首頁 > EDA > 電子設計自動化
[導讀]提出一種基于FPGA技術的多路模擬量、數(shù)字量采集與處理系統(tǒng)的設計方案,分析整個系統(tǒng)的結構,并討論FPGA內(nèi)部硬件資源的劃分和軟件的設計方案等。

    摘要:提出一種基于FPGA技術的多路模擬量、數(shù)字量采集與處理系統(tǒng)的設計方案,分析整個系統(tǒng)的結構,并討論FPGA內(nèi)部硬件資源的劃分和軟件的設計方案等。本設計方案外部電路結構簡單可靠,特別適用于多路檢測系統(tǒng)中,而且可以根據(jù)需要容易地對系統(tǒng)進行擴展,對于檢測系統(tǒng)來講具有一定的通用性。

    關鍵詞:FPGA A/D采集 數(shù)字量采集 VHDL語言設計

在電氣測控系統(tǒng)中,常常需要采集各種模擬量信號、數(shù)字量信號,并對它們進行相應的處理。一般情況下,測控系統(tǒng)中用普通MCU(如51、196等單片機或控制型DSP)是可以完成系統(tǒng)任務的。但當系統(tǒng)中要采集的信號量特別多時(特別是各種信號量、狀態(tài)量),僅僅靠用普通MCU的資源就往往難以完成任務。此時,一般只能采取多MCU聯(lián)機處理模式,或者靠其它芯片擴展系統(tǒng)資源來完成系統(tǒng)的監(jiān)測任務。這樣做不僅增加了大量的外部電路和系統(tǒng)成本,而且大大增加了系統(tǒng)的復雜性,因而系統(tǒng)的可靠性就會受一定的影響,這顯然不是設計者所愿意看到的。本文所提出的一種基于FPGA技術的模擬量、數(shù)字量采集與處理系統(tǒng),利用FPGA的I/O端口多,且可以自由編程支配、定義其功能的特點,配以VHDL編寫的FPGA內(nèi)部執(zhí)行軟件,能很好地解決采集的信號路數(shù)多的問題。因為用VHDL編寫的執(zhí)行軟件內(nèi)部對各組數(shù)字量是按并行處理的,而且FPGA硬件的速度是ns級的,這是當前任何MCU都難以達到的速度,因此本系統(tǒng)比其它系統(tǒng)更能實時地、快速地監(jiān)測信號量的變化。所以在狀態(tài)量特別多的監(jiān)測系統(tǒng)中,本系統(tǒng)將更能發(fā)揮出自身的優(yōu)勢。

本系統(tǒng)中的外圍電路設計相對簡單、可靠,且鑒于FPGA和VHDL語言自身的特點,系統(tǒng)具有較好的擴展性,在監(jiān)測和控制系統(tǒng)中也具有一定的通用性。系統(tǒng)主要包括:FPGA芯片區(qū)、多路選擇與A/D采樣電路、交流信號調(diào)理電路、光耦隔離驅(qū)動電路、時鐘電源區(qū)、PROM代碼下載電路等幾部分。結構示意如圖1所示。

圖1 基于FPGA技術的多路模擬量、數(shù)字量采集與處理系統(tǒng)框圖

1 FPGA芯片特點分析及資源分配

本系統(tǒng)中的FPGA是采用Xilinx公司的Spantan-II系理XC2S100-5 PQ208。該系列的內(nèi)核采用2.5V供電,工作頻率最高可達200 MHz;I/O端口供電電壓為3.3V,可以承受5V的輸入高電平。

Spartan-II系列具有豐富的I/O口資源,I/O口輸出緩沖器呆以接收高達24mA的拉電流和48mA的灌電流。缺省時,I/O輸出口的驅(qū)動能力的12mA,也可以設置成2、4、6、8、16或24mA。

FPGA內(nèi)部資源劃分為四大部分,如圖2所示。

①FPGA邏輯運算中心。用來接收其它各部分的數(shù)據(jù),并按照程序中設定的方案對所收到的數(shù)據(jù)進行相應的分析和處理。包括:對從MCU接收來的數(shù)據(jù)指令進行分析,并按其指令要求進行相應操作;接收A/D采樣來的數(shù)據(jù),對數(shù)據(jù)進行各種處理,如求其有效值,進行FFT分析等;接收來自數(shù)字量的各種信息數(shù)據(jù),按設定的模式對其進行判斷處理,并負責按接收的CPU指令輸出相應的數(shù)字量。

②A/D控制單元。主要負責控制外部A/D芯片和多路開關的選通時序,以及實現(xiàn)對A/D采要過程的合理控制。因為,在FPGA芯片內(nèi)部,不像在MCU內(nèi)部那樣有豐富的外設控制資源供用戶使用,要用FPGA來控制A/D采樣過程的動作,必須用軟件來模擬實現(xiàn)各種A/D控制資源。利用這些自設定的A/D控制管理資源,配以合理的軟件控制時序,才能保證采樣過程的順利進行。

③數(shù)字量監(jiān)測控制單元。負責所有要監(jiān)視和控制的數(shù)字量的狀態(tài)數(shù)據(jù)的采集和控制命令的輸出。這一部分同樣也需要用軟件來模擬實現(xiàn)各種對數(shù)字量的管理控制,只有配備較完備的外設控制管理單元,整個數(shù)字量的管理控制才能正確合理地進行。

④FPGA接口邏輯控制單元。在FPGA內(nèi)部設計了FPGA模塊與外界MCU的接口單元,這雖然占去了一定的內(nèi)部資源,但是考慮到在一般的工程系統(tǒng)中不僅僅包括對各種信息的采集控制,還往往包括通信、顯示以及進行一些復雜算術運行等等。FPGA雖然有其顯著的長處,但是在這些方面實現(xiàn)起來就往往不如普通MCU來得容易,因此考慮到本系統(tǒng)的通用性,在設計上增加了FPGA模塊與外界MCU的接口單元。

圖2 FPGA內(nèi)部資源分配示意圖

2 交流模擬量采集的控制與管理

在交流模擬量采集外圍電路中,A/D芯片采用的是BB公司的ADS774。多路交流量是通過4051的多路開關后輸入到ADS774芯片的。交流信號在進入ADS774之前要經(jīng)過信號調(diào)量電路,調(diào)理成ADS774認可的模擬信號。

FPGA實現(xiàn)的交流量采樣處理控制軟件由五部分組成:

第一部分為設定的3個與A/D采樣有關的16位指令寄存器組:A/D參數(shù)寄存器(ADPR)、輸出控制寄存器(ADOR)、A/D控制寄存器(ADCR)。

ADPR(XXXXXXXXX XXXXX XX)的各位定義如下:位1、位0選擇每周波采樣的點數(shù)(00表示每周波采16個點,01表示每周波采32個點,10表示每周波采64個點,11表示每周波采128個點)。位6~位2用來表示FPGA的時鐘頻率,00001表示時鐘頻率為1MHz,11111表示時鐘頻率為31MHz,00000表示時鐘頻率為32MHz。位15~位7表示所采樣信號的頻率,這9位表示的范圍為1Hz~512Hz。

ADOR是與FPGA輸出有關的寄存器。該寄存器的作用是:當MCU要讀取某通道信號的信息時,F(xiàn)PGA應該輸出該信號的哪次諧波電壓。如為FFFFH,表示DSP讀到的是該通道信號的有效值;如果ADOR的值為0010H,那么,DSP讀到的是該通道信號的2次諧波電壓。

ADCR寄存器控制A/D采樣的通道數(shù)的選擇以及與A/D采樣有關的寄存器的復位控制等,這也是考慮到系統(tǒng)的通用性而設計的:如000C表示采樣第11路交流模擬量電壓;0011則表示同時采樣前六路信號等等。

第二部分為設計產(chǎn)生A/D與CD4051芯片的控制信號。如在圖2中,在采樣12路交流模擬量的情況下,F(xiàn)PGA需要產(chǎn)生7路控制信號,這7路控制信號應該滿足一定的時序要求。圖3給出了同時采樣前六路信號時FPGA的控制信號時序。

Abcs2[0,1,2]總線信號實際上是多路開關通道選擇的3個控制信號selA、selB、selC。需要說明的是,因為要進行修正,在對6路交流信號采樣的同時,也對4051的+5V和AGND進行了采樣,所以實際上測量的通道數(shù)為8路。

從圖3可看出,abcs2[0,1,2]總線信號每19.531 25μs加1,每156.25μs重新循環(huán)一次,滿足8路交流同步采樣的要求。

從25μs時刻的局部放大圖可以看出,當(23.6μs時刻)4051選擇通道1時,ADS774的CS和R/C信號同時為低,延時0.5μs左右CE端出現(xiàn)上升沿(24.1μs),啟動A/D轉換,這符合ADS774的A/D轉換時序。需要指出,如果CE端直接接高電平,那么,R/C的下降沿將直接啟動A/D轉換。之所以用兩個信號來啟動A/D轉換,是為了減少A/D的誤觸發(fā)??紤]到4051的導通延時,所以在通道切換0,5μs后才啟動A/D轉換。圖3中沒有畫出4051的INH信號,在采樣前6路交流信號時,該信號一直為低。如果同時采樣12路信號,那么,abcs2[0,1,2]總線信號每9.765 625μs加1,每78.125μs重新循環(huán)1次;INH信號每78.125μs電平變化1次,用來選擇哪個4051導通。

第三部分為A/D輸入數(shù)據(jù)緩沖區(qū)和數(shù)字濾波模塊。A/D轉換完成后,ADS774的引腳STS給FPGA輸出轉換完成信號(低電平)。FPGA接收這一信號后,將產(chǎn)生讀ADS774的時序,把12位的A/D轉換數(shù)據(jù)讀入到數(shù)據(jù)緩沖區(qū)的二維數(shù)組datain(abcv)(sampn)中。Abcv為通道號,sampn表示周波信號中所采樣的第幾個點。將一個周期的12路信號采樣完后,置標志ADFLAG為1,進行數(shù)據(jù)的濾波處理。首先,對datain(abcv)(sampn)的值進行修正;給定sampn,對前6路信號來說,datain(7)(sampn)存儲的是AGND的A/D轉換值,將datain(i)(sampn)減去datain(7)(sampn)的值存儲在datamid(i)(sampn)中(i=1,…,6)。與此類似,后六路的采樣值datain(i)(sampn)減去datain(15)(sampn)的值存儲在datamid(i)(sampn)(i=8,…,14)。然后,給定abcv,對datamid(abcv)(j)(j=0,…,15)這16個點的數(shù)據(jù)進行FIR濾波,將FIR濾波后的數(shù)據(jù)存儲在datamd(abcv)(sampn)數(shù)組中。

第四部分是均方根有效值計量和FFT諧波分析模塊。輸入的數(shù)據(jù)經(jīng)過處理后,首先進行均方根有效值的計算。給定abcv,先求出datamd(abcv)(j)(j=0,…,15)這16個點的平方和,將其存儲到datarsult(abcv)中。為了防止溢出,dataresult(abcv)定義28位的位矢量。然后把dataresult(abcv)中的數(shù)據(jù)進行平方的運算,結果存儲在douts(i)中。開平方是利用函數(shù)sqt(a:std_logic_vector;b:integer)return std_logic_vector來實現(xiàn)的。a為要開方的全矢量數(shù)據(jù);整數(shù)b用來定義輸出位矢量的長度。該函數(shù)被封裝成一個包(package),符合自頂向下(TopDown)的HDL語言設計思想。douts(i)是信號量,由賦值語句douts(i)<=sqt(dataresult (i);16)(i=0,…,15)可以分別求出12路信號的有效值。電壓有效值和諧波分析完成以后,清ADFLAG為0。

第五部分為輸出緩沖器單元。當DSP對FPGA產(chǎn)生讀時序(FPGACS為低電平且RD下降沿來到時),F(xiàn)PGA根據(jù)DSP的低五位地址線A0~A4的值(對應于FPGA的chansel:std_logic_vector(4 downto 0)信號量),以及ADOR寄存器中的值,將相應的數(shù)據(jù)送到數(shù)據(jù)總線上。比如,若chansel為(00010)2,ADOR中的值為FFFFH,那么,F(xiàn)PGA就會將通道2的有效值douts(2送到數(shù)據(jù)總線上。

圖3 FPGA的A/D控制信號時序圖

3 對數(shù)字量的控制與管理

在圖2系統(tǒng)中,假定要對16個負載進行管理,每個負載包括1個控制輸出量和2個狀態(tài)返回量,因此共有16路的數(shù)字量輸出,32路的數(shù)字量輸入。

FPGA對數(shù)字量的管理軟件結構:

FPGA對數(shù)字量的控制管理也設置了三個16位的指令寄存器組。這三個指令寄存器的內(nèi)部地址為03H、04H和05H.03H為開關量輸出允許寄存器(KGER);04H為跳閘閉合寄存器(KGCR);05H為開關量開閉寄存器(KGIR)。

來自負載的總共32個狀態(tài)反饋信號(DIN00、DIN01……DIN31)分成16組,分別接到FPGA的16個信號量dini上(i=1,2,…,15)。dini是長度為2的位矢量std_logic_vector(1 downto 0),分別對應于1個負載的兩個狀態(tài)反饋位。FPGA用16個進程process(din1)、process(din1)……process(din15)來對輸入數(shù)字量敏感。當dini的載位電平發(fā)生變化時,進程啟動,F(xiàn)PGA結合MCU發(fā)送的控制指令,判斷負載的狀態(tài),并記錄在輸出數(shù)據(jù)緩沖區(qū)中。輸出數(shù)據(jù)緩沖區(qū)包括16個數(shù)據(jù)存儲器,這16個數(shù)據(jù)存儲器在FPGA內(nèi)部的地址從(10000)2到(11111)2。(100000)2單元存儲的是第1個負載的狀態(tài),以此類推,(10000)2單元存儲的是第16個負載的狀態(tài)。每個16位數(shù)據(jù)存儲器的8位固定為5AH,接下來的5位為(00000)2,只有最后3位才是負載的狀態(tài)位。

當MCU讀FPGA時,process(rd)進程啟動。這時,如果MCU地址線A4的電平(對應于FPGA的chansel:std_logic_vector(4 downto 0)信號量的第四位)為“1”,F(xiàn)PGA就根據(jù)chanse1(3 downto 0)的值,將對應的數(shù)據(jù)存儲器的值發(fā)送到數(shù)據(jù)總線上。MCU讀回數(shù)據(jù)存儲器的值后,如果前13位不是(0101101000000)2,說明產(chǎn)生了讀錯誤,MCU重新再讀一次。必須指出,在FPGA控制A/D采樣時,讀哪個通道信息也是通過A0~A3地址線區(qū)分的,但是,A4的電平為低。

MCU根據(jù)系統(tǒng)處于不同的狀態(tài)給負載發(fā)送接通/斷開指令,這是通過寫FPGA的寄存器KGIR實現(xiàn)的。KGIR的16位依次代表16個負載,“1”為接通,“0”為斷開,復位值是0000H.寄存器KGER是數(shù)字量輸出的總開關,復位后為0000H,不允許數(shù)字量輸出;MCU對其寫入FFFFH后,允許數(shù)字量輸出。FPGA給負載發(fā)去接通/斷開指令后,負載將會有兩個狀態(tài)信號返回。FPGA結合寄存器KGIR的控制指令值,可以判定負載處于何種狀態(tài)之一。如果反饋的信息為跳閘,F(xiàn)PGA將根據(jù)寄存器KGCR的值作出相應的處理。如果為其它信息,F(xiàn)PGA將不做處理,只是將狀態(tài)信息存儲在數(shù)據(jù)緩沖區(qū)中等待發(fā)送給權限高的MCU來決定。KGCR的復全值是0001H,表示跳閘發(fā)生后,F(xiàn)PGA將自動再發(fā)一次接通指令。程序運行的過程中,MCU根據(jù)任務的緊急和系統(tǒng)的布局,可以修改KGCR的值。如果KGCR的值為0003H,表示第一次跳閘發(fā)生后,F(xiàn)PGA可以重復發(fā)三次接通指令。

因為FPGA是基于RAM工藝的,在掉電后本身不能保存信息,因此需要一個外置存儲芯片來保存其信息,這里采用一次可編程的PROM:XC17S100APD8I(OTP)。該PROM與Spartan-II芯片的接口只需要一個I/O;復位引腳的極性可編程(高有效或低有效);供電電壓為3.3V。

XC17S100A的DONE、INIT、CCLK信號來自FPGA芯片XC2S100。系統(tǒng)剛一上電,F(xiàn)PGA首先初始化,置INIT、DONE為低。INIT為低后復位PROM,此時由于PROM的CE為低,因此PROM被選中,從而將數(shù)據(jù)流從DATA腳輸入到FPGA的DIN腳。配置完成后,F(xiàn)PGA將DONE接高,PROM處于低功耗的待機模式,并將DATA腳置為高阻態(tài)。

在硬件調(diào)試和在線修改過程中,選用FPGA的CCLK、DONE、DIN、PROG引腳用做硬件調(diào)試編程。將下載電纜接在計算機并口上,選擇恰當?shù)南螺d方式就會將Xilinx開發(fā)軟件生成的位流文件下載到FPGA的內(nèi)部配置存儲器中。配置下載流程可以分為3個階段:初始化、清除配置內(nèi)存、下載數(shù)據(jù)。清除內(nèi)存在所有配置模式中都是一樣的,下載數(shù)據(jù)卻隨著配置方式的不同而不同。

實際應用中,一般都需要將數(shù)據(jù)流文件燒入到Xilinx PROM中,每次上電伊始,由PROM將數(shù)據(jù)流下載到FPGA中,下載完畢,F(xiàn)PGA開始工作。

4 結論

針對監(jiān)測系統(tǒng)監(jiān)測信號一般較多的特點,本文提出了一種基于FPGA技術的多路模擬量、數(shù)字量采集與處理系統(tǒng),設計了相應的外圍硬件電路和系統(tǒng)處理軟件。在仿真和綜合調(diào)試成功的基礎上,本系統(tǒng)成功用于某航空重點預研項目的電氣負載管理系統(tǒng)試驗中。試驗結果表明,本系統(tǒng)成功地完成了對多路模擬量、數(shù)字量的采集處理任務,因此,在電氣測控系統(tǒng)中有較好的應用前景。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉