<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 > 設計應用 > 基于CPLD的RS-232串口通信實(shí)現

基于CPLD的RS-232串口通信實(shí)現

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

通過(guò)狀態(tài)圖可以方便、準確地得到程序設計框圖如圖4所示。

本文引用地址:http://dyxdggzs.com/article/190717.htm

f.JPG



3 各模塊設計
3.1 波特率發(fā)生器
通信必須要設定波特率,本設計采用的波特率為9 600 bit/s。產(chǎn)生波特率的時(shí)鐘頻率是越高越好,這樣才可產(chǎn)生較高且精確的波特率。設計選用50M主頻率要產(chǎn)生9600bit/s波特率,每傳送一位數據需要5 208.33個(gè)時(shí)鐘周期。取一個(gè)最接近的數是5 208,則波特率為9 600.61,其誤差約為0.006%,誤碼率很低可以確保通信正常。
波特率發(fā)生器要解決的另一個(gè)關(guān)鍵性問(wèn)題是確保準確地捕獲起始位“0”。即時(shí)準確地捕獲起始位不僅決定通信是否順暢開(kāi)始,而且還影響后續的數據采樣過(guò)程可靠地進(jìn)行。方案采取了16分頻的波特率發(fā)生器,即通過(guò)對50 M總時(shí)鐘源分頻,得到一個(gè)9 600x16 Hz的時(shí)鐘進(jìn)行數據傳輸,這樣每16個(gè)時(shí)鐘信號采樣1 bit數據。在Rxd數據接收端口接收到從空閑高電平“1”跳變?yōu)槠鹗嘉坏碗娖?ldquo;0”信號后,連續8個(gè)分頻周期確認是否是起始位。若是連續的低電平則捕獲起始位,自此之后每16個(gè)時(shí)鐘周期讀取1 bit數據。這種方法不僅確保了起始位的準確捕獲,而且使數據采樣點(diǎn)處于了數據的正中央保證了數據的準確。
3.2 接收器
在波特率發(fā)生器捕獲起始位并啟動(dòng)后,接收器將開(kāi)始工作。其主要工作是接收每一位數據,將串行數據移位存入緩沖寄存器,并在接收完一字節數據后將數據存入鎖存器完成串并轉換,同時(shí)發(fā)出char_ok信號通知邏輯控制模塊一個(gè)字節的數據已經(jīng)接收完畢。
接收器的部分程序如下所示:
g.JPG
3.3 邏輯處理模塊
邏輯處理模塊是模擬UART的決策模塊。它主要完成PC機與的握手、數據處理和數據校驗、狀態(tài)分析與給收發(fā)模塊提供決策。
PC機要向發(fā)數據時(shí),先向發(fā)送FF,FF表示PC機要與建立聯(lián)系。CPLD收到這個(gè)信息后,由邏輯模塊的talk信號通知發(fā)射模塊握手情況,發(fā)送器通過(guò)給PC機反饋信息,DD表示CPLD收到了PC機的要求并同意建立聯(lián)系,CC表示握手不成功PC機可以再次發(fā)出請求。握手成功后,PC機要向CPLD發(fā)出命令字符,E1表示寫(xiě),E2表示讀。
隨后進(jìn)入數據接收或發(fā)送狀態(tài),每個(gè)數據包接收完畢后邏輯處理模塊進(jìn)入下一狀態(tài)——數據校驗狀態(tài)。根據上文提到的本設計的數據校驗采用和校驗,數據校驗完后邏輯處理模塊會(huì )根據校驗結果給出信號check,通知發(fā)送模塊Txd發(fā)送反饋信息給PC機。
邏輯控制模塊的部分程序如下所示:
h.JPG



關(guān)鍵詞: CPLD 232 RS 串口

評論


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