版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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 數(shù)據(jù)采集系統(tǒng)的概念和意義</p><p> 信號(hào)采集與處理是計(jì)算機(jī)與外部物理世界連接的橋梁,在科研、生產(chǎn)和人們的日常生活中,經(jīng)常需要測(cè)量流量、速度、位移、溫度、壓力、外形等物理量,人們一般通過(guò)傳感器把上述物理量轉(zhuǎn)換成模擬電信號(hào),然后將模擬電信號(hào)經(jīng)過(guò)放大、濾波、數(shù)模轉(zhuǎn)換等處理后送入計(jì)算機(jī),
2、這就是數(shù)據(jù)采集。數(shù)據(jù)采集技術(shù)是信息科學(xué)的重要分支,它不僅應(yīng)用在智能儀器中,而且在現(xiàn)代工業(yè)生產(chǎn)、國(guó)防軍事及科學(xué)研究等方面都得到廣泛應(yīng)用,無(wú)論是過(guò)程控制、狀態(tài)監(jiān)測(cè),還是故障診斷、質(zhì)量檢測(cè),都離不開(kāi)數(shù)據(jù)采集系統(tǒng)[1-2]。</p><p> 從嚴(yán)格意義上說(shuō),數(shù)據(jù)采集系統(tǒng)應(yīng)該是用計(jì)算機(jī)控制的多路數(shù)據(jù)自動(dòng)檢測(cè)或巡回檢測(cè),并且能夠?qū)?shù)據(jù)實(shí)行存儲(chǔ)、處理、分析計(jì)算,以及從檢測(cè)的數(shù)據(jù)中提取可用的信息,供顯示、記錄、打印或描繪的系
3、統(tǒng)。總之,不論在哪個(gè)應(yīng)用領(lǐng)域中,數(shù)據(jù)的采集與處理越及時(shí),工作效率就越高,取得的經(jīng)濟(jì)效益就越大。</p><p> 1.2 數(shù)據(jù)采集系統(tǒng)研究現(xiàn)狀</p><p> 數(shù)據(jù)采集存儲(chǔ)系統(tǒng)目前在環(huán)境感知,圖像處理、語(yǔ)音識(shí)別、通信等領(lǐng)域有著廣泛的應(yīng)用,它用于實(shí)時(shí)、高速地采集和記錄應(yīng)用領(lǐng)域的各項(xiàng)參數(shù)信息。隨著應(yīng)用領(lǐng)域的不斷深入,信號(hào)分辨率、采樣率,數(shù)據(jù)存儲(chǔ)容量,存儲(chǔ)時(shí)間等要求都大幅提升,設(shè)備可靠性
4、和實(shí)時(shí)性要求也越來(lái)越高,因此高精度、高可靠性的大容量數(shù)據(jù)采集存儲(chǔ)系統(tǒng)就顯得尤為重要,而且抗沖擊干擾能力、可擴(kuò)展性及可移植性等方面因素都必須嚴(yán)格考慮處理[3-4]。</p><p> 傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)采用單片機(jī)作為微處理器。近年來(lái),數(shù)據(jù)采集系統(tǒng)的控制芯片由原來(lái)的單片機(jī)逐步發(fā)展到數(shù)字處理芯片DSP(數(shù)字信號(hào)處理器),嵌入式芯片等速度更高功能更強(qiáng)的芯片。在高性能數(shù)據(jù)采集系統(tǒng)中,通常采用單片機(jī)或DSP作為CPU,控制
5、ADC(模/數(shù)轉(zhuǎn)換器)、存儲(chǔ)器和其他外圍電路的工作[5]。</p><p> 但基于單片機(jī)和DSP設(shè)計(jì)的數(shù)據(jù)采集系統(tǒng)都有一定的不足:</p><p> 單片機(jī)的時(shí)鐘頻率較低,各種功能都要靠軟件的運(yùn)行來(lái)實(shí)現(xiàn),軟件運(yùn)行時(shí)間在整個(gè)采樣時(shí)間中占很大的比例,效率低,難以適應(yīng)高速數(shù)據(jù)采集系統(tǒng)的要求;DSP的運(yùn)算速度快,擅長(zhǎng)處理密集的乘加運(yùn)算,但很難完成外圍的復(fù)雜硬件邏輯控制。</p>
6、<p> FPGA是英文Field-Programmable Gate Array的縮寫(xiě),即現(xiàn)場(chǎng)可編程門(mén)陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專(zhuān)用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門(mén)電路數(shù)有限的缺點(diǎn)。FPGA集成度高,器件密度高達(dá)數(shù)千萬(wàn)門(mén),可完成復(fù)雜的時(shí)序與組合邏輯電路功能,通過(guò)編程,用戶(hù)可立刻把一個(gè)通用FPGA芯片
7、配置成需要的硬件數(shù)字電路,其內(nèi)部豐富的布線(xiàn)資源也給修改、測(cè)試和系統(tǒng)升級(jí)提供了極大的方便。</p><p> 隨著電子技術(shù)的飛速發(fā)展,F(xiàn)PGA 能有效克服單片機(jī)和DSP的缺點(diǎn),它的全部控制邏輯均由硬件完成,容易實(shí)現(xiàn)硬件上的并行工作。FPGA內(nèi)部可以嵌入DSP軟核,增強(qiáng)了系統(tǒng)的數(shù)據(jù)處理能力[6-7];FPGA 還具有時(shí)鐘頻率高、內(nèi)部延時(shí)小、編程配置靈活的特點(diǎn),可以集采樣控制、處理、緩存和傳輸于一個(gè)芯片內(nèi)實(shí)現(xiàn)片上系統(tǒng)
8、,這樣大大提高了系統(tǒng)的可靠性,降低系統(tǒng)成本;同時(shí)隨著 IP產(chǎn)業(yè)的崛起,更加縮短了產(chǎn)品的開(kāi)發(fā)周期和上市時(shí)間,有利于在激烈的市場(chǎng)競(jìng)爭(zhēng)中搶占先機(jī);因此在多路并行高速數(shù)據(jù)采集領(lǐng)域得到廣泛應(yīng)用。</p><p> 對(duì)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)提出兩個(gè)方面的要求:一方面,要求接口簡(jiǎn)單靈活且有較高的數(shù)據(jù)傳輸率;另一方面,由于通道多、數(shù)據(jù)量較大,要求主機(jī)能夠?qū)?shí)時(shí)數(shù)據(jù)做出快速響應(yīng),并及時(shí)進(jìn)行分析和處理。一般的數(shù)據(jù)采集系統(tǒng)由多路數(shù)據(jù)選擇
9、器轉(zhuǎn)換器、數(shù)據(jù)存儲(chǔ)器、單片機(jī)控制器以及通信接口電路等A/D組成。傳統(tǒng)的數(shù)據(jù)采集器中的多路數(shù)據(jù)選擇器由多個(gè)模擬開(kāi)關(guān)組成,加上轉(zhuǎn)換器的控制電路及數(shù)據(jù)存儲(chǔ)器,電路所需元A/D器件較多,因此電路板設(shè)計(jì)的面積較大。如果采用現(xiàn)場(chǎng)可編程門(mén)陣列電路實(shí)現(xiàn)多路數(shù)據(jù)選擇器、存儲(chǔ)器及外圍的一些FPGA控制電路。不僅可以減小電路板的設(shè)計(jì)體積,而且最大限度地提高系統(tǒng)的信號(hào)采集和處理能力。</p><p> 1.3 主要研究?jī)?nèi)容</p
10、><p> 本課題的主要研究?jī)?nèi)容是,在理解數(shù)據(jù)采集原理的基礎(chǔ)上,設(shè)計(jì)一個(gè)數(shù)據(jù)采集系統(tǒng),對(duì)一路數(shù)字信號(hào)進(jìn)行采集,將采集編幀后的數(shù)據(jù)存儲(chǔ),并通過(guò)上位機(jī)軟件進(jìn)行數(shù)據(jù)的分析。</p><p><b> 2 系統(tǒng)總體設(shè)計(jì)</b></p><p> 圖2.1 系統(tǒng)整體結(jié)構(gòu)圖</p><p> 本設(shè)計(jì)的系統(tǒng)框圖如圖2.1所示。&
11、lt;/p><p> 該系統(tǒng)由422接口模塊、FPGA控制模塊、信號(hào)存儲(chǔ)模塊、USB通訊模塊以及外圍電路組成。其中,USB通信模塊的設(shè)計(jì)利用了已有的研究成果。</p><p> 422接口負(fù)責(zé)接收外部的RS-422數(shù)字量信號(hào),并將其送入FPGA采集。FPGA將讀取到的數(shù)字量信號(hào)先進(jìn)行數(shù)據(jù)編幀處理,接著存入外部FIFO中,最后控制存儲(chǔ)于外部FLASH之中。電路的整個(gè)時(shí)序由邏輯控制模塊協(xié)調(diào)控制
12、。</p><p> FPGA控制模塊由FPGA及外圍電路組成。FPGA是控制模塊的核心部分,完成數(shù)據(jù)信號(hào)的采集、緩沖和傳輸控制。該設(shè)計(jì)方案選用FPGA作為主模塊,主要是考慮FPGA現(xiàn)場(chǎng)可編程特性,使用靈活方便,能夠降低硬件電路設(shè)計(jì)難度。</p><p> 信號(hào)存儲(chǔ)模塊在系統(tǒng)中主要完成數(shù)字信息的存儲(chǔ)。閃存(FLASH Memory)具有體積小、功耗低和數(shù)據(jù)不易丟失的特點(diǎn),可用來(lái)實(shí)現(xiàn)存儲(chǔ)
13、器的功能。把采集到的數(shù)據(jù)緩存到外部FIFO中。當(dāng)FIFO半滿(mǎn)后,F(xiàn)PGA讀取FIFO中的數(shù)據(jù)寫(xiě)入FLASH存儲(chǔ)器中。</p><p> USB接口模塊實(shí)現(xiàn)FPGA與上位機(jī)之間的通信,完成上位機(jī)控制命令與Flash存儲(chǔ)數(shù)據(jù)的傳送。</p><p> 3 系統(tǒng)硬件電路的設(shè)計(jì)</p><p> 3.1 主要器件的選擇</p><p>
14、3.1.1 FPGA芯片的選擇</p><p> FPGA采用Xilinx 公司的Spartan-Ⅱ系列FPGA 中的XC2S100-6PQ208實(shí)現(xiàn)。XCF01SVO20作為EPROM,TPS70358作為供電芯片。XC2S100-6PQ208的核心電壓為2.5V,I/O口電壓為3.3V,具有與通用5V數(shù)字電路直接連接的能力。速度等級(jí)是-6,采用PQFP封裝類(lèi)型,管腳數(shù)有208個(gè),最大可用的用戶(hù)I/O數(shù)為1
15、40個(gè)。系統(tǒng)門(mén)數(shù)有100000個(gè),邏輯單元數(shù)(LC)為2700個(gè);切片數(shù)(Slice)為1200個(gè);BlockRAM有10個(gè),是完全同步的雙端口RAM,總?cè)萘繛?0K;分布式RAM位總數(shù)是38400 bits[8]。斷電后,程序會(huì)保留在FPGA中,不會(huì)清除,使應(yīng)用更加方便。</p><p> 3.1.2 數(shù)字通信接口芯片的選擇</p><p> 數(shù)字通信接口選擇MAX490芯片,MA
16、X490是MAXIM公司生產(chǎn)的差分平衡型收發(fā)器芯片。集成片內(nèi)包含1個(gè)驅(qū)動(dòng)器和1個(gè)接收器.適合于RS-485及RS-422通信標(biāo)準(zhǔn)。無(wú)誤差傳輸數(shù)據(jù)的速率可達(dá)2.5Mb/s,若通信速率為100kb/s時(shí),通信距離可達(dá)1200m[9]。</p><p> 3.1.3 外部FIFO的選擇</p><p> 本設(shè)計(jì)采用FIFO數(shù)據(jù)緩存器。FIFO是指先入先出隊(duì)列(First Input Fir
17、st Output,F(xiàn)IFO),這是一種傳統(tǒng)的按順序執(zhí)行方法,先進(jìn)入的指令先完成并引退,跟著才執(zhí)行第二條指令。FIFO與普通存儲(chǔ)器的區(qū)別是沒(méi)有外部讀寫(xiě)地址線(xiàn),這樣使用起來(lái)非常簡(jiǎn)單,但缺點(diǎn)就是只能順序?qū)懭霐?shù)據(jù),順序的讀出數(shù)據(jù),其數(shù)據(jù)地址由內(nèi)部讀寫(xiě)指針自動(dòng)加1完成,不能像普通存儲(chǔ)器那樣可以由地址線(xiàn)決定讀取或?qū)懭肽硞€(gè)指定的地址。</p><p> IDT7206是一種先進(jìn)先出的雙端口數(shù)據(jù)緩存器。該器件使用一個(gè)滿(mǎn)標(biāo)志(
18、FF)和一個(gè)空標(biāo)志(EF)來(lái)檢測(cè)其存儲(chǔ)狀態(tài),通過(guò)W引腳和R引腳來(lái)控制數(shù)據(jù)的存儲(chǔ)和讀取。該設(shè)備提供了9位寬度的數(shù)據(jù)存儲(chǔ)輸入輸出和一個(gè)控制作為用戶(hù)的選擇校驗(yàn)位。其時(shí)序如圖3.1所示。</p><p> 需要注意的是,IDT7206是一個(gè)單向的FIFO雙端口存儲(chǔ)器。即只能由D0~D8輸入數(shù)據(jù),由Q0-Q8輸出數(shù)據(jù),所以讀、寫(xiě)控制線(xiàn)只有一套。也就是說(shuō)不能作為雙向的數(shù)據(jù)傳送。另外因?yàn)檫@是一個(gè)FIFO(先入先出)存儲(chǔ)器,所
19、以沒(méi)有絕對(duì)地址的概念,只有讀指針和寫(xiě)指針的相對(duì)位置。當(dāng)相對(duì)位置為0時(shí),表明存儲(chǔ)器空;為所用的存儲(chǔ)器的寫(xiě)操</p><p> 圖3.1 IDT7206時(shí)序圖容量時(shí),表明存儲(chǔ)器已滿(mǎn)。</p><p> 作:只要FF標(biāo)志不為0,就可以進(jìn)行寫(xiě)操作,且可以與讀操作同時(shí)進(jìn)行。每寫(xiě)一次數(shù)據(jù),寫(xiě)指針自動(dòng)加一,當(dāng)寫(xiě)指針與讀指針的相對(duì)位置為存儲(chǔ)器的容量時(shí),標(biāo)志FF清零。當(dāng)FF標(biāo)志為0時(shí),所進(jìn)行的任何寫(xiě)操作
20、都不會(huì)改變存儲(chǔ)器中的數(shù)據(jù),也不會(huì)改變寫(xiě)指針的值。此時(shí)的寫(xiě)禁止由內(nèi)部控制。</p><p> 讀操作:只要EF標(biāo)志不為0,就可以進(jìn)行讀操作,且可以與寫(xiě)操作同時(shí)進(jìn)行。每讀一次數(shù)據(jù),讀指針自動(dòng)加一,當(dāng)讀指針與寫(xiě)指針的相對(duì)位置為0時(shí),標(biāo)志EF清零。當(dāng)EF標(biāo)志為0時(shí),所進(jìn)行的任何讀操作都不會(huì)改變讀指針,且讀出的數(shù)據(jù)都為0FFH。即數(shù)據(jù)總線(xiàn)呈現(xiàn)高阻[10]。</p><p> 3.1.4 USB
21、設(shè)計(jì)模塊的選擇</p><p> USB接口采用基于Cypress公司生產(chǎn)的EZ-USB FX2系列中的CY7C68013,是目前市面上第一塊符合USB2.0標(biāo)準(zhǔn)的USB控制器。EZ-USB FX2 芯片包括1個(gè)8051處理器、1個(gè)串行接口引擎(SIE)、1個(gè)USB收發(fā)器、8.5KB片上RAM,4KB FIFO存儲(chǔ)器以及1個(gè)通用可編程接口(GPIF)。FX2是一個(gè)全面集成的解決方案,它占用的電路板空間更少,開(kāi)發(fā)
22、時(shí)間更短[11]。</p><p> CY7C68013采用編程接口GPIF模式??删幊探涌贕PIF是主機(jī)方式,可以由軟件設(shè)置讀寫(xiě)控制波形,靈活性很大,幾乎可以對(duì)任何8/16bit接口的控制器、存儲(chǔ)器和總線(xiàn)進(jìn)行數(shù)據(jù)的主動(dòng)讀寫(xiě),使用非常靈活,只要輸出信號(hào)和就緒信號(hào)作相應(yīng)的組合,就可以實(shí)現(xiàn)多種復(fù)雜的控制時(shí)序。</p><p> 3.2 硬件電路各模塊的設(shè)計(jì)</p><
23、p> 3.2.1 FPGA外圍電路 </p><p><b> ?。?)電源轉(zhuǎn)換電路</b></p><p> XC2S100的管腳電壓為3.3V,內(nèi)核電壓為2.5V,因此本設(shè)計(jì)中采用一片TPS70358來(lái)實(shí)現(xiàn)5V到3.3V和2.5V的轉(zhuǎn)換,以滿(mǎn)足XC2S100的供電要求。當(dāng)EN腳連接到一個(gè)低電平時(shí)該器件開(kāi)始工作。SEQ控制哪個(gè)輸出電壓通道(VOUT1或V
24、OUT2)先打開(kāi)。當(dāng)裝置被啟用并且SEQ為高電平時(shí),VOUT2先打開(kāi),VOUT1保持關(guān)閉,當(dāng)其值達(dá)到VOUT2輸出電壓的83%時(shí)VOUT1打開(kāi)。如果VOUT2被拉低于83%(即過(guò)載條件)則VOUT1關(guān)閉。</p><p> 電源轉(zhuǎn)換電路如圖3.2所示:</p><p> 圖3.2 電源轉(zhuǎn)換電路</p><p><b> ?。?)時(shí)鐘電路</b&
25、gt;</p><p> XC2S100上有4個(gè)全局時(shí)鐘輸入端口,GCLK0、GCLK1、GCLK2和GCLK3,在此僅使用GCLK0。本系統(tǒng)采用40MHz的晶體振蕩器產(chǎn)生時(shí)鐘信號(hào)。其余3個(gè)時(shí)鐘輸入端都接地以防止干擾。時(shí)鐘電路如下圖。</p><p> 圖3.3 FPGA時(shí)鐘電路</p><p><b> ?。?)配置電路</b></
26、p><p> 在Xilinx的FPGA中采用了SRAM制造工藝,需要提供外部存儲(chǔ)器PROM、EPROM、Flash等來(lái)存儲(chǔ)FPGA的下載文件,上電后數(shù)據(jù)會(huì)自動(dòng)下載到FPGA內(nèi)部,對(duì)FPGA進(jìn)行配置。</p><p> 本設(shè)計(jì)中選用主串模式,在主串模式中必須使用Xilinx公司專(zhuān)用的PROM。XC2S100的配置文件大小為781,216位,選擇XCF01SV020作為配置PROM。在該模式下
27、,F(xiàn)PGA產(chǎn)生配置時(shí)鐘CCLK驅(qū)動(dòng)外部串行PROM,F(xiàn)PGA將PROM中數(shù)據(jù)讀入片內(nèi)編程RAM中,配置完成后,F(xiàn)PGA進(jìn)入工作狀態(tài)。第一次數(shù)據(jù)下載通過(guò)Xilinx公司提供的開(kāi)發(fā)軟件ISE將配置文件燒寫(xiě)到XCF01SVO20中,此后每次上電后,XCF01SVO20會(huì)在CCLK的驅(qū)動(dòng)下將配置數(shù)據(jù)寫(xiě)入FPGA的內(nèi)部配置存儲(chǔ)器。</p><p> 配置電路的原理圖如圖3.4所示。</p><p>
28、; 圖3.4 FPGA配置電路</p><p> 其中,配置電路與FPGA相接時(shí)須接入4.7K的上拉電阻,以保證電路的正常工作。</p><p><b> ?。?)去耦電路</b></p><p> 在每個(gè)電路芯片的電源引腳上都要并接一個(gè)去耦電容,其作用是降低電路中因負(fù)載變化而引起的噪聲、減少干擾信號(hào)并使信號(hào)穩(wěn)定。下圖是本模塊中FPGA的
29、VCCINT引腳與VCCO引腳的去耦接法。</p><p><b> 圖3.5 去耦電容</b></p><p> 電路中其他芯片也相應(yīng)的接去耦電容。</p><p> 3.2.2 數(shù)字信號(hào)采集電路</p><p> 單路數(shù)字量接口如圖3.6所示。Rs422總線(xiàn)是現(xiàn)在廣泛應(yīng)用的工業(yè)總線(xiàn),許多儀器用422總線(xiàn)進(jìn)行
30、通信[12]。由于所采集輸入的數(shù)字量信號(hào)是采用RS-422差分信號(hào)電氣特性傳輸?shù)?,故MAX490芯片負(fù)責(zé)將輸入的差分信號(hào)還原成單端數(shù)字量信號(hào),其最大波特率可達(dá)到2.5Mbps,滿(mǎn)足數(shù)字量傳輸速率要求。電阻R是根據(jù)傳輸距離與介質(zhì)而加入的接收匹配阻抗,可有效減少信號(hào)反射與衰減。 </p><p> 圖3.6 數(shù)字量采集接口</p><p> 3.2.3 外部FIFO緩存電路</p&
31、gt;<p> 使用IDT7206作為采集數(shù)據(jù)緩存。硬件電路如圖3.7。</p><p> IDT7206是一個(gè)單向的FIFO雙端口存儲(chǔ)器。即只能由D0~D8輸入,系統(tǒng)只要求8位數(shù)據(jù),所以對(duì)于IDT7206的數(shù)據(jù)位,只用前8位即可。.</p><p> 數(shù)據(jù)輸入和輸出端均只使用前8位(Q0~Q7、D0~D7);讀允許信號(hào)R由FPGA的控制信號(hào)提供;寫(xiě)允許信號(hào)W由FPGA
32、輸入,當(dāng)W為低時(shí),將轉(zhuǎn)換后的數(shù)據(jù)存入IDT7206;復(fù)位信號(hào)RS由FPGA控制,當(dāng)RS輸入為低電平時(shí)器件開(kāi)始復(fù)位,其內(nèi)部讀和寫(xiě)都將回到初始位置且RS上升沿來(lái)臨之前讀信號(hào)和寫(xiě)信號(hào)都將保持高電平。</p><p> 圖3.7 IDT7206緩存電路</p><p> 3.3 電路板的設(shè)計(jì)</p><p> 3.3.1 電路原理圖設(shè)計(jì)</p>&l
33、t;p> 在繪制電路原理圖時(shí),需要注意以下幾個(gè)問(wèn)題:首先,在繪制電路原理圖之前,應(yīng)該將電氣格點(diǎn)和鎖定格點(diǎn)設(shè)置為開(kāi)啟狀態(tài),可以避免導(dǎo)線(xiàn)與器件引腳產(chǎn)生的虛連接。其次,在完成電路圖的繪制后,進(jìn)行電氣規(guī)則檢查(ERC)是一項(xiàng)非常重要的工作。根據(jù)設(shè)計(jì)要求,在電氣規(guī)則檢查矩陣中,設(shè)置相應(yīng)的電氣警告和電氣錯(cuò)誤的條件,ERC就可以全面的分析原理圖的常見(jiàn)錯(cuò)誤和無(wú)效的電氣連接,如未連接的電源實(shí)體、懸空的輸入管腳、輸出管腳連接在電源上等。ERC的沖突
34、點(diǎn)在原理圖上的相應(yīng)位置以高亮顯示的形式逐一標(biāo)出,并記錄到ERC報(bào)告文件中。本系統(tǒng)的電路原理圖見(jiàn)附錄A。</p><p> 3.3.2 PCB設(shè)計(jì)</p><p> 在印刷電路板的設(shè)計(jì)過(guò)程中,應(yīng)該遵循一些設(shè)計(jì)的基本原則,否則會(huì)使系統(tǒng)工作不穩(wěn)定甚至不能正常工作,一般的解決辦法包括布局設(shè)計(jì)、布線(xiàn)設(shè)計(jì)。</p><p><b> ?。?)布局設(shè)計(jì)</b
35、></p><p> 考慮到本設(shè)計(jì)中元器件比較多,所以我按照以下方法進(jìn)行布局。首先,按電氣性能合理分區(qū),完成同一功能的器件應(yīng)相對(duì)集中,并調(diào)整各元器件以保證連線(xiàn)最為簡(jiǎn)潔;同時(shí),調(diào)整各功能模塊間的相對(duì)位置,使功能塊間的連線(xiàn)最簡(jiǎn)潔。其次,本設(shè)計(jì)中電源和地濾波電路中的去耦電容較多,在放置去耦電容時(shí),應(yīng)將電容盡量靠近電源、接地引腳。</p><p><b> (2)布線(xiàn)設(shè)計(jì)<
36、;/b></p><p> 布線(xiàn)是整個(gè)PCB設(shè)計(jì)中最重要的工序,這將直接影響著PCB板的性能好壞。在該系統(tǒng)的PCB設(shè)計(jì)中,全板使用手工布線(xiàn),首先注意到該設(shè)計(jì)中成組的信號(hào)線(xiàn)主要是數(shù)據(jù)線(xiàn)和地址線(xiàn)。所以在元器件位置確定后,應(yīng)該先完成它們的布線(xiàn),盡可能做到成組、平行分布,同時(shí)應(yīng)盡可能的短,之后再進(jìn)行各種控制信號(hào)的布線(xiàn)。最后處理電源和接地引腳。在布線(xiàn)時(shí),應(yīng)按照地線(xiàn)>電源線(xiàn)>信號(hào)線(xiàn)的關(guān)系加寬電源、地線(xiàn)寬度,地線(xiàn)及電源
37、線(xiàn)的典型線(xiàn)寬值為40Mil。采用45º的折線(xiàn)布線(xiàn),以減小高頻信號(hào)的輻射。最后在版圖布線(xiàn)完成后,對(duì)布線(xiàn)進(jìn)行優(yōu)化;同時(shí),經(jīng)初步網(wǎng)絡(luò)檢查和DRC檢查無(wú)誤后,對(duì)未布線(xiàn)區(qū)域進(jìn)行地線(xiàn)填充[13]。</p><p> 4 系統(tǒng)軟件設(shè)計(jì) </p><p> 該系統(tǒng)的軟件設(shè)計(jì)主要指FPGA軟件設(shè)計(jì)。FPGA軟件采用模塊化設(shè)計(jì)方法,利用VHDL語(yǔ)言開(kāi)發(fā),設(shè)計(jì)框圖如下。</p>&
38、lt;p> 圖4.1 數(shù)字量采集框圖</p><p><b> 4.1 數(shù)據(jù)采集</b></p><p> 422接口的系統(tǒng)頂層圖為:</p><p> 圖4.2 數(shù)字量接口系統(tǒng)頂層圖</p><p> 其中:數(shù)字量接口采用RS485異步串行數(shù)據(jù)通信接口。一個(gè)完整的UART接口包括發(fā)送模塊和接收模塊,具
39、體到本次設(shè)計(jì),數(shù)字量接口和工作模式選擇接口使用UART的接收模塊。</p><p> UART串行數(shù)據(jù)格式如下圖所示,串行數(shù)據(jù)包括8位數(shù)據(jù)、l位起始位、l位結(jié)束位、l位校驗(yàn)位,共11位。</p><p> 圖4.3 UART串行數(shù)據(jù)格式</p><p> 系統(tǒng)接收的外部數(shù)字量數(shù)據(jù),由于傳輸距離較遠(yuǎn),很容易引進(jìn)各種干擾信號(hào):系統(tǒng)</p><p
40、> 內(nèi)部的一些關(guān)鍵信號(hào),不可避免會(huì)受到雜波的干擾,導(dǎo)致一些信號(hào)會(huì)出現(xiàn)干擾、噪聲[14]。為了讓系統(tǒng)有效準(zhǔn)確,必須采取有效的措施抑制該信號(hào)的干擾信號(hào),本設(shè)計(jì)中采用消抖技術(shù)。對(duì)于信號(hào)消抖有軟件和硬件兩種方式,硬件消抖有多種方法,長(zhǎng)線(xiàn)電纜這一類(lèi)板外信號(hào)因干擾造成的大的抖動(dòng)可以采用積分電路具有施密特功能的門(mén)電路(如74HC14)來(lái)消除[15]。同樣在軟件方面,可以用VHDL實(shí)現(xiàn)類(lèi)似的辦法。對(duì)于小于觸發(fā)器建立時(shí)間的抖動(dòng)可以用時(shí)鐘打一下實(shí)現(xiàn)
41、濾波,但較大的抖動(dòng),可以采用延時(shí)比較法。延時(shí)比較法的思想就是N個(gè)系統(tǒng)時(shí)鐘周期內(nèi)讀取的數(shù)據(jù)相同時(shí)我們認(rèn)為收到了一個(gè)穩(wěn)定的數(shù)據(jù),否則認(rèn)為是過(guò)渡態(tài),予以消除。其中N要根據(jù)實(shí)際情況變化,延時(shí)比較法的流程圖如圖4.4。設(shè)S1為受擾信號(hào),S2為經(jīng)過(guò)消抖處理后要輸出的信號(hào)。</p><p> 圖4.4 延時(shí)比較法流程圖</p><p> 下面給出用VHDL實(shí)現(xiàn)的延時(shí)消抖,同時(shí)給出仿真結(jié)果,是經(jīng)過(guò)延時(shí)
42、比較后的仿真圖,bclk為實(shí)際輸出的時(shí)鐘信號(hào),可以看到lclk的抖動(dòng)被消除了。因此,延時(shí)比較法能有效地消除抖動(dòng)。</p><p> entity xiaodou is</p><p> port (fosc : in std_logic; </p><p> lclk : in std_logic; </p>
43、<p> bclk : out std_logic); </p><p> end xiaodou;</p><p> architecture Behavioral of xiaodou is</p><p> signal count : std_logic_vector(1 downto 0);
44、 </p><p> signal dout : std_logic; </p><p> signal rstcnt : std_logic_vector(17 downto 0):="000000000000000000";</p><p> signal rst
45、 : std_logic; </p><p><b> begin</b></p><p> process ( fosc,rstcnt )------reset1</p><p><b> begin</b></p><p> if rstcnt = "1111
46、11111111111111" then</p><p> rstcnt <= rstcnt;</p><p> rst <= '0';</p><p> elsif fosc'event and fosc ='1' then</p><p> rstcnt <
47、= rstcnt + 1;</p><p> rst <= '1';</p><p><b> end if;</b></p><p> end process;</p><p> process (fosc,rst)</p><p><b> begin
48、</b></p><p> if rst = '1' then</p><p> rxout <= '1';</p><p> elsif fosc ' event and fosc = '1' then</p><p> if (lclk = '0
49、39;) and (count(1) = '0') and (dout = '1') then</p><p> dout <= '1';</p><p> count <= count+1;</p><p> elsif (lclk = '0') and (count(1) =
50、39;1') and (dout = '1') then</p><p> dout <= '0';</p><p> count <= "00";</p><p> elsif (lclk = '1') and (count(1) = '0') and (
51、dout = '0') then</p><p> dout <= '0';</p><p> count <= count+1;</p><p> elsif (lclk = '1') and (count(1) = '1') and (dout = '0') the
52、n</p><p> dout <= '1';</p><p> count <= "00";</p><p><b> else</b></p><p> bclk <= dout;</p><p> count <= &qu
53、ot;00";</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p> end Behavioral;</p><p> 仿真結(jié)果如下圖所示:<
54、/p><p> 圖4.5 消抖仿真結(jié)果</p><p><b> 4.2 數(shù)據(jù)存儲(chǔ)</b></p><p> 4.2.1 FLASH存儲(chǔ)器無(wú)效塊檢測(cè)</p><p> 本設(shè)計(jì)中的數(shù)據(jù)存儲(chǔ)模塊使用的是SAMSUNG公司的NAND型Flash K9K8G08UOA,由于在出廠時(shí)NAND結(jié)構(gòu)的Flash芯片就可能存在一
55、位或多位無(wú)效位的壞塊,這種情況在NAND型Flash中是不可避免的。另外在使用過(guò)程中也可能會(huì)產(chǎn)生無(wú)效塊,如果對(duì)Flash中的無(wú)效塊進(jìn)行讀寫(xiě)操作,在檢測(cè)其編程或擦除是否結(jié)束時(shí),F(xiàn)lash反饋的狀態(tài)信息就會(huì)出錯(cuò),這樣可能會(huì)使上位機(jī)軟件進(jìn)入死循環(huán),造成數(shù)據(jù)的丟失和誤碼,為了保證數(shù)據(jù)的完整性和有效性,在對(duì)Flash讀寫(xiě)操作之前必須對(duì)Flash進(jìn)行無(wú)效塊檢查,在對(duì)Flash進(jìn)行檢測(cè)時(shí),首先要建立無(wú)效塊信息表,并判斷此塊是否為有效塊,然后再對(duì)Fla
56、sh進(jìn)行讀寫(xiě)操作。整個(gè)無(wú)效塊檢測(cè)流程如圖4.6所示:首先進(jìn)行程序初始化設(shè)置,然后進(jìn)行塊擦除,塊擦除結(jié)束判斷是否成功,若擦除不成功則此塊為無(wú)效塊,并在此無(wú)效塊的第1頁(yè)和第2頁(yè)的第2048個(gè)字節(jié)寫(xiě)入0X00,表示此塊為無(wú)效塊,接著塊地址遞增,進(jìn)行下一塊的擦除,整個(gè)過(guò)程如此循環(huán),直到檢測(cè)完最后一塊為止。</p><p> 圖4.6 無(wú)效塊檢測(cè)流程圖</p><p> 4.2.2 數(shù)據(jù)的存儲(chǔ)
57、</p><p> 數(shù)字量信號(hào)在采集過(guò)程中存儲(chǔ)于一片外部FIFO中,緩沖數(shù)字量數(shù)據(jù)。邏輯控制單元FPGA檢測(cè) FIFO的半滿(mǎn)信號(hào),F(xiàn)IFO半滿(mǎn)后,將該片F(xiàn)IFO中已寫(xiě)入的數(shù)據(jù)存入Flash的指定區(qū)域中。數(shù)據(jù)存儲(chǔ)具體流程如圖4.7所示:</p><p> 圖4.7 數(shù)據(jù)存儲(chǔ)流程</p><p><b> 電路及系統(tǒng)調(diào)試</b></p&
58、gt;<p> 將程序下載到芯片以后,硬件部分連接至上位機(jī),用上位機(jī)來(lái)設(shè)置信號(hào)源,實(shí)現(xiàn)遞增、遞減或固定值的數(shù)字量信號(hào),如圖5.1所示。</p><p> 圖5.1 信號(hào)源設(shè)置圖</p><p> 當(dāng)信號(hào)源發(fā)出一組遞增的數(shù)字量信號(hào)時(shí),采集存儲(chǔ)結(jié)果如下圖5.2。</p><p> 圖5.2 采集的遞增數(shù)據(jù)</p><p>
59、 當(dāng)信號(hào)源發(fā)出一組遞減的數(shù)字量信號(hào)時(shí),采集存儲(chǔ)結(jié)果如下圖5.3。</p><p> 圖5.3 采集的遞減數(shù)據(jù)</p><p> 當(dāng)信號(hào)源發(fā)出一組固定的數(shù)字量信號(hào)時(shí),采集存儲(chǔ)結(jié)果如下圖5.4。</p><p> 圖5.4 采集的固定數(shù)據(jù)</p><p> 由上述圖可以看出采集存儲(chǔ)的數(shù)據(jù)沒(méi)有問(wèn)題,數(shù)據(jù)符合編幀的要求,幀格式為“04+6F+
60、反碼+原碼”。</p><p><b> 總結(jié)</b></p><p> 本文介紹了對(duì)一路數(shù)字信號(hào)采編的電路設(shè)計(jì)。首先對(duì)數(shù)據(jù)采集作了簡(jiǎn)要概述,介紹了數(shù)據(jù)采集的發(fā)展現(xiàn)狀和前景,然后提出了本次設(shè)計(jì)的目的與要求;其次針對(duì)整個(gè)系統(tǒng)的組成框架,詳細(xì)闡述了每一個(gè)部分的原理和設(shè)計(jì),以及在設(shè)計(jì)軟件中的實(shí)際操作,最后簡(jiǎn)要分析了調(diào)試的結(jié)果和問(wèn)題。</p><p&g
61、t; 本設(shè)計(jì)經(jīng)過(guò)了細(xì)致的方案設(shè)計(jì),分層次分模塊的硬件設(shè)計(jì),最終達(dá)到了設(shè)計(jì)之初所要達(dá)到的指標(biāo),基本上完成了所要設(shè)計(jì)的內(nèi)容。但由于經(jīng)驗(yàn)較少,在設(shè)計(jì)中還是遇到了不少問(wèn)題,如由于外電路的干擾,電路不穩(wěn)定等因素,導(dǎo)致采集到的波形稍有嚴(yán)重。</p><p> 就數(shù)據(jù)采集系統(tǒng)來(lái)說(shuō),已經(jīng)具備了采集編幀、分析數(shù)據(jù)等功能。但由于本設(shè)計(jì)還處于初級(jí)實(shí)驗(yàn)間段。在以后設(shè)計(jì)電路的時(shí)候應(yīng)考慮到外部電路的干擾,只有外部電路穩(wěn)定,才能更好的減小
62、波形的誤差。</p><p> 經(jīng)過(guò)這次的畢業(yè)設(shè)計(jì),使我學(xué)到如何解決在設(shè)計(jì)中所遇問(wèn)題的方法,鞏固了我在大學(xué)四年中學(xué)到的知識(shí),鍛煉了我的實(shí)踐動(dòng)手能力,而且擴(kuò)展了我的視野,但是同時(shí)看到了自己的許多不足,希望自己可以在以后的工作和學(xué)習(xí)中得到克服改正。</p><p><b> 附錄A 系統(tǒng)原理圖</b></p><p><b> 附錄
63、B 部分程序</b></p><p> 以下均省略了對(duì)庫(kù)的定義</p><p> library IEEE;</p><p> use IEEE.STD_LOGIC_1164.ALL;</p><p> use IEEE.STD_LOGIC_ARITH.ALL;</p><p> use IEE
64、E.STD_LOGIC_UNSIGNED.ALL;</p><p> 1. 數(shù)字信號(hào)接收部分</p><p> entity rxslow is</p><p> port(mclkx16 : in std_logic; </p><p> rx : in std_logic; </p>
65、<p> reset : in std_logic; </p><p> jl : in std_logic_vector(1 downto 0);</p><p> rxrdy : out std_logic; </p><p> data : out std_logic_v
66、ector(7 downto 0);</p><p> neibu_rxrdy : out std_logic; </p><p> neibu_data : out std_logic_vector(7 downto 0)</p><p><b> ); </b></p><
67、;p> end rxslow;</p><p> architecture Behavioral of rxslow is</p><p> signal cnt : integer range 0 to 175; </p><p> signal flag : std_lo
68、gic;</p><p> signal stop : std_logic; </p><p> signal tmp_data : std_logic_vector(7 downto 0); </p><p> --signal temp_data : std
69、_logic_vector(7 downto 0); </p><p><b> begin</b></p><p> process (mclkx16, reset)</p><p><b> begin</b></p><p> if reset = '1' then&l
70、t;/p><p> flag <= '1';</p><p> elsif (mclkx16='1') and (mclkx16'event) then</p><p> if cnt = 166 then</p><p> flag <= '1';</p>
71、<p> elsif rx = '0' then</p><p> flag <= '0';</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;&l
72、t;/p><p> process (mclkx16, reset)</p><p><b> begin</b></p><p> if reset = '1' then</p><p><b> cnt <= 0;</b></p><p> e
73、lsif (mclkx16='1') and (mclkx16'event) then</p><p> if flag = '1' then</p><p> --if cnt = 163 then</p><p><b> cnt <= 0;</b></p><
74、p> elsif flag = '0' then</p><p> --else</p><p> cnt <= cnt + 1;</p><p><b> end if;</b></p><p><b> end if;</b></p>
75、<p> end process;</p><p> process (mclkx16, reset)</p><p><b> begin</b></p><p> if reset = '1' then</p><p> data <= "00000000"
76、;;</p><p> rxrdy<= '1';</p><p> stop<='0';</p><p> --temp_data <= "00000000";</p><p> elsif (mclkx16='1') and (mclkx16
77、'event) then</p><p> if cnt = 23 then</p><p> tmp_data(0)<= rx;</p><p> elsif cnt = 38 then</p><p> tmp_data(1)<= rx;</p><p> elsif cnt = 53
78、 then</p><p> tmp_data(2)<= rx;</p><p> elsif cnt = 68 then</p><p> tmp_data(3)<= rx;</p><p> elsif cnt = 83 then</p><p> tmp_data(4)<= rx;&l
79、t;/p><p> elsif cnt = 98 then</p><p> tmp_data(5)<= rx;</p><p> elsif cnt = 113 then</p><p> tmp_data(6)<= rx;</p><p> elsif cnt = 128 then</p&g
80、t;<p> tmp_data(7)<= rx;</p><p> --temp_data <=temp_data+1;</p><p> elsif cnt = 129 then</p><p> --data <= tmp_data;</p><p> neibu_data &
81、lt;= tmp_data;</p><p> --data <= tmp_data;</p><p> elsif cnt = 158 then</p><p> ifrx='1' then</p><p> stop<='1';</p><p>
82、elsif rx='0' then</p><p> stop<='0';</p><p><b> end if;</b></p><p> elsif cnt = 159 then</p><p> data <= "00000100" ;
83、 -----04</p><p> if jl(0)='1' then </p><p> ifstop='1'then </p><p> rxrdy<= '0';</p><p><b> else</b></p>
84、;<p> rxrdy<= '1';</p><p><b> end if;</b></p><p><b> end if;</b></p><p> if jl(1)='1' then</p><p> ifstop='1
85、'then </p><p> neibu_rxrdy<= '0';</p><p><b> else</b></p><p> neibu_rxrdy<= '1';</p><p><b> end if;</b&
86、gt;</p><p><b> end if;</b></p><p> elsif cnt = 160 then </p><p> rxrdy<= '1';</p><p> neibu_rxrdy<= '1'; </p><p
87、> elsif cnt = 161 then</p><p> data <= "01101111"; --6F</p><p> if jl(0)='1' then </p><p> ifstop='1'then </p><p>
88、 rxrdy<= '0';</p><p><b> else</b></p><p> rxrdy<= '1';</p><p><b> end if;</b></p><p><b> end if;</b></
89、p><p> elsif cnt = 162 then</p><p> rxrdy<= '1';</p><p> elsif cnt = 163 then</p><p> data <= not tmp_data;------反碼</p><p> if jl(0)='
90、;1' then </p><p> ifstop='1'then </p><p> rxrdy<= '0';</p><p><b> else</b></p><p> rxrdy<= '1';</p&g
91、t;<p><b> end if;</b></p><p><b> end if;</b></p><p> elsif cnt = 164 then</p><p> rxrdy<= '1';</p><p> elsif cnt = 165 t
92、hen</p><p> data <= tmp_data;</p><p> if jl(0)='1' then </p><p> ifstop='1'then </p><p> rxrdy<= '0';</p><p&
93、gt;<b> else</b></p><p> rxrdy<= '1';</p><p><b> end if;</b></p><p><b> end if;</b></p><p> elsif cnt = 166 then<
94、/p><p> rxrdy<= '1';</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p> end Behavioral;</p&
95、gt;<p> 2. 數(shù)字信號(hào)分頻部分</p><p> entity fp22 is</p><p><b> port(</b></p><p> clk :in std_logic;--40M時(shí)鐘信號(hào)輸入 </p><p>
96、 clkout : out std_logic --1.8181M 16倍波特率</p><p><b> );</b></p><p><b> end fp22;</b></p><p> architecture rtl of fp22 is</p><p>
97、 signalcount1:integer range 0 to 10:=0 ;--輸出時(shí)鐘計(jì)數(shù)信號(hào)</p><p> signal temp : std_logic :='0';</p><p><b> begin</b></p><p> process (clk)--</p&
98、gt;<p><b> begin</b></p><p> if (clk'event and clk = '1') then</p><p> if(count1 = 10)then</p><p> count1 <= 0;</p><p> temp &l
99、t;= not temp;</p><p><b> else</b></p><p> count1 <= count1 + 1;</p><p><b> end if;</b></p><p> clkout<= temp; </p><p&g
100、t;<b> end if;</b></p><p> end process;</p><p><b> end rtl;</b></p><p><b> 3.數(shù)據(jù)存儲(chǔ)部分</b></p><p> when swr0 =>--initialize
101、 </p><p> s_state <= swr1;</p><p> when swr1 =>s_state <= swr68;</p><p> when swr68 =></p><p> s_state <= swr69;</p>
102、<p> when swr69 =></p><p> s_state <= swr70;</p><p> when swr70 =></p><p> s_state <= swr71;</p><p> when swr71 =></p><p> s_sta
103、te <= swr2;</p><p> when swr2=> </p><p> f_cle <= '1';</p><p> flash_data <="01100000";--write 0x60H command</p><p> s_state <
104、= swr3;</p><p> when swr3 =></p><p> f_we <= '0';</p><p> s_state <= szde1;</p><p> when szde1 =></p><p> s_state <= szde2;<
105、/p><p> when szde2 =></p><p> s_state <= swr4;</p><p> when swr4 =></p><p> f_we <= '1';</p><p> s_state <= swr5;</p><p
106、> when swr5 =>--write row1 address</p><p> f_cle<='0';</p><p> f_ale<='1';</p><p> flash_data(5 downto 0) <= "000000";</p&
107、gt;<p> flash_data(7 downto 6) <= w_countbs_er(1 downto 0); </p><p> s_state <= szde3;</p><p> when szde3 =></p><p> s_state <= swr6;</p><p>
108、when swr6=></p><p> f_we <= '0';</p><p> s_state <= szde4;</p><p> when szde4 =></p><p> s_state <= szde5;</p><p> when szde5 =
109、></p><p> s_state <= swr7;</p><p> when swr7 =></p><p> f_we <= '1';</p><p> s_state <= swr8;</p><p> when swr8 =>--wri
110、te row2 addressflash_data <= w_countbs_er(9 downto 2); </p><p> s_state <= szde6;</p><p> when szde6 =></p><p> s_state <= swr9;</p><p>
111、when swr9 =></p><p> f_we <= '0';</p><p> s_state <= szde7;</p><p> when szde7 =></p><p> s_state <= szde8;</p><p> when szde8
112、=></p><p> s_state <= swr10;</p><p> when swr10 =></p><p> f_we <= '1';</p><p> s_state <= swr11;</p><p> when swr11 =>
113、--write row3 address</p><p> flash_data <= "00000"&w_countbs_er(12 downto 10); s_state <= szde9;</p><p> when szde9 =></p><p> s_state <= sw
114、r12;</p><p> when swr12 =></p><p> f_we <= '0';</p><p> s_state <= szde10;</p><p> when szde10 =></p><p> s_state <= szde11;<
115、;/p><p> when szde11 =></p><p> s_state <= swr13;</p><p> when swr13 =></p><p> f_we <= '1';</p><p> s_state <= swr14;</p>
116、<p> when swr14 =>--write 0xd0H command</p><p> f_ale <= '0';</p><p> f_cle <= '1';</p><p> flash_data <= "11010000";</
117、p><p> s_state <= szde12;</p><p> when szde12 =></p><p> s_state <= swr15;</p><p> when swr15 =></p><p> f_we <= '0';</p>&
118、lt;p> s_state <= szde13;</p><p> when szde13 =></p><p> s_state <= szde14;</p><p> when szde14 =></p><p> s_state <= swr16;</p><p>
119、 when swr16 =></p><p> f_we <= '1';</p><p> s_state <= swr17;</p><p> when swr17 =></p><p> f_cle<='0';</p><p> rb_dela
120、ys <="11111"; </p><p> s_state <= swr18; </p><p> when swr18 => </p><p> rb_delays <= rb_delays -1; </p><p> s_state <= swr19;
121、 </p><p> when swr19 => </p><p> if rb_delays="00000" then </p><p> s_state <= swr20;</p><p> e_cnt <= "00000000000000000"
122、;; </p><p> else </p><p> s_state <= swr18; </p><p> end if; </p><p> when swr20 =></p><p> --if er_dl
123、="111111" then</p><p> if er_dl="111111" or e_cnt = "11111111111111111"then</p><p> s_state <= swr104;</p><p><b> else</b>&
124、lt;/p><p> s_state <= swr20;</p><p> e_cnt<= e_cnt + 1;</p><p><b> end if;</b></p><p> when swr104 =>------------------------檢查擦除成功沒(méi)</p>
125、;<p> f_cle <= '1';</p><p> flash_data <="01110000";--write 0x70H command</p><p> s_state <= swr105;</p><p> when swr105 =></p><
126、p> f_we <= '0';</p><p> s_state <= szde15;</p><p> when szde15 =></p><p> s_state <= szde16;</p><p> when szde16 =></p><p>
127、 s_state <= swr106;</p><p> when swr106 =></p><p> f_we <= '1';</p><p> s_state <= swr107;</p><p> when swr107 =></p><p> f_cle
128、 <= '0';</p><p> d_dir<='1';</p><p> rb_delays <="00111"; </p><p> s_state <= swr108; </p><p> when swr108 =>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)--數(shù)字信號(hào)發(fā)生器的電路設(shè)計(jì)
- 數(shù)字陀螺中數(shù)字信號(hào)處理電路設(shè)計(jì).pdf
- 數(shù)字信號(hào)處理畢業(yè)論文
- 調(diào)幅信號(hào)產(chǎn)生電路設(shè)計(jì)【畢業(yè)論文】
- 用數(shù)字邏輯電路設(shè)計(jì)產(chǎn)生各種數(shù)字信號(hào)
- 數(shù)字信號(hào)發(fā)生器的設(shè)計(jì)畢業(yè)論文
- 8路數(shù)字電壓表畢業(yè)論文
- 數(shù)字顯示穩(wěn)壓電路設(shè)計(jì)【畢業(yè)論文】
- 數(shù)字信號(hào)處理器應(yīng)用電路設(shè)計(jì)研究.pdf
- 基于數(shù)字信號(hào)處理器tmsf的逆變電路設(shè)計(jì)
- 畢業(yè)論文--數(shù)字信號(hào)載波傳輸?shù)膍atlab仿真
- 畢業(yè)論文:關(guān)于多功能數(shù)字鐘電路設(shè)計(jì)
- 畢業(yè)論文:關(guān)于多功能數(shù)字鐘電路設(shè)計(jì)
- 音頻放大電路設(shè)計(jì)畢業(yè)論文
- 畢業(yè)論文—高性能數(shù)字乘法器芯片電路設(shè)計(jì)
- led驅(qū)動(dòng)電路設(shè)計(jì)【畢業(yè)論文】
- 紅外遙控電路設(shè)計(jì)畢業(yè)論文
- 紅外遙控電路設(shè)計(jì)畢業(yè)論文
- 畢業(yè)論文(設(shè)計(jì))-交通燈數(shù)字控制電路設(shè)計(jì)
- 汽車(chē)倒車(chē)?yán)走_(dá)電路設(shè)計(jì)【畢業(yè)論文】
評(píng)論
0/150
提交評(píng)論