国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

FPGA的多路串口數(shù)據(jù)快速采集與傳輸系統(tǒng)設(shè)計(jì)*

2019-01-17 03:11:18,
關(guān)鍵詞:進(jìn)入狀態(tài)狀態(tài)機(jī)字節(jié)

,

(北京工業(yè)大學(xué) 應(yīng)用數(shù)理學(xué)院,北京 100124)

引 言

目前多路串口數(shù)據(jù)采集與傳輸對(duì)于工業(yè)控制現(xiàn)場(chǎng)多個(gè)設(shè)備串口的工作狀態(tài)進(jìn)行現(xiàn)場(chǎng)監(jiān)控有很大幫助[1],其硬件實(shí)現(xiàn)簡(jiǎn)單,各路串口不存在互相干擾,出現(xiàn)問(wèn)題易于排查,硬件成本低。然而一般微控制器芯片串口資源有限,很難滿足現(xiàn)實(shí)需求,如果為了擴(kuò)展更多的串口資源采用多路串口芯片,但每個(gè)芯片容納的通道數(shù)不超過(guò)4個(gè)[2],這樣在工業(yè)控制中會(huì)大大提高成本。

但是FPGA解決了上述所有問(wèn)題。由于FPGA引腳多,容易實(shí)現(xiàn)單片機(jī)串口I/O有限的問(wèn)題,同時(shí)可以方便連接多個(gè)外設(shè)[3-4]。而且FPGA內(nèi)部程序是并行運(yùn)行的,可以同時(shí)處理不同任務(wù),這就導(dǎo)致FPGA工作更有效率[5]。因此本文利用FPGA這些特點(diǎn),設(shè)計(jì)了適用于多串口裝置在低速、小數(shù)據(jù)量通信條件,以FPGA為核心電路來(lái)控制各通道數(shù)據(jù)采集,同時(shí)采用RS232總線實(shí)現(xiàn)在高波特率下,將各路串口數(shù)據(jù)完整地上傳到上位機(jī),完成上位機(jī)與FPGA控制模塊之間的數(shù)據(jù)傳輸。

1 總體設(shè)計(jì)方案

基于FPGA多通道串口數(shù)據(jù)采集與傳輸系統(tǒng)的設(shè)計(jì),在硬件層面上,本系統(tǒng)利用單輸入通道數(shù)字式智能儀表與壓力傳感器連接,將物體壓力模擬量轉(zhuǎn)換為數(shù)字量發(fā)送給FPGA。同時(shí),通過(guò)對(duì)整體實(shí)現(xiàn)8路壓力傳感器數(shù)據(jù)采集與傳輸所占用的存儲(chǔ)資源以及邏輯資源進(jìn)行了初步評(píng)估之后,選擇采用Cyclone IV系列 EP4CE6E22C8型號(hào)FPGA,因?yàn)樵撔吞?hào)具有30個(gè)M9K存儲(chǔ)模塊,足夠用來(lái)緩存8路并行數(shù)據(jù)傳輸,不會(huì)使數(shù)據(jù)因存儲(chǔ)空間不夠而出現(xiàn)數(shù)據(jù)堆疊的現(xiàn)象。

在軟件層面上,本系統(tǒng)包括多通道數(shù)據(jù)采集模塊(串轉(zhuǎn)并模塊、FIFO數(shù)據(jù)緩存模塊、PC控制器模塊)以及RS232串口接口輸出模塊兩大部分,其系統(tǒng)整體構(gòu)架圖如圖1所示。8路并行的RS232數(shù)據(jù)為輸入數(shù)據(jù),通過(guò)8個(gè)串轉(zhuǎn)并模塊將串行數(shù)據(jù)轉(zhuǎn)為并行數(shù)據(jù)保存到8個(gè)獨(dú)立FIFO中。利用FPGA中的同步有限狀態(tài)機(jī),在RS232串口接口模塊建模與設(shè)計(jì),將8路數(shù)據(jù)以查詢方式上傳到PC機(jī)上,對(duì)數(shù)據(jù)進(jìn)行分析。

圖1 多路串口快速數(shù)據(jù)采集與傳輸系統(tǒng)框架圖

2 FPGA功能設(shè)計(jì)模塊

2.1 多通道數(shù)據(jù)采集模塊

由于FPGA屬于并行邏輯結(jié)構(gòu),各個(gè)串口通信模塊可以同時(shí)進(jìn)行數(shù)據(jù)收發(fā)而不會(huì)互相影響[6],因此系統(tǒng)設(shè)計(jì)了8路壓力傳感器數(shù)據(jù)同時(shí)接收,并將其數(shù)據(jù)保存到各自的FIFO中。系統(tǒng)設(shè)計(jì)了一路串口模塊實(shí)現(xiàn)數(shù)據(jù)的采集與保存,通過(guò)在FPGA內(nèi)部復(fù)用功能模塊方式[7],利用硬件描述語(yǔ)言Verilog中g(shù)enerate for進(jìn)行復(fù)制,設(shè)計(jì)出8路串口數(shù)據(jù)采集模塊,如圖2所示。其中CLK為系統(tǒng)同步時(shí)鐘,PRE_RXD是經(jīng)接口電平轉(zhuǎn)換后FPGA能夠采樣的串口接收信號(hào),將此數(shù)據(jù)打包為字節(jié)保存到FIFO中,當(dāng)一幀數(shù)據(jù)寫完或者讀完之后,會(huì)有FULL或者EMPTY狀態(tài)來(lái)表示各路串口FIFO狀態(tài),同時(shí)RS232串口接口模塊會(huì)通過(guò)對(duì)FIFO的狀態(tài)進(jìn)行查詢,當(dāng)FULL[7:0]信號(hào)不為0時(shí),給出一個(gè)SELECT信號(hào),代表讀取哪一路數(shù)據(jù)上傳到PC機(jī)上。

圖2 8路數(shù)據(jù)采集模塊

利用Modelsim仿真軟件測(cè)試此系統(tǒng)多通道數(shù)據(jù)采集模塊,其仿真結(jié)果如圖3所示。其中通過(guò)在測(cè)試文件中模擬8路壓力傳感器通道數(shù)據(jù),同時(shí)輸入一串十六進(jìn)制數(shù)據(jù)為fa e0 5f 00 01 32 0a,通過(guò)觀察各通道寫入到FIFO中的數(shù)據(jù)wdata與輸入數(shù)據(jù)一致,說(shuō)明此系統(tǒng)能夠?qū)崿F(xiàn)多通道數(shù)據(jù)同時(shí)采集,驗(yàn)證了此模塊設(shè)計(jì)的正確性。

圖3 8路FIFO寫數(shù)據(jù)

2.2 RS232串口接口模塊

RS232串口接口模塊是此系統(tǒng)最主要的部分,該部分利用數(shù)字邏輯中的有限狀態(tài)機(jī)(FSM)將8路串口數(shù)據(jù)通過(guò)查詢方式不斷輸出給PC機(jī)[8],其FSM與數(shù)據(jù)采集模塊結(jié)構(gòu)框圖如圖4所示。

圖4 FSM與數(shù)據(jù)采集模塊結(jié)構(gòu)框圖

狀態(tài)機(jī)在狀態(tài)轉(zhuǎn)移過(guò)程中不斷查詢各路FIFO狀態(tài),選擇總線地址碼用來(lái)表示讀取第幾路FIFO數(shù)據(jù),同時(shí)產(chǎn)生讀數(shù)據(jù)控制時(shí)序,讀取此路FIFO數(shù)據(jù),通過(guò)RS232串口通信將該路FIFO中數(shù)據(jù)發(fā)送給PC機(jī),并且每路數(shù)據(jù)在發(fā)送之前,都會(huì)把此幀數(shù)據(jù)的地址放到幀頭前,代表第幾路數(shù)據(jù)發(fā)送給上位機(jī)。

此模塊利用狀態(tài)機(jī)對(duì)8個(gè)通道數(shù)據(jù)進(jìn)行循環(huán)查詢來(lái)發(fā)送每個(gè)通道數(shù)據(jù),狀態(tài)機(jī)狀態(tài)位說(shuō)明如表1所列。

表1 狀態(tài)機(jī)狀態(tài)位說(shuō)明

圖5為狀態(tài)機(jī)轉(zhuǎn)移圖,狀態(tài)機(jī)的具體邏輯為:先檢查各通道數(shù)據(jù)儲(chǔ)存FIFO是否為滿,如果有滿狀態(tài),進(jìn)入狀態(tài)1,然后從第一通道開始判斷哪路數(shù)據(jù)為滿狀態(tài),將此通道數(shù)據(jù)地址輸出給SELECT,選擇第n路數(shù)據(jù)輸出,進(jìn)入狀態(tài)2,將讀信號(hào)標(biāo)志READ置為1,開始讀取第n通道FIFO,進(jìn)入狀態(tài)3,將READ信號(hào)置為0,等待一個(gè)字節(jié)發(fā)送完成給上位機(jī),當(dāng)PC發(fā)送數(shù)據(jù)時(shí),TBUSY信號(hào)為1,字節(jié)發(fā)送完成之后,TBUSY信號(hào)為0,此時(shí)進(jìn)入狀態(tài)4,檢查第n路中一幀數(shù)據(jù)是否讀完,如果EMPTY[n]信號(hào)為1,代表此路數(shù)據(jù)讀完,進(jìn)入到狀態(tài)5,否則返回到狀態(tài)3。如果進(jìn)入到狀態(tài)5,則將通道地址左移一位,如果地址n=8,則進(jìn)入到狀態(tài)7,結(jié)束一次循環(huán),否則進(jìn)入狀態(tài)6,檢查第(n+1)路FIFO滿狀態(tài)FULL[n+1],如果為1,進(jìn)入狀態(tài)2,否則進(jìn)入狀態(tài)7,返回到初始狀態(tài)。通過(guò)上述狀態(tài)轉(zhuǎn)移,最終8路數(shù)據(jù)傳輸完成。

圖5 RS232串口接口FSM狀態(tài)轉(zhuǎn)移圖

3 資源配置與優(yōu)化

在軟件設(shè)計(jì)時(shí),為了節(jié)省FPGA芯片內(nèi)部資源消耗,便于將此系統(tǒng)移植到更多需要此功能的工業(yè)生產(chǎn)設(shè)計(jì)中,同時(shí)減少工業(yè)成本輸出,可以選擇一些低成本FPGA芯片,在軟件設(shè)計(jì)時(shí)進(jìn)行了資源優(yōu)化設(shè)計(jì)。

首先,F(xiàn)IFO緩沖模塊主要實(shí)現(xiàn)對(duì)通信數(shù)據(jù)的緩存,提高各路串口傳輸速率,從而簡(jiǎn)單有效地完成各路串口數(shù)據(jù)緩存功能。但通常設(shè)計(jì)串口通信時(shí),在每個(gè)串口模塊前端,為發(fā)送和接收端分別配置一個(gè)FIFO模塊[9-10],用于串口數(shù)據(jù)的緩存。然而本設(shè)計(jì)為了減少使用芯片存儲(chǔ)資源,在設(shè)計(jì)FPGA功能時(shí),采用了自己編寫的FIFO緩沖器,在實(shí)際操作過(guò)程中使用更加靈活。由于壓力傳感器最長(zhǎng)的一幀數(shù)據(jù)是300個(gè)字節(jié)長(zhǎng)度,所以為每路設(shè)計(jì)一個(gè)FIFO緩沖模塊,儲(chǔ)存空間為600個(gè)字節(jié)。在串口發(fā)送末端沒(méi)有設(shè)計(jì)FIFO緩沖器,直接從緩存的FIFO中讀取數(shù)據(jù),為系統(tǒng)節(jié)省了300×8字節(jié)空間。

其次,在設(shè)計(jì)各個(gè)通道串口波特率時(shí),因?yàn)槊總€(gè)通道的串口接收傳輸速率是相同的,所以此系統(tǒng)在頂層模塊中設(shè)計(jì)了一個(gè)各通道共用的波特率模塊,以減少占用存儲(chǔ)單元。

系統(tǒng)通過(guò)資源優(yōu)化后,對(duì)優(yōu)化前后FPGA代碼進(jìn)行編譯后,優(yōu)化前后編譯報(bào)告資源對(duì)比如圖6所示。通過(guò)對(duì)比發(fā)現(xiàn),優(yōu)化設(shè)計(jì)后,寄存器資源利用率比優(yōu)化前減少了10%,說(shuō)明資源配置實(shí)現(xiàn)了一定的優(yōu)化效果。

圖6 資源優(yōu)化前和優(yōu)化后的資源對(duì)比

4 驗(yàn)證與分析

為了驗(yàn)證此系統(tǒng)的正確性,將8路壓力傳感器+FPGA+RS232串口通信的多路串口系統(tǒng)硬件平臺(tái)搭建起來(lái)進(jìn)行測(cè)驗(yàn)。此平臺(tái)中,每路壓力傳感儀表數(shù)據(jù)傳輸速率為9 600 bps,當(dāng)各路數(shù)據(jù)接收完成后,通過(guò)查詢方式以256 000 bps發(fā)送速率發(fā)送每一幀數(shù)據(jù),發(fā)送速率為每10 ms發(fā)送150字節(jié),每幀數(shù)據(jù)幀頭都是通道地址,代表此幀數(shù)據(jù)為哪路數(shù)據(jù)。此系統(tǒng)中通過(guò)數(shù)字儀表顯示的數(shù)據(jù)與PC機(jī)上串口助手顯示的數(shù)據(jù)進(jìn)行對(duì)比,觀察各路數(shù)據(jù)的正確性。經(jīng)多次測(cè)試,此系統(tǒng)設(shè)計(jì)可以實(shí)現(xiàn)要求,并且數(shù)據(jù)完整不丟幀。圖7所示為部分測(cè)試結(jié)果。

圖7 各通道部分幀數(shù)據(jù)

結(jié) 語(yǔ)

猜你喜歡
進(jìn)入狀態(tài)狀態(tài)機(jī)字節(jié)
No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
課前預(yù)習(xí)在初中數(shù)學(xué)教學(xué)中的應(yīng)用探討
基于有限狀態(tài)機(jī)的交會(huì)對(duì)接飛行任務(wù)規(guī)劃方法
No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
任務(wù)型教學(xué)在初中數(shù)學(xué)中的應(yīng)用探討
簡(jiǎn)談MC7字節(jié)碼
國(guó)企黨員領(lǐng)導(dǎo)干部應(yīng)當(dāng)進(jìn)入狀態(tài)
以生為本,構(gòu)建富有生命活力的地理課堂
FPGA設(shè)計(jì)中狀態(tài)機(jī)安全性研究
基于反熔絲FPGA的有限狀態(tài)機(jī)加固設(shè)計(jì)
泾阳县| 万荣县| 巴塘县| 阿图什市| 固安县| 乐山市| 浙江省| 佛教| 长泰县| 双江| 长岭县| 临清市| 浪卡子县| 肃宁县| 新巴尔虎右旗| 武强县| 哈尔滨市| 分宜县| 伊金霍洛旗| 河南省| 沂水县| 霞浦县| 阳曲县| 恩施市| 右玉县| 资中县| 武清区| 京山县| 肥乡县| 四会市| 克拉玛依市| 子洲县| 泗洪县| 华容县| 台中县| 杭锦旗| 平湖市| 娄底市| 宜宾县| 沙洋县| 内丘县|