国产久操视频-国产久草视频-国产久热精品-国产久热香蕉在线观看-青青青青娱乐-青青青青在线成人视99

  • 正文
    • 10.6  典型實例16:RS-232C(UART)接口的設(shè)計與實現(xiàn)
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

利用FPGA實現(xiàn)外設(shè)通信接口之: 典型實例-RS-232C(UART)接口的設(shè)計與實現(xiàn)

2013/08/30
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

?

10.6??典型實例16:RS-232C(UART)接口的設(shè)計與實現(xiàn)

10.6.1??實例內(nèi)容及目標(biāo)

1.實例的主要內(nèi)容

本節(jié)旨在通過分析UART控制器,設(shè)計實現(xiàn)了FPGA通過RS-232C接口與PC機(jī)的通信。設(shè)計過程中用Modelsim對UART控制器進(jìn)行仿真,幫助讀者進(jìn)一步了解UART協(xié)議的具體時序。

2.實例目標(biāo)

通過本實例,讀者應(yīng)達(dá)到以下目標(biāo)。

·??了解UART工作原理和時序。

·??熟悉Modelsim仿真的流程。

·??熟練掌握狀態(tài)機(jī)的使用。

·??實現(xiàn)FPGA與PC機(jī)之間的RS-232C接口通信。

10.6.2??實例詳解

系統(tǒng)上電復(fù)位后,先將20個數(shù)寫入FPGA內(nèi)部資源BlockRam(可以用IP核來實現(xiàn)),然后根據(jù)設(shè)定的協(xié)議(該協(xié)議可自己設(shè)定)來建立PC機(jī)與FPGA的通信,此處設(shè)定的協(xié)議如下。

PC機(jī)要從串口讀取數(shù)據(jù)時,先從串口發(fā)送E4H、00H。E4H代表FPGA的地址(可以隨意設(shè)定一個數(shù)),00H表示要讀取數(shù)據(jù)。FPGA收到這兩個數(shù)據(jù)后,通過串口給PC機(jī)反饋信號。發(fā)送E4H、E1H,表示FPGA已經(jīng)收到了PC機(jī)的命令,要開始向PC機(jī)發(fā)送數(shù)據(jù)。PC端準(zhǔn)備接收數(shù)據(jù),建立了此連接后,PC機(jī)可從FPGA讀出最初寫入BlockRam中的值了。

10.6.3??BlockRAM的實現(xiàn)方法

對于BlockRam,可以直接應(yīng)用IP核來實現(xiàn),具體實現(xiàn)步驟如下。

首先為工程添加新的設(shè)計文件,選擇“New?Source…”,如圖10.23所示。

圖10.23??新建IP核設(shè)計文件

在彈出的對話框里面選擇創(chuàng)建IP(CoreGen?&?Architecture?Wizard)類型文件,并為該文件設(shè)置文件名及路徑,單擊“Next”按鈕,如圖10.24所示。

圖10.24??選擇IP核類型

在選擇IP核類型對話框中選擇“Dual?Port?Block?Memory?6-1”,即可生成一個雙口RAM。單擊“Next”按鈕進(jìn)入雙口RAM設(shè)置向?qū)?,如圖10.25所示。

在該向?qū)е?,要對該雙口RAM的屬性進(jìn)行設(shè)置。

圖10.25??雙口Block?Memory設(shè)置向?qū)?/p>

?

如圖10.25所示,WidthA、WidthB分別為寫入兩個口的數(shù)據(jù)的位數(shù),Depth為容量,在這里設(shè)為100,實際中只用到20個。對A口,上電復(fù)位后,就將20個數(shù)據(jù)寫入A口,因此A口設(shè)為Write?Only,對于B口,F(xiàn)PGA向PC機(jī)發(fā)送數(shù)據(jù)時從B口讀取數(shù)據(jù),因此B口設(shè)為Read?Only,設(shè)置完畢后單擊“Generate”按鈕即可。

?

10.6.4??FPGA代碼的設(shè)計實現(xiàn)

整個代碼采用了4個狀態(tài)機(jī)來實現(xiàn),其中兩個狀態(tài)機(jī)用于從串口讀取數(shù)據(jù),另外兩個用于向串口寫入數(shù)據(jù)。下面以從串口讀取數(shù)據(jù)為例來說明狀態(tài)機(jī)的工作過程。

從串口讀取數(shù)據(jù)的兩個狀態(tài)機(jī)主要完成如下功能:從串口接收到字符,并判斷是不是E4H、00H(自定協(xié)議規(guī)定的內(nèi)容),如果是,就給出Response(應(yīng)答)信號,通知發(fā)送數(shù)據(jù)狀態(tài)機(jī)開始向PC機(jī)發(fā)送數(shù)據(jù)。

這兩個狀態(tài)機(jī),一個為主狀態(tài)機(jī),用于連續(xù)從串口讀取數(shù)據(jù);一個為輔狀態(tài)機(jī),用于從串口讀取一個字節(jié)的數(shù)據(jù)。由于串口接收數(shù)據(jù)是一位一位地接收,該狀態(tài)機(jī)就控制從串口接收所有位,并將結(jié)果存入一個8位的寄存器。

當(dāng)輔狀態(tài)機(jī)接收到一個字符后,就給主狀態(tài)機(jī)一個Received_char信號。主狀態(tài)機(jī)判斷是不是E4H信號,如果是,就跳到下一個狀態(tài),等待輔狀態(tài)機(jī)接收下一個字符;如果下一個接收到的字符是00H,那么就給出Response信號。

系統(tǒng)狀態(tài)圖如圖10.26所示。

圖10.26??系統(tǒng)狀態(tài)圖

?

狀態(tài)機(jī)描述是一種非常好的方法,用戶可在此基礎(chǔ)上加以修改,用于自己的實際設(shè)計當(dāng)中。單個字符接收的狀態(tài)機(jī)如圖10.27所示。

圖10.27??單字符接收狀態(tài)機(jī)

對于發(fā)送數(shù)據(jù)的兩個狀態(tài)機(jī),其工作機(jī)理與上面相同,不再贅述。詳細(xì)設(shè)計參考實例代碼。

10.6.5??波特率的設(shè)定

串口通信必須要設(shè)定波特率。本設(shè)計中采用的波特率為9600kbit/s,采用的時鐘為50MHz,相當(dāng)于傳送一位數(shù)據(jù)需要約5028個時鐘周期。這里采用減法計數(shù)器來控制,即計數(shù)器計到5028個時鐘周期后,就開始傳輸下一位數(shù)據(jù)(也可以通過對時鐘分頻來實現(xiàn))。

10.6.6??ModelSim仿真驗證

FPGA從串口接收數(shù)據(jù)仿真結(jié)果,如圖10.28所示。

圖10.28??從串口接收數(shù)據(jù)仿真結(jié)果

?

rxd為模擬PC機(jī)發(fā)出的E4H、00H信號。從圖中可以看到,當(dāng)FPGA收到這兩個信號后,給出了Response脈沖。發(fā)送狀態(tài)機(jī)收到該信號后,給出txd的低電平信號,通知PC機(jī)要開始發(fā)送數(shù)據(jù)了。

如圖10.29所示,txd為FPGA向PC機(jī)發(fā)送的數(shù)據(jù)。發(fā)送狀態(tài)機(jī)收到Response信號后,給出txd低電平信號,開始發(fā)送數(shù)據(jù)。先發(fā)送應(yīng)答信號E4H、E1H,之后開始發(fā)送開始寫入BlockRam的20個數(shù),從0~19。圖中raddr為BlockRam的地址,rdata為從BlockRam中讀取的數(shù)據(jù)。

圖10.29??SDRAM控制器仿真結(jié)果

在仿真時,為了顯示方便,沒有按照5028個時鐘傳輸一位,而是4個時鐘就傳輸一位。

10.6.7??小結(jié)

本節(jié)對數(shù)字系統(tǒng)中常用的UART控制器做了初步的介紹,并在Modelsim中實現(xiàn)了對SDRAM控制器的仿真,最后通過編譯下載在紅色颶風(fēng)的開發(fā)板上實現(xiàn)了預(yù)定功能。

通過這個實例,讀者能夠掌握UART控制器以及RS-232C接口的設(shè)計實現(xiàn)方法,并學(xué)會將這個控制器集成到更為復(fù)雜的設(shè)計中去。

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

華清遠(yuǎn)見(www.farsight.com.cn)是國內(nèi)領(lǐng)先嵌入師培訓(xùn)機(jī)構(gòu),2004年注冊于中國北京海淀高科技園區(qū),除北京總部外,上海、深圳、成都、南京、武漢、西安、廣州均有直營分公司。華清遠(yuǎn)見除提供嵌入式相關(guān)的長期就業(yè)培訓(xùn)、短期高端培訓(xùn)、師資培訓(xùn)及企業(yè)員工內(nèi)訓(xùn)等業(yè)務(wù)外,其下屬研發(fā)中心還負(fù)責(zé)嵌入式、Android及物聯(lián)網(wǎng)方向的教學(xué)實驗平臺的研發(fā)及培訓(xùn)教材的出版,截止目前為止已公開出版70余本嵌入式/移動開發(fā)/物聯(lián)網(wǎng)相關(guān)圖書。企業(yè)理念:專業(yè)始于專注 卓識源于遠(yuǎn)見。企業(yè)價值觀:做良心教育、做專業(yè)教育,更要做受人尊敬的職業(yè)教育。

六盘水市| 祁阳县| 建阳市| 奇台县| 古丈县| 兴化市| 民权县| 肃宁县| 遂川县| 苏尼特右旗| 清涧县| 临湘市| 宣城市| 武冈市| 板桥市| 芷江| 崇阳县| 上思县| 磴口县| 榆林市| 河源市| 凌源市| 绵阳市| 翼城县| 黄梅县| 延吉市| 永善县| 重庆市| 永登县| 勐海县| 安宁市| 铜鼓县| 建德市| 苏尼特右旗| 璧山县| 横峰县| 涟源市| 婺源县| 武鸣县| 凯里市| 柳州市|