畢業(yè)設(shè)計(jì)---高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)_第1頁
已閱讀1頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p><b>  1.緒論1</b></p><p>  1.1 課題研究的意義1</p><p>  1.2 數(shù)據(jù)采集技術(shù)的發(fā)展歷程和現(xiàn)狀1</p><p>  1.3 本文的研究內(nèi)容2</p><p>  1

2、.4 系統(tǒng)設(shè)計(jì)涉及的理論分析2</p><p><b>  2.系統(tǒng)設(shè)計(jì)4</b></p><p><b>  2.1方案選擇4</b></p><p><b>  2.2系統(tǒng)框圖5</b></p><p>  3.單元電路設(shè)計(jì)6</p><p&g

3、t;  3.1信號(hào)調(diào)理電路6</p><p>  3.2高速A/D模塊7</p><p>  3.3 FPGA模塊設(shè)計(jì)8</p><p>  3.4MCU模塊設(shè)計(jì)8</p><p>  3.5數(shù)據(jù)采集通道總體原理圖9</p><p>  3.6硬件電路總體設(shè)計(jì)9</p><p>&l

4、t;b>  4.軟件設(shè)計(jì)10</b></p><p>  4.1 信號(hào)采集與存儲(chǔ)控制電路工作原理10</p><p>  4.2 信號(hào)采集與存儲(chǔ)控制電路的FPGA實(shí)現(xiàn)11</p><p>  4.3 原理圖中的各底層模塊采用VHDL語言編寫12</p><p>  4.3.1三態(tài)緩沖器模塊TS812</p&g

5、t;<p>  4.3.2分頻器模塊fredivid13</p><p>  4.3.3地址鎖存器模塊dlatch814</p><p>  4.3.4地址計(jì)數(shù)器模塊addrcount15</p><p>  4.3.5雙口RAM模塊lpm_ram_dp16</p><p>  4.4 數(shù)據(jù)顯示模塊設(shè)計(jì)18</p

6、><p>  4.4.1 主程序18</p><p>  4.4.2 INT0中斷服務(wù)程序19</p><p>  4.4.3 INT1中斷服務(wù)程序19</p><p>  4.5軟件仿真20</p><p>  4.5.1三態(tài)緩沖器模塊TS820</p><p>  4.5.2分頻器模塊

7、fredivid20</p><p>  4.5.3地址鎖存器模塊dlatch821</p><p>  4.5.4地址計(jì)數(shù)器模塊addrcount21</p><p><b>  5.系統(tǒng)調(diào)試21</b></p><p>  5.1 單片機(jī)子系統(tǒng)調(diào)試21</p><p>  5.2 F

8、PGA子系統(tǒng)調(diào)試22</p><p>  5.3 高速A/D模塊的調(diào)試22</p><p><b>  6 總結(jié)22</b></p><p><b>  致謝22</b></p><p><b>  參考文獻(xiàn)23</b></p><p><

9、;b>  附錄25</b></p><p>  高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)</p><p>  摘要:隨著數(shù)字技術(shù)的飛速發(fā)展,高速數(shù)據(jù)采集系統(tǒng)也迅速地得到了廣泛的應(yīng)用。在生產(chǎn)過程中,應(yīng)用這一系統(tǒng)可以對(duì)生產(chǎn)現(xiàn)場的工藝參數(shù)進(jìn)行采集、監(jiān)視和記錄,為提高生產(chǎn)質(zhì)量,降低成本提供了信息和手段。在科學(xué)研究中,應(yīng)用數(shù)據(jù)采集系統(tǒng)可以獲取大量的動(dòng)態(tài)數(shù)據(jù),是研究瞬間物理過程的有力工具,為科學(xué)活動(dòng)提

10、供了重要的手段。而當(dāng)前我國對(duì)高速數(shù)據(jù)采集系統(tǒng)的研究開發(fā)都處于起步階段,因此,開發(fā)出高速數(shù)據(jù)采集系統(tǒng)就顯得尤為重要了。本文針對(duì)高速數(shù)據(jù)采集系統(tǒng)中的實(shí)時(shí)性、采集速率等問題提出了一種結(jié)合FPGA與單片機(jī)的低成本高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)方案。該系統(tǒng)以高速SOC單片機(jī)C8051F360和FPGA EP2C8T144為核心,運(yùn)用模塊化設(shè)計(jì)方法,實(shí)現(xiàn)軟硬件設(shè)計(jì),具有一定的實(shí)用價(jià)值。</p><p>  關(guān)鍵詞:C8051F360;

11、EP2C8T144;ADC;數(shù)據(jù)采集;高速</p><p><b>  1.緒論</b></p><p>  1.1 課題研究的意義</p><p>  隨著信息技術(shù)的飛速發(fā)展,各種數(shù)據(jù)的實(shí)時(shí)采集和處理在現(xiàn)代工業(yè)控制中已成為必不可少的。這就為我們的設(shè)計(jì)提出了兩個(gè)方面的要求:一方面,要求接口簡單靈活且有較高的數(shù)據(jù)傳輸率;另一方面,由于數(shù)據(jù)量通常都

12、較大,要求主機(jī)能夠?qū)?shí)時(shí)數(shù)據(jù)做出快速響應(yīng),并及時(shí)進(jìn)行分析和處理。</p><p>  FPGA與單片機(jī)相比,有著頻率高,內(nèi)部延時(shí)小,內(nèi)部存儲(chǔ)容量大等優(yōu)點(diǎn),比單片機(jī)更適應(yīng)與高速數(shù)據(jù)采集的場合。比如在某些高沖擊、高振蕩場合下,需要對(duì)沖擊過程的加速度數(shù)據(jù)進(jìn)行回收,包括實(shí)時(shí)采集、存儲(chǔ)以及事后回讀分析。在這樣的環(huán)境下,要求數(shù)據(jù)回收系統(tǒng)具有采集的高速、實(shí)時(shí)性;存儲(chǔ)的及時(shí)、正確性。FPGA(現(xiàn)場可編程邏輯門陣列)在高速數(shù)據(jù)采集

13、方面具有單片機(jī)和DSP所不具備的優(yōu)點(diǎn)。FPGA所要完成的功能完全由內(nèi)部可編程硬件電路實(shí)現(xiàn),具有并行執(zhí)行、速度快、多功能、低功耗、可現(xiàn)場反復(fù)編程等特點(diǎn)。使用FPGA構(gòu)成數(shù)據(jù)采集系統(tǒng)還可以減化外圍控制電路,使系統(tǒng)更加簡潔有效。</p><p>  1.2 數(shù)據(jù)采集技術(shù)的發(fā)展歷程和現(xiàn)狀</p><p>  在數(shù)字技術(shù)日新月異的今天,數(shù)據(jù)采集技術(shù)的重要性是十分顯著的。它是數(shù)字世界和外部物理世界連接

14、的橋梁。而隨著現(xiàn)代工業(yè)和科學(xué)技術(shù)的發(fā)展,對(duì)數(shù)據(jù)采集技術(shù)的要求日益提高,在雷達(dá)、聲納、圖像處理、語音識(shí)別、通信、信號(hào)測試等科研實(shí)踐領(lǐng)域中,都需要高精度,高數(shù)據(jù)率的數(shù)據(jù)采集系統(tǒng)。它的關(guān)鍵技術(shù)為高速高精度的ADC技術(shù),高數(shù)據(jù)率的存儲(chǔ)和緩存技術(shù)以及系統(tǒng)高可靠性保證等。</p><p>  通過數(shù)據(jù)采集技術(shù),科研人員在實(shí)驗(yàn)現(xiàn)場可以根據(jù)需要實(shí)時(shí)記錄原始數(shù)據(jù),用于實(shí)驗(yàn)室后期的分析和處理,對(duì)工程實(shí)踐和理論分析探索具有重大意義。正

15、是由于目前數(shù)據(jù)采集技術(shù)廣泛應(yīng)用在科研實(shí)踐和工業(yè)生產(chǎn)中的各個(gè)領(lǐng)域,當(dāng)前國外對(duì)采集技術(shù)的研究和發(fā)展比較成熟。按通道數(shù)分有單通道的、雙通道的、多通道的(多達(dá)上百通道);按采樣率分可從幾kHz到高達(dá)幾個(gè)GHz;按分辨率分有8位、10位、12位、14位還有16位。在一些高端的示波器,頻譜儀等測試儀器中,其采樣率可達(dá)幾個(gè)GHz,甚至幾十個(gè)GHz。而國內(nèi)由于發(fā)展時(shí)間短,芯片技術(shù)等一些方面的限制,目前沒有高水平的采集器出現(xiàn)?,F(xiàn)在從高校到研究所到公司對(duì)采

16、集器的需求越來越多,性能要求也越來越高。這種情況給我們研發(fā)和設(shè)計(jì)高速數(shù)據(jù)采集系統(tǒng)提供了很多機(jī)遇。</p><p>  1.3 本文的研究內(nèi)容</p><p>  設(shè)計(jì)一個(gè)高速數(shù)據(jù)采集系統(tǒng),輸入模擬信號(hào)為正弦信號(hào),頻率為200kHz,Vp-p小于等于0.5V。每次數(shù)據(jù)采集以20MHz的固定采樣頻率連續(xù)采集128點(diǎn)數(shù)據(jù),采集完畢以后,用LCD模塊回放顯示采集信號(hào)波形。該系統(tǒng)具有實(shí)時(shí)采集、存儲(chǔ)以

17、及傳輸功能。</p><p> ?。?)硬件設(shè)計(jì):硬件部分包括FPGA最小系統(tǒng)電路、數(shù)據(jù)的實(shí)時(shí)采集電路、數(shù)據(jù)緩存部分以及與單片機(jī)通信接口部分電路等。</p><p> ?。?)軟件設(shè)計(jì):通過編寫程序,主要實(shí)現(xiàn)實(shí)時(shí)采集(A/D采樣)功能、數(shù)據(jù)緩存、與單片機(jī)進(jìn)行通信等功能。</p><p>  (3)仿真結(jié)果及分析:主要是針對(duì)實(shí)時(shí)采集部分、數(shù)據(jù)緩存部分、與PC機(jī)通信部分

18、進(jìn)行時(shí)序仿真和功能仿真,根據(jù)仿真結(jié)果對(duì)設(shè)計(jì)進(jìn)行分析。</p><p>  1.4 系統(tǒng)設(shè)計(jì)涉及的理論分析</p><p><b>  1.4.1采樣理論</b></p><p>  根據(jù)奈奎斯特定理,在進(jìn)行模擬/數(shù)字信號(hào)的轉(zhuǎn)換過程中,只有采樣頻率fs大于被采樣信號(hào)中最高頻率fmax的2倍時(shí),才能保證數(shù)字信號(hào)完整地保留了原始信號(hào)中的信息,實(shí)際應(yīng)用

19、中必須保證采樣頻率為信號(hào)最高頻率的5~10倍。對(duì)于高頻信號(hào)(f>3MHz),則必須達(dá)到10MHz以上的采樣速率。</p><p>  1.4.2模數(shù)轉(zhuǎn)換(ADC)基本原理及常用A/D轉(zhuǎn)換技術(shù)</p><p>  模數(shù)轉(zhuǎn)換器ADC用來把連續(xù)變化的模擬信號(hào)轉(zhuǎn)換為一定格式的數(shù)字量。ADC轉(zhuǎn)換器實(shí)際上就是一個(gè)編碼器,輸入的模擬量經(jīng)過信號(hào)調(diào)理電路,抗混濾波電路進(jìn)入A/D轉(zhuǎn)換電路,A/D轉(zhuǎn)換電路

20、將模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)送入數(shù)據(jù)處理系統(tǒng)。A/D轉(zhuǎn)換部分通常包括采樣和保持,量化和編碼兩個(gè)部分組成。</p><p>  (1)采樣和保持:由于被轉(zhuǎn)換的電壓是一個(gè)隨時(shí)間不斷地變換的模擬量,也就是,在各個(gè)不同的瞬間它的大小是不同的。同時(shí),要把一定幅度的電壓轉(zhuǎn)換為數(shù)字量都需要一定的時(shí)間。通常以一定的時(shí)間間隔周期地“讀取”輸入信號(hào)的大小,并轉(zhuǎn)換為與其大小對(duì)應(yīng)的數(shù)字量。這個(gè)過程被稱為采樣。采樣定理告訴我們,一個(gè)頻譜有限的

21、模擬信號(hào),其采樣頻率必須至少大于等于模擬信號(hào)最高有效頻率分量的兩倍,防止出現(xiàn)頻譜的失真。由于采樣脈沖的寬度往往都是很小的,而實(shí)現(xiàn)轉(zhuǎn)換是需要時(shí)間的,為使后續(xù)電路能很好的對(duì)這個(gè)采樣結(jié)果進(jìn)行處理,通常要把采樣值保存下來,直到下一次采樣再更新,這個(gè)過程為保持。</p><p>  (2)量化和編碼:通過采樣保持電路,輸入信號(hào)雖然已經(jīng)不是一個(gè)平滑的連續(xù)變化的電壓,但它還是一個(gè)在某個(gè)區(qū)間范圍內(nèi)任意取值的模擬量。因此,用數(shù)字量

22、來表示模擬量時(shí)就需要一個(gè)類似與四舍五入的過程,即量化。顯然此過程,量化前后的值是不相等的,這個(gè)差值為量化誤差。而且量化的等級(jí)越細(xì),量化誤差越小。量化后的信號(hào),雖然是一個(gè)離散量,但是為了使數(shù)字系統(tǒng)可以對(duì)其進(jìn)行傳輸和處理,還必須用若干位二進(jìn)制代碼來表示量化結(jié)果,這個(gè)過程就是編碼。</p><p>  AD轉(zhuǎn)換器的主要技術(shù)指標(biāo)如下:</p><p>  (1)分辯率(Resolution)指數(shù)字

23、量變化一個(gè)最小量時(shí)模擬信號(hào)的變化量,定義為滿刻度與n的平方的比值。分辯率又稱精度,通常以數(shù)字信號(hào)的位數(shù)來表示。</p><p>  (2)轉(zhuǎn)換速率(Conversion Rate)是指完成一次從模擬轉(zhuǎn)換到數(shù)字的AD轉(zhuǎn)換所需的時(shí)間的倒數(shù)。積分型AD的轉(zhuǎn)換時(shí)間是毫秒級(jí)屬低速AD,逐次比較型AD是微秒級(jí)屬中速AD,全并行/串并行型AD可達(dá)到納秒級(jí)。采樣時(shí)間則是另外一個(gè)概念,是指兩次轉(zhuǎn)換的間隔。為了保證轉(zhuǎn)換的正確完成,采

24、樣速率(Sample Rate)必須小于或等于轉(zhuǎn)換速率。因此有人習(xí)慣上將轉(zhuǎn)換速率在數(shù)值上等同于采樣速率也是可以接受的。常用單位是ksps和Msps,表示每秒采樣千/百萬次。</p><p>  (3)量化誤差(Quantizing Error)由于AD的有限分辯率而引起的誤差,即有限分辯率AD的階梯狀轉(zhuǎn)移特性曲線與無限分辯率AD(理想AD)的轉(zhuǎn)移特性曲線(直線)之間的最大偏差。通常是1個(gè)或半個(gè)最小數(shù)字量的模擬變化

25、量,表示為1LSB、1/2LSB。</p><p>  (4)偏移誤差(Offset Error)輸入信號(hào)為零時(shí)輸出信號(hào)不為零的值,可外接電位器調(diào)至最小。</p><p>  (5)滿刻度誤差(Full Scale Error)滿度輸出時(shí)對(duì)應(yīng)的輸入信號(hào)與理想輸入信號(hào)值之差。</p><p>  (6)線性度(Linearity)實(shí)際轉(zhuǎn)換器的轉(zhuǎn)移函數(shù)與理想直線的最大偏

26、移,不包括以上三種誤差。</p><p>  1.4.3現(xiàn)場可編程門陣列(FPGA)基礎(chǔ)知識(shí)</p><p>  現(xiàn)場可編程門陣列(FiledProgrammable GateArray),簡稱FPGA,是在CPLD的基礎(chǔ)上發(fā)展起來的高性能可編程器件。其集成度很高,密度從數(shù)萬門系統(tǒng)到數(shù)千萬門系統(tǒng)不等,可以完成及其復(fù)雜的時(shí)序和組合邏輯電路功能,適用于高速,高密度的高端數(shù)字邏輯設(shè)計(jì)領(lǐng)域。<

27、;/p><p>  FPGA產(chǎn)品一般分為兩種類型,一類是基于乘積項(xiàng)(Product.Term)技術(shù),用電可擦除可編程只讀存儲(chǔ)器(EEPROM)或閃存(Flash)制造,多用于5000門一下的小規(guī)模設(shè)計(jì)。另一類基于查找表(Look.Up table)技術(shù),用靜態(tài)存取存儲(chǔ)器(SRAM)工藝制造,密度高,觸發(fā)器多,多用于10000 門以上的大規(guī)模設(shè)計(jì)。采用SRAM工藝制造的FPGA,掉電后數(shù)據(jù)會(huì)消失,因此,調(diào)試期間可以用下

28、載電纜配置FPGA器件,調(diào)試完成后,需要將數(shù)據(jù)固化到一個(gè)專用的EEPROM中,上電后,由這片配置EEPROM先對(duì)FPGA加載數(shù)據(jù),十幾個(gè)毫秒后,F(xiàn)PGA就可正常工作。</p><p>  FPGA的基本組成部分有可編程輸入輸出單元,基本可編程邏輯單元,嵌入式RAM,豐富的布線資源,底層嵌入功能單元,內(nèi)嵌專用硬核等。</p><p>  (1)可編程輸入/輸出單元</p>&l

29、t;p>  輸入輸出單元(Input/Output)簡稱YO單元,它們是芯片與外界電路的接口部分,完成不同的電氣特性下對(duì)輸入/輸出信號(hào)的驅(qū)動(dòng)和匹配需求。為了使FPGA有更靈活的應(yīng)用,目前大多數(shù)FPGA的I/O單元被設(shè)計(jì)為可編程模式,即通過軟件的靈活配置,可以適配不同的電氣標(biāo)準(zhǔn)與YO物理特性;可以調(diào)整匹配阻抗特性,上下拉電阻;可以調(diào)整輸出驅(qū)動(dòng)電流的大小等。</p><p>  (2)基本可編程邏輯單元<

30、/p><p>  基本可編程邏輯單元是可編程邏輯的主體,可以根據(jù)設(shè)計(jì)靈活的改變其內(nèi)部連接和配置,完成不同的邏輯功能。FPGA一般是基于SRAM工藝的,其基本可編程邏輯單元幾乎都是由查找表(LUT,Look-Up table)和寄存器(Register)組成的。查找表一般完成純組合邏輯功能。組合邏輯的輸入作為地址線連接到查找表,查找表中已經(jīng)事先寫入了所有可能的邏輯結(jié)果,通過地址查找到相應(yīng)的邏輯。寄存器用于完成同步時(shí)序邏

31、輯設(shè)計(jì)。</p><p><b>  (3)嵌入式RAM</b></p><p>  目前大多數(shù)FPGA內(nèi)部都內(nèi)嵌了塊RAM(Block RAM)。FPGA內(nèi)部嵌入可編程RAM模塊,大大的擴(kuò)展了FPGA的應(yīng)用范圍和使用靈活性。FPGA內(nèi)部的RAM可以靈活配置為單端口RAM,雙端口RAM,F(xiàn)IFO等常用存儲(chǔ)結(jié)構(gòu)。通過對(duì)RAM賦予初值,還可以實(shí)現(xiàn)ROM的功能。</p

32、><p>  (4)豐富的布線資源</p><p>  布線資源連通FPGA內(nèi)部所有單元,連線的長度和工藝決定著信號(hào)在連線上的驅(qū)動(dòng)能力和傳輸速度。FPGA內(nèi)部有著非常豐富的布線資源,這些布線資源根據(jù)工藝,長度,寬度和分布位置的不同而被劃分為不同的等級(jí)。有一些是全局性的布線資源,用于完成器件內(nèi)部的全局時(shí)鐘和全局復(fù)位/置位的布線;一些叫做長線資源,用作完成器件Bank(分區(qū))間的一些高速信號(hào)和一些

33、第二全局時(shí)鐘信號(hào)的布線;還有一些叫做短線資源,用以完成基本邏輯單元之間的邏輯互聯(lián)和布線等。在實(shí)現(xiàn)過程中,設(shè)計(jì)者一般不用直接選擇布線資源,而是由布局布線器自動(dòng)根據(jù)輸入的邏輯網(wǎng)表的拓?fù)浣Y(jié)構(gòu)和約束條件選擇可用的布線資源連通所用的底層單元模塊,所以往往容易比忽略。其實(shí)布線資源的優(yōu)化與使用和設(shè)計(jì)的實(shí)現(xiàn)結(jié)果有直接關(guān)系。</p><p>  (5)底層嵌入功能單元</p><p>  隨著FPGA的發(fā)展

34、,PLL,DLL,DSP,CPU等模塊越來越多的被嵌入到FPGA的內(nèi)部,以滿足不同場合的需要。</p><p><b>  (6)內(nèi)嵌專用硬核</b></p><p>  這里的內(nèi)嵌專用硬核與前面的“底層嵌入單元”是有區(qū)別的,這里講的內(nèi)嵌專用硬核主要是指那些通用性相對(duì)較弱,不是所有FPGA器件都包含硬核。</p><p>  FPGA的主要器件

35、供應(yīng)商有Xilinx,Altera,Lattic,Actel和Atmel等。</p><p><b>  2.系統(tǒng)設(shè)計(jì)</b></p><p><b>  2.1方案選擇</b></p><p>  隨著數(shù)據(jù)采集對(duì)速度性能指標(biāo)越來越高,高速數(shù)據(jù)采集系統(tǒng)在自動(dòng)控制、電氣測量、地質(zhì)物探、航空航天等工程實(shí)踐中得到了十分廣泛的應(yīng)用

36、。高速數(shù)據(jù)采集系統(tǒng)一般分為數(shù)據(jù)采集和數(shù)據(jù)處理兩部分。在數(shù)據(jù)采集時(shí),必須以很高的速度采集數(shù)據(jù),但在數(shù)據(jù)處理時(shí)并不需要以同樣的速度來進(jìn)行。因此,高速數(shù)據(jù)采集需要有一個(gè)數(shù)據(jù)緩存單元,現(xiàn)將采集的數(shù)據(jù)有效地存儲(chǔ),然后根據(jù)系統(tǒng)需求進(jìn)行數(shù)據(jù)處理。</p><p>  傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)通常采用單片機(jī)直接控制A/D轉(zhuǎn)換器完成數(shù)據(jù)采集。用單片機(jī)控制A/D轉(zhuǎn)換器,一般要通過啟動(dòng)A/D轉(zhuǎn)換、讀取A/D轉(zhuǎn)換值、將數(shù)據(jù)存入存儲(chǔ)器、修改存儲(chǔ)

37、器地址指針、判斷數(shù)據(jù)采集是否完成等過程。從本質(zhì)上來說,基于單片機(jī)的數(shù)據(jù)采集系統(tǒng)是通過軟件來實(shí)現(xiàn)特定功能的。在許多情況下,采用軟件解決方案其速度限制是很難克服的。MCS-51單片機(jī)大多數(shù)指令的執(zhí)行時(shí)間需要1~2個(gè)機(jī)器周期,完成一次A/D轉(zhuǎn)換大約需要幾十微秒。即使對(duì)于單片機(jī)機(jī)器周期、時(shí)鐘頻率可達(dá)100MHz的C8051F360單片機(jī),如果用來控制高速A/D轉(zhuǎn)換器,也很難達(dá)到幾MHz以上的采樣速率。</p><p> 

38、 通常構(gòu)成高速緩存的方案有三種:第一種是高速SRAM切換方式。高速SRAM只有一組數(shù)據(jù)、地址和控制總線,可通過三態(tài)緩沖門分別接到A/D轉(zhuǎn)換器和單片機(jī)上。但A/D采樣時(shí),SRAM由三態(tài)門切換到A/D轉(zhuǎn)換器一側(cè),以使采樣數(shù)據(jù)寫入其中。當(dāng)A/D采樣結(jié)束后,SRAM再由三態(tài)門切換到單片機(jī)一側(cè)進(jìn)行讀寫。這種方式下的優(yōu)點(diǎn)是SRAM可隨機(jī)存取,同時(shí)較大容量的高速SRAM有現(xiàn)成的產(chǎn)品可供選擇,但硬件電路較復(fù)雜。第二種是FIFO(先進(jìn)先出)方式。FIFO

39、存儲(chǔ)器就像數(shù)據(jù)管道一樣,數(shù)據(jù)從管道的一頭流入,從另一頭流出,先進(jìn)入的數(shù)據(jù)先流出。FIFO具有兩套數(shù)據(jù)線而無地址線,可在其一端寫操作而在另一端讀操作,數(shù)據(jù)在其中順序移動(dòng),因而能夠達(dá)到很高的傳輸速度和效率。第三種是雙口RAM方式。雙口RAM具有兩組獨(dú)立的數(shù)據(jù)、地址和控制總線,因而可從兩個(gè)端口同時(shí)讀寫而互不干擾,并可將采樣數(shù)據(jù)從一個(gè)端口寫入,而由單片機(jī)從另一個(gè)端口讀出。雙口RAM也能達(dá)到很高的傳輸速度,并且具有隨機(jī)存取的優(yōu)點(diǎn)。</p&g

40、t;<p>  可編程邏輯器件的應(yīng)用,為了實(shí)現(xiàn)高速數(shù)據(jù)采集提供了一種理想的途徑。利用可編程邏輯器件高速性能和本身集成的幾萬個(gè)邏輯門和嵌入式存儲(chǔ)器塊,把數(shù)據(jù)采集系統(tǒng)中的數(shù)據(jù)緩存、地址發(fā)生器、控制等電路全部集成進(jìn)一片可編程邏輯器件芯片中,大大減少了系統(tǒng)的體積,降低了成本,提高了可靠性。同時(shí),可編程邏輯器件實(shí)現(xiàn)邏輯重構(gòu),而且可實(shí)現(xiàn)在系統(tǒng)編程以及有眾多功能強(qiáng)大的EDA軟件的支持,使得系統(tǒng)具有升級(jí)容易、開發(fā)周期短等優(yōu)點(diǎn)。</p

41、><p>  由于本設(shè)計(jì)的高速采集系統(tǒng),采樣頻率要求達(dá)到20MHz,同時(shí)要求采集的信號(hào)在LCD模塊上顯示模型,故采用單片機(jī)和FPGA相結(jié)合的設(shè)計(jì)方案。模擬信號(hào)經(jīng)過調(diào)理以后送高速A/D轉(zhuǎn)換器,由FPGA完成高速A/D轉(zhuǎn)換器的控制和數(shù)據(jù)存儲(chǔ),單片機(jī)從FPGA存儲(chǔ)器中讀取數(shù)據(jù),經(jīng)處理后在LCD上顯示波形。</p><p><b>  2.2系統(tǒng)框圖</b></p>

42、<p>  高速數(shù)據(jù)采集系統(tǒng)采用單片機(jī)和FPGA相結(jié)合的設(shè)計(jì)方案。系統(tǒng)框圖如圖2.2所示。模擬信號(hào)經(jīng)過調(diào)理后送高速A/D轉(zhuǎn)換器,由FPGA內(nèi)部的控制邏輯實(shí)現(xiàn)對(duì)高速A/D轉(zhuǎn)換器的控制和數(shù)據(jù)存儲(chǔ),單片機(jī)通過系統(tǒng)總線實(shí)現(xiàn)與FPGA的接口,通過該接口獲取原始數(shù)據(jù),然后通過算法完成對(duì)數(shù)據(jù)的處理及應(yīng)用。整個(gè)系統(tǒng)由信號(hào)調(diào)理電路、A/D轉(zhuǎn)換器、FPGA模塊、MCU模塊、鍵盤及LCD顯示模塊等組成。數(shù)據(jù)采集系統(tǒng)首先對(duì)采集的信號(hào)進(jìn)行前端處理,如

43、信號(hào)放大、濾波、直流電平位移等預(yù)處理,以滿足A/D轉(zhuǎn)換器對(duì)模擬信號(hào)的要求。FPGA模塊主要實(shí)現(xiàn)對(duì)高速ADC的控制及數(shù)據(jù)存儲(chǔ),單片機(jī)通過與FPGA器件的數(shù)據(jù)交換獲得采集到數(shù)字信息,再進(jìn)行相關(guān)的處理,并通過LCD顯示及鍵盤接口實(shí)現(xiàn)較靈活的人機(jī)交換。</p><p>  圖2.2 高速數(shù)據(jù)采集系統(tǒng)框圖 </p><p><b>  3.單元電路設(shè)計(jì)</b></p>

44、;<p><b>  3.1信號(hào)調(diào)理電路</b></p><p>  在數(shù)據(jù)采集中,因AD轉(zhuǎn)換器對(duì)模擬信號(hào)的幅度有一定的要求范圍。ADS930在單端工作方式下,輸入的模擬信號(hào)應(yīng)在1~2V之間,為了使A/D轉(zhuǎn)換器能正常工作,確保最小的相對(duì)誤差,在信號(hào)進(jìn)行模數(shù)轉(zhuǎn)換前,對(duì)輸入的信號(hào)進(jìn)行預(yù)處理,使之滿足A/D轉(zhuǎn)換器的幅度要求。</p><p>  信號(hào)調(diào)理電路由

45、射極跟隨器、增益可調(diào)放大器、低通濾波器幾部分組成。</p><p><b> ?。?)射極跟隨器</b></p><p>  本設(shè)計(jì)采用射極跟隨器,既可獲得較高的輸入阻抗,還可以在被測信號(hào)源與數(shù)據(jù)采集電路之間起到隔離作用。其原理圖如圖3.1.1所示。跟隨器可以獲得很高的輸入阻抗,但是為了對(duì)信號(hào)源呈穩(wěn)定的負(fù)載,在電路的輸入端并聯(lián)了一個(gè)電阻R1,這時(shí),前置放大器的等效輸入

46、電阻約等于R1。</p><p><b>  增益可調(diào)放大器 </b></p><p>  為了滿足后接A/D轉(zhuǎn)換器輸入電壓范圍的要求,因此對(duì)放大器的要求是增益可調(diào),直流電平可調(diào)。根據(jù)以上要求,設(shè)計(jì)的放大電路原理圖如圖3.1.2所示。 </p><p>  增益可調(diào)放大器采用反相放大器的結(jié)構(gòu),放大倍數(shù)的計(jì)算公式如下:</p>&l

47、t;p>  A=-RP1/R2 </p><p>  其中,RP1為精密電位器,調(diào)節(jié)RP1就可以調(diào)節(jié)放大器的增益。如果R2取1k,RP1取10k,則增益的可調(diào)范圍為0~-10 。</p><p>  來自前置放大器的是雙極性的交流信號(hào),而A/D對(duì)輸入信號(hào)的要求通常是單極性的。為了適合A/D的要求,本放大器中加了電平移位電路。電平位移電路有RP2組成,C1用于濾除高頻噪聲。調(diào)節(jié)Rp2就

48、可以改變Vos的值,不過注意,Vos的值要經(jīng)過1+RP1/R2倍的放大才送到輸出端,因此,調(diào)節(jié)放大倍數(shù)的同時(shí)也會(huì)改變放大器輸出端的直流偏移量。</p><p>  上述放大器中電位器RP1、RP2需手動(dòng)調(diào)節(jié),如果采用數(shù)控電位器代替,就可以得到程控放大器,這在自動(dòng)化儀表設(shè)計(jì)非常重要。</p><p>  為了滿足模擬輸入信號(hào)的要求,整個(gè)信號(hào)調(diào)理電路應(yīng)該有足夠的帶寬。為了防止信號(hào)中的無用分量(

49、如高頻干擾信號(hào))也經(jīng)過通道被采樣,信號(hào)在進(jìn)入A/ D 之前要進(jìn)行抗混疊低通濾波。為了簡化電路,本設(shè)計(jì)中抗混疊濾波器采用了RC低通濾波,如圖中所示R3和C2構(gòu)成。低通濾波器的截止頻率計(jì)算公式如下:</p><p>  f =1/(2pi*R3*C2) </p><p>  圖3.1.1 射極跟隨器</p><p>  圖3.1.2增益可調(diào)放大器</p>

50、<p>  3.2高速A/D模塊</p><p>  首先,A/D的轉(zhuǎn)換速率取決于模擬信號(hào)的頻率范圍,根據(jù)設(shè)計(jì)題目要求,A/D轉(zhuǎn)換速率應(yīng)大于10MHz,為留有余量選擇30MHz采樣頻率的ADC器件。</p><p>  其次,根據(jù)A/D轉(zhuǎn)換原理,轉(zhuǎn)換過程中存在量化誤差。量化誤差取決于量化位數(shù),位數(shù)越多量化誤差越小。題目對(duì)模擬信號(hào)的轉(zhuǎn)換精度沒有特別的要求,因此,選用常見的8位A

51、/D轉(zhuǎn)換器。</p><p>  最后,F(xiàn)PGA為3V器件,故優(yōu)先選用3V工作電壓下的ADC器件,以簡化電源設(shè)計(jì)和電平匹配。</p><p>  因此,我們采樣了BURR—BROWN公司的ADS930器件,該器件為8位30MHz采樣AD轉(zhuǎn)換器,具有單端/差動(dòng)輸入、內(nèi)部基準(zhǔn)、高速寬跟蹤/捕捉的高速流水ADC器件。工作電壓3V一5V,單端輸入電壓1V~ 2V。</p><p

52、>  ADC的模擬輸入采用單端輸入、交流耦合方式,此時(shí)其IN(24)引腳與其內(nèi)部參考電壓的分壓輸出端CM(26)引腳相連,以保證1.5V的偏置電壓。數(shù)字端主要包括數(shù)據(jù)輸出DO~D7,時(shí)鐘CLK和數(shù)據(jù)輸出使能/OE等,與FPGA器件相連,根據(jù)時(shí)序受FPGA控制。</p><p>  3.3 FPGA模塊設(shè)計(jì)</p><p>  在高速數(shù)據(jù)采集方面,F(xiàn)PGA具有單片機(jī)和DSP無法比擬的優(yōu)

53、勢,F(xiàn)PGA的時(shí)鐘頻率高,內(nèi)部延時(shí)小,而且速度快、效率高、組成形式靈活。FPGA內(nèi)的嵌入式陣列塊(EAB)可作為存儲(chǔ)器使用,構(gòu)成雙口RAM或FIFO。設(shè)計(jì)中使用了Altera公司EP2C8T144,內(nèi)含8256個(gè)基本邏輯單元(LE),18個(gè)嵌入式可編程RAM模塊可靈活配置成單口RAM、雙口RAM、FIFO等,滿足大部分?jǐn)?shù)字系統(tǒng)的設(shè)計(jì)要求。系統(tǒng)圖如圖3.3所示,其中與單片機(jī)接口的信號(hào)包括數(shù)據(jù)總線、地址鎖存ALE、片選CS2、讀使能RD、A

54、D啟動(dòng)控制START和批量轉(zhuǎn)換結(jié)束應(yīng)答EOC等,與ADS930接口的信號(hào)包括ADC的8位數(shù)據(jù)、ADC讀使能ADC OE和ADC時(shí)鐘等??刂撇僮鲿r(shí)通過START啟動(dòng)AD轉(zhuǎn)換,之后由FPGA控制ADS930進(jìn)行模數(shù)轉(zhuǎn)換,其轉(zhuǎn)換時(shí)鐘由40MHz有源晶振經(jīng)FPGA內(nèi)部鎖相環(huán)2分頻獲得,實(shí)現(xiàn)20MHz的采樣速率,每個(gè)時(shí)鐘將AD轉(zhuǎn)換的結(jié)果數(shù)據(jù)在存儲(chǔ)到FPGA內(nèi)部的雙口RAM,同時(shí)地址計(jì)數(shù)器加1,以指向下一個(gè)RAM地址,供下次寫入數(shù);當(dāng)雙口RAM存儲(chǔ)

55、滿時(shí)輸出EOC有效,通知單片機(jī)獲取批量數(shù)據(jù)。采用EP2C8TI</p><p>  3.4MCU模塊設(shè)計(jì)</p><p>  本設(shè)計(jì)中單片機(jī)采用采用了Silicon Labs公司推出增強(qiáng)型51單片機(jī)C8051F360,解決了傳統(tǒng)單片機(jī)系統(tǒng)的各種問題。</p><p>  由于C8051F360單片機(jī)內(nèi)部集成了眾多功能模塊,幾乎不需要外部電路就能構(gòu)成最小系統(tǒng),因此MC

56、U模塊僅設(shè)計(jì)了一片CPLD器件(EPM3064),主要實(shí)現(xiàn)鍵盤接口、LCD接口及地址譯碼等。CPLD的內(nèi)部邏輯用VHDL語言和ALERTA的參數(shù)化模塊實(shí)現(xiàn),采用CPLD使電路具有很大的靈活性 。</p><p>  圖3.3 信號(hào)采集與存儲(chǔ)控制電路系統(tǒng)圖</p><p>  3.5數(shù)據(jù)采集通道總體原理圖</p><p>  根據(jù)上述各部分的電路設(shè)計(jì),可以得到如圖3.

57、5所示的數(shù)據(jù)采集通道原理圖。運(yùn)算放大器單位增益帶寬為150MHz,當(dāng)放大器的增益為10時(shí),帶寬為15MHz,不但滿足設(shè)計(jì)要求,而且留有余地。ADS930的數(shù)據(jù)引腳、時(shí)鐘引腳與FPGA I/O引腳直接相連。</p><p>  3.6硬件電路總體設(shè)計(jì)</p><p>  在前面設(shè)計(jì)的基礎(chǔ)上,可以得到附錄1的硬件電路總體原理圖。單片機(jī)與FPGA的連線除了并行總線外,還包括啟動(dòng)信號(hào)START和數(shù)

58、據(jù)采集結(jié)束信號(hào)EOC。START信號(hào)從單片機(jī)的P3.2引腳發(fā)出,送到FPGA的I/O引腳(第60腳),EOC信號(hào)從FPGA的I/O引腳(第44腳)發(fā)出,送到單片機(jī)的外部引腳中斷引腳INT1。</p><p>  高速數(shù)據(jù)采集系統(tǒng)的顯示器件采用LCD模塊LCD12864.LCD模塊的數(shù)據(jù)線D0~D7與單片機(jī)的數(shù)據(jù)總線相連,RS、RW和E等控制信號(hào)由FPGA內(nèi)部邏輯電路產(chǎn)生,因此LCD模塊的E、RS和RW信號(hào)線與FP

59、GA的I/O引腳相連。高速數(shù)據(jù)采集系統(tǒng)只需要一只用于啟動(dòng)數(shù)據(jù)采集的按鍵。對(duì)于這種簡單的按鍵,可以采用兩種設(shè)計(jì)方案:一種是將按鍵直接與單片機(jī)的I/O引腳相連,通過軟件定時(shí)檢測按鍵是否閉合,并進(jìn)行消抖處理,如鍵有效,則執(zhí)行鍵處理程序。該方案的不足之處是需要單片機(jī)較多的軟件開銷。另一種方案是將按鍵與FPGA的I/O引腳相連,然后在FPGA內(nèi)部設(shè)置一消抖計(jì)數(shù)器,消抖計(jì)數(shù)器輸出作為外部中斷信號(hào)與單片機(jī)的INT0相連。單片機(jī)在INT0中斷服務(wù)程序中

60、實(shí)現(xiàn)按鍵處理。顯然,該方案有效地簡化了單片機(jī)軟件設(shè)計(jì)。</p><p>  圖3.5 數(shù)據(jù)采集通道原理圖</p><p><b>  4.軟件設(shè)計(jì)</b></p><p>  4.1 信號(hào)采集與存儲(chǔ)控制電路工作原理</p><p>  雙口RAM作為高速緩存,是信號(hào)采集與存儲(chǔ)控制電路的核心部件。雙口RAM模塊一方面存儲(chǔ)A

61、/D轉(zhuǎn)換產(chǎn)生的數(shù)據(jù),另一方面向單片機(jī)傳輸數(shù)據(jù),因此,雙口RAM的一個(gè)端口(讀端口)與單片機(jī)并行總線相連,另一端口(寫端口)直接與高速A/D的數(shù)據(jù)相連。由于高速數(shù)據(jù)采集系統(tǒng)每次只需要采集128字節(jié)的數(shù)據(jù),因此,雙口RAM的容量設(shè)為128*8即可。在雙口RAM和單片機(jī)的接口中,地址所存模塊用于鎖存單片機(jī)并行總線低8位地址,或非門將片選信號(hào)/CS(來自地址譯碼器)和寫信號(hào)/WR相或非得到高電平有效的雙口RAM讀使能信號(hào)。</p>

62、<p>  高速A/D轉(zhuǎn)換器ADS930是在輸入時(shí)鐘信號(hào)的控制下進(jìn)行A/D轉(zhuǎn)換的。ADS930要求它的的輸入時(shí)鐘信號(hào)有盡量小的抖動(dòng),50%的占空比,輸入時(shí)鐘的邊沿越陡越好。在所示原理框圖中,ADS930的時(shí)鐘信號(hào)通過參考時(shí)鐘CLK0分頻得到。在FPGA系統(tǒng)中,CLK0可以是直接由外部有源晶振產(chǎn)生的時(shí)鐘信號(hào),也可以是通過內(nèi)部PLL產(chǎn)生的時(shí)鐘信號(hào)。</p><p>  為了將高速A/D輸出的數(shù)字量依次存入

63、雙口RAM中,專門設(shè)計(jì)了一地址計(jì)數(shù)器模塊。</p><p>  地址計(jì)數(shù)器模塊實(shí)際上是一個(gè)7位二進(jìn)制計(jì)數(shù)器,其輸出作為雙口RAM寫端口的地址。地址計(jì)數(shù)器和高速A/D轉(zhuǎn)換器采用同一時(shí)鐘信號(hào),這樣地址的變化與A/D轉(zhuǎn)換器輸出數(shù)據(jù)變化同步。將高速A/D轉(zhuǎn)化器時(shí)鐘ADCCLK反相后作為雙口RAM寫端口的寫使能信號(hào),保證了寫使能信號(hào)有效時(shí)數(shù)據(jù)是穩(wěn)定的。地址計(jì)數(shù)器除了產(chǎn)生地址信號(hào)之外,還有兩根與單片機(jī)連接的信號(hào)線START和

64、EOC。START信號(hào)由單片機(jī)I/O引腳發(fā)出。當(dāng)START信號(hào)為低電平時(shí),地址計(jì)數(shù)器清零,恢復(fù)為高電平后,地址計(jì)數(shù)器從0開始計(jì)數(shù),計(jì)到127時(shí)停止計(jì)數(shù),并發(fā)出由高到低的EOC信號(hào)作為單片機(jī)的外部中斷請(qǐng)求信號(hào)。</p><p>  進(jìn)行一次數(shù)據(jù)采集的過程是,單片機(jī)發(fā)出START信號(hào)(負(fù)脈沖有效),地址計(jì)數(shù)器從0開始計(jì)數(shù),在計(jì)數(shù)過程中,A/D轉(zhuǎn)換數(shù)據(jù)被存入雙口RAM。當(dāng)計(jì)數(shù)器計(jì)到127時(shí)停止計(jì)數(shù),發(fā)出EOC信號(hào)作為單

65、片機(jī)的外部中斷信號(hào),單片機(jī)通過執(zhí)行中斷服務(wù)程序從雙口RAM中讀入數(shù)據(jù)。整個(gè)數(shù)據(jù)采集過程的時(shí)序關(guān)系如圖4.1所示。</p><p>  圖4.1 觸發(fā)控制模塊各信號(hào)時(shí)序關(guān)系</p><p>  4.2 信號(hào)采集與存儲(chǔ)控制電路的FPGA實(shí)現(xiàn)</p><p>  如圖4.2所示為由FPGA實(shí)現(xiàn)的信號(hào)采集與存儲(chǔ)控制電路頂層原理圖。在本設(shè)計(jì)中,雙口RAM的存儲(chǔ)容量為128*8

66、,因此,lpm-ram-dp的數(shù)據(jù)寬度選為8位,地址總線寬度選為7位。lpm-ram-dp的數(shù)據(jù)輸出端q[7..0]無三態(tài)輸出功能,為了能夠與單片機(jī)數(shù)據(jù)總線相連,數(shù)據(jù)輸出需要加一個(gè)三態(tài)門TS8,以實(shí)現(xiàn)輸出三態(tài)控制。利用單片機(jī)系統(tǒng)的片選信號(hào)和讀信號(hào)/RD實(shí)現(xiàn)對(duì)三態(tài)門的選通。需要注意,由于加了三態(tài)門控制,lpm-ram-dp中已不需要讀使能信號(hào)rden,可在對(duì)lpm-ram-dp參數(shù)設(shè)置時(shí)取消rden信號(hào),等效于rden始終為高電平。lpm

67、-ram-dp的端口采用寄存器輸入和輸出,為同步型存儲(chǔ)器,使用時(shí)必須采用一同步時(shí)鐘clk0實(shí)現(xiàn)地址、數(shù)據(jù)等信息的輸入輸出。lpm-ram-dp沒有BUSY端,當(dāng)寫地址和讀地址相同時(shí),數(shù)據(jù)為沖突,讀寫不能正常工作,實(shí)際使用時(shí)應(yīng)避免出現(xiàn)這種情況。</p><p>  圖4.2信號(hào)采集與存儲(chǔ)控制電路頂層圖</p><p>  4.3 原理圖中的各底層模塊采用VHDL語言編寫</p>

68、<p>  4.3.1三態(tài)緩沖器模塊TS8</p><p>  三態(tài)緩沖器電路頂層圖如圖4.3.1</p><p>  圖4.3.1三態(tài)緩沖器</p><p><b>  源代碼如下:</b></p><p>  library ieee; </p><p>  use ieee.st

69、d_logic_1164.all; </p><p>  use ieee.std_logic_unsigned.all; </p><p>  entity ts8 is </p><p><b>  port( </b></p><p>  en: in std_logic; </p><p&g

70、t;  di: in std_logic_vector(7 downto 0); </p><p>  do: out std_logic_vector(7 downto 0) ); </p><p><b>  end ts8; </b></p><p>  architecture one of ts8 is </p><

71、;p><b>  begin </b></p><p>  process(en,di) </p><p><b>  begin </b></p><p>  if en='1' then </p><p><b>  do<=di; </b>&l

72、t;/p><p><b>  else </b></p><p>  do<="ZZZZZZZZ"; </p><p><b>  END IF; </b></p><p>  END PROCESS; </p><p><b>  END;

73、</b></p><p>  4.3.2分頻器模塊fredivid</p><p>  分頻器電路頂層圖如圖4.3.2</p><p>  圖4.3.2 分頻器</p><p><b>  源代碼如下:</b></p><p>  LIBRARY IEEE; </p>&

74、lt;p>  use ieee.std_logic_1164.all; </p><p>  use ieee.std_logic_unsigned.all; </p><p>  entity fredivid is </p><p>  port(clkin:in std_logic; </p><p>  clkout: out

75、std_logic </p><p><b>  ); </b></p><p>  end fredivid; </p><p>  architecture one of fredivid is </p><p>  signal q:std_logic_vector(2 downto 0);</p>

76、<p><b>  begin </b></p><p>  process(clkin) </p><p><b>  begin </b></p><p>  if(clkin'event and clkin='1') </p><p><b>  

77、then </b></p><p>  if(q="11")then </p><p><b>  q<="00"; </b></p><p><b>  else </b></p><p><b>  q<=q+1; <

78、;/b></p><p><b>  end if; </b></p><p><b>  end if; </b></p><p>  end process; </p><p>  process(q) </p><p><b>  begin </

79、b></p><p>  if(q(1)='1') then </p><p>  clkout<='1'; </p><p><b>  else </b></p><p>  clkout<='0'; </p><p><

80、b>  end if; </b></p><p>  end process; </p><p><b>  end; </b></p><p>  4.3.3地址鎖存器模塊dlatch8</p><p>  地址鎖存器電路頂層圖如圖4.3.3</p><p>  圖4.3.3

81、地址鎖存器</p><p><b>  源代碼如下:</b></p><p>  library ieee; </p><p>  use ieee.std_logic_1164.all; </p><p>  use ieee.std_logic_unsigned.all; </p><p> 

82、 entity dlatch8 is </p><p><b>  port( </b></p><p>  cp: in std_logic; </p><p>  d: in std_logic_vector(7 downto 0); </p><p>  q: out std_logic_vector(7 down

83、to 0) </p><p><b>  ); </b></p><p>  end dlatch8; </p><p>  architecture one of dlatch8 is </p><p><b>  begin </b></p><p>  process(

84、cp,d) </p><p><b>  begin </b></p><p>  if(cp='1') then </p><p><b>  q<=d; </b></p><p><b>  end if; </b></p><p&

85、gt;  end process; </p><p><b>  end;</b></p><p>  4.3.4地址計(jì)數(shù)器模塊addrcount</p><p>  地址計(jì)數(shù)器電路頂層圖如圖4.3.4</p><p>  圖4.3.4地址計(jì)數(shù)器</p><p><b>  源代碼如下:

86、</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  use ieee.std_logic_arith.all;</p><

87、p>  entity addrcount is</p><p>  port(clr,clk:in std_logic;</p><p>  eoc:out std_logic;</p><p>  q:buffer std_logic_vector(6 downto 0)</p><p><b>  );</b>

88、</p><p><b>  end;</b></p><p>  architecture one of addrcount is</p><p><b>  begin </b></p><p>  process(clr,clk)</p><p><b>  

89、begin </b></p><p>  if(clk'event and clk='1') then</p><p>  if clr='0' then</p><p>  q<="0000000";</p><p>  elsif(q<="111

90、1111") then</p><p>  q<="1111111";</p><p><b>  else</b></p><p><b>  q<=q+1;</b></p><p><b>  end if;</b></p&

91、gt;<p><b>  end if;</b></p><p>  end process;</p><p>  process(q)</p><p><b>  begin</b></p><p>  if(q="1111111") then</p&

92、gt;<p><b>  eoc<='0';</b></p><p><b>  else</b></p><p><b>  eoc<='1';</b></p><p><b>  end if;</b></p&g

93、t;<p>  end process;</p><p>  end one; </p><p>  4.3.5雙口RAM模塊lpm_ram_dp </p><p>  雙口RAM電路頂層圖如圖4.3.5</p><p>  圖4.3.5 雙口RAM</p><p><b>  源代碼如下

94、:</b></p><p>  LIBRARY ieee; </p><p>  USE ieee.std_logic_1164.all; </p><p>  LIBRARY altera_mf; </p><p>  USE altera_mf.all; </p><p>  ENTITY  lpm_r

95、am_dp IS </p><p><b>  PORT </b></p><p><b>  ( </b></p><p>  clock: IN STD_LOGIC ; </p><p>  data: IN STD_LOGIC_VECTOR (7 DOWNTO 0); </p&g

96、t;<p>  rdaddress: IN STD_LOGIC_VECTOR (7 DOWNTO 0); </p><p>  wraddress: IN STD_LOGIC_VECTOR (7 DOWNTO 0); </p><p>  wren: IN STD_LOGIC := '1'; </p><p>  q:

97、 OUT STD_LOGIC_VECTOR (7 DOWNTO 0) </p><p><b>  ); </b></p><p>  END lpm_ram_dp; </p><p>  ARCHITECTURE SYN OF lpm_ram_dp IS </p><p>  SIGNAL sub_wire0: ST

98、D_LOGIC_VECTOR (7 DOWNTO 0); </p><p>  COMPONENT altsyncram </p><p>  GENERIC ( </p><p>  address_aclr_a: STRING; </p><p>  address_aclr_b: STRING; </p><

99、p>  address_reg_b: STRING; </p><p>  indata_aclr_a: STRING; </p><p>  intended_device_family: STRING; </p><p>  lpm_type: STRING; </p><p>  numwords_a: NAT

100、URAL; </p><p>  numwords_b: NATURAL; </p><p>  operation_mode: STRING; </p><p>  outdata_aclr_b: STRING; </p><p>  outdata_reg_b: STRING; </p><p> 

101、 power_up_uninitialized: STRING; </p><p>  read_during_write_mode_mixed_ports: STRING; </p><p>  widthad_a: NATURAL; </p><p>  widthad_b: NATURAL; </p><p>  wid

102、th_a: NATURAL; </p><p>  width_b: NATURAL; </p><p>  width_byteena_a: NATURAL; </p><p>  wrcontrol_aclr_a: STRING </p><p><b>  ); </b></p>&l

103、t;p><b>  PORT ( </b></p><p>  wren_a: IN STD_LOGIC ; </p><p>  clock0: IN STD_LOGIC ; </p><p>  address_a: IN STD_LOGIC_VECTOR (7 DOWNTO 0); </p><p> 

104、 address_b: IN STD_LOGIC_VECTOR (7 DOWNTO 0); </p><p>  q_b: OUT STD_LOGIC_VECTOR (7 DOWNTO 0); </p><p>  data_a: IN STD_LOGIC_VECTOR (7 DOWNTO 0) </p><p><b>  ); </b>

105、;</p><p>  END COMPONENT; </p><p><b>  BEGIN </b></p><p>  q<= sub_wire0(7 DOWNTO 0); </p><p>  altsyncram_component : altsyncram </p><p>  

106、GENERIC MAP ( </p><p>  address_aclr_a => "NONE", </p><p>  address_aclr_b => "NONE", </p><p>  address_reg_b => "CLOCK0", </p><p&g

107、t;  indata_aclr_a => "NONE", </p><p>  intended_device_family => "Cyclone", </p><p>  lpm_type => "altsyncram", </p><p>  numwords_a => 256

108、, </p><p>  numwords_b => 256, </p><p>  operation_mode => "DUAL_PORT", </p><p>  outdata_aclr_b => "NONE", </p><p>  outdata_reg_b => &

109、quot;CLOCK0", </p><p>  power_up_uninitialized => "FALSE", </p><p>  read_during_write_mode_mixed_ports => "DONT_CARE", </p><p>  widthad_a => 8, &

110、lt;/p><p>  widthad_b => 8, </p><p>  width_a => 8, </p><p>  width_b => 8, </p><p>  width_byteena_a => 1, </p><p>  wrcontrol_aclr_a => "

111、;NONE" ) </p><p>  PORT MAP ( </p><p>  wren_a => wren, </p><p>  clock0 => clock, </p><p>  address_a => wraddress, </p><p>  address_b =>

112、; rdaddress, </p><p>  data_a => data, </p><p>  q_b => sub_wire0 </p><p><b>  ); </b></p><p><b>  END SYN; </b></p><p>  4.4

113、 數(shù)據(jù)顯示模塊設(shè)計(jì)</p><p>  根據(jù)要求,每一次數(shù)據(jù)采集通過按鍵來啟動(dòng)。采集完128點(diǎn)數(shù)據(jù)以后,數(shù)據(jù)采集單元向單片機(jī)發(fā)出中斷請(qǐng)求,單片機(jī)通過中斷服務(wù)程序從雙口RAM中讀入128點(diǎn)采集數(shù)據(jù);將讀入的128點(diǎn)采集數(shù)據(jù)存放在單片機(jī)高128字節(jié)內(nèi)部RAM中;對(duì)128字節(jié)數(shù)據(jù)進(jìn)行處理,在LCD上顯示與采集數(shù)據(jù)對(duì)應(yīng)的波形。根據(jù)數(shù)據(jù)采集的工作過程,高速數(shù)據(jù)采集系統(tǒng)控制軟件分為主程序、INT0中斷服務(wù)程序、INT1中斷服

114、務(wù)程序三部分。</p><p><b>  4.4.1 主程序</b></p><p>  主要完成C8051F360單片機(jī)內(nèi)部資源初始化、在LCD上顯示采集數(shù)據(jù)的波形,其主程序流程圖如圖4.4.1所示。</p><p>  圖4.4.1 主程序流程圖</p><p>  4.4.2 INT0中斷服務(wù)程序 </p&

115、gt;<p>  INT0中斷服務(wù)程序的功能是讀入鍵值,執(zhí)行功能。本數(shù)據(jù)采集只定義了一個(gè)功能鍵KEY0,當(dāng)該鍵有效時(shí),P3.2引腳產(chǎn)生一個(gè)負(fù)脈沖。</p><p>  4.4.3 INT1中斷服務(wù)程序 </p><p>  當(dāng)數(shù)據(jù)采集系統(tǒng)完成128點(diǎn)數(shù)據(jù)采集后,將啟動(dòng)一次外部中斷INT1。INT1中斷服務(wù)程序的功能就是從FPGA的雙口RAM中讀取128字節(jié)的采集的數(shù)據(jù),并將其

116、存放在單片機(jī)內(nèi)部RAM的高128字節(jié)(地址80H~FFH)。讀取完畢以后,設(shè)置一標(biāo)志。</p><p><b>  源程序如下:</b></p><p>  INT1: PUSH A</p><p><b>  PUSH PSW</b></p><p><b>  PUSH DPH

117、</b></p><p><b>  PUSH DPL</b></p><p>  MOV DPTR,#CS1</p><p>  MOV R7,#80H</p><p>  MOV R0,#80H</p><p>  INTT1: MOVX A,@DPTR<

118、/p><p>  MOV @R0,A</p><p>  INC R0</p><p>  INC DPTR</p><p>  DJNZ R7,INTT1</p><p>  SETB XSBZ</p><p>  POP DPL&l

119、t;/p><p>  POP DPH</p><p>  POP PSW</p><p>  POP A</p><p><b>  RETI</b></p><p><b>  4.5軟件仿真</b></p><p>

120、;  4.5.1三態(tài)緩沖器模塊TS8</p><p>  圖4.5.1三態(tài)緩沖器仿真圖 </p><p>  三態(tài)緩沖器模塊TS8功能:lpm-ram-dp的數(shù)據(jù)輸出端q[7..0]無三態(tài)輸出功能,為了能夠與單片機(jī)數(shù)據(jù)總線相連,數(shù)據(jù)輸出需要加一個(gè)三態(tài)門TS8,以實(shí)現(xiàn)輸出三態(tài)控制。</p><p>  4.5.2分頻器模塊fredivid</p><

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論