資源描述:
《UART大數(shù)據(jù)通信(發(fā)送模塊部分)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、實(shí)用文案UART數(shù)據(jù)通信摘要:UART協(xié)議是數(shù)據(jù)通信及控制系統(tǒng)中廣泛使用的一種全雙工串行數(shù)據(jù)傳輸協(xié)議,在實(shí)際工業(yè)生產(chǎn)中有時(shí)并不使用UART的全部功能,只需將其核心功能集成即可。波特率發(fā)生器、接收器和發(fā)送器是UART的三個(gè)核心功能模塊,本課程設(shè)計(jì)分成三部分,本人負(fù)責(zé)UART接受模塊的設(shè)計(jì)和仿真,其余部分由另兩位同學(xué)完成。本文使用Verilog語言對(duì)發(fā)送功能模塊進(jìn)行描述并加以整合,并利用XilinxISE軟件進(jìn)行仿真,其結(jié)果完全符合UART協(xié)議的要求。1.UART數(shù)據(jù)通信協(xié)議的介紹UART(即?Universal?A
2、synchronous?Receiver?Transmitter通用異步收發(fā)器)是廣泛使用的串行數(shù)據(jù)傳輸協(xié)議。UART允許在串行鏈路上進(jìn)行全雙工的通信。UART通信接口簡單,只需要兩根線(本文只討論兩根線的情況,不涉及狀態(tài)控制等信號(hào)):tx是UART數(shù)據(jù)發(fā)送信號(hào),rx是UART數(shù)據(jù)接收信號(hào)。由于沒有時(shí)鐘信號(hào)作為采樣信號(hào),因此在UART的串行數(shù)據(jù)中需要增加一些額外的信息,這些信息連同數(shù)據(jù)組成UART的數(shù)據(jù)幀格式。UART的數(shù)據(jù)幀格式是:起始位(值為0)、數(shù)據(jù)位(可根據(jù)需要設(shè)置成6,......,9或其他位數(shù),數(shù)據(jù)位
3、是低位在先、高位在后)、奇偶校驗(yàn)位(可根據(jù)需要設(shè)置成奇校驗(yàn)、偶校驗(yàn)或無校驗(yàn),本章介紹的是無校驗(yàn))、停止位(停止位可有1,......,2位)0。UART的具體數(shù)據(jù)幀格式如下圖所示。UART數(shù)據(jù)幀格式起始位的意義是提醒接收方數(shù)據(jù)即將到來,請(qǐng)做好接收數(shù)據(jù)的準(zhǔn)備。數(shù)據(jù)位是接收方需要接收的數(shù)據(jù)信息。奇偶校驗(yàn)位的意義是給接收方提供一種校驗(yàn)數(shù)據(jù)正確與否的方法和信息。這需要雙方事先約定好是奇校驗(yàn)還是偶校驗(yàn)或者無校驗(yàn)。停止位是提醒接收方數(shù)據(jù)已發(fā)送完畢,如果接收方按照UART協(xié)議沒有正常接收到停止位,則說明該幀數(shù)據(jù)不完整,可以判定
4、數(shù)據(jù)無效。文案大全實(shí)用文案1.UART數(shù)據(jù)發(fā)送模塊建模根據(jù)UART數(shù)據(jù)通信協(xié)議,UART數(shù)據(jù)發(fā)送模塊還是比較簡單的。實(shí)現(xiàn)過程描述如下:在空閑狀態(tài)接收發(fā)送數(shù)據(jù)的指令后,在裝載數(shù)據(jù)的同時(shí),在數(shù)據(jù)的低位加上1位的開始位0,在數(shù)據(jù)的高位加上1位的停止位1,接著在時(shí)鐘的節(jié)拍下把這10位數(shù)據(jù)從低位到高位發(fā)送出去,最后恢復(fù)UART數(shù)據(jù)發(fā)送模塊為空閑狀態(tài)。根據(jù)以上描述設(shè)計(jì)流程圖,如下圖所示。UART數(shù)據(jù)發(fā)送流程圖2.UART數(shù)據(jù)接受模塊UART數(shù)據(jù)接收模塊相對(duì)UART數(shù)據(jù)發(fā)送模塊來說更復(fù)雜些。下面簡單的介紹一下UART數(shù)據(jù)接收的
5、時(shí)序分析。因?yàn)閁ART是異步通信,在數(shù)據(jù)采樣上沒有同步時(shí)鐘作為參考點(diǎn)。結(jié)合UART數(shù)據(jù)通信協(xié)議,UART首先需要捕獲數(shù)據(jù)線上的起始信號(hào),在起始位后連續(xù)接收8位數(shù)據(jù),最后判斷停止位是否有效,如果有效則表示一幀UART數(shù)據(jù)完整接收,否則表示UART數(shù)據(jù)幀出錯(cuò)(這里不考慮奇偶校驗(yàn)位)。由于沒有傳送時(shí)鐘信號(hào),所以接收方需要知道發(fā)送方發(fā)出數(shù)據(jù)的波特率。雖然知道了發(fā)送方的波特率,但由于接收方與發(fā)送方可能是兩個(gè)不同的時(shí)鐘源,所以時(shí)鐘頻率存在偏差。為了解決不同時(shí)鐘的偏差,UART在接收方對(duì)采樣時(shí)鐘做出規(guī)定,即采樣時(shí)鐘是數(shù)據(jù)波特率
6、的16倍。文案大全實(shí)用文案上面講到接收方接收一個(gè)數(shù)據(jù)需要采樣16次,這16次是這樣分配的:當(dāng)捕獲到數(shù)據(jù)線上的下降沿時(shí)開始計(jì)數(shù),計(jì)數(shù)到第8個(gè)采樣周期時(shí)的采樣數(shù)據(jù)作為接收到的數(shù)據(jù)。當(dāng)計(jì)數(shù)到第16個(gè)采樣周期時(shí),計(jì)數(shù)器歸零重新計(jì)數(shù)。每計(jì)數(shù)到8時(shí)進(jìn)行數(shù)據(jù)采樣。這樣,只要發(fā)送方與接收方的時(shí)鐘信號(hào)的頻率不超過1/16,就可以正確采樣數(shù)據(jù)了。1.UART分頻器假設(shè)數(shù)據(jù)的波特率為p,則所需時(shí)鐘的頻率為16*p。以波特率p為9600為例,系統(tǒng)時(shí)鐘為50MHz,則分頻系數(shù)為50000000/(16*9600)=325.52,取整為32
7、6。分頻器VerilogHDL語言代碼如下:moduleclkdiv(clk,clkout);inputclk;//系統(tǒng)時(shí)鐘outputclkout;//采樣時(shí)鐘輸出regclkout;reg[15:0]cnt;always@(posedgeclk)//分頻進(jìn)程beginif(cnt==16'd162)beginclkout<=1'b1;cnt<=cnt+16'd1;endelseif(cnt==16'd325)beginclkout<=1'b0;cnt<=16'd0;文案大全實(shí)用文案endelsebegincn
8、t<=cnt+16'd1;endendEndmodule1.UART數(shù)據(jù)發(fā)送模塊仿真下面使用XilinxISEDesignSuite12.4對(duì)UART數(shù)據(jù)發(fā)送模塊進(jìn)行仿真對(duì)工程文件進(jìn)行“SimulateBehavioralModel”得到波形仿真圖。0-10ns,模塊復(fù)位信號(hào)r_rst_n,低電平有效(r_rst_n值為0)。文案大全實(shí)用文案(1)波形仿真圖時(shí)序分析① 0