<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > FPGA在多串口讀數系統中的應用

FPGA在多串口讀數系統中的應用

作者: 時(shí)間:2009-04-29 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:主要討論了在多單片機串行中的,在該中單片機通過(guò)異步串行通信讀取外部設備中的數據,經(jīng)緩沖后再送到USB單片機,最終上傳到計算機。文中重點(diǎn)介紹了利用內部雙口RAM構建的FIFO在該中的具體以及FPGA如何協(xié)調各單片機的工作。
關(guān)鍵詞:FPGA;RAM;FIF0

本文引用地址:http://dyxdggzs.com/article/158072.htm


O 引言
本文所設計的系統主要為解決上傳數據慢的問(wèn)題,具體的背景如下:目前已設計一小型彈載記錄器,采用單片機+FLASH的結構,FLASH容量為lGB,為了最大限度地減少記錄器的外部接口數據線(xiàn)的數量,采用異步串行通信方式上報數據。單片機選用了Silabs公司混成集成芯片C8051F060,該單片機UARTl最高波特率可以達到系統時(shí)鐘的一半,也即如果晶體振蕩器采用14MHz,那么波特率理論值可以達到7Mbps,有效數據傳輸速率可達700kbps,但由于記錄器需要從FLASH讀取數據,而每讀出一頁(yè)的數據需要等待約20us的時(shí)間,所以上傳數據為非連續性的傳輸,經(jīng)實(shí)際測試發(fā)現,波特率為7Mbps時(shí)實(shí)際的數據上傳速率僅為300kbps左右,如果上傳1GB的數據就需要至少56分鐘的時(shí)間,如果需要上傳數套記錄器數據的時(shí)候,就顯得尤為浪費時(shí)間。為了解決這個(gè)問(wèn)題,本文設計了一個(gè)系統,該系統通過(guò)增加每次上傳的記錄器的數量來(lái)提高讀數系統的資源利用率,以5套記錄器同時(shí)上傳來(lái)計算,56分鐘內可以上傳5GB的數據,平均每套的上傳時(shí)問(wèn)僅為12分鐘,提高了數據上傳效率。系統框圖見(jiàn)圖l。

其中USB接口控制器選用CYPRESS公司的CY7C68013A,該芯片是Cypress公司推出的新一代高速EZ―USB FX2系列芯片;單片機部分選用C8051F060芯片;主控FPGA選用XILINX公司SPARTAN―IIE系列芯片XC2S100E一PQ208。
FPGA作為主控制中心,主要負責接收68013發(fā)送的狀態(tài)指令,并將狀態(tài)下發(fā)到各單片機及相應的外部設備,五個(gè)單片機分別負責通過(guò)接收外部設備的串行數據,并將其并行寫(xiě)入FPGA,68013除了從FPGA中讀取數據外,還需要將計算機下發(fā)的控制命令發(fā)送到FPGA。


1 FPGA內部FIF0設計
由于本項目所用FPGA芯片內部RAM共有40Kbit,所以可構成1KB×5的FIF0結構,即可構成5個(gè)深度分別為1KB的FIFO,分別作為5個(gè)單片機上傳時(shí)的數據緩沖,具體邏輯框圖見(jiàn)圖2。CPU模塊主要負責五個(gè)FIF0之間的切換,5個(gè)FIFO采用相同的結構,限于篇幅,本文不詳細介紹FIF0的具體設計,只給出5個(gè)FIF0與CPU模塊之間的邏輯關(guān)系。5個(gè)FIFO分別給出兩個(gè)狀態(tài)信號,一個(gè)是OK,該信號表示FIFO已經(jīng)準備好數據,可以進(jìn)行讀取操作,另一個(gè)信號為Req,該信號通知單片機該FIFO已經(jīng)幾乎空,可以向該FIF0寫(xiě)入數據,其中幾個(gè)關(guān)鍵信號的具體用途如下表l所示:

2 FIF0切換
GPIF接口是EZ―USB FX2系列單片機提供的一個(gè)可由用戶(hù)編程的接口,具有高速、靈活等特點(diǎn),可方便地實(shí)現與各種外設之間的無(wú)縫連接。GPIF的核心是一個(gè)可編程的狀態(tài)機,通過(guò)對其進(jìn)行編程可以實(shí)現多種協(xié)議,功能非常強大。
本設計中68013與FPGA之間的接口即采用GPIF模式,基本的運行模式為:68013每啟動(dòng)一次GPIF讀波形,便從FPGA中讀取512個(gè)字節的數據,然后FPGA自動(dòng)切換FIFO號。在程序設計時(shí)可以在GPIF中斷函數中設置一個(gè)標志,這樣CPU模塊在檢測到這個(gè)標志后表明對該FIF0的操作已完成,應該切換FIF0了,該標志信號使用PA4引腳來(lái)發(fā)出,具體說(shuō)明見(jiàn)見(jiàn)表1。
5個(gè)FIFO的具體操作如下:系統上電后先復位各FIFO,并使各FIFO處于關(guān)閉狀態(tài),然后判斷是否為讀狀態(tài),如果不是則循環(huán)判斷,如果為讀狀態(tài),則使能各FIFO;由于默認操作在FIF0l,所以判斷FIF01的0K信號是有效,如果有效,則判斷PA4引腳是否為‘0’,如果為‘0’則置RDYO為l,68013判斷到此信號后啟動(dòng)一次GPIF波形讀取512字節的數據,并在讀完后將PA4置1,表示數據已經(jīng)讀取完畢,CPU模塊在判斷到PA4為1后將RDYO置O,然后將操作對象切換至FIF02,接著(zhù)判斷FIF02的OK信號是否有效,具體操作同FIF01,具體流程見(jiàn)圖3。

注意:為了保證數據讀取時(shí)的暢通無(wú)阻,在判斷四個(gè)FIF0的OK信號時(shí),應該采取輪循的判斷方式,即當FIF01 的OK信號無(wú)效時(shí)應該轉去判斷FIF02的0K信號,而不能死等FIF01的0K信號有效,這樣可以有效防止因某個(gè)單片機或某個(gè)外部設備的故障而出現的讀數停滯現象。


3 結束語(yǔ)
經(jīng)過(guò)長(cháng)時(shí)間的工作表明,該讀數系統能穩定地進(jìn)行數據的上傳,滿(mǎn)足實(shí)際需要。



關(guān)鍵詞: 應用 系統 讀數 串口 FPGA

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>