




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、西 安 郵 電 大 學(xué)畢 業(yè) 設(shè) 計(jì)(論 文)題 目: 基于FPGA的測(cè)距系統(tǒng)設(shè)計(jì)學(xué) 院: 電子工程學(xué)院專 業(yè): 電子科學(xué)與技術(shù)班 級(jí): 科技1201班學(xué)生姓名: 伍金霄導(dǎo)師姓名: 姚英 職稱: 工程師起止時(shí)間:2016年3月14日至2016年6月17日畢業(yè)設(shè)計(jì)(論文)承諾書(shū)本人承諾:本人所提交的畢業(yè)論文 是本人在指導(dǎo)教師指導(dǎo)下獨(dú)立研究、寫(xiě)作的成果,論文中所引用他人的文獻(xiàn)、數(shù)據(jù)、圖件、資料均已明確標(biāo)注;對(duì)本文的研究做出重要貢獻(xiàn)的個(gè)人和集體,均已在文中以明確方式注明并表示感謝。本人深知本承諾書(shū)的法律責(zé)任,違規(guī)后果由本人承擔(dān)。學(xué) 生(簽字): 時(shí)間: 年 月 日 指導(dǎo)教師(簽字): 時(shí)間: 年 月
2、 日西安郵電大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 選題審批表西安郵電大學(xué)本科畢業(yè)設(shè)計(jì)(論文)開(kāi)題報(bào)告西安郵電大學(xué)畢業(yè)設(shè)計(jì) (論文)成績(jī)?cè)u(píng)定表目錄摘要 - I ABSTRACT - II 引言 - 1 1 基于FPGA的測(cè)距系統(tǒng)設(shè)計(jì)的課題意義 - 21.1 研究背景 - 21.2 國(guó)內(nèi)外研究現(xiàn)狀 - 21.3 本文工作及論文結(jié)構(gòu) - 2 2 基于FPGA測(cè)距系統(tǒng)硬件結(jié)構(gòu)平臺(tái) - 42.1 FAPG核心板結(jié)構(gòu) - 42.2 紅外開(kāi)關(guān)距離傳感器 - 62.3 超聲波測(cè)距傳感器 - 7 3 紅外距離開(kāi)關(guān)測(cè)距系統(tǒng)軟件設(shè)計(jì) - 103.1 程序流程設(shè)計(jì) - 103.2 程序設(shè)計(jì)流程圖 - 113.3 運(yùn)行結(jié)果及小結(jié)
3、- 11 4 超聲波測(cè)距系統(tǒng)設(shè)計(jì) - 124.1 程序整體框架設(shè)計(jì) - 124.2 PLL倍頻 - 134.3 測(cè)距模塊程序設(shè)計(jì) - 144.4 顯示模塊程序設(shè)計(jì) - 164.5 仿真電路圖及運(yùn)行結(jié)果 - 184.6 軟硬件誤差分析 - 20 5 總結(jié)與展望 - 235.1 本文內(nèi)容總結(jié) - 235.2 工作展望 - 24 致謝 - 25 參考文獻(xiàn) - 26摘要測(cè)距系統(tǒng)目前在多個(gè)領(lǐng)域都有著極其重要且不可或缺的作用,不管是在現(xiàn)實(shí)生活中還是在航空航天以及軍工方面都有著重要的應(yīng)用。超聲波測(cè)距作為現(xiàn)代測(cè)距系統(tǒng)的一種也具有著非常廣泛的應(yīng)用。作為一種非接觸式的測(cè)距,它的價(jià)格低廉,使用非常方便,而且在一些特
4、殊的場(chǎng)合也有所應(yīng)用,在車(chē)輛倒車(chē)警報(bào)、水位的測(cè)量、自動(dòng)導(dǎo)航等很多方面。超聲波測(cè)距目前最重要的問(wèn)題就是如何實(shí)現(xiàn)精準(zhǔn)測(cè)距。本設(shè)計(jì)實(shí)現(xiàn)了兩種基本的測(cè)距系統(tǒng),一種是超聲波測(cè)距,另一種是紅外距離開(kāi)關(guān)實(shí)現(xiàn)的測(cè)距。論文中對(duì)超聲波測(cè)量距離的誤差進(jìn)行了詳細(xì)的分析,計(jì)算出了基于FPGA的超聲波測(cè)距的理論誤差,并對(duì)其軟件算法所導(dǎo)致的誤差和硬件物理誤差進(jìn)行了基本的分析。最后本論文提出了一種誤差校正的方法,在設(shè)計(jì)中運(yùn)用到了該方法并提高了測(cè)量的精準(zhǔn)度。與單片機(jī)所驅(qū)動(dòng)的超聲波測(cè)距來(lái)比,F(xiàn)PGA作為一種純硬件電路驅(qū)動(dòng)的超聲波測(cè)距具有的優(yōu)點(diǎn)是測(cè)量距離精準(zhǔn)、計(jì)算速度快、時(shí)鐘頻率高、內(nèi)部邏輯資源豐富等。除此之外,基于FPGA的測(cè)距系
5、統(tǒng)的測(cè)量距離相對(duì)穩(wěn)定,為了提高其精準(zhǔn)性還可以利用PLL對(duì)其進(jìn)行倍頻。關(guān)鍵詞:時(shí)鐘頻率; 測(cè)距系統(tǒng); FPGA; PLL; 算法; 誤差I(lǐng)ABSTRACTDistance measurement system has a very important and indispensable role in many fields, whether in real life or in the aerospace and military fields have important applications. Ultrasonic distance measurement as a kind of m
6、odern distance measurement system has a very wide range of applications. As a non-contact type of ranging, it is cheap, easy to use, but also in some special occasions, such as in many aspects of the vehicle reversing alarm, water level measurement, automatic navigation, and so on. The most importan
7、t problem of ultrasonic distance measurement is how to achieve accurate ranging. The design are achieved the two basic range of the system, one is the ultrasonic distance measurement system; the other measure system is the distance switch. In the thesis, the ultrasonic distance measurement error wer
8、e detailed analyzation, and make detail calculation based on FPGA ultrasonic ranging theory error, basic analysis and the software algorithms lead to the error and the physical hardware error. In the last, this paper put forward an error correction way. In this design we has used the error correctio
9、n way in order that improve the accuracy of all system. Compare with the SCM ultrasonic ranging system, FPGA is used as a pure hardware circuit driven ultrasonic measuring has the advantage of distance measurement precision, fast calculation speed, high clock frequency, and abundant internal logical
10、 resource. In addition, the distance measurement system based on FPGA is relatively stable, in order to improve its precision you can also be used to carry out frequency doubling PLL.Key words: Ranging system; FPGA; PLL; algorithm; errorII引言目前測(cè)距系統(tǒng)的應(yīng)用在各個(gè)領(lǐng)域非常廣泛,如汽車(chē)倒車(chē)系統(tǒng)、水位測(cè)量、水下潛艇位置測(cè)量等。這些非接觸式的測(cè)距系統(tǒng)給工業(yè)和生活
11、領(lǐng)域都帶來(lái)了很大的方便,并且它改善了傳統(tǒng)距離測(cè)量的缺點(diǎn)。但是對(duì)于這些非接觸式的測(cè)距系統(tǒng)很多都存在著一定的缺陷,其主要缺陷就是精度不夠高。本設(shè)計(jì)針對(duì)此缺陷提出了一種新測(cè)距方式,該方式利用FPGA鎖相環(huán)來(lái)提高測(cè)距系統(tǒng)時(shí)鐘頻率,從而降低測(cè)量誤差。本設(shè)計(jì)采用了兩種基本的測(cè)距方案,第一種是紅外距離開(kāi)關(guān)傳感器所實(shí)現(xiàn)的測(cè)距,第二種是由超聲波所實(shí)現(xiàn)的精準(zhǔn)測(cè)距。對(duì)于紅外距離開(kāi)關(guān)傳感器所實(shí)現(xiàn)的測(cè)距,本文主要研究其反饋信號(hào)如何通過(guò)FPGA來(lái)驅(qū)動(dòng)LED和蜂鳴器,如何通過(guò)距離的遠(yuǎn)近來(lái)控制其反饋信號(hào),并對(duì)其靈敏度也做出了基本研究。對(duì)于超聲波測(cè)距系統(tǒng)而言,本論文主要對(duì)其測(cè)距算法進(jìn)行了基本研究。論文總結(jié)中分別對(duì)兩種不同的算法
12、進(jìn)行了分析與比較,最后根據(jù)VerilogHDL語(yǔ)言的特性選擇了一種較為合適的算法,即逐位遞加的算法。利用該算法不僅使得程序易讀性增強(qiáng),而且該算法也利于顯示模塊的程序設(shè)計(jì)。本設(shè)計(jì)主要目的是提高其測(cè)量距離的精準(zhǔn)度。在本設(shè)計(jì)中為了提高其測(cè)距精準(zhǔn)度,采用了鎖相環(huán)時(shí)鐘倍頻的方法來(lái)降低系統(tǒng)時(shí)延差,誤差校正的方法確保其測(cè)距的精準(zhǔn)度。最后文章對(duì)影響測(cè)量精度的兩種誤差做了基本分析,針對(duì)其影響,提出了改善方案。11 基于FPGA的測(cè)距系統(tǒng)設(shè)計(jì)的課題意義1.1 研究背景目前測(cè)距系統(tǒng)的應(yīng)用非常廣泛,就測(cè)距系統(tǒng)也分為很多種,比如說(shuō)像超聲波測(cè)距、激光測(cè)距、紅外測(cè)距等。這些測(cè)距系統(tǒng)在多個(gè)領(lǐng)域都有著自己的貢獻(xiàn),如激光測(cè)距可應(yīng)
13、用于天體測(cè)量,激光通信技術(shù)等。超聲波測(cè)距可用于水位測(cè)量,汽車(chē)倒車(chē)系統(tǒng)等。紅外測(cè)距也可以用于多個(gè)方面。但是目前測(cè)距系統(tǒng)存在一些嚴(yán)重的缺點(diǎn),就是精度不夠高。本設(shè)計(jì)針對(duì)目前測(cè)距系統(tǒng)的低精度問(wèn)題,采用了FPGA作為系統(tǒng)設(shè)計(jì)的核心,在超聲波測(cè)距系統(tǒng)中提出了一種高精度的測(cè)距方案。分析了測(cè)距系統(tǒng)的精準(zhǔn)性和誤差,并且對(duì)其誤差的產(chǎn)生做出了細(xì)致的分析與計(jì)算。1.2 國(guó)內(nèi)外研究現(xiàn)狀測(cè)距系統(tǒng)分為很多種,如超聲波測(cè)距、紅外測(cè)距、激光測(cè)距還有一些諸如距離開(kāi)關(guān)等間接測(cè)距方式,目前超聲波測(cè)距應(yīng)用比較廣泛,比如像測(cè)量水位、汽車(chē)倒車(chē)報(bào)警、水下的潛艇測(cè)距、一些兒童的玩具等。由于超聲波的波長(zhǎng)相對(duì)于光速來(lái)說(shuō)較長(zhǎng),所以在繞射方面存在著一
14、定的優(yōu)勢(shì),它可以繞過(guò)一些直徑相對(duì)較大的障礙物而達(dá)到目標(biāo),進(jìn)而返回超聲波,從而完成測(cè)距功能。就目前研究現(xiàn)狀來(lái)說(shuō),超聲波測(cè)距在生活領(lǐng)域和工業(yè)領(lǐng)域都有著它自己的應(yīng)用和優(yōu)勢(shì),它相比于激光測(cè)距和紅外測(cè)距來(lái)說(shuō),在傳播過(guò)程中可以繞射過(guò)較大的空氣顆粒,比如像霧霾,煙霧等,因而超聲波測(cè)距在我們的生活中可應(yīng)用的地方很多。在工業(yè)方面,一些水位高度測(cè)量、潛艇位置反饋等都用到了超聲波測(cè)距。目前國(guó)內(nèi)外的測(cè)距系統(tǒng)更加注重于測(cè)量精度方面?;贔PGA的測(cè)距系統(tǒng)目前在國(guó)內(nèi)高校的研究備受青睞。由于FPGA具有非常高的時(shí)鐘頻率和PLL倍頻特性,所以在測(cè)距的精準(zhǔn)性方面有很強(qiáng)的優(yōu)勢(shì)。除此之外本設(shè)計(jì)還對(duì)另外一種測(cè)距方案進(jìn)行了研究,該方案
15、采用了紅外距離開(kāi)關(guān)。采用FPGA的目的主要在于其對(duì)信號(hào)采樣的時(shí)鐘高頻特性,從而提高了開(kāi)關(guān)的靈敏程度。1.3 本文工作及論文結(jié)構(gòu)本文的工作主要是實(shí)現(xiàn)一個(gè)精度達(dá)到毫米級(jí)別的測(cè)距系統(tǒng),并將數(shù)據(jù)顯示在FPGA開(kāi)發(fā)板的數(shù)碼管上。數(shù)碼管所選用的芯片是74HC138D,所以要做的工作就是實(shí)現(xiàn)精準(zhǔn)測(cè)距、PLL倍頻、數(shù)據(jù)的分離、小數(shù)點(diǎn)的保留、數(shù)碼管譯碼及段選位選。該FPGA開(kāi)發(fā)板的系統(tǒng)時(shí)鐘頻率為50MHZ,所以其精度在理論上可以達(dá)到10ns級(jí)別。如果調(diào)用IP核的話,還可以提高時(shí)鐘頻率。在本設(shè)計(jì)中考慮到穩(wěn)定性和精準(zhǔn)性,將時(shí)鐘頻率穩(wěn)定至50MHZ。同時(shí)還利用了PLL進(jìn)行倍頻,將頻率提升至100MHZ,對(duì)100MHZ
16、時(shí)鐘頻率情況下也進(jìn)行了測(cè)量。關(guān)于倍頻誤差計(jì)算在誤差分析中會(huì)有提及。同時(shí)還要完成對(duì)超聲波測(cè)距的程序分析,生成仿真電路圖的分析,對(duì)其精度的分析2做出描述和計(jì)算。其次,本論文還要描述光電距離開(kāi)關(guān)的功能,如驅(qū)動(dòng)蜂鳴器,讓其產(chǎn)生音樂(lè)。并畫(huà)出其程序設(shè)計(jì)流程圖,分析程序的寫(xiě)法等。其論文結(jié)構(gòu)在整體上將它分為前中后三大塊;前邊主要介紹這個(gè)課題的研究背景及應(yīng)用,其次還介紹了FPGA開(kāi)發(fā)板的硬件部分,包括cyclone EP4CE6芯片和兩個(gè)傳感器的硬件部分。中間部分又將其分為兩個(gè)部分,一部分是研究基于FPGA的超聲波測(cè)距,具體分析了超聲波測(cè)距的硬件部分、FPGA開(kāi)發(fā)板上的硬件部分。另一部分是軟件部分,軟件部分主要
17、是對(duì)超聲波測(cè)距部分的軟件編寫(xiě)進(jìn)行詳細(xì)分析,對(duì)數(shù)碼管段選位選、譯碼部分、驅(qū)動(dòng)部分、管腳分配等進(jìn)行詳細(xì)分析。與其基于FPGA超聲波測(cè)距系統(tǒng)并行的部分就是紅外距離開(kāi)關(guān)傳感器的介紹,以及由該傳感器所實(shí)現(xiàn)的一些功能。比如驅(qū)動(dòng)LED燈,驅(qū)動(dòng)蜂鳴器等。對(duì)于軟件部分主要描述其設(shè)計(jì)靈感、設(shè)計(jì)思路、程序分析、管腳配置等。論文的后半部分主要對(duì)前半部分和中間部分做一個(gè)總結(jié);對(duì)VerilogHDL語(yǔ)言在設(shè)計(jì)過(guò)程中遇到的錯(cuò)誤以及解決方法給出一個(gè)詳盡的解釋;對(duì)設(shè)計(jì)過(guò)程中遇到的問(wèn)題,及該問(wèn)題的解決辦法給出細(xì)致的描述,對(duì)測(cè)距誤差進(jìn)行了量化分析。32 基于FPGA測(cè)距系統(tǒng)硬件結(jié)構(gòu)平臺(tái)2.1 FAPG核心板結(jié)構(gòu)該設(shè)計(jì)采用的是至芯科
18、技公司的FPGA開(kāi)發(fā)板,該開(kāi)發(fā)板集成了多種功能,比如說(shuō)像VGA接口、PS2鍵盤(pán)接口、138譯碼的數(shù)碼管、30pin外接口I/O、間距為2.54mm的外接插件、jtag調(diào)試接口、AS下載接口、DA數(shù)模轉(zhuǎn)換芯片TLC5620、USB轉(zhuǎn)串口接口、蜂鳴器、四個(gè)輕觸按鍵。開(kāi)發(fā)板的具體結(jié)構(gòu)如下圖所示:圖2-1 FPGA開(kāi)發(fā)板結(jié)構(gòu)從設(shè)計(jì)方面考慮要用到的部分是外接口I/O、138譯碼的數(shù)碼管、jtag調(diào)試接口、AS下載端口、蜂鳴器等。在最初的設(shè)計(jì)思路中運(yùn)用到了LED燈,輕觸按鍵這些功能。運(yùn)用這些功能的目的是對(duì)FPGA開(kāi)發(fā)板進(jìn)行一個(gè)初步的學(xué)習(xí),從而實(shí)現(xiàn)一些簡(jiǎn)單的功能,進(jìn)而向較難的功能邁出一小步。該FPGA開(kāi)發(fā)板
19、所用的核心芯片為ALTERA公司的cyclone IV E系列芯片,具體型號(hào)為EP4CE6E22C8N。cyclone IV E系列的芯片通過(guò)了最低的成本實(shí)現(xiàn)了較高的功能,并且cyclone IV E系列的器件上邊集成很多低成本的收發(fā)器2。在不影響其整體功能的前提下,節(jié)省了很多成本。Cyclone IV E系列在很多領(lǐng)域諸如像無(wú)線、通訊等都有著一些很有價(jià)值的應(yīng)用。cyclone IV E器件系列具有以下特性3:(1)6k到150k的邏輯單元。(2)高達(dá)6.3Mb的嵌入式存儲(chǔ)器10。(3)高達(dá)360個(gè)18*18乘法器,實(shí)現(xiàn)DSP處理密集型的應(yīng)用5。4(4)協(xié)議橋接的應(yīng)用,可以實(shí)現(xiàn)小于1.5W的總
20、功率。(5)低成本、低功耗的FPGA構(gòu)架。圖2-2 cyclone IV E EP4CE6E22C8N型號(hào)芯片在選用該開(kāi)發(fā)板之前,對(duì)實(shí)現(xiàn)一個(gè)具體系統(tǒng)應(yīng)該有一個(gè)全方位的了解,針對(duì)系統(tǒng)的功能和需要的資源來(lái)具體選擇FPGA開(kāi)發(fā)板。下面針對(duì)cyclone IV E系列的EP4CE6E22C8N型號(hào)芯片的具體需用單元做出介紹:(1)具有可編程的輸入輸出端口在該FPGA開(kāi)發(fā)板中,I/O位于最左邊的部分,總共有30個(gè)。它們是FPGA芯片與外界電路的重要接口部分4,同時(shí)它們也完成不同的電器特性對(duì)I/O信號(hào)的驅(qū)動(dòng)和匹配需求1,在編寫(xiě)程序的時(shí)候,有時(shí)為了節(jié)省資源或?yàn)榱顺绦虻暮?jiǎn)潔性,目前大多數(shù)FPGA端口都設(shè)計(jì)成具
21、有可編程性的I/O接口。FPGA針對(duì)外部設(shè)備的接口具有可以編寫(xiě)程序并輸入芯片的功能,所以這樣就大大增加了FPGA的自由特性。(2)較為豐富的布線資源和cyclone系列的其他芯片一樣,F(xiàn)PGA本身就具有非常豐富的布線資源,它的這個(gè)特點(diǎn)可以給開(kāi)發(fā)工程師們非常多的自我選擇,選擇最簡(jiǎn)潔的布線方式和最簡(jiǎn)便的算法。這些布線的結(jié)構(gòu)和連線的長(zhǎng)度對(duì)信號(hào)的傳輸速度起到了非常重要的影響,所以算法的優(yōu)先級(jí)和算法的優(yōu)化就顯的尤為重要了,它可能直接可以確定運(yùn)算速度了。(3)較低的功耗Cyclone IV E系列芯片采用了經(jīng)過(guò)優(yōu)化后的60nm的工藝。它的內(nèi)核電壓相對(duì)于前幾代的都有所降低。這在大規(guī)模集成電路的工程設(shè)計(jì)中既節(jié)
22、省了資源,又降低了5系統(tǒng)整體的功耗。這對(duì)于資源優(yōu)化與資源的合理分布有這非同尋常的價(jià)值所在。(4)全面的設(shè)計(jì)資源該系列FPGA核心芯片運(yùn)行流暢,其IP庫(kù)也非常成熟,使用的是Quarters2開(kāi)發(fā)軟件。不管是程序調(diào)試方面還是下載、電路圖仿真等方面都非常的便利。其嵌入式處理器采用的是NiosII處理,這是目前世界上最通用的嵌入式處理器。它可以使得綜合電路運(yùn)行的更為流暢,時(shí)鐘頻率更加穩(wěn)定。(5)全方位的時(shí)鐘網(wǎng)絡(luò)該芯片時(shí)鐘網(wǎng)絡(luò)資源豐富,可以利用PLL進(jìn)行分頻、倍頻;可以調(diào)用IP核對(duì)需要的時(shí)鐘頻率進(jìn)行具體設(shè)定。并且在芯片處理系統(tǒng)中可以對(duì)不同的時(shí)鐘信號(hào)進(jìn)行同時(shí)處理。本設(shè)計(jì)中使用了PLL,實(shí)現(xiàn)了倍頻功能。2.
23、2 紅外開(kāi)關(guān)距離傳感器在本設(shè)計(jì)中所選用的傳感器的型號(hào)為E18D50NK,所供電為5V。該傳感器總共有三個(gè)端口,其中一個(gè)接的是5V的電源,另一根綠顏色的線接的是GND,還有一根線是反饋信號(hào)。其反饋信號(hào)為數(shù)字信號(hào),在設(shè)計(jì)之前利用單個(gè)LED二極管對(duì)其進(jìn)行了簡(jiǎn)單的測(cè)量。給該傳感器供5V電壓,這時(shí)給反饋信號(hào)接口接一個(gè)LED發(fā)光二極管,如果紅外距離傳感器和障礙物的距離增大的話,就會(huì)反饋一個(gè)高電平,LED發(fā)光二極管就點(diǎn)亮。如果接近障礙物的話,LED發(fā)光二極管就會(huì)熄滅。調(diào)節(jié) E18D50NK傳感器尾部的滑動(dòng)螺絲,其距離感應(yīng)就會(huì)有相應(yīng)改變。經(jīng)驗(yàn)證其最小范圍為0cm,最大范圍為60cm??梢酝ㄟ^(guò)調(diào)節(jié)該距離開(kāi)關(guān)的尾
24、部的螺絲來(lái)改變?cè)搨鞲衅鞯拈_(kāi)關(guān)感應(yīng)距離。圖2-3 紅外開(kāi)關(guān)傳感器測(cè)量電路圖62.3 超聲波測(cè)距傳感器本部分首先介紹超聲波測(cè)量距離的原理,其次介紹超聲波測(cè)距模塊。超聲波測(cè)距的基本原理可以這樣認(rèn)為,我們知道聲音在空氣里的傳播速度大約是0.34千米/秒。超聲波在空氣中的傳播速度大概也是0.34千米/秒,而這個(gè)速度受外界環(huán)境變化特別的??;況且超聲波的波長(zhǎng)相對(duì)于空氣中的懸浮顆粒直徑較大,因而可以有效的繞射過(guò)空氣中的懸浮顆粒等直徑比較小的障礙物,所以可以認(rèn)為它在空氣中的傳播速度基本可以維持在0.34千米/秒。基于這個(gè)基本不變的速度,只需測(cè)出其發(fā)出去以及反射回來(lái)的時(shí)間差,然后在通過(guò)一定的計(jì)算,就可以得到發(fā)射端
25、到目標(biāo)物體的距離了。圖2-4 超聲波測(cè)量距離的原理圖由以上的超聲波測(cè)量距離的原理圖就可以知道距離S可以被很簡(jiǎn)潔的表達(dá)出來(lái)了??梢园崖曀俦硎境蒝,超聲波從發(fā)射到接收的時(shí)間差為T(mén),這樣距離就可以被表達(dá)成S=V*T/2。圖2-4中的方法可稱為間接測(cè)距法。還有一種直接測(cè)距的方法,直接測(cè)距就是將測(cè)距系統(tǒng)的發(fā)射端口和接收端口對(duì)準(zhǔn)。發(fā)射的超聲波直接進(jìn)入接收端,這樣就可以直接計(jì)算出其測(cè)量的距離了。這種測(cè)距系統(tǒng)并不僅僅局限于超聲波測(cè)距系統(tǒng),在一些激光測(cè)距、紅外測(cè)距等系統(tǒng)方面也有著一定價(jià)值的應(yīng)用。在本設(shè)計(jì)中利用超聲波在空氣中的傳播原理,按照S=V*T/2的關(guān)系計(jì)算出1毫米的時(shí)鐘高電平個(gè)數(shù)。利用距離單位的逐項(xiàng)疊加,
26、逐個(gè)進(jìn)位的方式計(jì)算出其距離。圖2-5 超聲波模塊7基于FPGA的超聲波測(cè)距系統(tǒng)利用的超聲波模塊型號(hào)為HC_HR04,它實(shí)際上采用的是給模塊上的trig端口一個(gè)觸發(fā)電平,讓其觸發(fā)超聲波的發(fā)出。首先,在使用該模塊之前,對(duì)該超聲波模塊進(jìn)行了簡(jiǎn)單的端口測(cè)試。利用電壓源給該模塊接上5V的電壓。利用信號(hào)發(fā)生器產(chǎn)生一個(gè)10us的高電平脈沖信號(hào),將此信號(hào)加到trig接口上,這樣就完成了對(duì)該超聲波模塊的觸發(fā)。然后將示波器探頭接在超聲波模塊的echo端口上,觀察示波器會(huì)顯示以下信號(hào):圖2-6示波器觀測(cè)圖圖2-7信號(hào)源信號(hào)圖由圖2-7中的信號(hào)源可以看出,設(shè)置占空比為20%,脈沖電壓為5V,周期為50us。這樣信號(hào)源
27、就可以產(chǎn)生一個(gè)10us的連續(xù)脈沖,將此脈沖信號(hào)送給trig端口,然后在超聲波模塊上的echo端口上加上示波器來(lái)測(cè)量echo上的信號(hào)變化。圖2-6所示,可以清楚的看到echo信號(hào)也呈現(xiàn)周期性變化,其原因就是給trig輸入的信號(hào)成周期性變化,每次經(jīng)過(guò)10us的連續(xù)高電平,超聲波就會(huì)發(fā)出一個(gè)調(diào)制的脈沖信號(hào),該調(diào)制信號(hào)返回后,echo端的信號(hào)就會(huì)由高電平瞬間變回低電平了,所以echo信號(hào)的8周期性變化是由trig信號(hào)的周期性變化引起的。還有一個(gè)值得注意的問(wèn)題,觀察示波器的峰峰值可以看出echo反饋的高電平和給超聲波模塊的VCC端口所輸入的電壓信號(hào)的高電平值是一樣大的,因此就要考慮FPGA開(kāi)發(fā)板的I/O
28、接口所承受的最大耐壓值;比如像Xilinx的Basys系列的開(kāi)發(fā)板I/O接口電壓承受值為3.3V,這種情況就要給echo接口加一個(gè)分壓電阻。以免返回電壓過(guò)大而對(duì)芯片造成一定程度的損傷。而ALTERA系列開(kāi)發(fā)板的I/O接口一般情況可以承受5V的電壓值,因此可以直接將I/O接口與echo端口和trig端口接在一起。93 紅外距離開(kāi)關(guān)測(cè)距系統(tǒng)軟件設(shè)計(jì)3.1 程序流程設(shè)計(jì)在這個(gè)系統(tǒng)的程序設(shè)計(jì)中,實(shí)際上利用了紅外距離開(kāi)關(guān)的性質(zhì)。當(dāng)距離和障礙物比較近時(shí),由距離開(kāi)關(guān)反饋一個(gè)低電平;將這個(gè)低電平作為復(fù)位信號(hào)送進(jìn)FPGA開(kāi)發(fā)板中,并且將此信號(hào)作為蜂鳴器的驅(qū)動(dòng)信號(hào)。這個(gè)模塊中也可以將rst_n復(fù)位信號(hào)作為驅(qū)動(dòng)LE
29、D的驅(qū)動(dòng)信號(hào),來(lái)驅(qū)動(dòng)LED發(fā)光。在這里用到了assign語(yǔ)句,可以在程序中這樣寫(xiě)assign led = rst_n;這樣rst_n就可以直接無(wú)延遲的送到led中,從而就可以在驅(qū)動(dòng)蜂鳴器的同時(shí)來(lái)驅(qū)動(dòng)LED燈了。關(guān)于該FPGA開(kāi)發(fā)板上的蜂鳴器,在這里做出具體說(shuō)明。該蜂鳴器采用的是無(wú)源蜂鳴器,即內(nèi)部不帶振蕩器,所以該無(wú)源蜂鳴器是由外部供電;并且給其輸入一個(gè)beep信號(hào),其管腳配置為pin_68,該beep信號(hào)為一個(gè)方波,它和分頻時(shí)鐘的產(chǎn)生的方法一致??梢赃@樣來(lái)描述,先聲明一個(gè)常數(shù)值COUNTER_6M,用它來(lái)作為基準(zhǔn)頻率分頻比,即用它來(lái)產(chǎn)生基準(zhǔn)頻率的分頻clk_6M??梢赃@樣認(rèn)為,系統(tǒng)時(shí)鐘為50M
30、HZ,即1s的時(shí)間內(nèi)有50M個(gè)時(shí)鐘上跳沿經(jīng)過(guò)。等時(shí)鐘走過(guò)COUNTER_6M個(gè)上跳沿時(shí),讓clk_6M反轉(zhuǎn)一次,就可以實(shí)現(xiàn)時(shí)鐘的分頻了。比如說(shuō)現(xiàn)在系統(tǒng)時(shí)鐘為50MHZ,需要一個(gè)6M的時(shí)鐘,這就將問(wèn)題轉(zhuǎn)化成為系統(tǒng)時(shí)鐘到底走過(guò)多少個(gè)上跳沿反轉(zhuǎn)一次的問(wèn)題了。由計(jì)算可得到所經(jīng)過(guò)的上跳沿個(gè)數(shù)為50M/6M/2,這樣就知道了每次經(jīng)過(guò)50M/6M/2個(gè)上跳沿,時(shí)鐘便翻轉(zhuǎn)一次,這樣就完成了時(shí)鐘的分頻。同樣的道理,beep方波信號(hào)就是通過(guò)反轉(zhuǎn)來(lái)產(chǎn)生的,將beep信號(hào)產(chǎn)生好之后,再送給FPGA開(kāi)發(fā)板的pin_68管腳,從而驅(qū)動(dòng)蜂鳴器發(fā)出聲音。圖3-1 蜂鳴器103.2 程序設(shè)計(jì)流程圖圖3-2程序設(shè)計(jì)流程圖3.3
31、運(yùn)行結(jié)果及小結(jié)在這個(gè)設(shè)計(jì)中利用紅外距離開(kāi)關(guān)的距離敏感性來(lái)控制LED燈的亮與滅和蜂鳴器的響與不響。當(dāng)距離比較近的時(shí)候,該開(kāi)關(guān)就會(huì)反饋一個(gè)低電平,該低電平就會(huì)通過(guò)I/O口來(lái)控制LED燈和蜂鳴器,從而LED燈和蜂鳴器隨著距離的遠(yuǎn)近而選擇工作而不工作。在編寫(xiě)這塊程序的時(shí)候,遇到了很多的麻煩,但是在遇到問(wèn)題和解決問(wèn)題的同時(shí)會(huì)有知識(shí)能力的提高。在一開(kāi)始時(shí),利用四個(gè)輕觸按鍵來(lái)控制LED燈的亮與滅,當(dāng)輕觸按鍵按下后,LED燈就變亮,不按下按鍵的話LED燈就自動(dòng)熄滅;這個(gè)時(shí)候,不妨轉(zhuǎn)化一下思維,試想一下,當(dāng)按下輕觸按鍵的時(shí)候,實(shí)際上反饋了一個(gè)低電平,正是這個(gè)低電平驅(qū)動(dòng)了LED燈變亮?;谶@個(gè)原理就可以把距離開(kāi)關(guān)
32、的反饋信號(hào)的端口直接接到輕觸按鍵的端口上,這樣就可以通過(guò)距離開(kāi)關(guān)和障礙物之間的距離遠(yuǎn)近來(lái)控制LED燈的亮滅情況了。實(shí)現(xiàn)了由紅外距離開(kāi)光來(lái)控制LED燈的點(diǎn)亮與熄滅情況以后,就想辦法利用其控制蜂鳴器了,在另一個(gè)工程中新建一個(gè)VerilogHDL的文件,編寫(xiě)好驅(qū)動(dòng)蜂鳴器的程序,這里可以利用狀態(tài)機(jī)來(lái)控制蜂鳴器的程序驅(qū)動(dòng)。將開(kāi)關(guān)返回來(lái)的電平信號(hào)反饋給LED燈,這里需要注意的是采取非阻塞賦值,因?yàn)樗x的值在下一個(gè)模塊里直接要賦給其他狀態(tài)。該狀態(tài)則決定是否產(chǎn)生方波來(lái)驅(qū)動(dòng)蜂鳴器。114 超聲波測(cè)距系統(tǒng)設(shè)計(jì)4.1 程序整體框架設(shè)計(jì)在程序整體框架中對(duì)各個(gè)軟件模塊依次做出簡(jiǎn)單介紹,主模塊是頂層模塊distance,
33、頂層模塊主要定義的端口有系統(tǒng)時(shí)鐘clk,trig超聲波模塊觸發(fā)電平,echo檢測(cè)信號(hào),數(shù)碼管的段選duan,數(shù)碼管譯碼decode,其中連接I/O口的有兩個(gè),分別是trig和echo。trig負(fù)責(zé)超聲波的發(fā)出,echo負(fù)責(zé)超聲波返回的標(biāo)志信號(hào),它們都需要接入I/O接口。在頂層模塊中還有一個(gè)記錄數(shù)據(jù)的信號(hào)Record,它的上升沿來(lái)的時(shí)候記錄一次數(shù)據(jù),有一個(gè)控制信號(hào)control。還有記錄數(shù)據(jù)的信號(hào)num1,num2,num3,num4,這四個(gè)信號(hào)分別記錄了四個(gè)數(shù)碼管的每一位上的數(shù)據(jù)。在頂層模塊中主要還涉及到各個(gè)模塊的例化,如測(cè)距模塊、PLL倍頻模塊、顯示模塊。第一個(gè)模塊為PLL倍頻模塊,將系統(tǒng)時(shí)
34、鐘的頻率倍頻到100MHZ;目的是確保其精度達(dá)到毫米以上并且及其穩(wěn)定,時(shí)延差達(dá)到10ns級(jí)別。第二個(gè)模塊為顯示模塊;該模塊名為disp,顯示距離用的是FPGA開(kāi)發(fā)板自帶的六位一體數(shù)碼管,譯碼芯片為74HC138D。根據(jù)超聲波測(cè)距模塊的測(cè)量范圍和精度,得出距離顯示僅僅需要其中的四個(gè)數(shù)碼管就夠了,所以在這里需要對(duì)74HC138譯碼器進(jìn)行了解和熟悉,對(duì)它的工作原理和譯碼原理必須要搞清楚。在這個(gè)模塊中學(xué)會(huì)了運(yùn)用74HC138譯碼表來(lái)完成數(shù)碼管的段選,并且掌握共陽(yáng)極單個(gè)數(shù)碼管中單個(gè)發(fā)光二極管的排布方式,從而對(duì)單個(gè)數(shù)碼管再進(jìn)行段的選擇;并且還要對(duì)數(shù)據(jù)的存儲(chǔ)和數(shù)據(jù)的記錄、小數(shù)點(diǎn)的顯示技巧、最高兩位的什么時(shí)候
35、顯示、距離沒(méi)達(dá)到所顯示的值時(shí)控制數(shù)碼管LED燈的熄滅、分頻時(shí)鐘的提取、用分頻時(shí)鐘來(lái)掃描數(shù)碼管并且控制數(shù)據(jù)的輸入進(jìn)行掌握。這個(gè)模塊需要解決比較多的問(wèn)題,關(guān)于其詳細(xì)的方法會(huì)在該模塊給出詳細(xì)的分析。第三個(gè)模塊主要是測(cè)距模塊,主要完成的內(nèi)容為控制超聲波模塊的測(cè)距12、狀態(tài)機(jī)控制、數(shù)據(jù)初始化、數(shù)據(jù)記錄及傳輸功能,數(shù)據(jù)的分離等。在這個(gè)模塊定義了狀態(tài)量STATE,狀態(tài)量控制著程序的正常跳轉(zhuǎn)。圖4-1為超聲波測(cè)距程序設(shè)計(jì)的整體框架??梢郧逦目闯觯摮绦蛑饕上到y(tǒng)時(shí)鐘來(lái)負(fù)責(zé)分頻與倍頻。分頻信號(hào)加載到顯示模塊上主要負(fù)責(zé)的是數(shù)碼管的掃描。倍頻信號(hào)加載到測(cè)距模塊上,從而可以減小測(cè)量距離的誤差。狀態(tài)位和控制位主要負(fù)責(zé)
36、刷新數(shù)據(jù)和控制測(cè)量數(shù)據(jù)。12圖4-1 超聲波測(cè)距程序整體框架4.2 PLL倍頻在頂層模塊中主要對(duì)測(cè)量的數(shù)據(jù)進(jìn)行了記錄,另一個(gè)重要點(diǎn)是本設(shè)計(jì)在頂層模塊中使用了PLL倍頻??梢栽赒uarters軟件中調(diào)用IP核,IP又稱為知識(shí)產(chǎn)權(quán)核,它相當(dāng)一個(gè)被封裝過(guò)的盒子一樣;可以對(duì)其進(jìn)行時(shí)鐘的輸入、設(shè)置、分頻、倍頻;其輸出端口會(huì)有相應(yīng)的接口,這些接口都是已經(jīng)配置好的接口,可以進(jìn)行直接調(diào)用。IP核可以分為三大類,分別為硬核、軟核和固核。利用IP核進(jìn)行電路設(shè)計(jì)相對(duì)來(lái)說(shuō)非常的方便。在IP核中修改時(shí)鐘頻率,改變方波信號(hào)的占空比非常的容易。在本設(shè)計(jì)中利用鎖相環(huán)來(lái)提高時(shí)鐘頻率,以達(dá)到設(shè)計(jì)指標(biāo),通過(guò)時(shí)鐘倍頻后,其時(shí)延差可達(dá)
37、到10ns級(jí)別。關(guān)于PLL倍頻的產(chǎn)生,圖4-2給出具體的說(shuō)明。圖4-2 PLL倍頻應(yīng)用圖13如圖4-2可知,時(shí)鐘倍頻與時(shí)鐘分頻的原理不相同。圖中的倍頻時(shí)鐘clk_3為系統(tǒng)時(shí)鐘clk_1和延遲時(shí)鐘clk_2的異或運(yùn)算得到的。系統(tǒng)時(shí)鐘進(jìn)入IP核,IP核輸出端口為已設(shè)置好的倍頻時(shí)鐘,將該倍頻時(shí)鐘應(yīng)用于各個(gè)模塊。4.3 測(cè)距模塊程序設(shè)計(jì)在編寫(xiě)測(cè)距模塊之前,先閱讀了該模塊的手冊(cè),通過(guò)對(duì)手冊(cè)的學(xué)習(xí),了解了該模塊的基本功能,如何觸發(fā)超聲波的發(fā)出,如何判斷發(fā)出去的超聲波信號(hào)是否返回來(lái),如何記錄數(shù)據(jù),如何控制它發(fā)出去等一系列問(wèn)題在這個(gè)模塊里給出了解決方案。首先需要的是初始化一部分?jǐn)?shù)據(jù),因?yàn)槊看尉嚯x的變化都意味著
38、重新得測(cè)量一次,所以每次都需要不斷的進(jìn)行初始化,在這里用到了initial語(yǔ)句。在系統(tǒng)時(shí)鐘高電平來(lái)的時(shí)候,如果滿足狀態(tài)位STATE為1b00,控制位control為1b1時(shí),就可以實(shí)現(xiàn)初始化了。STATE的大部分時(shí)間不為2b00,control的大部分時(shí)間為1b0,用STATE和control一起來(lái)控制初始化和超聲波的發(fā)出條件。STATE在initial模塊中被初始化為2b01了,進(jìn)入下一個(gè)條件;前邊已經(jīng)提過(guò)了,control大部分時(shí)間都不為0,所以STATE為2b01時(shí),control為2b01時(shí)兩者進(jìn)行邏輯與,及兩者的邏輯與滿足不為0的條件,將此條件作為if語(yǔ)句的執(zhí)行條件,來(lái)執(zhí)行下面測(cè)距模
39、塊的語(yǔ)句。前面在硬件部分所提及的超聲波測(cè)距模塊中,給trig信號(hào)一個(gè)連續(xù)10us的高電平,該模塊就會(huì)觸發(fā)超聲波發(fā)出,那么在這里也可以設(shè)計(jì)一個(gè)計(jì)數(shù)模塊,讓它所記的數(shù)正好大于等于為10us時(shí)間段所對(duì)應(yīng)的數(shù)就可以了,在程序中用delay來(lái)表示,當(dāng)dalay所記錄的時(shí)鐘上跳沿個(gè)數(shù)大于10us所對(duì)應(yīng)的時(shí)鐘上跳沿個(gè)數(shù)時(shí),就將trig信號(hào)變?yōu)榈碗娖?,這樣就可產(chǎn)生一個(gè)方波驅(qū)動(dòng)脈沖了,STATE跳轉(zhuǎn)至2b10狀態(tài),在這個(gè)狀態(tài)中主要檢測(cè)echo信號(hào)是否拉高,如果echo信號(hào)為高電平的話,那么就證明具備了超聲波信號(hào)的發(fā)射條件,則STATE信號(hào)隨后跳轉(zhuǎn)至2b11狀態(tài)。當(dāng)STATE跳轉(zhuǎn)至2b11狀態(tài)時(shí),就進(jìn)入到測(cè)量距離
40、的核心部分了。這部分模塊中值得注意的問(wèn)題有兩個(gè),其一是硬件測(cè)量的范圍問(wèn)題,其二是超聲波模塊的精度如何保持在毫米級(jí)別的問(wèn)題。根據(jù)范圍與精度的這個(gè)情況,可以先通過(guò)計(jì)算得到一個(gè)數(shù)值,該數(shù)值是這樣被描述的:設(shè)超聲波測(cè)量1毫米的,那么它需要的時(shí)間可以顯而易見(jiàn)的求出來(lái),因?yàn)槁曀僭诳諝庵械膫鞑ニ俣瓤梢哉J(rèn)為是基本上不變的,或者說(shuō)不會(huì)受影響太大,那么把超聲波在空氣中傳播1毫米的時(shí)間t記錄下來(lái),同樣的FPGA開(kāi)發(fā)板的時(shí)鐘頻率或者說(shuō)經(jīng)過(guò)倍頻后的時(shí)鐘的頻率是已知的,那么就可以得到t時(shí)間段內(nèi),經(jīng)過(guò)的時(shí)鐘上升沿個(gè)數(shù),而前面已經(jīng)提到t為1毫米所需要的時(shí)間,這樣就等同得到了超聲波傳了1毫米后所經(jīng)過(guò)的時(shí)鐘高電平的個(gè)數(shù)。在程序里
41、面,將141毫米所經(jīng)過(guò)的時(shí)鐘高電平的個(gè)數(shù)記為一個(gè)距離單位,并將這個(gè)距離單位用distance表示。圖4-3 Mealy狀態(tài)機(jī)控制圖圖4-3是對(duì)整個(gè)距離測(cè)量程序控制的狀態(tài)圖,主要應(yīng)用了Mealy狀態(tài)機(jī)。在狀態(tài)控制的過(guò)程中后一個(gè)時(shí)序邏輯電路的輸出取決于它的輸入狀態(tài)。在整個(gè)程序中狀態(tài)位STATE主要負(fù)責(zé)驅(qū)動(dòng)超聲波的發(fā)出和向下一個(gè)STATE的跳轉(zhuǎn),而control和STATE共同來(lái)負(fù)責(zé)各個(gè)值的初始化部分。在測(cè)距計(jì)數(shù)方面,采用逐級(jí)進(jìn)位的方法。依次往上進(jìn)位,每逢往前傳送1毫米的同時(shí)distance就會(huì)歸零,它們的變化是同步的。就拿系統(tǒng)時(shí)鐘clk舉個(gè)例子,F(xiàn)PGA的倍頻時(shí)鐘頻率為100M,那么超聲波傳出1毫
42、米被檢測(cè)到所需要的時(shí)間為0.001/170s,由此可得在這么長(zhǎng)的時(shí)間內(nèi)系統(tǒng)時(shí)鐘的上跳沿經(jīng)過(guò)了約588個(gè),然后distance每次累加到588后就清零;同時(shí)Data4:1就自動(dòng)加1,如果Data4:1加到9的時(shí)候,distance繼續(xù)增加,那么下一次當(dāng)distance到達(dá)588時(shí)將Data4:1清零的同時(shí)給Data8:5加1來(lái)表示進(jìn)位,就這樣依次遞加,一直加到Data16:13。上文闡述了一個(gè)慢速化的歷程,實(shí)際上系統(tǒng)的時(shí)鐘的頻率是非??斓?,所以執(zhí)行一次操作的速度也是非??斓?。圖4-4記錄數(shù)據(jù)記錄測(cè)量距離的模塊流程圖4-5,該流程圖反映了逐位疊加算法,當(dāng)Record回15歸到高電平時(shí),記錄數(shù)據(jù)并將
43、數(shù)據(jù)輸送到顯示模塊,從而讓顯示模塊顯示出目前測(cè)量的距離。圖4-5 測(cè)距模塊流程圖4.4 顯示模塊程序設(shè)計(jì)測(cè)距模塊在上文已經(jīng)提到了,由測(cè)距模塊可以得到一組數(shù)據(jù)Data。在這組定義為十六位的數(shù)據(jù)中,其中Data4:1表示的是十分位,Data8:5表示的是個(gè)位, Data12:9表示的是十位, Data16:13表示的是百位。在顯示模塊中,主要完成了把這些數(shù)據(jù)傳輸至FPGA開(kāi)發(fā)板上的主芯片上,從而讓其顯示在數(shù)碼管上面。這里就涉及到了數(shù)碼管的段選、位選、小數(shù)點(diǎn)保留等一系列的問(wèn)題了。如何處理數(shù)據(jù)的輸送在這里也是一個(gè)重要的問(wèn)題,還有數(shù)碼管是如何顯示的,顯示的原理又是什么,在這里做出進(jìn)一步的討論。首先使用的
44、數(shù)碼管為共陽(yáng)極數(shù)碼管,也就是說(shuō)它們的陽(yáng)極是接在一起的;那么給它們的每個(gè)陰極的不同管腳取不同的高低電平時(shí),所取低電平的管腳所對(duì)應(yīng)的發(fā)光二極管就會(huì)點(diǎn)亮6;從而根據(jù)不同的編碼就會(huì)讓該六位一體數(shù)碼管顯示出不同的數(shù)字了?;谶@個(gè)原理,可以在一開(kāi)始的時(shí)候定義一組常量,常量在VerilogHDL語(yǔ)言中用parameter來(lái)表示。在程序中定義令數(shù)碼管上顯示從0到9這10個(gè)數(shù)所對(duì)應(yīng)的編碼常量char,方便后邊編寫(xiě)程序時(shí)的易于使用。對(duì)于FPGA上的六位一體數(shù)碼管來(lái)說(shuō),它的底層電路是由一個(gè)38譯碼器構(gòu)成,所以要進(jìn)行數(shù)碼管的位選;在程序16中用decode來(lái)表示三位輸入譯碼器的數(shù)據(jù)。根據(jù)74HC138D的譯碼真值表和
45、卡諾圖,本設(shè)計(jì)中可以選用最少的位數(shù)來(lái)進(jìn)行譯碼,從而減少了不必要的資源浪費(fèi)。圖4-6 六位一體數(shù)碼管管腳圖圖4-7 74HC138D譯碼表圖4-6是該FPGA開(kāi)發(fā)板上數(shù)碼管的管腳圖。圖4-7是74HC138D芯片的譯碼表,在數(shù)碼管顯示這個(gè)模塊中,遵循六位一體數(shù)碼管管腳圖。選取四個(gè)數(shù)碼管,但是對(duì)于六位一體數(shù)碼管來(lái)說(shuō),只有譯碼器的前六位有效,為了節(jié)省資源,所以選擇前四17個(gè)。因?yàn)閷?duì)于前四個(gè)數(shù)碼管來(lái)說(shuō),他們的輸入端口C都為0,這樣就相當(dāng)于C端口是固定的,從而控制位選的端口就只有B端口和A端口了。由于每次只能顯示一個(gè)數(shù)碼管,考慮到這個(gè)問(wèn)題,所以才對(duì)數(shù)碼管進(jìn)行快速掃描的方式進(jìn)行顯示。每當(dāng)掃描到哪一位數(shù)碼管
46、時(shí),就把數(shù)據(jù)送到那個(gè)數(shù)碼管中。如果使得掃描數(shù)碼管的頻率超過(guò)人眼能夠捕捉到的頻率的話,那么就會(huì)實(shí)時(shí)的顯示數(shù)據(jù)了9。在掃描數(shù)碼管和處理數(shù)據(jù)這個(gè)小模塊里,需要一個(gè)分頻時(shí)鐘。該分頻時(shí)鐘具體根據(jù)人眼可分別的閃爍頻率來(lái)設(shè)定的。一般情況下人眼可識(shí)別的閃爍頻率約為40HZ左右,所以只要所設(shè)定的數(shù)碼管掃描頻率大于40HZ就行了。在分頻程序中將頻率分頻至100MHZ左右,這樣就可以看不到數(shù)碼管在不斷的閃爍了。主程序模塊中record信號(hào)高電平來(lái)臨時(shí),開(kāi)始記錄數(shù)據(jù)。在顯示模塊中需要做的重要步驟是將記錄好的數(shù)據(jù)送進(jìn)數(shù)碼管中并且讓其顯示。在這個(gè)模塊中主要用到了case語(yǔ)句和非阻塞賦值。當(dāng)掃描時(shí)鐘上跳沿到來(lái)的時(shí)候,位選信
47、號(hào)就會(huì)掃描到某位數(shù)碼管,從而將記錄到的數(shù)據(jù)直接送進(jìn)顯示模塊中。圖4-8 數(shù)碼管保留小數(shù)點(diǎn)測(cè)量距離在數(shù)碼管上的單位為厘米,而測(cè)量精度為毫米級(jí)別,所以就要進(jìn)行小數(shù)點(diǎn)的保留了。將小數(shù)點(diǎn)保留在個(gè)位數(shù)碼管上,即在數(shù)碼管每次進(jìn)行段選的時(shí)候如果遇到第三個(gè)數(shù)碼管時(shí)讓其與11111110進(jìn)行按位相與,這樣無(wú)論怎么樣小數(shù)點(diǎn)位dp都為低電平,所以就可以讓小數(shù)點(diǎn)一直顯示在第三位數(shù)碼管上了。在這里需要進(jìn)行說(shuō)明的是利用語(yǔ)句assign decode = 1'b0,bitchoose。assign語(yǔ)句可以起到立即賦值的作用,這樣就將1b0與bit choose立即拼接在一起。這樣就可以直接用兩位進(jìn)行位選了,這種方法
48、可以直接由觀測(cè)譯碼表得出,也可以由卡諾圖化簡(jiǎn)得出最簡(jiǎn)表達(dá)式。從FPGA本身的角度來(lái)考慮的話就節(jié)省了邏輯資源。4.5 仿真電路圖及運(yùn)行結(jié)果這個(gè)部分對(duì)運(yùn)行程序所生成的仿真電路圖做出分析,仿真電路圖如下:18圖4-9 仿真電路圖(1)圖4-10仿真電路圖(2)圖4-9和圖4-10是仿真電路圖,均為程序生成的,由電路圖可以看出,在頂層模塊中存在一個(gè)加法器,這個(gè)加法器主要用來(lái)控制control信號(hào)的產(chǎn)生。一個(gè)數(shù)據(jù)選擇器,用來(lái)選擇在什么數(shù)據(jù)段產(chǎn)生control的高電平。兩個(gè)比較器,分別對(duì)timer數(shù)值與兩個(gè)固定值進(jìn)行比較,從而在相應(yīng)的數(shù)字段確定control的取值。有6個(gè)D觸發(fā)器,當(dāng)程序中出現(xiàn)阻塞賦值的時(shí)
49、候,就會(huì)形成該觸發(fā)器。其中圖4-9中有兩個(gè)D觸發(fā)器,主要是對(duì)timer計(jì)數(shù)器和control的處理。后面四個(gè)D觸發(fā)器是對(duì)四個(gè)數(shù)碼管數(shù)據(jù)的處理,即每次高電平來(lái)臨時(shí)記錄相應(yīng)的數(shù)據(jù)。19在運(yùn)行程序之前,連接好相應(yīng)的硬件,先進(jìn)行程序的綜合,確保正確后再進(jìn)行管腳配置,關(guān)于超聲波測(cè)距的管腳配置圖如下所示:圖4-11 管腳配置圖圖4-12 運(yùn)行結(jié)果程序運(yùn)行結(jié)果如圖4-12所示,結(jié)果顯示如數(shù)碼管所示。在這里需要注意的是FPGA開(kāi)發(fā)板上有兩個(gè)端口供程序下載,其一是JTAG調(diào)試接口,另一個(gè)是AS接口,其中JTAG的下載文件對(duì)應(yīng)的是SOF文件,而AS的下載文件對(duì)應(yīng)的是POF文件,兩種下載端口各有優(yōu)缺點(diǎn),操作AS端口
50、相對(duì)于JTAG較麻煩,但是斷電后程序仍然在芯片中,下一次上電后程序直接會(huì)運(yùn)行無(wú)需再下載。4.6 軟硬件誤差分析(1)硬件方面的誤差分析:硬件方面的誤差主要來(lái)源于測(cè)距模塊本身的局限性和超聲波在空氣中的衰減。在分析測(cè)量結(jié)果后,精度可以達(dá)到毫米級(jí)別,但是隨著20距離越來(lái)越遠(yuǎn),測(cè)量的距離就不是很準(zhǔn),誤差也越來(lái)越大;因?yàn)槌暡ㄊ且哉{(diào)制信號(hào)的方式發(fā)出去的,檢測(cè)時(shí)也檢測(cè)的是該調(diào)制的信號(hào),但是隨著距離變遠(yuǎn),返回來(lái)的調(diào)制信號(hào)就會(huì)變的越來(lái)越弱,直到信號(hào)接收端無(wú)法識(shí)別到該調(diào)制信號(hào)為止。如果脈沖在空氣中發(fā)生展寬,則導(dǎo)致在接收端識(shí)別時(shí)也存在一定的誤差。具體誤差分析如下圖所示:圖4-13 硬件誤差分析圖圖4-13所示,當(dāng)接收端檢測(cè)到返回的調(diào)制信號(hào)時(shí),調(diào)制脈沖已經(jīng)展寬。而檢測(cè)電平不變,這就導(dǎo)致原來(lái)的高電平的位置
溫馨提示
- 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 幕墻與外部環(huán)境適應(yīng)性方案
- 歷年武漢中考數(shù)學(xué)試卷
- 歷年高職高考數(shù)學(xué)試卷
- 祁陽(yáng)六年級(jí)數(shù)學(xué)試卷
- 智能化建筑物聯(lián)接方案
- 彭杜中學(xué)九年級(jí)數(shù)學(xué)試卷
- 遼寧省中考二模數(shù)學(xué)試卷
- 化妝品培訓(xùn)入門(mén)知識(shí)課件
- 全國(guó)各地學(xué)校的數(shù)學(xué)試卷
- 七下期末考數(shù)學(xué)試卷
- 小學(xué)生編織手工課件
- 廣西現(xiàn)代物流集團(tuán)招聘筆試真題2024
- 2025餐飲勞動(dòng)合同書(shū) 電子版
- (2025)職業(yè)教育法知識(shí)競(jìng)賽題庫(kù)帶含答案
- 濱州海上風(fēng)電項(xiàng)目可行性研究報(bào)告
- 人工智能賦能中小學(xué)教育:個(gè)性化學(xué)習(xí)路徑優(yōu)化研究
- 2025年月嫂考證:母嬰護(hù)理師等技能資格知識(shí)考試題與答案
- 腦脊液相關(guān)試題及答案
- T/CAEPI 64-2023固體回收燃料分類與分級(jí)
- DB62T 25-3016-2016 建筑工程資料管理規(guī)程
評(píng)論
0/150
提交評(píng)論