<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è) > EDA/PCB > 設計應用 > 基于FPGA的UART設計

基于FPGA的UART設計

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

2.1 波特率發(fā)生器設計
波特率發(fā)生器實(shí)質(zhì)是設計一個(gè)分頻器,用于產(chǎn)生和RS232通信同步的時(shí)鐘。在系統中用一個(gè)計數器來(lái)完成這個(gè)功能,分頻系數N決定了波特率的數值。該計數器一般工作在一個(gè)頻率較高的系統時(shí)鐘下,當計數到N/2時(shí)將輸出置為高電平,再計數到N/2的數值后將輸出置為低電平,如此反復即可得到占空比50%的波特率時(shí)鐘,具體的波特率依賴(lài)于所使用的系統時(shí)鐘頻率和Ⅳ的大小。如系統時(shí)鐘頻率是6.4 MHz,要求波特率是9 600,則16倍波特率時(shí)鐘的周期約等于42個(gè)系統時(shí)鐘周期,則計數器取42/2=21時(shí),當計數溢出時(shí)輸出電平取反就可以得到16倍約定波特率的時(shí)鐘。
使用VHDL來(lái)描述波特率發(fā)生器的完整代碼如下:
d.JPG
2.2 發(fā)送器設計
發(fā)送器的設計較容易,只要每隔一個(gè)發(fā)送周期按照數據幀格式及要求的速率輸出數據即可。沒(méi)有數據要發(fā)送時(shí),發(fā)送數據寄存器為空,發(fā)送器處于空閑狀態(tài);當檢測到發(fā)送數據寄存器滿(mǎn)信號后,發(fā)送器及發(fā)送起始位,同時(shí)8個(gè)數據位被并行裝入發(fā)送移位寄存器,停止位緊接著(zhù)數據位指示一幀數據結束。只有發(fā)送數據寄存器為空時(shí),RAM中的待發(fā)數據才能被裝入。程序中使用計數器要保證各位周期定時(shí)正確。
2.3 接收器設計
接收器的工作過(guò)程如下,串行數據幀和接收時(shí)鐘是異步的,發(fā)送來(lái)的數據由邏輯1變?yōu)檫壿?可以視為一個(gè)數據幀的開(kāi)始。接收器先要捕捉起始位,然而,通信線(xiàn)上的噪音也極有可能使傳號“1”跳變到空號“0”。所以接收器以16倍的波特率對這種跳變進(jìn)行檢測,確定rxd輸入由1到0,邏輯0要8個(gè)bclkr(16倍的波特率時(shí)鐘)周期,才是正常的起始位,而不是噪音引起的,其中若有一次采樣得到的為高電平則認為起始信號無(wú)效,返回初始狀態(tài)重新等待起始信號的到來(lái)。
采到正確的起始位后,就開(kāi)始接收數據,最可靠的接收應該是接收時(shí)鐘的出現時(shí)刻正好對著(zhù)數據位的中央。由于在起始位檢測時(shí),已使時(shí)鐘對準了位中央,用16倍波特率的時(shí)鐘作為接收時(shí)鐘,就是為了確保在位寬的中心時(shí)間對接收的位序列進(jìn)行可靠采樣,當采樣計數器計數結束后所有數據位都已經(jīng)輸入完成。最后對停止位的高電平進(jìn)行檢測,若正確檢測到高電平,說(shuō)明本幀的各位正確接收完畢,否則出錯。最
后將正確的數據轉存到數據寄存器中,輸出數據。還要輸出一個(gè)數據接收標志信號標志數據接收完。
利用有限狀態(tài)機實(shí)現,完整代碼如下:
e.JPG
f.JPG


關(guān)鍵詞: FPGA UART

評論


相關(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>