uart串口通信設(shè)計(jì)實(shí)例

uart串口通信設(shè)計(jì)實(shí)例

ID:6591293

大?。?35.50 KB

頁(yè)數(shù):8頁(yè)

時(shí)間:2018-01-19

uart串口通信設(shè)計(jì)實(shí)例_第1頁(yè)
uart串口通信設(shè)計(jì)實(shí)例_第2頁(yè)
uart串口通信設(shè)計(jì)實(shí)例_第3頁(yè)
uart串口通信設(shè)計(jì)實(shí)例_第4頁(yè)
uart串口通信設(shè)計(jì)實(shí)例_第5頁(yè)
資源描述:

《uart串口通信設(shè)計(jì)實(shí)例》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、2.5??UART串口通信設(shè)計(jì)實(shí)例(1)接下來(lái)用剛才采用的方法設(shè)計(jì)一個(gè)典型實(shí)例。在一般的嵌入式開(kāi)發(fā)和FPGA設(shè)計(jì)中,串口UART是使用非常頻繁的一種調(diào)試手段。下面我們將使用VerilogRTL編程設(shè)計(jì)一個(gè)串口收發(fā)模塊。這個(gè)實(shí)例雖然簡(jiǎn)單,但是在后續(xù)的調(diào)試開(kāi)發(fā)中,串口使用的次數(shù)比較多,這里闡明它的設(shè)計(jì)方案,不僅僅是為了講解RTL編程,而且為了后續(xù)使用兼容ARM9內(nèi)核實(shí)現(xiàn)嵌入式開(kāi)發(fā)。串口在一般的臺(tái)式機(jī)上都會(huì)有。隨著筆記本電腦的使用,一般會(huì)采用USB轉(zhuǎn)串口的方案虛擬一個(gè)串口供筆記本使用。圖2-7為UART串口的結(jié)構(gòu)圖。串口具有9個(gè)引腳,但是真正連接入FPGA開(kāi)發(fā)板的一般只

2、有兩個(gè)引腳。這兩個(gè)引腳是:發(fā)送引腳TxD和接收引腳RxD。由于是串行發(fā)送數(shù)據(jù),因此如果開(kāi)發(fā)板發(fā)送數(shù)據(jù)的話,則要通過(guò)TxD線1bit接著1bit發(fā)送。在接收時(shí),同樣通過(guò)RxD引腳1bit接著1bit接收。再看看串口發(fā)送/接收的數(shù)據(jù)格式(見(jiàn)圖2-8)。在TxD或RxD這樣的單線上,是從一個(gè)周期的低電平開(kāi)始,以一個(gè)周期的高電平結(jié)束的。它中間包含8個(gè)周期的數(shù)據(jù)位和一個(gè)周期針對(duì)8位數(shù)據(jù)的奇偶校驗(yàn)位。每次傳送一字節(jié)數(shù)據(jù),它包含的8位是由低位開(kāi)始傳送,最后一位傳送的是第7位。?(點(diǎn)擊查看大圖)圖2-8??串口發(fā)送串行數(shù)據(jù)的格式示意圖上述格式只是發(fā)送串口數(shù)據(jù)最通常的格式。打開(kāi)Wi

3、ndows自帶的串口收發(fā)軟件:超級(jí)終端,可以配置相關(guān)的選項(xiàng)。比如,每秒位數(shù),可以設(shè)定一個(gè)周期的長(zhǎng)度:如果我們?cè)O(shè)定為9600,則上圖中1位持續(xù)的時(shí)間是:1/9600s。數(shù)據(jù)位也可以從5、6、7、8中選一位。奇偶校驗(yàn)可以從偶校驗(yàn)、奇校驗(yàn)、無(wú)、標(biāo)記、空格中任選一個(gè)。停止位可以是:1、1.5、2。在這里,我們選擇最通常的配置,如圖2-9所示。?這個(gè)設(shè)計(jì)有兩個(gè)目的:一是從串口中接收數(shù)據(jù),發(fā)送到輸出端口。接收的時(shí)候是串行的,也就是一個(gè)接一個(gè)的;但是發(fā)送到輸出端口時(shí),我們希望是8位放在一起,成為并行狀態(tài)(見(jiàn)圖2-10)。我們知道,串口中出現(xiàn)信號(hào),是沒(méi)有先兆的。如果出現(xiàn)了串行數(shù)據(jù)

4、,則如何通知到輸出端口呢?我們引入“接收有效”端口?!敖邮沼行А倍丝谠谝话闱闆r下都是低電平,一旦有數(shù)據(jù)到來(lái)時(shí),它就變成高電平。下一個(gè)模塊在得知“接收有效”信號(hào)為高電平時(shí),它就明白:新到了一個(gè)字節(jié)的數(shù)據(jù),放在“接收字節(jié)”端口里面。?圖2-10??串口接收和發(fā)送數(shù)據(jù)時(shí)進(jìn)行串并轉(zhuǎn)換的示意圖二是發(fā)送數(shù)據(jù)到串口。發(fā)送數(shù)據(jù)的時(shí)候,我們也希望輸入端口能夠給出一個(gè)簡(jiǎn)單的形式。我們引入“發(fā)送有效”信號(hào),它為高電平,表示我們希望把“發(fā)送字節(jié)”送入TxD發(fā)送出去。但是“發(fā)送有效”信號(hào)是否生效是有限制的,也就是正在發(fā)送的時(shí)候,是不能接收新的數(shù)據(jù)并發(fā)送的。所以,我們引入一個(gè)“發(fā)送狀態(tài)”信號(hào)

5、,它標(biāo)識(shí)當(dāng)前的“發(fā)報(bào)機(jī)”是否處于忙碌狀態(tài)。如果“發(fā)報(bào)機(jī)”處于忙碌狀態(tài),則它拒絕“發(fā)送有效”信號(hào),不予執(zhí)行。根據(jù)上面的分析,可以確定端口信號(hào)如下:1.module?rxtx?(?2.????????????????clk,?3.????????????????rst,?4.????????????????rx,?5.????????????????tx_vld,?6.????????????????tx_data,?7.?????????????????8.????????????????rx_vld,?9.????????????????rx_data,?10.?

6、???????????????tx,?11.????????????????txrdy?12.????????????????);?13.input???????????clk;?14.input???????????rst;?1.input???????????rx;?2.input???????????tx_vld;?3.input??[7:0]????tx_data;?4.?5.output?????????rx_vld;?6.output?[7:0]???rx_data;?7.output?????????tx;?8.output?????????txrd

7、y;?rx對(duì)應(yīng)RxD,tx對(duì)應(yīng)TxD。rx_vld就是“接收有效”信號(hào),rx_data則是“接收字節(jié)”信號(hào)。tx_vld是“發(fā)送有效”信號(hào),tx_data是“發(fā)送字節(jié)”信號(hào)。txrdy是“發(fā)送狀態(tài)”信號(hào),它是低電平表示正處于發(fā)送狀態(tài),不接收新的字節(jié)而進(jìn)行發(fā)送。我們知道,串行數(shù)據(jù)的頻率是9600Hz,而FPGA開(kāi)發(fā)板的頻率卻是非常高的。這里,我們假定FPGA的工作頻率是25MHz,則串口發(fā)送1位信息,則FPGA上的clk需要計(jì)數(shù):25000000/9600=2604次。我們知道rx一旦變化,不論是從0到1,還是從1到0,都表示1位信息的傳遞開(kāi)始。因此,我們?cè)谠O(shè)計(jì)一個(gè)

8、最大計(jì)數(shù)值

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。