本發(fā)明具體涉及一種基于fpga與stm32的超聲波數(shù)字信號雙芯處理系統(tǒng)及方法,屬于超聲波探測
技術(shù)領(lǐng)域:
。
背景技術(shù):
:在超聲波數(shù)字信號的接收系統(tǒng)中,現(xiàn)有技術(shù)中有這樣幾種方案:(1)純單片機(jī)型該種技術(shù)采用c08051f340單片機(jī)作為主控芯片,其具體結(jié)構(gòu)如圖2-2所示,由于單片機(jī)功能有限,該方案外接了大量了計(jì)數(shù)器芯片,鎖存器芯片,還有sram芯片等。純單片機(jī)的方案的主要缺點(diǎn)為:1.普通單片機(jī)引腳有限,大約為40左右,其中主要包括有時(shí)鐘,電源,復(fù)位,i/o端口等,用這些端口來產(chǎn)生控制外圍設(shè)備所需要的數(shù)據(jù)和控制線,其數(shù)量往往不能滿足要求,于是需要在外部添加譯碼和鎖存電路來擴(kuò)展i/o口,整個(gè)系統(tǒng)會變得十分臃腫,設(shè)備的體積也會增加。2.系統(tǒng)硬件連線復(fù)雜,可靠性低。由于添加了大量的分立元件來擴(kuò)展i/o口,使得硬件連線變得復(fù)雜,信號之間的干擾增大,可靠性低,系統(tǒng)功耗也隨之增大。3.處理速度慢,一般單片機(jī)的處理速度比較慢,資源有限,難以實(shí)現(xiàn)液晶屏顯示等人機(jī)交互功能。(2)純cpld/fpga型cpld和fpga內(nèi)部的基本結(jié)構(gòu)是一些基本的宏單元或邏輯塊,芯片中有成百上千個(gè)這種單元,芯片端口資源十分豐富,可以快速的完成各種邏輯功能的數(shù)字電路。同時(shí)其具備并行的工作機(jī)制,運(yùn)行信號在多個(gè)邏輯塊中同時(shí)流動,這種能力可以提高系統(tǒng)工作效率,而單片機(jī)實(shí)際上是順序執(zhí)行的。但純cpld/fpga也有一定的缺點(diǎn),首先其時(shí)序控制能力不如單片機(jī),因?yàn)槠渚邆洳⑿袌?zhí)行,一方面使得其可以進(jìn)行高效的運(yùn)行,但另一方面也使得其時(shí)序困難需要考慮方方面面的問題。設(shè)計(jì)者需要充分考慮執(zhí)行過程中時(shí)序關(guān)系對信號的影響。cpld/fpga的設(shè)計(jì)必須遵循真實(shí)存在的電路,所以當(dāng)使用cpld/fpga來生成運(yùn)算單元時(shí)十分麻煩,需要構(gòu)建大量的硬件運(yùn)算電路,會浪費(fèi)其內(nèi)部的資源,各種數(shù)據(jù)處理的算法實(shí)現(xiàn)也較為困難。技術(shù)實(shí)現(xiàn)要素:因此,本發(fā)明的目的是為克服現(xiàn)有技術(shù)中的上述問題,提供一種基于fpga與stm32的超聲波數(shù)字信號雙芯處理系統(tǒng)及方法。具體的,基于fpga與stm32的超聲波數(shù)字信號雙芯處理系統(tǒng),包括前置電路、a/d轉(zhuǎn)換芯片,系統(tǒng)還包括fpga芯片、stm32芯片,所述fpga芯片包括控制單元、時(shí)序產(chǎn)生單元、串口發(fā)送器、fifo緩存單元,控制單元分別連接串口發(fā)送器、時(shí)序產(chǎn)生單元、fifo緩存單元、前置電路,時(shí)序產(chǎn)生單元還連接串口發(fā)送器、a/d轉(zhuǎn)換芯片,fifo緩存單元還連接串口發(fā)送器、a/d轉(zhuǎn)換芯片,a/d轉(zhuǎn)換芯片還連接前置電路,stm32芯片連接串口發(fā)送器。進(jìn)一步的,所述fpga芯片型號為xc6slx9-2ftg256c。進(jìn)一步的,所述系統(tǒng)還包括上位機(jī),stm32芯片通過stm32相關(guān)接口電路連接上位機(jī)。進(jìn)一步的,所述系統(tǒng)還包括人機(jī)對話模塊,所述人機(jī)對話模塊包括功能鍵盤及液晶顯示模塊,功能鍵盤連接控制單元及stm32芯片,液晶顯示模塊連接stm32芯片。根據(jù)上述系統(tǒng)實(shí)現(xiàn)的基于fpga與stm32的超聲波數(shù)字信號雙芯處理方法,其特征在于,所述方法為:外部接收到的超聲波信號經(jīng)過前置電路處理后進(jìn)入a/d轉(zhuǎn)換芯片,fpga中的時(shí)序產(chǎn)生單元為a/d轉(zhuǎn)換芯片提供轉(zhuǎn)換時(shí)鐘,a/d轉(zhuǎn)換芯片的輸出結(jié)果送到fifo緩存單元的輸入端,fifo緩存單元的時(shí)鐘與a/d轉(zhuǎn)換芯片的轉(zhuǎn)換時(shí)鐘同步,當(dāng)控制單元檢測到fifo緩存單元的內(nèi)容寫滿時(shí),控制單元控制時(shí)序產(chǎn)生單元為a/d轉(zhuǎn)換芯片提供時(shí)鐘,串口發(fā)送器向fifo緩存單元提供與串口波特率相匹配的讀取時(shí)鐘,并同時(shí)禁止數(shù)據(jù)寫入fifo緩存單元,然后開啟串口發(fā)送器讀取fifo緩存單元中的內(nèi)容,通過串口通信的方式將所有數(shù)據(jù)發(fā)送給stm32芯片,發(fā)送結(jié)束后,fpga芯片中的控制單元重新允許fifo緩存單元寫入,禁止讀取,并允許時(shí)序產(chǎn)生單元為a/d轉(zhuǎn)換芯片提供時(shí)鐘。進(jìn)一步的,所述方法還包括:stm32芯片接收到所有數(shù)據(jù)后,首先對數(shù)據(jù)進(jìn)行數(shù)字濾波處理,進(jìn)行波形分析,通過液晶顯示模塊將結(jié)果顯示出來,或?qū)⒉ㄐ螖?shù)據(jù)上傳至上位機(jī)進(jìn)行進(jìn)一步的數(shù)據(jù)處理。本發(fā)明的有益效果在于:本發(fā)明的基于fpga與stm32的超聲波數(shù)字信號雙芯處理系統(tǒng)及方法,克服了現(xiàn)有技術(shù)中的缺陷。采用fpga與stm32相結(jié)合的方式,相互取長補(bǔ)短,利用fpga的高效率及可編程等特點(diǎn)避免了過多的硬件連線。利用stm32對數(shù)據(jù)進(jìn)行處理,可以利用現(xiàn)有的程序庫對外設(shè)進(jìn)行操作,十分方便。附圖說明圖1為本發(fā)明實(shí)施例1基于fpga與stm32的超聲波數(shù)字信號雙芯處理系統(tǒng)的結(jié)構(gòu)示意圖;圖2是fifo存儲器引腳示意圖;圖3是uart傳輸時(shí)序示意圖;圖4是串口發(fā)送器的整體框架圖。具體實(shí)施方式下面結(jié)合附圖對本發(fā)明的具體實(shí)施方式進(jìn)行說明:針對現(xiàn)有技術(shù)的缺點(diǎn),我們發(fā)現(xiàn)cpld/fpga與單片機(jī)直接有很強(qiáng)的互補(bǔ)性,于是采用了fpga+單片機(jī)的模式,同時(shí)針對普通單片機(jī)運(yùn)算能力的不足,我們使用stm32代替普通的51單片機(jī)。系統(tǒng)的結(jié)構(gòu)圖如圖1所示,圖1中粗線為數(shù)據(jù)信號線,細(xì)線為170控制信號線。fpga芯片選用xilinx公司spartan6系列的xc6slx9-2ftg256c,擁有256個(gè)引腳。開發(fā)環(huán)境是xilinx公司的fpga開發(fā)平臺ise。使用的語言是verilog。處理方法具體如下:外部接收到的超聲波信號經(jīng)過前置電路處理后進(jìn)入a/d轉(zhuǎn)換芯片,fpga中的時(shí)序產(chǎn)生單元為a/d轉(zhuǎn)換芯片提供轉(zhuǎn)換時(shí)鐘,a/d轉(zhuǎn)換芯片的輸出結(jié)果送到fifo緩存單元的輸入端,fifo緩存單元的時(shí)鐘與a/d轉(zhuǎn)換芯片的轉(zhuǎn)換時(shí)鐘同步,當(dāng)控制單元檢測到fifo緩存單元的內(nèi)容寫滿時(shí),控制單元控制時(shí)序產(chǎn)生單元為a/d轉(zhuǎn)換芯片提供時(shí)鐘,串口發(fā)送器向fifo緩存單元提供與串口波特率相匹配的讀取時(shí)鐘,并同時(shí)禁止數(shù)據(jù)寫入fifo緩存單元,然后開啟串口發(fā)送器讀取fifo緩存單元中的內(nèi)容,通過串口通信的方式將所有數(shù)據(jù)發(fā)送給stm32芯片,發(fā)送結(jié)束后,fpga芯片中的控制單元重新允許fifo緩存單元寫入,禁止讀取,并允許時(shí)序產(chǎn)生單元為a/d轉(zhuǎn)換芯片提供時(shí)鐘。stm32芯片接收到所有數(shù)據(jù)后,首先對數(shù)據(jù)進(jìn)行數(shù)字濾波處理,進(jìn)行波形分析,通過液晶顯示模塊將結(jié)果顯示出來,或?qū)⒉ㄐ螖?shù)據(jù)上傳至上位機(jī)進(jìn)行進(jìn)一步的數(shù)據(jù)處理。功能鍵盤用于超聲波檢測參數(shù)的設(shè)定,如發(fā)射脈沖寬度,間隔等。具體功能實(shí)現(xiàn):fifo存儲器:fifo存儲器fifo是英文firstinfirstout的縮寫,是一種先進(jìn)先出的數(shù)據(jù)緩存器,先進(jìn)入fifo的數(shù)據(jù)最先被讀取出來。他與普通存儲器的區(qū)別是沒有外部讀寫地址線,這樣使用起來非常簡單。在傳統(tǒng)的純單片機(jī)方案中,fifo芯片都是外接的,而在本設(shè)計(jì)中則是直接調(diào)用xilinx公司提供的ip核,直接在fpga中生成fifo芯片。該單元引腳如圖2所示,功能說明如表1所示。表1引腳名稱io類型功能din[7,0]inputa/d數(shù)據(jù)的并行輸入clkinput數(shù)據(jù)寫入時(shí)鐘(與ad采樣頻率一致)rstinput復(fù)位信號(高電平有效),復(fù)位后3個(gè)周期內(nèi)無法進(jìn)行寫操作。wreninput緩存工作使能信號(高電平有效)dout[7,0]output數(shù)據(jù)輸出引腳rdclkinput數(shù)據(jù)讀出時(shí)鐘rdeninput數(shù)據(jù)讀取使能(拉高后的下個(gè)時(shí)鐘周期開始工作)emptyoutput緩存可讀狀態(tài)標(biāo)準(zhǔn)位。低電平表示可讀。高電平表示已無數(shù)據(jù)可讀時(shí)序產(chǎn)生單元:該單元可以調(diào)用ise中的pll鎖相環(huán)來實(shí)現(xiàn)。串口發(fā)送器:uart通信uart首先將接收到的并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)來傳輸。消息幀從一個(gè)低位起始位開始,后面是7個(gè)或8個(gè)數(shù)據(jù)位,一個(gè)可用的奇偶位和一個(gè)或幾個(gè)高位停止位。接收器發(fā)現(xiàn)開始位時(shí)它就知道數(shù)據(jù)準(zhǔn)備發(fā)送,并嘗試與發(fā)送器時(shí)鐘頻率同步。如果選擇了奇偶校驗(yàn),uart就在數(shù)據(jù)位后面加上奇偶位。奇偶位可用來幫助錯(cuò)誤校驗(yàn)。在接收過程中,uart從消息幀中去掉起始位和結(jié)束位,對進(jìn)來的字節(jié)進(jìn)行奇偶校驗(yàn),并將數(shù)據(jù)字節(jié)從串行轉(zhuǎn)換成并行。uart傳輸時(shí)序如圖3所示:串口發(fā)送器共分為3個(gè)模塊:1.用于產(chǎn)生波特率的分頻器單元。2.用于發(fā)送數(shù)據(jù)的數(shù)據(jù)發(fā)送單元3.進(jìn)行全局控制的串口控制單元整體框架圖如圖4所示:工作流程為:發(fā)射電路發(fā)射脈沖結(jié)束,數(shù)據(jù)全部存入fifo芯片后。1.串口控制單元的請求端(req)向stm32發(fā)出請求傳輸信號,若stm32處于空閑可接收數(shù)據(jù)時(shí),則通過允許傳送端(allow)發(fā)出允許傳送指令。2.串口控制單元通過txdata[7,0]獲得fifo中的一個(gè)單元的數(shù)據(jù),然后把數(shù)據(jù)通過outdata[7,0]送到串口發(fā)送單元,同時(shí)wrsig(傳輸允許端)發(fā)出一個(gè)上升沿信號。3.串口發(fā)送單元在接收到wrsig端的上升沿信號后開始將接收到的一幀數(shù)據(jù)按照波特率一位一位的移到tx端。同時(shí)將線路繁忙端(ri)置1表示繁忙。4.傳輸完成后,線路繁忙端(ri)置0表示空閑,而stm32接收到數(shù)據(jù)后進(jìn)行數(shù)據(jù)校驗(yàn),校驗(yàn)結(jié)果通過error端送給串口控制器。串口控制器根據(jù)ri和error信號判斷是通過rdclk端更新數(shù)據(jù),或者是命令串口發(fā)送單元重發(fā)一次數(shù)據(jù)。具體單元設(shè)計(jì):分頻器單元波特率的定義是傳輸?shù)臄?shù)據(jù)位與位之間間隔的時(shí)間的倒數(shù),同時(shí)考慮到以后可能會用到串口接收單元,所以分頻器將晶振50m輸入時(shí)鐘分頻為所需波特率的16倍。設(shè)計(jì)中采用波特率為9600,所以分頻系數(shù)為325。串口發(fā)送單元檢測到發(fā)送命令有效并且線路空閑時(shí)將要傳輸?shù)臄?shù)據(jù)裝入內(nèi)部移位寄存器中,同時(shí)設(shè)定一個(gè)計(jì)數(shù)器,每計(jì)滿16次則讓移位寄存器往tx口移一位。(包括產(chǎn)生起始位和停止位以及奇偶校驗(yàn)位)。串口控制單元控制單元內(nèi)部分為3個(gè)并行執(zhí)行的部分。stm32相關(guān)部分負(fù)責(zé)req信號的發(fā)出,以及allow信號的判斷。數(shù)據(jù)緩存部分負(fù)責(zé)更新fifo輸出數(shù)據(jù),以及將fifo中的數(shù)據(jù)取到串口控制單元中的寄存器里。串口相關(guān)部分則是接收ri以及error信號判斷是否更新fifo數(shù)據(jù)到數(shù)據(jù)緩存部分中,并且發(fā)送串口發(fā)送開始信號(wrsig)。頂層文件最后將以三個(gè)模塊在一個(gè)頂層文件中調(diào)用出來,并連接好相應(yīng)的線就可以實(shí)現(xiàn)一個(gè)串口通信單元。以上所述是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本
技術(shù)領(lǐng)域:
的普通技術(shù)人員來說,在不脫離本發(fā)明所述原理的前提下,還可以作出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。當(dāng)前第1頁12