版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于fpga的高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 基于fpga的高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 基于FPGA的數(shù)據(jù)高速采集系統(tǒng)設(shè)計(jì).pdf
- 基于FPGA的高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì).pdf
- 畢業(yè)設(shè)計(jì)(論文)---基于fpga的藍(lán)牙數(shù)據(jù)采集系統(tǒng)
- 基于FPGA的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì).pdf
- 畢業(yè)設(shè)計(jì)---高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
- 基于FPGA的高速圖像數(shù)據(jù)采集系統(tǒng)設(shè)計(jì).pdf
- 畢業(yè)設(shè)計(jì)---基于fpga的數(shù)據(jù)采集和回放
- 基于USB和FPGA的高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì).pdf
- 基于FPGA的PCIE多路高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì).pdf
- 基于FPGA高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于FPGA控制的高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于FPGA的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā).pdf
- 基于FPGA的微弱信號(hào)高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì).pdf
- 基于FPGA的高速數(shù)據(jù)采集系統(tǒng)的研制.pdf
- 基于fpga的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
- 基于MCU+FPGA組合的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì).pdf
- 基于FPGA技術(shù)的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于FPGA的高速數(shù)據(jù)采集與存儲(chǔ)系統(tǒng)設(shè)計(jì).pdf
評(píng)論
0/150
提交評(píng)論