<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è) > 嵌入式系統 > 設計應用 > 嵌入式UART接口模塊的設計

嵌入式UART接口模塊的設計

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

移位寄存器仿真波形圖

圖4 移位寄存器仿真波形圖

  如圖4所示,移位寄存器在復位后的每個(gè)時(shí)鐘的上升沿工作。由于數據發(fā)送時(shí)是先發(fā)送有效數據的最低位,因此移位寄存器是將接收的數據由高位向低位移動(dòng),dout輸出移位寄存器的最低位。圖中的regs數據用16進(jìn)制表示。

  2.3 波特率發(fā)生器模塊

  波特率發(fā)生器的功能是產(chǎn)生和RS232通信所采用的波特率同步的時(shí)鐘,這樣才能方便地按照RS232串行通信的時(shí)序要求進(jìn)行數據接收或者發(fā)送。比如,波特率為9600b/s,即每秒傳輸9600b數據,則同步的波特率時(shí)鐘頻率為9600Hz,周期為1/9600=0.10417。

  設計波特率時(shí)鐘的基本思路就是設計一個(gè)計數器,該計數器工作在速度很高的系統時(shí)鐘下,當計數器計數到某數值時(shí)將輸出置高,再計數到一定的數值后再將輸出置低,如此反復便能夠得到所需的波特率時(shí)鐘。該系統所用的FPGA系統時(shí)鐘為50MHz,RS232通信的波特率為9600b/s,則波特率時(shí)鐘的每個(gè)周期相當于

  5208個(gè)系統時(shí)鐘周期。假如要得到占空比為50%的波特率時(shí)鐘,只要使得計數器在計數到1604時(shí)將輸出置高,之后在計數到5208時(shí)將輸出置低并且重新計數,就能實(shí)現和9600波特率同步的時(shí)鐘。

  為了便于仿真,使計數器計到2時(shí)將輸出置高,之后計到4時(shí)將輸出置地并且重新計數。波特率發(fā)生器的仿真波形圖如圖5所示。

波特率發(fā)生器仿真波形圖

圖5 波特率發(fā)生器仿真波形圖

  觀(guān)察波形可以看到波特率發(fā)生器每經(jīng)過(guò)4個(gè)時(shí)鐘周期輸出1個(gè)完整的波特率時(shí)鐘周期,占空比為1/2,并且在每次輸出波特率時(shí)鐘周期之后輸出1個(gè)系統時(shí)鐘脈寬的提示信號indicator,UART通過(guò)此信號來(lái)了解波特率發(fā)生器已輸出的波特率時(shí)鐘周期個(gè)數。由波形圖可見(jiàn)波特率發(fā)生器的工作完全滿(mǎn)足設計的要求。

  2.4 計數器模塊

  計數器模塊的功能是可控的,在輸入時(shí)鐘的驅動(dòng)下進(jìn)行計數,當達到計數上閾時(shí)給UART內核一個(gè)提示信號。在不同的工作狀態(tài)下,計數器模塊的輸入時(shí)鐘是不同的。UART在數據發(fā)送之前需要進(jìn)行數據加載(即將串行序列保存在移位寄存器內),在此工程中計數器模塊的輸入時(shí)鐘為系統時(shí)鐘,因為此時(shí)移位寄存器也工作在系統時(shí)鐘下。除了數據加載,另外2個(gè)需要計數器模塊的過(guò)程是數據接收和數據發(fā)送。

  由于這兩個(gè)過(guò)程中移位寄存器工作在波特率時(shí)鐘下,所以計數器模塊的時(shí)鐘就是與波特率時(shí)鐘同步的波特率發(fā)生器提示信號indicator,這樣每輸出1個(gè)完整的波特率時(shí)鐘周期計數器就能增加1。

  計數器的仿真波形圖如圖6所示。

計數器仿真波形圖

圖6 計數器仿真波形圖

  計數器在復位后并且ce有效時(shí)開(kāi)始計數,并且在第10個(gè)時(shí)鐘周期輸出提示信號overflow。

  2.5 發(fā)送數據緩沖器模塊

  發(fā)送數據緩沖器模塊的功能是將要發(fā)送的并行數據轉換成串行數據,并且在輸出的串行數據流中加人起始位和停止位。緩沖器首先將要發(fā)送的8位數據寄存,并在最低位后添加起始位‘0’,在最高位前添加停止位‘1’,組成10位要發(fā)送的數據,然后根據UART內核模塊的計數值將相應的數據送入移位寄存器輸入端。

  UART內核模塊輸出的計數值是從0依次計到9,即先將要發(fā)送數據的最低位送入移位寄存器。發(fā)送數據緩沖器的仿真波形圖如圖7所示。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


關(guān)鍵詞: 嵌入式 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>