新聞中心

EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 基于FPGA 的UART 擴展總線設(shè)計和應(yīng)用

基于FPGA 的UART 擴展總線設(shè)計和應(yīng)用

作者: 時間:2012-08-30 來源:網(wǎng)絡(luò) 收藏

2.2 的邏輯設(shè)計

的通信協(xié)議十分簡單,以低電平作為起始位,高電平作為停止位,中間可傳輸 5~8 比特數(shù)據(jù)和1 比特奇偶校驗位,奇偶校驗位的有無和數(shù)據(jù)比特的長度由通信雙方約 定。一幀數(shù)據(jù)傳輸完畢后可以繼續(xù)傳輸下一幀數(shù)據(jù),也可以繼續(xù)保持為高電平,兩幀之間 保持高電平,持續(xù)時間可以任意長。

模塊由SLAVE接口、波特率控制器、UART接收器和UART發(fā)送器構(gòu)成。SLAVE 接口是為了實現(xiàn)WISHBONE 總線和功能模塊之間的數(shù)據(jù)傳輸;UART 發(fā)送器的用途是將準(zhǔn)備輸出的并行數(shù)據(jù)按照基本UART 幀格式轉(zhuǎn)為TXD 信號串行輸出;UART 接收器接收RXD 串行信號,并將其轉(zhuǎn)化為并行數(shù)據(jù),但串并轉(zhuǎn)換的時鐘同發(fā)送器一樣處理,收發(fā)設(shè)備間的時 鐘是會累計的,會導(dǎo)致接收數(shù)據(jù)不正確,波特率控制器就是專門產(chǎn)生一個遠(yuǎn)遠(yuǎn)高于波特率的 本地時鐘信號對輸入RXD 不斷采樣,以不斷地讓接收器與發(fā)送器保持同步。

波特率控制器實際上就是一個簡單的分頻器??梢愿鶕?jù)給定的系統(tǒng)時鐘頻率(晶振時 鐘)和要求的波特率算出波特率分頻因子。已算出的波特率分頻因子作為分頻器的分頻數(shù)。 對于波特率發(fā)生器中的系數(shù)一般在 實現(xiàn)時往往是固定的,但對于不同的實現(xiàn),這個 系數(shù)需要更改。波特率控制器產(chǎn)生的分頻時鐘,不是波特率時鐘,而是波特率時鐘的16 倍,目的是為了在接收事實進行精確地采樣,以提出異步的串行數(shù)據(jù)。

UART 發(fā)送器由16 個字節(jié)FIFO 和信號發(fā)送器組成。FIFO 主要是起到數(shù)據(jù)緩存的作用, 信號發(fā)送器的核心部分由有限狀態(tài)機實現(xiàn)的,實現(xiàn)偽代碼如下:

case (狀態(tài)機狀態(tài))

空閑狀態(tài):if ( FIFO 中有數(shù)據(jù) )

狀態(tài)機跳轉(zhuǎn)到 FIFO 讀取狀態(tài);

else

狀態(tài)機保持空閑狀態(tài);

FIFO 讀取狀態(tài):讀取FIFO 數(shù)據(jù),保存到移位寄存器;狀態(tài)機跳轉(zhuǎn)到開始位狀態(tài);

開始位狀態(tài):時鐘計數(shù),發(fā)送開始位;計數(shù)結(jié)束后狀態(tài)機跳轉(zhuǎn)到數(shù)據(jù)位狀態(tài);

數(shù)據(jù)位狀態(tài):時鐘計數(shù),發(fā)送數(shù)據(jù),移位寄存器移位;計數(shù)結(jié)束后

if(移位寄存器內(nèi)數(shù)據(jù)發(fā)送完畢)

狀態(tài)機跳轉(zhuǎn)到停止位狀態(tài);

else

狀態(tài)機跳轉(zhuǎn)到數(shù)據(jù)位狀態(tài);

停止位狀態(tài):時鐘計數(shù),發(fā)送停止位;計數(shù)結(jié)束后狀態(tài)機跳轉(zhuǎn)到 s_idle;

default:狀態(tài)機復(fù)位到空閑狀態(tài);

endcase

UART 接收器包括了16 個字節(jié)FIFO、信號同步器和信號接收器三個部分。其中信號同 步器則是為了解決串行數(shù)據(jù)幀和接收時鐘是異步問題,其它兩部分和UART 發(fā)送器的中的 功能相似,只是數(shù)據(jù)傳送的方向相反。

3 設(shè)備接口和驅(qū)動設(shè)計

3.1 設(shè)備接口設(shè)計

AT91ARM9200 芯片通過其靜態(tài)存儲控制器 (SMC)控制EP1K,而靜態(tài)存儲控制器 (SMC) 是控制外部靜態(tài)存儲器或外設(shè)的訪問。 SMC 可編程地址達(dá)512M 字節(jié)。它有8 個 片選及一個26 位地址總線。16 位數(shù)據(jù)總線能配置與8 位或16 位外部器件連接。獨立的讀寫控制信號允許存儲器與外設(shè)直接連接。SMC 支持不同的允許單時鐘周期存儲器訪問的訪 問協(xié)議。它還提供外部等待請求能力。

因為 EP1K 內(nèi)部設(shè)計使用的是8 位數(shù)據(jù)總線和8 位地址總線,所以AT91ARM9200 芯片與EP1K 相連的I/O 端口為 A[7:0],D[7:0],NRD 和NWR0。然而EP1K 內(nèi)部采用 的WISHBONE 總線規(guī)范,其讀寫信號wb_we_o,高電平表示為寫操作,低電平表示為 讀操作。所以需要將NRD 和NWR0 進行相應(yīng)的信號轉(zhuǎn)換。而D[7:0]為雙向端口IO, 所以在EP1K 的設(shè)計中采用三態(tài)門的設(shè)計。



關(guān)鍵詞: FPGA UART 總線設(shè)計

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉