畢業(yè)設計(論文)基于單片機的高速數(shù)據(jù)采集系統(tǒng)設計_第1頁
畢業(yè)設計(論文)基于單片機的高速數(shù)據(jù)采集系統(tǒng)設計_第2頁
畢業(yè)設計(論文)基于單片機的高速數(shù)據(jù)采集系統(tǒng)設計_第3頁
畢業(yè)設計(論文)基于單片機的高速數(shù)據(jù)采集系統(tǒng)設計_第4頁
畢業(yè)設計(論文)基于單片機的高速數(shù)據(jù)采集系統(tǒng)設計_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、目 錄1.緒論11.1課題研究的意義11.2數(shù)據(jù)采集技術(shù)的發(fā)展歷程和現(xiàn)狀11.3本文的研究內(nèi)容21.4系統(tǒng)設計涉及的理論分析22.系統(tǒng)設計42.1方案選擇42.2系統(tǒng)框圖53.單元電路設計63.1信號調(diào)理電路63.2高速模塊73.3 fpga模塊設計83.4mcu模塊設計83.5數(shù)據(jù)采集通道總體原理圖93.6硬件電路總體設計94.軟件設計104.1 信號采集與存儲控制電路工作原理104.2 信號采集與存儲控制電路的fpga實現(xiàn)114.3 原理圖中的各底層模塊采用vhdl語言編寫124.3.1三態(tài)緩沖器模塊ts8124.3.2分頻器模塊fredivid134.3.3地址鎖存器模塊dlatch81

2、44.3.4地址計數(shù)器模塊addrcount154.3.5雙口ram模塊lpm_ram_dp164.4 數(shù)據(jù)顯示模塊設計184.4.1 主程序184.4.2 int0中斷服務程序194.4.3 int1中斷服務程序194.5軟件仿真204.5.1三態(tài)緩沖器模塊ts8204.5.2分頻器模塊fredivid204.5.3地址鎖存器模塊dlatch8214.5.4地址計數(shù)器模塊addrcount215.系統(tǒng)調(diào)試215.1 單片機子系統(tǒng)調(diào)試215.2 fpga子系統(tǒng)調(diào)試225.3 高速a/d模塊的調(diào)試226 總結(jié)22致謝22參考文獻23附錄25高速數(shù)據(jù)采集系統(tǒng)設計摘要:隨著數(shù)字技術(shù)的飛速發(fā)展,高速數(shù)

3、據(jù)采集系統(tǒng)也迅速地得到了廣泛的應用。在生產(chǎn)過程中,應用這一系統(tǒng)可以對生產(chǎn)現(xiàn)場的工藝參數(shù)進行采集、監(jiān)視和記錄,為提高生產(chǎn)質(zhì)量,降低成本提供了信息和手段。在科學研究中,應用數(shù)據(jù)采集系統(tǒng)可以獲取大量的動態(tài)數(shù)據(jù),是研究瞬間物理過程的有力工具,為科學活動提供了重要的手段。而當前我國對高速數(shù)據(jù)采集系統(tǒng)的研究開發(fā)都處于起步階段,因此,開發(fā)出高速數(shù)據(jù)采集系統(tǒng)就顯得尤為重要了。本文針對高速數(shù)據(jù)采集系統(tǒng)中的實時性、采集速率等問題提出了一種結(jié)合fpga與單片機的低成本高速數(shù)據(jù)采集系統(tǒng)設計方案。該系統(tǒng)以高速soc單片機c8051f360和fpga ep2c8t144為核心,運用模塊化設計方法,實現(xiàn)軟硬件設計,具有一定

4、的實用價值。關鍵詞:c8051f360;ep2c8t144;adc;數(shù)據(jù)采集;高速1.緒論1.1課題研究的意義隨著信息技術(shù)的飛速發(fā)展,各種數(shù)據(jù)的實時采集和處理在現(xiàn)代工業(yè)控制中已成為必不可少的。這就為我們的設計提出了兩個方面的要求:一方面,要求接口簡單靈活且有較高的數(shù)據(jù)傳輸率;另一方面,由于數(shù)據(jù)量通常都較大,要求主機能夠?qū)崟r數(shù)據(jù)做出快速響應,并及時進行分析和處理。fpga與單片機相比,有著頻率高,內(nèi)部延時小,內(nèi)部存儲容量大等優(yōu)點,比單片機更適應與高速數(shù)據(jù)采集的場合。比如在某些高沖擊、高振蕩場合下,需要對沖擊過程的加速度數(shù)據(jù)進行回收,包括實時采集、存儲以及事后回讀分析。在這樣的環(huán)境下,要求數(shù)據(jù)回

5、收系統(tǒng)具有采集的高速、實時性;存儲的及時、正確性。fpga(現(xiàn)場可編程邏輯門陣列)在高速數(shù)據(jù)采集方面具有單片機和dsp所不具備的優(yōu)點。fpga所要完成的功能完全由內(nèi)部可編程硬件電路實現(xiàn),具有并行執(zhí)行、速度快、多功能、低功耗、可現(xiàn)場反復編程等特點。使用fpga構(gòu)成數(shù)據(jù)采集系統(tǒng)還可以減化外圍控制電路,使系統(tǒng)更加簡潔有效。1.2數(shù)據(jù)采集技術(shù)的發(fā)展歷程和現(xiàn)狀在數(shù)字技術(shù)日新月異的今天,數(shù)據(jù)采集技術(shù)的重要性是十分顯著的。它是數(shù)字世界和外部物理世界連接的橋梁。而隨著現(xiàn)代工業(yè)和科學技術(shù)的發(fā)展,對數(shù)據(jù)采集技術(shù)的要求日益提高,在雷達、聲納、圖像處理、語音識別、通信、信號測試等科研實踐領域中,都需要高精度,高數(shù)據(jù)率

6、的數(shù)據(jù)采集系統(tǒng)。它的關鍵技術(shù)為高速高精度的adc技術(shù),高數(shù)據(jù)率的存儲和緩存技術(shù)以及系統(tǒng)高可靠性保證等。通過數(shù)據(jù)采集技術(shù),科研人員在實驗現(xiàn)場可以根據(jù)需要實時記錄原始數(shù)據(jù),用于實驗室后期的分析和處理,對工程實踐和理論分析探索具有重大意義。正是由于目前數(shù)據(jù)采集技術(shù)廣泛應用在科研實踐和工業(yè)生產(chǎn)中的各個領域,當前國外對采集技術(shù)的研究和發(fā)展比較成熟。按通道數(shù)分有單通道的、雙通道的、多通道的(多達上百通道);按采樣率分可從幾khz到高達幾個ghz;按分辨率分有8位、10位、12位、14位還有16位。在一些高端的示波器,頻譜儀等測試儀器中,其采樣率可達幾個ghz,甚至幾十個ghz。而國內(nèi)由于發(fā)展時間短,芯片技

7、術(shù)等一些方面的限制,目前沒有高水平的采集器出現(xiàn)。現(xiàn)在從高校到研究所到公司對采集器的需求越來越多,性能要求也越來越高。這種情況給我們研發(fā)和設計高速數(shù)據(jù)采集系統(tǒng)提供了很多機遇。1.3本文的研究內(nèi)容設計一個高速數(shù)據(jù)采集系統(tǒng),輸入模擬信號為正弦信號,頻率為200khz,vp-p小于等于0.5v。每次數(shù)據(jù)采集以20mhz的固定采樣頻率連續(xù)采集128點數(shù)據(jù),采集完畢以后,用lcd模塊回放顯示采集信號波形。該系統(tǒng)具有實時采集、存儲以及傳輸功能。(1)硬件設計:硬件部分包括fpga最小系統(tǒng)電路、數(shù)據(jù)的實時采集電路、數(shù)據(jù)緩存部分以及與單片機通信接口部分電路等。(2)軟件設計:通過編寫程序,主要實現(xiàn)實時采集(a/

8、d采樣)功能、數(shù)據(jù)緩存、與單片機進行通信等功能。(3)仿真結(jié)果及分析:主要是針對實時采集部分、數(shù)據(jù)緩存部分、與pc機通信部分進行時序仿真和功能仿真,根據(jù)仿真結(jié)果對設計進行分析。1.4系統(tǒng)設計涉及的理論分析1.4.1采樣理論根據(jù)奈奎斯特定理,在進行模擬數(shù)字信號的轉(zhuǎn)換過程中,只有采樣頻率fs大于被采樣信號中最高頻率fmax的2倍時,才能保證數(shù)字信號完整地保留了原始信號中的信息,實際應用中必須保證采樣頻率為信號最高頻率的510倍。對于高頻信號(f3mhz),則必須達到10mhz以上的采樣速率。1.4.2模數(shù)轉(zhuǎn)換(adc)基本原理及常用ad轉(zhuǎn)換技術(shù)模數(shù)轉(zhuǎn)換器adc用來把連續(xù)變化的模擬信號轉(zhuǎn)換為一定格式

9、的數(shù)字量。adc轉(zhuǎn)換器實際上就是一個編碼器,輸入的模擬量經(jīng)過信號調(diào)理電路,抗混濾波電路進入ad轉(zhuǎn)換電路,ad轉(zhuǎn)換電路將模擬信號轉(zhuǎn)換為數(shù)字信號送入數(shù)據(jù)處理系統(tǒng)。ad轉(zhuǎn)換部分通常包括采樣和保持,量化和編碼兩個部分組成。(1)采樣和保持:由于被轉(zhuǎn)換的電壓是一個隨時間不斷地變換的模擬量,也就是,在各個不同的瞬間它的大小是不同的。同時,要把一定幅度的電壓轉(zhuǎn)換為數(shù)字量都需要一定的時間。通常以一定的時間間隔周期地“讀取”輸入信號的大小,并轉(zhuǎn)換為與其大小對應的數(shù)字量。這個過程被稱為采樣。采樣定理告訴我們,一個頻譜有限的模擬信號,其采樣頻率必須至少大于等于模擬信號最高有效頻率分量的兩倍,防止出現(xiàn)頻譜的失真。由于

10、采樣脈沖的寬度往往都是很小的,而實現(xiàn)轉(zhuǎn)換是需要時間的,為使后續(xù)電路能很好的對這個采樣結(jié)果進行處理,通常要把采樣值保存下來,直到下一次采樣再更新,這個過程為保持。(2)量化和編碼:通過采樣保持電路,輸入信號雖然已經(jīng)不是一個平滑的連續(xù)變化的電壓,但它還是一個在某個區(qū)間范圍內(nèi)任意取值的模擬量。因此,用數(shù)字量來表示模擬量時就需要一個類似與四舍五入的過程,即量化。顯然此過程,量化前后的值是不相等的,這個差值為量化誤差。而且量化的等級越細,量化誤差越小。量化后的信號,雖然是一個離散量,但是為了使數(shù)字系統(tǒng)可以對其進行傳輸和處理,還必須用若干位二進制代碼來表示量化結(jié)果,這個過程就是編碼。ad轉(zhuǎn)換器的主要技術(shù)指

11、標如下:(1)分辯率(resolution)指數(shù)字量變化一個最小量時模擬信號的變化量,定義為滿刻度與n的平方的比值。分辯率又稱精度,通常以數(shù)字信號的位數(shù)來表示。(2)轉(zhuǎn)換速率(conversion rate)是指完成一次從模擬轉(zhuǎn)換到數(shù)字的ad轉(zhuǎn)換所需的時間的倒數(shù)。積分型ad的轉(zhuǎn)換時間是毫秒級屬低速ad,逐次比較型ad是微秒級屬中速ad,全并行串并行型ad可達到納秒級。采樣時間則是另外一個概念,是指兩次轉(zhuǎn)換的間隔。為了保證轉(zhuǎn)換的正確完成,采樣速率(sample rate)必須小于或等于轉(zhuǎn)換速率。因此有人習慣上將轉(zhuǎn)換速率在數(shù)值上等同于采樣速率也是可以接受的。常用單位是ksps和msps,表示每秒采

12、樣千百萬次。(3)量化誤差(quantizing error)由于ad的有限分辯率而引起的誤差,即有限分辯率ad的階梯狀轉(zhuǎn)移特性曲線與無限分辯率ad(理想ad)的轉(zhuǎn)移特性曲線(直線)之間的最大偏差。通常是1個或半個最小數(shù)字量的模擬變化量,表示為1lsb、12lsb。(4)偏移誤差(offset error)輸入信號為零時輸出信號不為零的值,可外接電位器調(diào)至最小。(5)滿刻度誤差(full scale error)滿度輸出時對應的輸入信號與理想輸入信號值之差。(6)線性度(linearity)實際轉(zhuǎn)換器的轉(zhuǎn)移函數(shù)與理想直線的最大偏移,不包括以上三種誤差。1.4.3現(xiàn)場可編程門陣列(fpga)基礎

13、知識現(xiàn)場可編程門陣列(filedprogrammable gatearray),簡稱fpga,是在cpld的基礎上發(fā)展起來的高性能可編程器件。其集成度很高,密度從數(shù)萬門系統(tǒng)到數(shù)千萬門系統(tǒng)不等,可以完成及其復雜的時序和組合邏輯電路功能,適用于高速,高密度的高端數(shù)字邏輯設計領域。fpga產(chǎn)品一般分為兩種類型,一類是基于乘積項(productterm)技術(shù),用電可擦除可編程只讀存儲器(eeprom)或閃存(flash)制造,多用于5000門一下的小規(guī)模設計。另一類基于查找表(lookup table)技術(shù),用靜態(tài)存取存儲器(sram)工藝制造,密度高,觸發(fā)器多,多用于10000 門以上的大規(guī)模設計。

14、采用sram工藝制造的fpga,掉電后數(shù)據(jù)會消失,因此,調(diào)試期間可以用下載電纜配置fpga器件,調(diào)試完成后,需要將數(shù)據(jù)固化到一個專用的eeprom中,上電后,由這片配置eeprom先對fpga加載數(shù)據(jù),十幾個毫秒后,fpga就可正常工作。fpga的基本組成部分有可編程輸入輸出單元,基本可編程邏輯單元,嵌入式ram,豐富的布線資源,底層嵌入功能單元,內(nèi)嵌專用硬核等。(1)可編程輸入輸出單元輸入輸出單元(inputoutput)簡稱yo單元,它們是芯片與外界電路的接口部分,完成不同的電氣特性下對輸入輸出信號的驅(qū)動和匹配需求。為了使fpga有更靈活的應用,目前大多數(shù)fpga的io單元被設計為可編程模

15、式,即通過軟件的靈活配置,可以適配不同的電氣標準與yo物理特性;可以調(diào)整匹配阻抗特性,上下拉電阻;可以調(diào)整輸出驅(qū)動電流的大小等。(2)基本可編程邏輯單元基本可編程邏輯單元是可編程邏輯的主體,可以根據(jù)設計靈活的改變其內(nèi)部連接和配置,完成不同的邏輯功能。fpga一般是基于sram工藝的,其基本可編程邏輯單元幾乎都是由查找表(lut,look-up table)和寄存器(register)組成的。查找表一般完成純組合邏輯功能。組合邏輯的輸入作為地址線連接到查找表,查找表中已經(jīng)事先寫入了所有可能的邏輯結(jié)果,通過地址查找到相應的邏輯。寄存器用于完成同步時序邏輯設計。(3)嵌入式ram目前大多數(shù)fpga內(nèi)

16、部都內(nèi)嵌了塊ram(block ram)。fpga內(nèi)部嵌入可編程ram模塊,大大的擴展了fpga的應用范圍和使用靈活性。fpga內(nèi)部的ram可以靈活配置為單端口ram,雙端口ram,fifo等常用存儲結(jié)構(gòu)。通過對ram賦予初值,還可以實現(xiàn)rom的功能。(4)豐富的布線資源布線資源連通fpga內(nèi)部所有單元,連線的長度和工藝決定著信號在連線上的驅(qū)動能力和傳輸速度。fpga內(nèi)部有著非常豐富的布線資源,這些布線資源根據(jù)工藝,長度,寬度和分布位置的不同而被劃分為不同的等級。有一些是全局性的布線資源,用于完成器件內(nèi)部的全局時鐘和全局復位置位的布線;一些叫做長線資源,用作完成器件bank(分區(qū))間的一些高速

17、信號和一些第二全局時鐘信號的布線;還有一些叫做短線資源,用以完成基本邏輯單元之間的邏輯互聯(lián)和布線等。在實現(xiàn)過程中,設計者一般不用直接選擇布線資源,而是由布局布線器自動根據(jù)輸入的邏輯網(wǎng)表的拓撲結(jié)構(gòu)和約束條件選擇可用的布線資源連通所用的底層單元模塊,所以往往容易比忽略。其實布線資源的優(yōu)化與使用和設計的實現(xiàn)結(jié)果有直接關系。(5)底層嵌入功能單元隨著fpga的發(fā)展,pll,dll,dsp,cpu等模塊越來越多的被嵌入到fpga的內(nèi)部,以滿足不同場合的需要。(6)內(nèi)嵌專用硬核這里的內(nèi)嵌專用硬核與前面的“底層嵌入單元”是有區(qū)別的,這里講的內(nèi)嵌專用硬核主要是指那些通用性相對較弱,不是所有fpga器件都包含硬

18、核。fpga的主要器件供應商有xilinx,altera,lattic,actel和atmel等。2.系統(tǒng)設計2.1方案選擇隨著數(shù)據(jù)采集對速度性能指標越來越高,高速數(shù)據(jù)采集系統(tǒng)在自動控制、電氣測量、地質(zhì)物探、航空航天等工程實踐中得到了十分廣泛的應用。高速數(shù)據(jù)采集系統(tǒng)一般分為數(shù)據(jù)采集和數(shù)據(jù)處理兩部分。在數(shù)據(jù)采集時,必須以很高的速度采集數(shù)據(jù),但在數(shù)據(jù)處理時并不需要以同樣的速度來進行。因此,高速數(shù)據(jù)采集需要有一個數(shù)據(jù)緩存單元,現(xiàn)將采集的數(shù)據(jù)有效地存儲,然后根據(jù)系統(tǒng)需求進行數(shù)據(jù)處理。傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)通常采用單片機直接控制a/d轉(zhuǎn)換器完成數(shù)據(jù)采集。用單片機控制a/d轉(zhuǎn)換器,一般要通過啟動a/d轉(zhuǎn)換、讀

19、取a/d轉(zhuǎn)換值、將數(shù)據(jù)存入存儲器、修改存儲器地址指針、判斷數(shù)據(jù)采集是否完成等過程。從本質(zhì)上來說,基于單片機的數(shù)據(jù)采集系統(tǒng)是通過軟件來實現(xiàn)特定功能的。在許多情況下,采用軟件解決方案其速度限制是很難克服的。mcs-51單片機大多數(shù)指令的執(zhí)行時間需要12個機器周期,完成一次a/d轉(zhuǎn)換大約需要幾十微秒。即使對于單片機機器周期、時鐘頻率可達100mhz的c8051f360單片機,如果用來控制高速a/d轉(zhuǎn)換器,也很難達到幾mhz以上的采樣速率。通常構(gòu)成高速緩存的方案有三種:第一種是高速sram切換方式。高速sram只有一組數(shù)據(jù)、地址和控制總線,可通過三態(tài)緩沖門分別接到a/d轉(zhuǎn)換器和單片機上。但a/d采樣時

20、,sram由三態(tài)門切換到a/d轉(zhuǎn)換器一側(cè),以使采樣數(shù)據(jù)寫入其中。當a/d采樣結(jié)束后,sram再由三態(tài)門切換到單片機一側(cè)進行讀寫。這種方式下的優(yōu)點是sram可隨機存取,同時較大容量的高速sram有現(xiàn)成的產(chǎn)品可供選擇,但硬件電路較復雜。第二種是fifo(先進先出)方式。fifo存儲器就像數(shù)據(jù)管道一樣,數(shù)據(jù)從管道的一頭流入,從另一頭流出,先進入的數(shù)據(jù)先流出。fifo具有兩套數(shù)據(jù)線而無地址線,可在其一端寫操作而在另一端讀操作,數(shù)據(jù)在其中順序移動,因而能夠達到很高的傳輸速度和效率。第三種是雙口ram方式。雙口ram具有兩組獨立的數(shù)據(jù)、地址和控制總線,因而可從兩個端口同時讀寫而互不干擾,并可將采樣數(shù)據(jù)從一

21、個端口寫入,而由單片機從另一個端口讀出。雙口ram也能達到很高的傳輸速度,并且具有隨機存取的優(yōu)點??删幊踢壿嬈骷膽茫瑸榱藢崿F(xiàn)高速數(shù)據(jù)采集提供了一種理想的途徑。利用可編程邏輯器件高速性能和本身集成的幾萬個邏輯門和嵌入式存儲器塊,把數(shù)據(jù)采集系統(tǒng)中的數(shù)據(jù)緩存、地址發(fā)生器、控制等電路全部集成進一片可編程邏輯器件芯片中,大大減少了系統(tǒng)的體積,降低了成本,提高了可靠性。同時,可編程邏輯器件實現(xiàn)邏輯重構(gòu),而且可實現(xiàn)在系統(tǒng)編程以及有眾多功能強大的eda軟件的支持,使得系統(tǒng)具有升級容易、開發(fā)周期短等優(yōu)點。由于本設計的高速采集系統(tǒng),采樣頻率要求達到20mhz,同時要求采集的信號在lcd模塊上顯示模型,故采用單

22、片機和fpga相結(jié)合的設計方案。模擬信號經(jīng)過調(diào)理以后送高速a/d轉(zhuǎn)換器,由fpga完成高速a/d轉(zhuǎn)換器的控制和數(shù)據(jù)存儲,單片機從fpga存儲器中讀取數(shù)據(jù),經(jīng)處理后在lcd上顯示波形。2.2系統(tǒng)框圖高速數(shù)據(jù)采集系統(tǒng)采用單片機和fpga相結(jié)合的設計方案。系統(tǒng)框圖如圖2.2所示。模擬信號經(jīng)過調(diào)理后送高速ad轉(zhuǎn)換器,由fpga內(nèi)部的控制邏輯實現(xiàn)對高速ad轉(zhuǎn)換器的控制和數(shù)據(jù)存儲,單片機通過系統(tǒng)總線實現(xiàn)與fpga的接口,通過該接口獲取原始數(shù)據(jù),然后通過算法完成對數(shù)據(jù)的處理及應用。整個系統(tǒng)由信號調(diào)理電路、ad轉(zhuǎn)換器、fpga模塊、mcu模塊、鍵盤及l(fā)cd顯示模塊等組成。數(shù)據(jù)采集系統(tǒng)首先對采集的信號進行前端處

23、理,如信號放大、濾波、直流電平位移等預處理,以滿足ad轉(zhuǎn)換器對模擬信號的要求。fpga模塊主要實現(xiàn)對高速adc的控制及數(shù)據(jù)存儲,單片機通過與fpga器件的數(shù)據(jù)交換獲得采集到數(shù)字信息,再進行相關的處理,并通過lcd顯示及鍵盤接口實現(xiàn)較靈活的人機交換。圖2.2 高速數(shù)據(jù)采集系統(tǒng)框圖3.單元電路設計3.1信號調(diào)理電路在數(shù)據(jù)采集中,因ad轉(zhuǎn)換器對模擬信號的幅度有一定的要求范圍。ads930在單端工作方式下,輸入的模擬信號應在12v之間,為了使ad轉(zhuǎn)換器能正常工作,確保最小的相對誤差,在信號進行模數(shù)轉(zhuǎn)換前,對輸入的信號進行預處理,使之滿足ad轉(zhuǎn)換器的幅度要求。信號調(diào)理電路由射極跟隨器、增益可調(diào)放大器、低

24、通濾波器幾部分組成。(1)射極跟隨器本設計采用射極跟隨器,既可獲得較高的輸入阻抗,還可以在被測信號源與數(shù)據(jù)采集電路之間起到隔離作用。其原理圖如圖3.1.1所示。跟隨器可以獲得很高的輸入阻抗,但是為了對信號源呈穩(wěn)定的負載,在電路的輸入端并聯(lián)了一個電阻r1,這時,前置放大器的等效輸入電阻約等于r1。(2) 增益可調(diào)放大器為了滿足后接ad轉(zhuǎn)換器輸入電壓范圍的要求,因此對放大器的要求是增益可調(diào),直流電平可調(diào)。根據(jù)以上要求,設計的放大電路原理圖如圖3.1.2所示。 增益可調(diào)放大器采用反相放大器的結(jié)構(gòu),放大倍數(shù)的計算公式如下: a=-rp1/r2 其中,rp1為精密電位器,調(diào)節(jié)rp1就可以調(diào)節(jié)放大器的增益

25、。如果r2取1k,rp1取10k,則增益的可調(diào)范圍為0-10 。來自前置放大器的是雙極性的交流信號,而a/d對輸入信號的要求通常是單極性的。為了適合a/d的要求,本放大器中加了電平移位電路。電平位移電路有rp2組成,c1用于濾除高頻噪聲。調(diào)節(jié)rp2就可以改變vos的值,不過注意,vos的值要經(jīng)過1+rp1/r2倍的放大才送到輸出端,因此,調(diào)節(jié)放大倍數(shù)的同時也會改變放大器輸出端的直流偏移量。上述放大器中電位器rp1、rp2需手動調(diào)節(jié),如果采用數(shù)控電位器代替,就可以得到程控放大器,這在自動化儀表設計非常重要。為了滿足模擬輸入信號的要求,整個信號調(diào)理電路應該有足夠的帶寬。為了防止信號中的無用分量(如

26、高頻干擾信號)也經(jīng)過通道被采樣,信號在進入a/ d 之前要進行抗混疊低通濾波。為了簡化電路,本設計中抗混疊濾波器采用了rc低通濾波,如圖中所示r3和c2構(gòu)成。低通濾波器的截止頻率計算公式如下: f =1/(2pi*r3*c2) 圖3.1.1 射極跟隨器圖3.1.2增益可調(diào)放大器3.2高速模塊首先,a/d的轉(zhuǎn)換速率取決于模擬信號的頻率范圍,根據(jù)設計題目要求,a/d轉(zhuǎn)換速率應大于10mhz,為留有余量選擇30mhz采樣頻率的adc器件。其次,根據(jù)a/d轉(zhuǎn)換原理,轉(zhuǎn)換過程中存在量化誤差。量化誤差取決于量化位數(shù),位數(shù)越多量化誤差越小。題目對模擬信號的轉(zhuǎn)換精度沒有特別的要求,因此,選用常見的8位a/d轉(zhuǎn)

27、換器。最后,fpga為3v器件,故優(yōu)先選用3v工作電壓下的adc器件,以簡化電源設計和電平匹配。因此,我們采樣了burrbrown公司的ads930器件,該器件為8位30mhz采樣ad轉(zhuǎn)換器,具有單端差動輸入、內(nèi)部基準、高速寬跟蹤捕捉的高速流水a(chǎn)dc器件。工作電壓3v一5v,單端輸入電壓1v 2v。adc的模擬輸入采用單端輸入、交流耦合方式,此時其in(24)引腳與其內(nèi)部參考電壓的分壓輸出端cm(26)引腳相連,以保證15v的偏置電壓。數(shù)字端主要包括數(shù)據(jù)輸出dod7,時鐘clk和數(shù)據(jù)輸出使能/oe等,與fpga器件相連,根據(jù)時序受fpga控制。3.3 fpga模塊設計在高速數(shù)據(jù)采集方面,fpg

28、a具有單片機和dsp無法比擬的優(yōu)勢,fpga的時鐘頻率高,內(nèi)部延時小,而且速度快、效率高、組成形式靈活。fpga內(nèi)的嵌入式陣列塊(eab)可作為存儲器使用,構(gòu)成雙口ram或fifo。設計中使用了altera公司ep2c8t144,內(nèi)含8256個基本邏輯單元(le),18個嵌入式可編程ram模塊可靈活配置成單口ram、雙口ram、fifo等,滿足大部分數(shù)字系統(tǒng)的設計要求。系統(tǒng)圖如圖3.3所示,其中與單片機接口的信號包括數(shù)據(jù)總線、地址鎖存ale、片選cs2、讀使能rd、ad啟動控制start和批量轉(zhuǎn)換結(jié)束應答eoc等,與ads930接口的信號包括adc的8位數(shù)據(jù)、adc讀使能adc oe和adc時

29、鐘等??刂撇僮鲿r通過start啟動ad轉(zhuǎn)換,之后由fpga控制ads930進行模數(shù)轉(zhuǎn)換,其轉(zhuǎn)換時鐘由40mhz有源晶振經(jīng)fpga內(nèi)部鎖相環(huán)2分頻獲得,實現(xiàn)20mhz的采樣速率,每個時鐘將ad轉(zhuǎn)換的結(jié)果數(shù)據(jù)在存儲到fpga內(nèi)部的雙口ram,同時地址計數(shù)器加1,以指向下一個ram地址,供下次寫入數(shù);當雙口ram存儲滿時輸出eoc有效,通知單片機獲取批量數(shù)據(jù)。采用ep2c8ti44器件時,最大可實現(xiàn)8kb的雙口ram及接口邏輯,這樣每批采樣數(shù)據(jù)即為8032個,單片機可以等到一批數(shù)據(jù)采樣完成后通過總線讀取這些數(shù)據(jù),再進行處理,并且單片機的數(shù)據(jù)處理和fpga通過ads930的數(shù)據(jù)采樣可以同步進行,有效地

30、提高了單片機的工作效率。對于1次需采集更大容量數(shù)據(jù)的要求時,可采用更大容量的fpga器件(如ep2c35),也可采用外置雙口ram器件(如idt7312)實現(xiàn)。fpga內(nèi)部各模塊通過vhdl語言和altera提供參數(shù)化模塊實現(xiàn)。3.4mcu模塊設計本設計中單片機采用采用了silicon labs公司推出增強型51單片機c8051f360,解決了傳統(tǒng)單片機系統(tǒng)的各種問題。由于c8051f360單片機內(nèi)部集成了眾多功能模塊,幾乎不需要外部電路就能構(gòu)成最小系統(tǒng),因此mcu模塊僅設計了一片cpld器件(epm3064),主要實現(xiàn)鍵盤接口、lcd接口及地址譯碼等。cpld的內(nèi)部邏輯用vhdl語言和ale

31、rta的參數(shù)化模塊實現(xiàn),采用cpld使電路具有很大的靈活性 。 圖3.3 信號采集與存儲控制電路系統(tǒng)圖3.5數(shù)據(jù)采集通道總體原理圖根據(jù)上述各部分的電路設計,可以得到如圖3.5所示的數(shù)據(jù)采集通道原理圖。運算放大器單位增益帶寬為150mhz,當放大器的增益為10時,帶寬為15mhz,不但滿足設計要求,而且留有余地。ads930的數(shù)據(jù)引腳、時鐘引腳與fpga i/o引腳直接相連。3.6硬件電路總體設計在前面設計的基礎上,可以得到附錄1的硬件電路總體原理圖。單片機與fpga的連線除了并行總線外,還包括啟動信號start和數(shù)據(jù)采集結(jié)束信號eoc。start信號從單片機的p3.2引腳發(fā)出,送到fpga的i

32、/o引腳(第60腳),eoc信號從fpga的i/o引腳(第44腳)發(fā)出,送到單片機的外部引腳中斷引腳int1。高速數(shù)據(jù)采集系統(tǒng)的顯示器件采用lcd模塊lcd12864.lcd模塊的數(shù)據(jù)線d0d7與單片機的數(shù)據(jù)總線相連,rs、rw和e等控制信號由fpga內(nèi)部邏輯電路產(chǎn)生,因此lcd模塊的e、rs和rw信號線與fpga的i/o引腳相連。高速數(shù)據(jù)采集系統(tǒng)只需要一只用于啟動數(shù)據(jù)采集的按鍵。對于這種簡單的按鍵,可以采用兩種設計方案:一種是將按鍵直接與單片機的i/o引腳相連,通過軟件定時檢測按鍵是否閉合,并進行消抖處理,如鍵有效,則執(zhí)行鍵處理程序。該方案的不足之處是需要單片機較多的軟件開銷。另一種方案是將

33、按鍵與fpga的i/o引腳相連,然后在fpga內(nèi)部設置一消抖計數(shù)器,消抖計數(shù)器輸出作為外部中斷信號與單片機的int0相連。單片機在int0中斷服務程序中實現(xiàn)按鍵處理。顯然,該方案有效地簡化了單片機軟件設計。圖3.5 數(shù)據(jù)采集通道原理圖4.軟件設計4.1 信號采集與存儲控制電路工作原理雙口ram作為高速緩存,是信號采集與存儲控制電路的核心部件。雙口ram模塊一方面存儲a/d轉(zhuǎn)換產(chǎn)生的數(shù)據(jù),另一方面向單片機傳輸數(shù)據(jù),因此,雙口ram的一個端口(讀端口)與單片機并行總線相連,另一端口(寫端口)直接與高速a/d的數(shù)據(jù)相連。由于高速數(shù)據(jù)采集系統(tǒng)每次只需要采集128字節(jié)的數(shù)據(jù),因此,雙口ram的容量設為1

34、28*8即可。在雙口ram和單片機的接口中,地址所存模塊用于鎖存單片機并行總線低8位地址,或非門將片選信號/cs(來自地址譯碼器)和寫信號/wr相或非得到高電平有效的雙口ram讀使能信號。高速a/d轉(zhuǎn)換器ads930是在輸入時鐘信號的控制下進行a/d轉(zhuǎn)換的。ads930要求它的的輸入時鐘信號有盡量小的抖動,50%的占空比,輸入時鐘的邊沿越陡越好。在所示原理框圖中,ads930的時鐘信號通過參考時鐘clk0分頻得到。在fpga系統(tǒng)中,clk0可以是直接由外部有源晶振產(chǎn)生的時鐘信號,也可以是通過內(nèi)部pll產(chǎn)生的時鐘信號。為了將高速a/d輸出的數(shù)字量依次存入雙口ram中,專門設計了一地址計數(shù)器模塊。

35、地址計數(shù)器模塊實際上是一個7位二進制計數(shù)器,其輸出作為雙口ram寫端口的地址。地址計數(shù)器和高速a/d轉(zhuǎn)換器采用同一時鐘信號,這樣地址的變化與a/d轉(zhuǎn)換器輸出數(shù)據(jù)變化同步。將高速a/d轉(zhuǎn)化器時鐘adcclk反相后作為雙口ram寫端口的寫使能信號,保證了寫使能信號有效時數(shù)據(jù)是穩(wěn)定的。地址計數(shù)器除了產(chǎn)生地址信號之外,還有兩根與單片機連接的信號線start和eoc。start信號由單片機i/o引腳發(fā)出。當start信號為低電平時,地址計數(shù)器清零,恢復為高電平后,地址計數(shù)器從0開始計數(shù),計到127時停止計數(shù),并發(fā)出由高到低的eoc信號作為單片機的外部中斷請求信號。進行一次數(shù)據(jù)采集的過程是,單片機發(fā)出st

36、art信號(負脈沖有效),地址計數(shù)器從0開始計數(shù),在計數(shù)過程中,a/d轉(zhuǎn)換數(shù)據(jù)被存入雙口ram。當計數(shù)器計到127時停止計數(shù),發(fā)出eoc信號作為單片機的外部中斷信號,單片機通過執(zhí)行中斷服務程序從雙口ram中讀入數(shù)據(jù)。整個數(shù)據(jù)采集過程的時序關系如圖4.1所示。圖4.1 觸發(fā)控制模塊各信號時序關系 4.2 信號采集與存儲控制電路的fpga實現(xiàn)如圖4.2所示為由fpga實現(xiàn)的信號采集與存儲控制電路頂層原理圖。在本設計中,雙口ram的存儲容量為128*8,因此,lpm-ram-dp的數(shù)據(jù)寬度選為8位,地址總線寬度選為7位。lpm-ram-dp的數(shù)據(jù)輸出端q7.0無三態(tài)輸出功能,為了能夠與單片機數(shù)據(jù)總線

37、相連,數(shù)據(jù)輸出需要加一個三態(tài)門ts8,以實現(xiàn)輸出三態(tài)控制。利用單片機系統(tǒng)的片選信號和讀信號/rd實現(xiàn)對三態(tài)門的選通。需要注意,由于加了三態(tài)門控制,lpm-ram-dp中已不需要讀使能信號rden,可在對lpm-ram-dp參數(shù)設置時取消rden信號,等效于rden始終為高電平。lpm-ram-dp的端口采用寄存器輸入和輸出,為同步型存儲器,使用時必須采用一同步時鐘clk0實現(xiàn)地址、數(shù)據(jù)等信息的輸入輸出。lpm-ram-dp沒有busy端,當寫地址和讀地址相同時,數(shù)據(jù)為沖突,讀寫不能正常工作,實際使用時應避免出現(xiàn)這種情況。圖4.2信號采集與存儲控制電路頂層圖4.3 原理圖中的各底層模塊采用vhd

38、l語言編寫4.3.1三態(tài)緩沖器模塊ts8三態(tài)緩沖器電路頂層圖如圖4.3.1 圖4.3.1三態(tài)緩沖器源代碼如下:library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity ts8 is port( en: in std_logic; di: in std_logic_vector(7 downto 0); do: out std_logic_vector(7 downto 0) ); end ts8; architecture one of ts8 is begin process(en,d

39、i) begin if en=1 then do=di; else do=zzzzzzzz; end if; end process; end;4.3.2分頻器模塊fredivid分頻器電路頂層圖如圖4.3.2 圖4.3.2 分頻器源代碼如下:library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity fredivid is port(clkin:in std_logic; clkout: out std_logic ); end fredivid; architecture one of

40、 fredivid is signal q:std_logic_vector(2 downto 0); begin process(clkin) begin if(clkinevent and clkin=1) then if(q=11)then q=00; else q=q+1; end if; end if; end process; process(q) begin if(q(1)=1) then clkout=1; else clkout=0; end if; end process; end; 4.3.3地址鎖存器模塊dlatch8地址鎖存器電路頂層圖如圖4.3.3 圖4.3.3 地

41、址鎖存器源代碼如下:library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity dlatch8 is port( cp: in std_logic; d: in std_logic_vector(7 downto 0); q: out std_logic_vector(7 downto 0) ); end dlatch8; architecture one of dlatch8 is begin process(cp,d) begin if(cp=1) then q=d; end if;

42、end process; end;4.3.4地址計數(shù)器模塊addrcount地址計數(shù)器電路頂層圖如圖4.3.4 圖4.3.4地址計數(shù)器源代碼如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity addrcount is port(clr,clk:in std_logic; eoc:out std_logic; q:buffer std_logic_vector(6 downto 0);end;architecture one

43、of addrcount is begin process(clr,clk) begin if(clkevent and clk=1) then if clr=0 then q=0000000; elsif(q=1111111) then q=1111111; else q=q+1; end if; end if;end process; process(q) begin if(q=1111111) then eoc=0; else eoc=1; end if; end process;end one; 4.3.5雙口ram模塊lpm_ram_dp 雙口ram電路頂層圖如圖4.3.5 圖4.3

44、.5 雙口ram源代碼如下:library ieee; use ieee.std_logic_1164.all; library altera_mf; use altera_mf.all; entity lpm_ram_dp is port ( clock: in std_logic ; data: in std_logic_vector (7 downto 0); rdaddress: in std_logic_vector (7 downto 0); wraddress: in std_logic_vector (7 downto 0); wren: in std_logic := 1;

45、q: out std_logic_vector (7 downto 0) ); end lpm_ram_dp; architecture syn of lpm_ram_dp is signal sub_wire0: std_logic_vector (7 downto 0); component altsyncram generic ( address_aclr_a: string; address_aclr_b: string; address_reg_b: string; indata_aclr_a: string; intended_device_family: string; lpm_

46、type: string; numwords_a: natural; numwords_b: natural; operation_mode: string; outdata_aclr_b: string; outdata_reg_b: string; power_up_uninitialized: string; read_during_write_mode_mixed_ports: string; widthad_a: natural; widthad_b: natural; width_a: natural; width_b: natural; width_byteena_a: natu

47、ral; wrcontrol_aclr_a: string ); port ( wren_a: in std_logic ; clock0: in std_logic ; address_a: in std_logic_vector (7 downto 0); address_b: in std_logic_vector (7 downto 0); q_b: out std_logic_vector (7 downto 0); data_a: in std_logic_vector (7 downto 0) ); end component; begin q none, address_acl

48、r_b = none, address_reg_b = clock0, indata_aclr_a = none, intended_device_family = cyclone, lpm_type = altsyncram, numwords_a = 256, numwords_b = 256, operation_mode = dual_port, outdata_aclr_b = none, outdata_reg_b = clock0, power_up_uninitialized = false, read_during_write_mode_mixed_ports = dont_

49、care, widthad_a = 8, widthad_b = 8, width_a = 8, width_b = 8, width_byteena_a = 1, wrcontrol_aclr_a = none ) port map ( wren_a = wren, clock0 = clock, address_a = wraddress, address_b = rdaddress, data_a = data, q_b = sub_wire0 ); end syn; 4.4 數(shù)據(jù)顯示模塊設計根據(jù)要求,每一次數(shù)據(jù)采集通過按鍵來啟動。采集完128點數(shù)據(jù)以后,數(shù)據(jù)采集單元向單片機發(fā)出中斷請求

50、,單片機通過中斷服務程序從雙口ram中讀入128點采集數(shù)據(jù);將讀入的128點采集數(shù)據(jù)存放在單片機高128字節(jié)內(nèi)部ram中;對128字節(jié)數(shù)據(jù)進行處理,在lcd上顯示與采集數(shù)據(jù)對應的波形。根據(jù)數(shù)據(jù)采集的工作過程,高速數(shù)據(jù)采集系統(tǒng)控制軟件分為主程序、int0中斷服務程序、int1中斷服務程序三部分。4.4.1 主程序主要完成c8051f360單片機內(nèi)部資源初始化、在lcd上顯示采集數(shù)據(jù)的波形,其主程序流程圖如圖4.4.1所示。 圖4.4.1 主程序流程圖4.4.2 int0中斷服務程序 int0中斷服務程序的功能是讀入鍵值,執(zhí)行功能。本數(shù)據(jù)采集只定義了一個功能鍵key0,當該鍵有效時,p3.2引腳產(chǎn)

51、生一個負脈沖。4.4.3 int1中斷服務程序 當數(shù)據(jù)采集系統(tǒng)完成128點數(shù)據(jù)采集后,將啟動一次外部中斷int1。int1中斷服務程序的功能就是從fpga的雙口ram中讀取128字節(jié)的采集的數(shù)據(jù),并將其存放在單片機內(nèi)部ram的高128字節(jié)(地址80hffh)。讀取完畢以后,設置一標志。源程序如下: int1: push a push psw push dph push dpl mov dptr,#cs1 mov r7,#80h mov r0,#80h intt1: movx a,dptr mov r0,a inc r0 inc dptr djnz r7,intt1 setb xsbz pop

52、dpl pop dph pop psw pop a reti4.5軟件仿真4.5.1三態(tài)緩沖器模塊ts8 圖4.5.1三態(tài)緩沖器仿真圖 三態(tài)緩沖器模塊ts8功能:lpm-ram-dp的數(shù)據(jù)輸出端q7.0無三態(tài)輸出功能,為了能夠與單片機數(shù)據(jù)總線相連,數(shù)據(jù)輸出需要加一個三態(tài)門ts8,以實現(xiàn)輸出三態(tài)控制。4.5.2分頻器模塊fredivid圖4.5.2 分頻器仿真圖分頻器模塊fredivid功能:保證地址計數(shù)器和高速a/d轉(zhuǎn)換器采用同一時鐘信號,使地址的變化與a/d轉(zhuǎn)換器輸出數(shù)據(jù)的變化同步。4.5.3地址鎖存器模塊dlatch8圖4.5.3地址鎖存器仿真圖地址鎖存器模塊dlatch8功能:用于鎖存單

53、片機并行總線低8位地址。4.5.4地址計數(shù)器模塊addrcount 4.5.4 地址計數(shù)器仿真圖地址計數(shù)器模塊addrcount功能:一個7位二進制計數(shù)器,其輸出作為雙口ram寫端口的地址。5.系統(tǒng)調(diào)試高速數(shù)據(jù)采集系統(tǒng)是硬件和軟件相結(jié)合,單片機系統(tǒng)、數(shù)字系統(tǒng)和模擬系統(tǒng)相結(jié)合的綜合電子系統(tǒng)。調(diào)試時應“硬件和軟件相結(jié)合”、“各子系統(tǒng)單獨調(diào)試和聯(lián)合調(diào)試相結(jié)合”的原則。從硬件上高速數(shù)據(jù)采集系統(tǒng)由三部分組成:單片機子系統(tǒng)、fpga子系統(tǒng)以及高速數(shù)據(jù)采集子系統(tǒng)。5.1 單片機子系統(tǒng)調(diào)試對單片機子系統(tǒng)來說,主要調(diào)試其軟件功能是否正常。由于高速數(shù)據(jù)采集系統(tǒng)的軟件比較簡單,主要調(diào)試lcd顯示功能是否正常。為了測試lcd能否正確顯示波形曲線,可在單片機數(shù)據(jù)緩存沖區(qū)設定128字節(jié)數(shù)據(jù),運行波形顯示程序,觀察lcd上顯示的曲線是否正確。5.2 fpga子系統(tǒng)調(diào)試對fpga子系統(tǒng)的調(diào)試,通過quartus軟件進行輸入、編譯、引腳鎖定,下載到fpga中。下載成功以后,可用示波器作以下測試:按單片機k0鍵,應在單片機的int1腳檢測到負脈沖,同時在adcclk引腳觀測到時鐘

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論