2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩51頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  1 緒論 </b></p><p>  1.1 課題研究背景及其意義</p><p>  在現(xiàn)代工業(yè)生產(chǎn)和科學(xué)研究中,數(shù)據(jù)的采集和處理作為所有生產(chǎn)、實(shí)驗(yàn)活動(dòng)正常進(jìn)行的前提條件,一直扮演著十分重要的角色。在生產(chǎn)過(guò)程中,應(yīng)用這一系統(tǒng)可對(duì)生產(chǎn)現(xiàn)場(chǎng)的工藝參數(shù)進(jìn)行采集、監(jiān)視和記錄,為提高產(chǎn)品質(zhì)量、降低成本提供信息和手段。在科學(xué)研究中,應(yīng)用數(shù)據(jù)采

2、集系統(tǒng)可獲得大量的動(dòng)態(tài)信息,是研究瞬間物理過(guò)程的有力工具,也是獲取科學(xué)奧秘的重要手段之一,隨著技術(shù)的發(fā)展,各種各樣基于數(shù)字化的產(chǎn)品不斷推陳出新,給我們的生活帶來(lái)了極大的好處。而隨著科學(xué)技術(shù)的日益進(jìn)步,人們對(duì)數(shù)據(jù)采集系統(tǒng)的即時(shí)性和精度提出了越來(lái)越高的要求。傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)通常采用單片機(jī)作為微控制器,控制模數(shù)轉(zhuǎn)換器(ADC)及其他外圍設(shè)備的工作。但由于單片機(jī)運(yùn)行的時(shí)鐘頻率較低,并且單片機(jī)是基于順序語(yǔ)言的,各種功能都要靠軟件的累加來(lái)實(shí)現(xiàn),這

3、極大地影響了系統(tǒng)的性能,已無(wú)法滿足對(duì)數(shù)據(jù)的高速采集的要求[1]。</p><p>  近幾年隨著微電子技術(shù)的發(fā)展,電子自動(dòng)化設(shè)計(jì)工具的普及,大規(guī)模可編程邏輯器件也越來(lái)越得到廣泛的實(shí)際應(yīng)用??删幊踢壿嬈骷粌H使系統(tǒng)趨于小型化、集成化和高可靠性,而且具有用戶可編程特性,這些優(yōu)點(diǎn)將縮短系統(tǒng)設(shè)計(jì)周期,減小設(shè)計(jì)成本,降低設(shè)計(jì)風(fēng)險(xiǎn)[2]。不僅如此,部分器件除具有用戶可編程能力外,還具有簡(jiǎn)單的在線可編程能力。其中FPGA編程則

4、顯得更加靈活,F(xiàn)PGA時(shí)鐘頻率高,內(nèi)部延時(shí)小,運(yùn)行速度快,全部控制邏輯由硬件完成。它本身集采樣控制、處理、緩存、傳輸控制、通信于一個(gè)芯片內(nèi),編程配置靈活、開(kāi)發(fā)周期短、系統(tǒng)簡(jiǎn)單,具有高集成度、體積小、低功耗、I/O端口多、在系統(tǒng)編程、速度快、效率高、組成形式靈活等優(yōu)點(diǎn),可以集成外圍控制、譯碼和接口電路。在高速多路數(shù)據(jù)采集系統(tǒng)中,F(xiàn)PGA可以克服上述單片機(jī)的不足之處,滿足系統(tǒng)對(duì)實(shí)時(shí)性和同步性的要求,使數(shù)據(jù)采集性能更加優(yōu)越并且穩(wěn)定。因此,具有

5、一定的現(xiàn)實(shí)意義。</p><p>  1.2 國(guó)內(nèi)外發(fā)展現(xiàn)狀</p><p>  高速數(shù)據(jù)的采集與處理一直是生產(chǎn)實(shí)踐研究與應(yīng)用領(lǐng)域的一個(gè)熱點(diǎn)和難點(diǎn)。隨著微電子制造工藝水平的飛速提高,目前國(guó)內(nèi)外對(duì)數(shù)據(jù)采集系統(tǒng)的高性能方面的研究上取得了很大的成就,ADC同計(jì)算機(jī)一樣,也經(jīng)歷了低速到高速的發(fā)展過(guò)程[3]。采樣通道數(shù)由單通道發(fā)展到雙通道、多通道,分辨率、精度逐步提高,Texas Instrume

6、nts 公司的 ADS7881、Analog Devices 公司的 AD7621、Linear Technology 公司的 LTC1403a以及Maxim 公司的TelASIC TC1410都達(dá)到了很高的性能指標(biāo),轉(zhuǎn)換速率由2M/s到240M/s不等,某些高性能的A/D芯片己經(jīng)達(dá)到了上GHZ的采樣率。而在數(shù)據(jù)處理的微處理器芯片上,最初的數(shù)據(jù)采集系統(tǒng)以8位單片機(jī)為核心,隨著微電子技術(shù)的不斷發(fā)展,單片機(jī)也發(fā)展到十六位、三十二位,另一方面

7、,DSP和FPGA等速度更快,性能更佳的嵌入式芯片也逐步加入數(shù)據(jù)采集系統(tǒng)的行列[4]。</p><p>  總之,伴隨著高性能微處理器的采用和微電子技術(shù)的不斷發(fā)展,高速數(shù)據(jù)采集系統(tǒng)的性能將逐漸趨于完善和穩(wěn)定。</p><p>  2 系統(tǒng)的理論知識(shí)及方案分析</p><p>  2.1 高速數(shù)據(jù)采集系統(tǒng)的簡(jiǎn)介</p><p>  高速數(shù)據(jù)

8、采集系統(tǒng)廣泛應(yīng)用于軍事、航天、航空、鐵路、機(jī)械等諸多行業(yè)。區(qū)別于中速及低速數(shù)據(jù)采集系統(tǒng),高速數(shù)據(jù)采集系統(tǒng)內(nèi)部包含高速電路,電路系統(tǒng)1/3以上數(shù)字邏輯電路的時(shí)鐘頻率>=50MHz;對(duì)于并行采樣系統(tǒng),采樣頻率達(dá)到50MHz,并行8bit以上;對(duì)于串行采樣系統(tǒng),采樣頻率達(dá)到200MHz,目前廣泛使用的高速數(shù)據(jù)采集系統(tǒng)采樣頻率一般在200KS/s~100MS/s。一般來(lái)說(shuō),高數(shù)數(shù)據(jù)采集系統(tǒng)的任務(wù)是采集各種類型傳感器輸出的模擬信號(hào)并轉(zhuǎn)換成數(shù)

9、字信號(hào)后輸入計(jì)算機(jī)處理,得到特定的數(shù)據(jù)結(jié)果[5],同時(shí)將計(jì)算得到波形和數(shù)值進(jìn)行顯示,對(duì)各種物理量狀態(tài)監(jiān)控。</p><p>  傳統(tǒng)意義上的數(shù)據(jù)采集系統(tǒng)是模擬量與數(shù)字量之間的轉(zhuǎn)換接口,它在自動(dòng)測(cè)試、生產(chǎn)控制、通信、信號(hào)處理領(lǐng)域占有極其重要的地位。而高速數(shù)據(jù)采集系統(tǒng)則是航天、雷達(dá)、制導(dǎo)、測(cè)控、動(dòng)態(tài)監(jiān)測(cè)等高技術(shù)領(lǐng)域的關(guān)鍵技術(shù)[6]。高速數(shù)據(jù)采集系統(tǒng)中的采樣頻率一般從幾MHZ到幾百M(fèi)HZ不等,而微機(jī)系統(tǒng)由于操作速度的限

10、制,不能夠直接參與數(shù)據(jù)傳輸。為此,在高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)中提出了在高速A/D轉(zhuǎn)換器與微機(jī)之間采用緩存器作為緩沖存儲(chǔ)[7]。當(dāng)模擬信號(hào)經(jīng)過(guò)高速A/D轉(zhuǎn)換器數(shù)字化后,先直接送緩存區(qū)暫存,然后存儲(chǔ)的數(shù)據(jù)再送至微機(jī)進(jìn)行相關(guān)的處理、運(yùn)算。其中,緩存區(qū)是以高速方式接收A/D轉(zhuǎn)換后的數(shù)字信號(hào),而又以相對(duì)低速的方式將數(shù)據(jù)送給計(jì)算機(jī),用它的“快進(jìn)慢出”來(lái)解決高速A/D轉(zhuǎn)換與低速計(jì)算機(jī)數(shù)據(jù)傳輸之間的矛盾[8]。</p><p>&

11、lt;b>  2.2 采樣定理</b></p><p>  可以證明,為了正確無(wú)誤的將圖2.1中所示的采樣信號(hào)Vs表示模擬信號(hào)Vi,必須滿足</p><p><b>  ?s≥2?imax</b></p><p>  式中,?s為采樣頻率,?imax為輸入信號(hào)Vi的最高頻率分量的頻率。上式就是所謂的采樣定理[9]。</

12、p><p><b>  圖2.1 采樣定理</b></p><p>  因此,A/D轉(zhuǎn)換器工作室的采樣頻率必須高于輸入信號(hào)頻率的兩倍以上,采樣頻率提高以后,留給A/D轉(zhuǎn)換器每次進(jìn)行轉(zhuǎn)換的時(shí)間也相應(yīng)縮短了,這就要求轉(zhuǎn)換電路必須具備更高的工作速度[10]。因此,不能無(wú)限制的提高采樣速率,通常取?s=(3~5)?imax就能夠滿足系統(tǒng)要求。</p><p&g

13、t;  2.3 模數(shù)轉(zhuǎn)換(A/D)原理</p><p>  1. A/D轉(zhuǎn)換的一般步驟</p><p>  模數(shù)轉(zhuǎn)換(Analog-to-digital)是將模擬電量轉(zhuǎn)化為數(shù)字電量,使輸出的數(shù)字量與輸入的模擬電量成正比的過(guò)程。實(shí)現(xiàn)這種轉(zhuǎn)換功能的電路成為模數(shù)轉(zhuǎn)換器A/D轉(zhuǎn)換器的輸入電壓信號(hào)Vi在時(shí)間上是連續(xù)量,而輸出的數(shù)字量是離散的,所以進(jìn)行轉(zhuǎn)換時(shí)必須按一定的頻率對(duì)輸入電壓信號(hào)Vi進(jìn)行采樣

14、,得到采樣信號(hào)Vs,并在下一次采樣脈沖到來(lái)之前是Vs保持不變,從而保證將采樣值轉(zhuǎn)化成穩(wěn)定的數(shù)字量。因此要將連續(xù)的模擬信號(hào)轉(zhuǎn)換成離散的數(shù)字信號(hào),必須經(jīng)過(guò)采樣、保持、量化和編碼四個(gè)步驟[11]。</p><p><b>  (1)采樣與保持</b></p><p>  采樣是將時(shí)間上連續(xù)變化的模擬量轉(zhuǎn)換成時(shí)間上離散的模擬量,如圖2.2所示。由于采樣時(shí)間極短,所以采樣信號(hào)V

15、s為一串?dāng)嗬m(xù)的窄脈沖。然而要把一個(gè)采樣信號(hào)數(shù)字化需要一定時(shí)間,因此在兩次采樣之間應(yīng)將采樣的模擬信號(hào)存儲(chǔ)起來(lái)以便進(jìn)行數(shù)字化,這一過(guò)程稱為保持[12]。</p><p><b> ?。?)量化和編碼</b></p><p>  數(shù)字信號(hào)不僅在時(shí)間上是離散的,而且在數(shù)值上的變化也是不連續(xù)的。也就是說(shuō),任何一個(gè)數(shù)字量的大小都是以某個(gè)最小數(shù)量單位的整數(shù)倍來(lái)表示的。因此,在用數(shù)字

16、量表示模擬量時(shí),也必須把它轉(zhuǎn)換成這個(gè)最小數(shù)量單位的整數(shù)倍,這一過(guò)程成為量化,所規(guī)定的最小數(shù)量單位成為量化單位[13]。用量化二進(jìn)制代碼結(jié)果表示模擬量成為編碼,如圖2.3所示,這個(gè)二進(jìn)制代碼就是A/D轉(zhuǎn)換器的輸出。</p><p>  圖2.2 采樣與保持圖 圖2.3 量化和編碼</p><p>  2. A/D轉(zhuǎn)換器的主要技術(shù)指標(biāo)</p>

17、;<p><b> ?。?)轉(zhuǎn)換精度</b></p><p>  單片集成A/D的轉(zhuǎn)換精度一般使用分辨率和轉(zhuǎn)換誤差來(lái)描述。</p><p> ?、貯/D轉(zhuǎn)換器的分辨率以輸出二進(jìn)制(或十進(jìn)制)數(shù)的位數(shù)表示,它表明A/D轉(zhuǎn)換器對(duì)輸入信號(hào)的分辨能力[14]。從理論上講,n位輸出的A/D轉(zhuǎn)換器能區(qū)分2n個(gè)不同等級(jí)的輸入模擬電壓,能區(qū)分輸入電壓的最小值為滿量程輸入

18、的1/2n。當(dāng)最大輸入電壓一定是,輸出位數(shù)越多,量化單位越小,分辨率越高。例如A/D轉(zhuǎn)換器的輸出為8位二進(jìn)制數(shù),輸入信號(hào)的最大值為5V,那么這個(gè)轉(zhuǎn)換器應(yīng)能區(qū)分輸入信號(hào)的最小電壓為5/28V=19.53mV。</p><p><b> ?、谵D(zhuǎn)換誤差</b></p><p>  轉(zhuǎn)換誤差表示A/D轉(zhuǎn)換器實(shí)際輸出的數(shù)字量和理論上的輸出數(shù)字量之間的差別,通常是以相對(duì)誤差的形式

19、給出的,常用最低有效位的倍數(shù)表示。例如給出相對(duì)誤差≤±ULSB/2,這表明實(shí)際輸出的數(shù)字量和理論上應(yīng)得到的輸出數(shù)字量之間的誤差小于最低有效位的半個(gè)字。</p><p> ?。?)轉(zhuǎn)換時(shí)間和轉(zhuǎn)換率</p><p>  轉(zhuǎn)換時(shí)間是A/D完成一次轉(zhuǎn)換所需要的時(shí)間。一般轉(zhuǎn)換速度越快越好,常見(jiàn)有高速(轉(zhuǎn)換時(shí)間<1us),中速(轉(zhuǎn)換時(shí)間<1ms)和低速(轉(zhuǎn)換時(shí)間<1s)等,

20、如果轉(zhuǎn)換時(shí)間為100us,則轉(zhuǎn)換率為10KHZ。</p><p>  2.4 系統(tǒng)的性能要求分析</p><p>  隨著科學(xué)技術(shù)的不斷進(jìn)步,高速系統(tǒng)越來(lái)越受到市場(chǎng)的青睞,某些低速控制系統(tǒng)已無(wú)法滿足社會(huì)需求。因此,選用FPGA作為主控制芯片,結(jié)合高速AD和USB傳輸模塊來(lái)實(shí)現(xiàn)對(duì)外部數(shù)據(jù)的高速采集,不僅可以使系統(tǒng)的各項(xiàng)功能達(dá)標(biāo),還具有較大的現(xiàn)實(shí)意義。</p><p>

21、;  該設(shè)計(jì)中,為了使高速數(shù)據(jù)采集和高速數(shù)據(jù)傳輸兩個(gè)過(guò)程相協(xié)調(diào),系統(tǒng)采用512×16bits的FIFO作為緩存,首先將AD轉(zhuǎn)換后的數(shù)字信號(hào)按地址逐次存入FIFO中,然后USB控制器再按地址逐位讀取FIFO中存儲(chǔ)的數(shù)字信號(hào),通過(guò)USB接口發(fā)送給上位機(jī)并顯示。</p><p>  傳統(tǒng)的高速數(shù)據(jù)采集系統(tǒng)通常使用串口進(jìn)行數(shù)據(jù)傳輸,實(shí)現(xiàn)“快進(jìn)慢出”要犧牲很大一部分存儲(chǔ)空間,增加多余的外圍電路,而本系統(tǒng)采用的US

22、B數(shù)據(jù)傳輸方式,大大提升了數(shù)據(jù)傳輸速率,改善了系統(tǒng)性能,基本可以實(shí)現(xiàn)數(shù)據(jù)的同步轉(zhuǎn)換,同步傳輸。故而不需要大容量的SDRAM進(jìn)行輔助緩存,大大節(jié)省了硬件電路空間和制作成本。</p><p>  3 系統(tǒng)硬件設(shè)計(jì) </p><p>  3.1 系統(tǒng)總體電路設(shè)計(jì)</p><p>  本設(shè)計(jì)主要由數(shù)據(jù)采集模塊、核心控制電路、USB控制模塊、顯示模塊和上位機(jī)五個(gè)部分組成,

23、構(gòu)成如圖3.1所示的高速數(shù)據(jù)采集系統(tǒng)。</p><p>  圖3.1 系統(tǒng)總體框圖</p><p>  該高速數(shù)據(jù)采集系統(tǒng)有FPGA、USB控制器、AD數(shù)據(jù)采集、上位機(jī)和數(shù)碼管顯示幾個(gè)電路組成。其中,高速AD采用AD9280芯片,以50MHZ的頻率將輸入信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)發(fā)送給FPGA,F(xiàn)PGA將轉(zhuǎn)換后的信號(hào)存入FIFO中進(jìn)行緩存,USB控制器將FIFO中的數(shù)據(jù)按地址逐次讀取并發(fā)送給上位機(jī)

24、,下面將分別對(duì)各個(gè)模塊電路的設(shè)計(jì)逐一進(jìn)行說(shuō)明。</p><p>  1)FPGA是整個(gè)系統(tǒng)的控制中心,大部分程序都要通過(guò)FPGA來(lái)實(shí)現(xiàn),它要將AD傳來(lái)的數(shù)據(jù)經(jīng)過(guò)處理后發(fā)送給FIFO,并最終通過(guò)USB傳送給上位機(jī);</p><p>  2)USB控制器是FPGA與USB接口間的橋梁,USB控制器將FIFO中的數(shù)據(jù)讀出后通過(guò)USB接口發(fā)送給上位機(jī);</p><p>  

25、3)A/D數(shù)據(jù)采集電路是將外部模擬輸入數(shù)據(jù)轉(zhuǎn)換成數(shù)據(jù)信號(hào),并發(fā)送給FPGA;</p><p>  4)上位機(jī)是人機(jī)交互的友好界面,系統(tǒng)的數(shù)據(jù)采集信號(hào)將通過(guò)這里發(fā)出;</p><p>  5)數(shù)碼管顯示電路將輸入的電壓值大小顯示在數(shù)碼管上。</p><p>  3.2 電源電路設(shè)計(jì)</p><p>  本系統(tǒng)中的FPGA采用3.3V電壓供電,

26、PLL鎖相環(huán)需要1.2V電壓供電,將5V直流電壓輸入通過(guò)三段穩(wěn)壓芯片進(jìn)行兩級(jí)穩(wěn)壓即可得到。</p><p><b>  1. 芯片選型</b></p><p>  目前市面上的穩(wěn)壓芯片種類繁多,主要分為兩種,一種輸出電壓是固定的,稱為固定輸出三端穩(wěn)壓器,另一種輸出電壓是可調(diào)的,稱為可調(diào)輸出三端穩(wěn)壓器,其基本原理相同,均采用串聯(lián)型穩(wěn)壓電路。在線性集成穩(wěn)壓器中,由于三端穩(wěn)

27、壓器只有三個(gè)引出端子,具有外接元件少,使用方便,性能穩(wěn)定,價(jià)格低廉等優(yōu)點(diǎn),因而得到廣泛應(yīng)用[15]。本設(shè)計(jì)中選用低壓差穩(wěn)壓芯片LM1085和AMS1117,分別通過(guò)固定電路即可得到所需3.3V和1.2V穩(wěn)定電壓輸出,外圍電路十分簡(jiǎn)單。</p><p><b>  2.電路設(shè)計(jì)</b></p><p>  兩級(jí)穩(wěn)壓電路如下圖3.2所示:</p><p

28、>  圖3.2 兩級(jí)穩(wěn)壓電路</p><p>  3.3 FPGA核心控制電路</p><p>  為了滿足系統(tǒng)的各項(xiàng)性能指標(biāo),本設(shè)計(jì)選用FPGA作為主控制芯片。 FPGA(Field-Programmable Gate Array),即現(xiàn)場(chǎng)可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)

29、的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)[16]。另外,它強(qiáng)大的并行處理能力可以讓程序更加高效率的運(yùn)行,滿足了本設(shè)計(jì)高速數(shù)據(jù)采集這一要求。</p><p>  3.3.1 EP2C5Q208C8N芯片的引腳</p><p>  第二代Cyclone系列芯片與第一代相比,成本更低,容量更大,特性更豐富。它采用1.2V、90nm、低K值絕緣工藝,裸片尺寸被盡可能最

30、小化,本設(shè)計(jì)中選用EP2C5Q208C8N作為控制芯片。</p><p>  圖3.3 EP2C5Q208C8N</p><p>  如圖3.3所示,其大量的邏輯單元可以滿足該設(shè)計(jì)的需求。</p><p>  FPGA的管腳主要包括:用戶I/O、配置管腳、電源、時(shí)鐘及特殊應(yīng)用管腳。其中有些管腳還有復(fù)用功能[17]。</p><p><b

31、>  1)用戶I/O</b></p><p>  I/O_NUM:可以用作輸入或輸出,或者雙向口,同時(shí)可作為L(zhǎng)VDS差分對(duì)的負(fù)端;</p><p>  DATA0:FPGA的串行數(shù)據(jù)輸入引腳,連接至配置器件的串行數(shù)據(jù)輸出管腳;</p><p>  DCLK:FPGA的串行時(shí)鐘輸出引腳,為配置器件提供串行時(shí)鐘信號(hào);</p><p&

32、gt;  nCSO:FPGA的片選信號(hào)輸出引腳,連接至配置器件的ASDI管腳;</p><p>  ASDO:FPGA的串行數(shù)據(jù)輸出引腳,連接至配置器件的ASDI管腳;</p><p>  nCEO:FPGA下載器件使能輸出引腳;</p><p>  nCE:下載鏈器件使能輸入,連接至上一個(gè)器件的nCEO;</p><p>  nCONFIG

33、:用戶模式配置起始信號(hào);</p><p>  nSTATUS:配置狀態(tài)信號(hào);CONF_DONE:配置結(jié)束信號(hào);</p><p><b>  2)電源管腳</b></p><p>  VCCINT:內(nèi)核電壓,通常與FPGA芯片所采用的工藝有關(guān);</p><p>  VCCIO:端口電壓。一般為3.3V,還可以支持選擇多種電

34、壓,如5V、1.8V、1.5V等;</p><p>  VREF:參考電壓;</p><p><b>  GND:信號(hào)地;</b></p><p><b>  3)時(shí)鐘管腳</b></p><p>  CLKnum(LVDSCLKnump&n):鎖相環(huán)時(shí)鐘輸入。支持LVDS時(shí)鐘輸入,p接正端

35、,n接負(fù)端,num表示PLL序號(hào);</p><p>  PLLnum_OUTp&n(I/O):鎖相環(huán)時(shí)鐘輸入。支持LVDS時(shí)鐘輸入,p接正端,n接負(fù)端,num表示PLL序號(hào);</p><p><b>  3)特殊管腳</b></p><p>  VCCPD:用于選擇驅(qū)動(dòng)電路;</p><p>  VCCSEL:用

36、于控制配置管腳和 鎖相環(huán)相關(guān)的輸入緩沖電壓;</p><p>  PORSEL:上電復(fù)位選項(xiàng);</p><p>  NIOPULLUP:用于控制配置時(shí)所使用的用戶I/O的內(nèi)部上拉電阻是否工作;</p><p>  TEMPDIODEn/p:用于關(guān)聯(lián)溫度敏感二極管。</p><p>  3.3.2 復(fù)位電路</p><p&

37、gt;  FPGA有三種復(fù)位方式:一種是直接硬件復(fù)位,代碼重新配置;第二種是軟件復(fù)位,編寫復(fù)位的程序;第三種是和51的板子配合使用,通過(guò)51的復(fù)位來(lái)復(fù)位 FPGA。 </p><p>  1)硬件復(fù)位:硬件復(fù)位接到 FPGA 的 nCONFIG 引腳上,按下此鍵,F(xiàn)PGA的代碼重新從 EEPROM中配置;</p><p>  2)軟件復(fù)位:軟件復(fù)位是用戶在編寫代碼的時(shí)候的那個(gè) reset

38、引腳,只是按照代碼來(lái)進(jìn)行復(fù)位;</p><p>  3)51的復(fù)位:nCONFIG 通過(guò)一個(gè)二極管和 51 的復(fù)位反接,當(dāng)配合 51 的板子使用時(shí),51 作為主控制器進(jìn)行全部復(fù)位,但是 FPGA 作為協(xié)處理器的復(fù)位不能影響 51。</p><p><b>  圖3.4 復(fù)位電路</b></p><p>  該系統(tǒng)采用一個(gè)按鍵進(jìn)行硬件復(fù)位,如圖3

39、.4所示,按下S1鍵后所有FPGA的代碼重新從EPCS1里面讀到FPGA,程序重新開(kāi)始運(yùn)行,該引腳接到FPGA的nCONFIG引腳,該引腳為低電平時(shí)有效。</p><p><b>  時(shí)鐘電路</b></p><p>  時(shí)鐘電路用來(lái)產(chǎn)生FPGA工作是所必須的時(shí)鐘信號(hào),F(xiàn)PGA本身就是一個(gè)復(fù)雜的時(shí)序電路,為保證FPGA在時(shí)鐘信號(hào)的控制下嚴(yán)格地按時(shí)序執(zhí)行指令,時(shí)鐘的頻率

40、和穩(wěn)定性顯得至關(guān)重要。</p><p>  EP2C5Q208N一共有6個(gè)全局時(shí)鐘接口,分別是FPGA的23、24、27、28、132、131引腳。在單獨(dú)使用FPGA時(shí),只能用外部晶振作為全局時(shí)鐘,本系統(tǒng)采用50MHZ的有源晶振為系統(tǒng)提供時(shí)鐘信號(hào),通過(guò)CLK0口為FPGA提供時(shí)鐘信號(hào),保證了整個(gè)系統(tǒng)的正常運(yùn)行,電路如圖3.5所示。</p><p><b>  圖3.5 時(shí)鐘電路&

41、lt;/b></p><p>  3.3.4鎖相環(huán)(PLL)電路</p><p>  PLL,即鎖相環(huán)。當(dāng)一個(gè)外部時(shí)鐘輸入到PLL內(nèi)部經(jīng)過(guò)處理后,在PLL的輸出端口就可以得到一定范圍的時(shí)鐘頻率。由于PLL輸出得到的時(shí)鐘不僅頻率和相位比較穩(wěn)定,而且其時(shí)鐘網(wǎng)絡(luò)延時(shí)也相比內(nèi)部邏輯產(chǎn)生的分頻時(shí)鐘要小得多,因此,在很多工程設(shè)計(jì)中都會(huì)應(yīng)用到PLL鎖相環(huán),其硬件電路如圖3.6所示。</p&

42、gt;<p>  圖3.6 PLL電路</p><p>  3.3.5 JTAG和AS串行配置下載電路</p><p>  與CPLD不同,F(xiàn)PGA是基于RAM結(jié)構(gòu)的,所以FPGA每次上電都需要重新配置,而不像CPLD那樣能斗直接運(yùn)行固化在芯片內(nèi)的代碼。因此,F(xiàn)PGA器件有三類配置下載方式:主動(dòng)配置方式、被動(dòng)配置方式和基于JTAG的配置方式[18]。</p>&

43、lt;p><b>  1)AS配置方式</b></p><p>  AS為FPGA器件引導(dǎo)配置操作過(guò)程,它控制著外部存儲(chǔ)器和初始化過(guò)程。使用Altera串行配置器件來(lái)完成,Cyclone器件處于主動(dòng)地位,配置器件處于從屬地位。配置數(shù)據(jù)通過(guò)DATA0引腳送入FPGA。配置數(shù)據(jù)被同步在DCLK輸入上,1個(gè)時(shí)鐘周期傳送一位數(shù)據(jù),電路如圖3.7所示。</p><p> 

44、 2)JTAG配置方式</p><p>  JTAG接口是一個(gè)業(yè)界標(biāo)準(zhǔn),主要用于芯片測(cè)試等功能,使用IEEE Std 1149.1聯(lián)合邊界掃描接口引腳,支持JAM STAPL標(biāo)準(zhǔn),可以使用Altera下載電纜或主控器來(lái)完成,電路如圖3.8所示。</p><p>  FPGA在正常工作時(shí),他的配置數(shù)據(jù)存儲(chǔ)在SRAM中,加電時(shí)須重新下載。在實(shí)驗(yàn)系統(tǒng)中,通常用計(jì)算機(jī)或控制器進(jìn)行調(diào)試,因此可以使用

45、PS。在實(shí)驗(yàn)系統(tǒng)中,多數(shù)情況下必須有FPGA主動(dòng)引導(dǎo)配置操作過(guò)程,這是FPGA將主動(dòng)從外圍專用存儲(chǔ)芯片中獲得配置數(shù)據(jù),而此芯片中FPGA配置信息是用普通編程器將設(shè)計(jì)所得的pof格式的文件燒錄進(jìn)去。 </p><p>  圖3.7 AS配置電路</p><p>  圖3.8 JTAG電路</p><p>  SDRAM程序存儲(chǔ)電路</p><p&

46、gt;  在信息處理中,F(xiàn)PGA經(jīng)常要處理大量數(shù)據(jù),這就需要大容量的存儲(chǔ)器作為輔助條件。同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器(SDRAM)相比SRAM容量大、結(jié)構(gòu)復(fù)雜,在AS配置下載方式中,可以為FPGA提供程序存儲(chǔ)空間。 </p><p>  三星公司的K4S281632B的外部時(shí)鐘速率可在一定頻率范圍內(nèi)連續(xù)變化,最高頻率可達(dá)133MHZ,每塊SDRAM內(nèi)含四個(gè)獨(dú)立的BANK;它的基本存儲(chǔ)單元都是按照陣列排列的,它的數(shù)據(jù)位寬和整

47、個(gè)存儲(chǔ)器的位寬相同,同時(shí)支持多種讀寫模式;所有的輸入信號(hào)均以時(shí)鐘的上升沿為基準(zhǔn),這使得地址、控制和數(shù)據(jù)輸入到緩沖器的時(shí)間可一直保持,且建立和保持的時(shí)間很長(zhǎng);該器件使用完全流水線型內(nèi)部結(jié)構(gòu);另外,它還具有突發(fā)長(zhǎng)度可編程、延遲可編程等優(yōu)點(diǎn),這些優(yōu)點(diǎn)使得K4S281632B能廣泛的應(yīng)用與寬頻帶、高性能存儲(chǔ)器應(yīng)用系統(tǒng)[19]。</p><p>  K4S281632B的應(yīng)用電路如圖3.9所示:</p>&l

48、t;p>  圖3.9 SDRAM程序存儲(chǔ)電路</p><p>  3.4 數(shù)據(jù)采集電路</p><p>  本系統(tǒng)要求通過(guò)高速AD對(duì)由信號(hào)發(fā)生器輸入的波形信號(hào)進(jìn)行采樣,并以1M的速率發(fā)送給上位機(jī),因此設(shè)計(jì)中可采用AD9280芯片。</p><p>  AD9280是單芯片、單電源、8bit、32MSPS模數(shù)轉(zhuǎn)換器;內(nèi)部集成了采樣保持放大器和電源基準(zhǔn)源。AT9

49、280使用多級(jí)差分流水線架構(gòu)保證了32MSPS數(shù)據(jù)轉(zhuǎn)換數(shù)率下全溫度范圍內(nèi)無(wú)失碼,完全可以滿足系統(tǒng)1MSPS的要求[20]。</p><p>  3.4.1 AD9280的內(nèi)部結(jié)構(gòu)</p><p>  AD9280內(nèi)部集成的采樣保持放大器,既適合復(fù)用系統(tǒng)又適合開(kāi)關(guān)全波電壓范圍的連續(xù)信道,采樣單信道輸入頻率可以超過(guò)奈奎斯特頻率。交流耦合輸入可以借助內(nèi)部的鉗位電路移位到一定的固定電平,動(dòng)態(tài)性能

50、非常完好[21]。其內(nèi)部還集成了可編程基準(zhǔn)源,如圖3.10所示,根據(jù)系統(tǒng)需要也可以選擇外部高精度基準(zhǔn)滿足系統(tǒng)精度的要求。</p><p>  圖3.10 AD9280內(nèi)部結(jié)構(gòu)</p><p>  AD9280利用多級(jí)流水線架構(gòu)實(shí)現(xiàn)了低功耗高速數(shù)據(jù)轉(zhuǎn)換;將整個(gè)的轉(zhuǎn)換精度分成低精度的單階子轉(zhuǎn)換器,各階段轉(zhuǎn)換的結(jié)果在時(shí)序控制下通過(guò)內(nèi)部數(shù)字校準(zhǔn)電路實(shí)現(xiàn)了高精度的數(shù)據(jù)轉(zhuǎn)換。</p>&

51、lt;p><b>  AD9280的引腳</b></p><p>  AD9280的引腳如圖3.11所示:</p><p>  圖3.11 AD9280</p><p><b>  引腳說(shuō)明:</b></p><p>  AVSS:模擬地; </p><p>  DRV

52、DD:數(shù)字驅(qū)動(dòng)電源; </p><p><b>  NC:擴(kuò)展位; </b></p><p>  D0-D7:數(shù)字輸出位,DO最低位,D7 最高位; </p><p>  OTR:超出量化范圍檢測(cè)位; </p><p>  DRVSS:數(shù)字驅(qū)動(dòng)地; </p><p>  CLK:時(shí)鐘輸入; <

53、;/p><p>  THREE_STATE:三態(tài)控制,高電位輸出高阻態(tài),低電位正常工作;</p><p>  STBY:睡眠模式控制:高電位低睡眠模式,低電位正常模式;</p><p>  REFSENSE:基準(zhǔn)模式選擇;</p><p>  CLAMP:鉗位控制:高電壓鉗位模式,低電壓非鉗位模式;</p><p>  C

54、LAMPIN:鉗位電壓設(shè)置;</p><p>  REFTS:高電壓基準(zhǔn);</p><p>  REFTF:高電壓基準(zhǔn)去偶;</p><p>  MODE:模式選擇;</p><p>  REFBF:低電壓基準(zhǔn)去偶;</p><p>  REFBS:低電壓基準(zhǔn);</p><p>  VREF:內(nèi)

55、部基準(zhǔn)電壓;</p><p><b>  AIN:模擬輸入;</b></p><p>  AVDD:模擬電源;</p><p>  3.4.3 電壓變換電路</p><p><b>  1. 供電電路</b></p><p>  本系統(tǒng)要求AD能夠采樣雙極型交流信號(hào),為了達(dá)

56、到這項(xiàng)指標(biāo),需要使用運(yùn)放實(shí)現(xiàn)輸入電壓的線性變換,基于此觀點(diǎn),需要設(shè)計(jì)出雙極型電源為運(yùn)放供電。</p><p>  MC34063是一單片雙極型線性集成電路,專用于直流-直流變換器控制部分[22]。片內(nèi)包含有溫度補(bǔ)償帶隙基準(zhǔn)源、一個(gè)占空比周期控制振蕩器、驅(qū)動(dòng)器和大電流輸出開(kāi)關(guān),能輸出1.5A的開(kāi)關(guān)電流。它能使用最少的外接元件構(gòu)成開(kāi)關(guān)式升壓變換器、降壓式變換器和電源反向器。</p><p> 

57、 圖3.12即為電源反向電路,輸入的+5V電源經(jīng)過(guò)MC34063得到-5V直流電源,為云方提供雙極型電源。當(dāng)芯片內(nèi)部開(kāi)關(guān)管T1導(dǎo)通時(shí),電流經(jīng)MC34063的1腳、2腳和電感L2流到地,電感L3存儲(chǔ)能量。此時(shí)由C56向負(fù)載提供能量。當(dāng)T1斷開(kāi)時(shí),由于流經(jīng)電感的電流不能突變,因此,續(xù)流二極管D2導(dǎo)通。此時(shí),L2經(jīng)D2向負(fù)載和C56供電(經(jīng)公共地),輸出負(fù)電壓。這樣,只要芯片的工作頻率相對(duì)負(fù)載的時(shí)間常數(shù)足夠高,負(fù)載上便可獲得連續(xù)直流電壓。&l

58、t;/p><p>  圖3.12 電源反向電路</p><p>  2. 電壓輸入值轉(zhuǎn)換電路</p><p>  VREF輸入電壓為+2V,經(jīng)過(guò)跟隨器和反向放大電路后的輸出電壓為:</p><p>  V7=2×-(1/2)=-1V</p><p>  于是反相輸入端電壓為:</p><p&g

59、t;  V-=0.5×V7+0.5×VOUT</p><p><b>  同相輸入端電壓:</b></p><p>  V+=0.1×ADCIN</p><p><b>  由V-=V+可得:</b></p><p>  VOUT=0.2×ADCIN+1<

60、;/p><p>  因此,當(dāng)輸入電壓為-5~+5V范圍是,實(shí)際輸入AD的電壓為0~+2V,與參考電壓VREF一致。通過(guò)這種設(shè)計(jì),可以保證數(shù)據(jù)采集對(duì)正負(fù)電壓均能準(zhǔn)確讀取,為高速數(shù)據(jù)采集系統(tǒng)的正常運(yùn)行提供了前提條件,電路如圖3.13所示。</p><p>  圖3.13 電壓變換電路</p><p><b>  A/D轉(zhuǎn)換電路</b></p>

61、;<p>  該系統(tǒng)中的AD9280外接+2V單極性參考電壓,可以檢測(cè)0~+2V輸入電壓,滿足系統(tǒng)要求。</p><p>  AD外圍電路如圖3.14所示。</p><p>  圖3.14 A/D轉(zhuǎn)換電路</p><p>  3.5 USB數(shù)據(jù)傳輸電路</p><p>  我們都知道串口可用于為嵌入式芯片和上位機(jī)之間的數(shù)據(jù)通信

62、,串口可以在使用一根線發(fā)送數(shù)據(jù)的同時(shí)用另一根線接收數(shù)據(jù)。它能夠很簡(jiǎn)單的實(shí)現(xiàn)兩個(gè)設(shè)備間的數(shù)據(jù)傳輸,但是其通信速率比較慢,一般最高采用115200波特率,這遠(yuǎn)遠(yuǎn)達(dá)不到系統(tǒng)1M的要求。因此,本設(shè)計(jì)中考慮使用USB進(jìn)行數(shù)據(jù)傳輸。</p><p><b>  USB控制芯片選型</b></p><p>  USB(Universal Serial Bus,通用串行總線)是一種用

63、于計(jì)算機(jī)領(lǐng)域的接口技術(shù),最早由Compaq,Intel,Microsoft等多家公司于1994年11月共同提出,其目的是用USB來(lái)取代現(xiàn)有的各種外圍設(shè)備接口,是外圍設(shè)備的連接具有單一化、熱插拔等特點(diǎn)。他的出現(xiàn)大大簡(jiǎn)化了PC機(jī)和外設(shè)的連接過(guò)程,是PC機(jī)接口的擴(kuò)張變得更加容易[23]。</p><p>  USB控制的傳統(tǒng)做法是:USB控制器只處理USB通信,由一個(gè)外部的微控制器(MCU)來(lái)管理USB控制器的寄存器、

64、設(shè)備描述符的獲取和數(shù)據(jù)包的交換等。隨著微電子技術(shù)的發(fā)展,越來(lái)越多的公司開(kāi)始將MCU嵌入U(xiǎn)SB控制器中。這樣,CPU只需要訪問(wèn)一系列寄存器和存儲(chǔ)器,便可實(shí)現(xiàn)USB口的數(shù)據(jù)傳輸。從而簡(jiǎn)化了程序的設(shè)計(jì),并且許多供應(yīng)商還提供許多范例電路和測(cè)試代碼,使設(shè)計(jì)者從復(fù)雜的協(xié)議解釋中得到解脫。如基于8051結(jié)構(gòu)的USB控制器有:Intel公司的8X930A、8X931A;CYPRESS公司的EZ-USB等。此外,還有基于MITSUBISHI 740/76

65、00/M16C的USB芯片;基于MOTORORA HC05系列的USB芯片等,本設(shè)計(jì)中選用CY7C68013芯片作為USB控制器[24]。</p><p>  3.5.2 CY7C68013的引腳說(shuō)明</p><p>  CY7C68013是CYPRESS公司的EZ-USB FX2系列芯片,支持12Mb/s的全速傳輸和480Mb/s高速傳輸,可使用4種USB傳輸方式:控制傳輸、中斷傳輸、批

66、量傳輸和同步傳輸,可以滿足本系統(tǒng)的要求[25]。芯片管腳如圖3.15所示。</p><p>  圖3.15 CY7C68012管腳圖</p><p>  XTALIN和XIALOUT:時(shí)鐘輸入引腳;</p><p>  RESET#:復(fù)位輸入引腳,低電平有效;</p><p>  WAKEUP#:外部喚醒引腳輸入,低電平有效;</p&g

67、t;<p>  SCL和SDA:I2C接口時(shí)鐘與數(shù)據(jù)引腳;</p><p>  IFCLK,GPIF:時(shí)鐘,可作為輸入或輸出;</p><p>  CLKOUT:時(shí)鐘輸出,可設(shè)置為12M,24M或48M時(shí)鐘輸出,作為其他外設(shè)時(shí)鐘;</p><p>  DPLUS和MINUS:USB數(shù)據(jù)D+和D-;</p><p>  PB0~P

68、B7:端口B,服用引腳,可設(shè)置為GPIF數(shù)據(jù)總線的第八位FD[0]~FD[7];</p><p>  RDY0~RDY5:GPIF主模式作為狀態(tài)輸入引腳,RDY0和RDY1為復(fù)用引腳,F(xiàn)IFO從模式作為讀寫信號(hào)SLRD和SLWR;</p><p>  CTL0~CTL5:GPIF主模式作為控制輸入引腳,CTL0~CTL2可復(fù)用為FIFO從模式作為狀態(tài)標(biāo)志引腳FLAGA,F(xiàn)LAGB,F(xiàn)LAG

69、C;</p><p>  PA0~PA7: PA0與中斷INTO復(fù)用,PA1/中斷INI1,PA3與USB喚醒可選引腳WU2復(fù)用,PA2與FIFO從模式FIFO輸出使能引腳復(fù)用,PA4與FIFO從模式FIFO地址FIFOADD0引腳復(fù)用,PA5與FIFO從模式FIFO地址FIFOADD1引腳復(fù)用,PA6與FIFO從模式包結(jié)束PKTEND引腳復(fù)用,PA7與FIFO從模式狀態(tài)標(biāo)志位FLAGD,以及和FIFO從模式SL

70、AVE FIFO使能/觸發(fā)SLCS#引腳復(fù)用。</p><p>  3.5.3 電源電路</p><p>  USB電路的電源由USB接口的VBUS和GND引腳提供,但USB輸出為+5V直流電,須通過(guò)穩(wěn)壓芯片降為+3.3V方能給USB控制器提供電源,如圖3.16所示。</p><p>  圖3.16 電源電路</p><p>  USB控制器

71、核心電路</p><p>  USB控制器核心電路由CY7C68013及基本外圍電路組成,如圖3.17所示:</p><p>  圖3.17 CY7C68013外圍電路圖</p><p><b>  復(fù)位電路</b></p><p>  USB控制器CY7C68013中含有一塊8051微處理器,當(dāng)芯片的復(fù)位引腳RESET

72、出現(xiàn)2個(gè)機(jī)器周期以上的低電平時(shí),芯片會(huì)執(zhí)行自動(dòng)復(fù)位操作,如圖3.18所示。</p><p><b>  時(shí)鐘電路</b></p><p>  時(shí)鐘電路是用來(lái)產(chǎn)生8051內(nèi)核工作室所需的時(shí)鐘信號(hào),本系統(tǒng)采用內(nèi)部時(shí)鐘方式來(lái)為USB控制器供電。8051內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反響放大器,該放大器的輸入輸出引腳為XTALIN和XTALOUT,他們跨接在晶體振蕩器和用于

73、電容之間,便構(gòu)成了一個(gè)自激勵(lì)振蕩器,如圖3.19所示。</p><p>  圖3.18 復(fù)位電路 圖3.19 時(shí)鐘電路</p><p><b>  接口電路</b></p><p>  如圖3.20,USB 信號(hào)使用分別標(biāo)記為 D+ 和 D- 的雙絞線傳輸,它們各自使用半雙工的差分信號(hào)并協(xié)同工作,以抵

74、消長(zhǎng)導(dǎo)線的電磁干擾,其接口電路如圖3.21所示。表3.1所示為USB接口各觸點(diǎn)的功能[26]。</p><p>  表3.1 USB接口</p><p><b>  程序存儲(chǔ)器電路</b></p><p>  由于主控制芯片CY7C68013內(nèi)部沒(méi)有器,而只提供了8KB的RAM作為程序和數(shù)據(jù)的復(fù)用的存儲(chǔ)器,當(dāng)USB設(shè)備一上電時(shí),程序就被加載到R

75、AM中,開(kāi)始執(zhí)行。但一斷電,內(nèi)部RAM中的信息都和丟失。為了能夠讓USB設(shè)備每次上電后都能夠正常工作,將設(shè)備程序放在上位機(jī)上,將設(shè)備的ID號(hào)存放在外擴(kuò)的E2PROM中,當(dāng)USB設(shè)備一上電時(shí),計(jì)算機(jī)獲得E2PROM的ID號(hào)通過(guò)這個(gè)ID號(hào)自動(dòng)將固件程序加載到主控制芯片的內(nèi)部RAM中,設(shè)備開(kāi)始工作[27]。E2PROM電路圖如3.3.1.2所示,采用24LC128作為外擴(kuò)的E2PROM,16KB存儲(chǔ)空間,采用兩字節(jié)地址尋址,E2PROM電路如

76、圖3.22所示。</p><p>  圖3.20 USB接口 圖3.21 USB接口電路</p><p>  圖3.22 E2PROM電路</p><p><b>  數(shù)碼管顯示電路</b></p><p>  本設(shè)計(jì)中所用數(shù)碼管為共陽(yáng)極,低電平時(shí),數(shù)碼管被片選中,數(shù)據(jù)通過(guò)八位段選送入數(shù)碼

77、管,電路如圖3.23所示。</p><p>  圖3.23 數(shù)碼管顯示電路</p><p>  4 系統(tǒng)軟件設(shè)計(jì) </p><p>  系統(tǒng)的軟件部分由上位機(jī)、FPGA主控制程序、USB程序三部分組成,系統(tǒng)軟件部分框圖如圖4.1所示:</p><p>  圖4.1 系統(tǒng)軟件框圖</p><p>  以上框圖中部分功能

78、在硬件電路中已做介紹,下面將分別對(duì)上位機(jī)、FPGA及USB三個(gè)部分的軟件設(shè)計(jì)思路作具體介紹。</p><p>  4.1 上位機(jī)程序設(shè)計(jì)</p><p>  上位機(jī)程序是系統(tǒng)和用戶的接口,它通過(guò)驅(qū)動(dòng)完成對(duì)外設(shè)的控制和通信,本設(shè)計(jì)中,上位機(jī)負(fù)責(zé)接收由FIFO傳來(lái)的大量數(shù)據(jù),使用VC++進(jìn)行開(kāi)發(fā)。CYPRESS提供了EZ-USB的主機(jī)驅(qū)動(dòng)程序,只需調(diào)用相應(yīng)的WIN32 API函數(shù)向驅(qū)動(dòng)程序提交

79、各種申請(qǐng),就能由驅(qū)動(dòng)程序來(lái)完成相應(yīng)的讀、寫數(shù)據(jù)等各種功能[28]。</p><p>  本設(shè)計(jì)基于CYUSB驅(qū)動(dòng)進(jìn)行開(kāi)發(fā),因此在VC++上位機(jī)設(shè)計(jì)中需要加上CyAPI.h和cyioctl.h頭文件,以下是上位機(jī)讀取數(shù)據(jù)的主要程序代碼:</p><p>  #include "CyAPI.h"</p><p>  #include "cy

80、ioctl.h"</p><p>  #ifdef _DEBUG</p><p>  #define new DEBUG_NEW</p><p>  #undef THIS_FILE</p><p>  static char THIS_FILE[] = __FILE__;</p><p><b>

81、  #endif</b></p><p>  CCyControlEndPoint *ept;//定義控制端點(diǎn)</p><p>  CFile mFile;//文件</p><p>  UINT ReadThreadLoop( LPVOID params ) {//線程處理</p><p>  bool okin;

82、</p><p>  CSJCJVCDlg *dlg = (CSJCJVCDlg *) params;</p><p>  OVERLAPPED inOvLap;</p><p>  PUCHAR inData = new UCHAR[1024];//數(shù)據(jù)緩沖區(qū)</p><p>  ZeroMemory(inData,1024);<

83、/p><p>  inOvLap.hEvent = CreateEvent(NULL, false, false, "CYUSB_IN"); </p><p>  dlg->InEndpt->TimeOut = 0;</p><p><b>  {</b></p><p>  LONG i

84、nlen=512;//異步讀數(shù)據(jù)</p><p>  UCHAR*inContext=dlg->InEndpt->BeginDataXfer(inData,inlen,&inOvLap);</p><p>  dlg->InEndpt->WaitForXfer(&inOvLap,200);</p><p>  okin = d

85、lg->InEndpt->FinishDataXfer(inData,inlen, &inOvLap,inContext);</p><p>  if (okin)//如果讀取成功,則保存數(shù)據(jù)</p><p><b>  {</b></p><p>  mFile.SeekToEnd();</p>

86、<p>  mFile.Write(inData,inlen);</p><p><b>  }</b></p><p><b>  } </b></p><p>  CloseHandle(inOvLap.hEvent); </p><p>  delete [] inData;<

87、/p><p>  dlg->ReadThread = NULL;//線程結(jié)束</p><p>  mFile.Flush();//關(guān)閉文件</p><p>  mFile.Close();</p><p>  return true;</p><p><b>  }</b>

88、</p><p>  編寫好的程序經(jīng)過(guò)編譯,便可以在工程中的debug文件夾中產(chǎn)生擴(kuò)展名為.exe的可執(zhí)行文件,當(dāng)硬件電路通過(guò)USB與PC機(jī)實(shí)現(xiàn)正常連接,雙擊.exe文件即可開(kāi)始高速數(shù)據(jù)傳輸。</p><p>  VC++上位機(jī)程序的面板如圖4.2所示:</p><p>  圖4.2 VC++上位機(jī)面板</p><p>  下面對(duì)面板上的IC

89、ON進(jìn)行介紹:</p><p>  1):檢測(cè)USB設(shè)備是否存在;</p><p>  2):點(diǎn)擊此鍵后,AD數(shù)據(jù)寫入到FPGA;</p><p>  3):點(diǎn)擊此鍵后,F(xiàn)PGA將AD數(shù)據(jù)存入FIFO中,并通過(guò)USB傳入上位機(jī),在上位機(jī)DEBUG文件夾下生成.txt文件,AD數(shù)據(jù)在其中以十六進(jìn)制形式顯示。</p><p>  4.2 FPGA

90、程序設(shè)計(jì)</p><p>  FPGA程序采用VHDL語(yǔ)言在quartus 9.0環(huán)境下編寫,主要分為AD數(shù)據(jù)采集模塊、數(shù)碼管顯示模塊、FIFO數(shù)據(jù)存儲(chǔ)模塊。</p><p>  1)AD數(shù)據(jù)采集模塊</p><p>  AD數(shù)據(jù)采集采用8位AD(AD9280),而USB控制器中的slavefifo為16位,因此,須進(jìn)行十六位拼接操作方可進(jìn)行數(shù)據(jù)的輸出,其程序代碼如

91、下所示:</p><p>  ADC_CLK <= clk;</p><p>  LED1 <= led1buf;</p><p>  process(clk)</p><p><b>  begin</b></p><p>  if clk'event and clk=

92、9;1' then</p><p>  ADC_DATA <= "00000000"&ADC_DAT;</p><p><b>  end if;</b></p><p>  end process;</p><p>  其中,ADC_CLK為AD的時(shí)鐘信號(hào),與系統(tǒng)時(shí)鐘相連,以5

93、0MHZ的頻率將轉(zhuǎn)換后的數(shù)字信號(hào)發(fā)送給FPGA;ADC_DAT為經(jīng)AD轉(zhuǎn)換后的8位數(shù)字信號(hào),其與高八位信號(hào)拼接后構(gòu)成新的16位數(shù)據(jù),可直接發(fā)送給FIFO進(jìn)行數(shù)據(jù)存儲(chǔ)。</p><p><b>  數(shù)碼管顯示模塊</b></p><p>  顯示電路選用四位數(shù)碼管來(lái)間歇顯示輸入電壓值,為了達(dá)到人眼可識(shí)別的的要求,每隔60ms刷新一次數(shù)碼管顯示數(shù)值,程序如下:</p

94、><p>  process(flip_change,RESETFPGA)//計(jì)算輸入電壓大小</p><p><b>  begin</b></p><p>  if RESETFPGA='0' then</p><p>  ADC_1_N <= "000000000000";&l

95、t;/p><p>  elsif flip_change'event and flip_Change='1' then </p><p>  ADC_DAT_N(7 downto 0) <= ADC_DAT(7 downto 0);</p><p>  ADC_A <= '0'&ADC_DAT_N&&

96、quot;000";</p><p>  ADC_B <= "000"&ADC_DAT_N&'0';</p><p>  ADC_1_NR <= ADC_A + ADC_B;</p><p>  if ADC_1_NR>"010100000000" then//計(jì)算

97、電壓個(gè)位</p><p>  ADC_1_N <= ADC_1_NR - "010100000000";</p><p>  zf <= '1';</p><p>  elsif ADC_1_NR<"010100000000" then</p><p>  ADC_1_

98、N <= "010100000000" - ADC_1_NR;</p><p>  zf <= '0';</p><p><b>  end if;</b></p><p>  ADC_C <= '0'&ADC_1_N(7 downto 0)&"0

99、00";</p><p>  ADC_D <= "000"&ADC_1_N(7 downto 0)&'0';</p><p>  ADC_2_N <= ADC_C + ADC_D;//計(jì)算電壓十分位</p><p>  ADC_E <= '0'&ADC_2_

100、N(7 downto 0)&"000";</p><p>  ADC_F <= "000"&ADC_2_N(7 downto 0)&'0';</p><p>  ADC_3_N <= ADC_E + ADC_F;//計(jì)算電壓百分位</p><p>  ADC_1(3 DO

101、WNTO 0) <= ADC_1_N(11 DOWNTO 8);//個(gè)位</p><p>  ADC_2(3 DOWNTO 0) <= ADC_2_N(11 DOWNTO 8);//十分位</p><p>  ADC_3(3 DOWNTO 0) <= ADC_3_N(11 DOWNTO 8);//百分位</p><p><b>  end

102、 if;</b></p><p>  end process;</p><p>  由硬件電路分析已知,VOUT=0.2×ADCIN+1,即</p><p>  ADCIN=5VOUT-5</p><p>  且8位AD的轉(zhuǎn)換公式為:</p><p>  AD_DAT=ADCIN*2/28<

103、/p><p>  因此,可得數(shù)字信號(hào)和真實(shí)電壓值之間的關(guān)系:</p><p>  AD_DAT=10*ADC/28</p><p>  =ADC(28+21)/ 28</p><p>  =(ADC<<3+ADC<<1)>>8</p><p>  對(duì)其取高四位即可得到個(gè)位電壓值,小數(shù)點(diǎn)后

104、各位同理可得。</p><p>  process(flip_led,ADC_1,ADC_2,ADC_3,zf)</p><p><b>  begin </b></p><p>  case flip_led is ---譯碼顯示</p><p>  when 0 =>if zf='1&

105、#39; then</p><p>  data_n<=x"C";</p><p>  elsif zf='0' then</p><p>  data_n<=x"B";</p><p><b>  end if;</b></p><

106、p>  sel<="11101111";</p><p>  when 1 =>data_n<=ADC_1;//顯示輸入電壓個(gè)位</p><p>  sel<="11011111";</p><p>  when 2 =>data_n<=x"A";</p>

107、;<p>  sel<="11011111";</p><p>  when 3 =>data_n<=ADC_2;//顯示輸入電壓十分位</p><p>  sel<="10111111";</p><p>  when 4 =>data_n<=ADC_3;//顯示輸入電壓百分

108、位</p><p>  sel<="01111111"; </p><p>  when others=>data_n<=x"F"; </p><p>  sel<="11111111"; </p><p><b>  end case;

109、</b></p><p>  end process;</p><p>  /*將ASCII碼轉(zhuǎn)換為8位段選碼*/</p><p>  process(data_n)</p><p><b>  begin</b></p><p>  case data_n is</p>

110、<p>  when x"0"=>data <= x"c0";</p><p>  when x"1"=>data <= x"f9";</p><p>  when x"2"=>data <= x"a4";</p>

111、;<p>  when x"3"=>data <= x"b0";</p><p>  when x"4"=>data <= x"99";</p><p>  when x"5"=>data <= x"92";</p&

112、gt;<p>  when x"6"=>data <= x"82";</p><p>  when x"7"=>data <= x"f8";</p><p>  when x"8"=>data <= x"80";</

113、p><p>  when x"9"=>data <= x"90";</p><p>  when x"A"=>data <= x"7f";</p><p>  when x"B"=>data <= x"bf";<

114、;/p><p>  when x"C"=>data <= x"ff";</p><p>  when others=>data <= x"ff";</p><p><b>  end case;</b></p><p>  end proce

115、ss;</p><p>  FIFO數(shù)據(jù)存儲(chǔ)模塊</p><p>  FPGA得到數(shù)據(jù)后需要發(fā)送給slavefifo進(jìn)行存儲(chǔ)[29],對(duì)于USB的從屬FIFO模式,其接口功能定義如下:</p><p>  IFCLK為接口時(shí)鐘;FLAGA-FLAGD為FIFO標(biāo)志管腳,用于印射FIFO的當(dāng)前狀態(tài);SLCS為從屬FIFO的片選信號(hào),低電平有效;FD[15:0]為16位

116、雙向數(shù)據(jù)總線;FIFOADDR[1:0]用于選擇和FD連接的端點(diǎn)緩沖區(qū)(00代表斷電2,01代表端點(diǎn)4,10代表端點(diǎn)6,11代表端點(diǎn)8),每個(gè)端點(diǎn)都代表一個(gè)4KB的可配置緩沖區(qū);SLOE用于是嫩南瓜數(shù)據(jù)總線FD的輸出;SLRD和SLWR可分別作為FIFO的讀寫選通信號(hào);外圍電路可通過(guò)使能PKTEND管腳向USB發(fā)送一個(gè)IN數(shù)據(jù)包,而不用考慮該包的長(zhǎng)度,F(xiàn)IFO數(shù)據(jù)傳輸程序如下所示:</p><p>  PROCE

117、SS(RESETFPGA,IFCLK)</p><p><b>  BEGIN</b></p><p>  IF(RESETFPGA = '0') THEN</p><p>  led1buf <= '1';//點(diǎn)亮LED燈</p><p>  sloebuf <= '

118、1';//FD輸出使能</p><p>  slrdbuf <= '1';//讀寫控制</p><p>  slwrbuf <= '1';</p><p>  fifowraddr <= 0;//端點(diǎn)設(shè)置</p><p>  fifordaddr <= 0;</p>

119、<p>  ELSIF(IFCLK'event AND IFCLK='1') THEN</p><p>  IF(PA1_INT1='0') THEN</p><p>  led1buf <= '0';</p><p>  sloebuf <= '0';</p&

120、gt;<p>  slwrbuf <= '1';</p><p>  IF(CTL0_FLAGA = '1') THEN//向FPGA寫入AD轉(zhuǎn)換后的數(shù)據(jù)</p><p>  CASE wrstate IS</p><p><b>  WHEN 0 =></b></p>

121、<p>  wrstate <= wrstate + 1;</p><p>  slrdbuf <= '0';</p><p>  WHEN PACKAGENUM =></p><p>  wrstate <= 0 ;</p><p>  slrdbuf <= '1';&

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論