<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è) > 手機與無(wú)線(xiàn)通信 > 設計應用 > Modbus通信協(xié)議的FPGA實(shí)現

Modbus通信協(xié)議的FPGA實(shí)現

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


3.3 發(fā)送模塊
發(fā)送模塊包括發(fā)送控制模塊,發(fā)送機模塊,發(fā)送狀態(tài)寄存器模塊等。
發(fā)送機模塊是基于普通UART發(fā)送原理設計,其發(fā)送過(guò)程如下:
(1)等待TDRE=‘1’,即等待發(fā)送數據寄存器(TDR)為空,隨后TDR中載入一個(gè)字節數據,并把TDRE清零。
(2)根據波特率設置Sel_baud[1..0]對TDR里的數據進(jìn)行奇偶校驗計算。
(3)把TDR里的數據放入發(fā)送移位寄存器TSR的1~8位,TSR第O位放起始位(‘O’),TSR第9位放入奇偶校驗位或者停止位(‘1’)。
(4)通過(guò)對TSR右移,一位一位地發(fā)送出9位數據比特,最后發(fā)送停止位(‘1’)。
3.4 CRC模塊
CRC模塊包括接收CRC控制模塊,發(fā)送CRC控制模塊,CRC產(chǎn)生模塊三部分。


生成CRC的過(guò)程為:
(1)將一個(gè)16位寄存器裝入十六進(jìn)制FFFF(全1),將之稱(chēng)作CRC寄存器。
(2)將報文的第一個(gè)8位字節與16位CRC寄存器的低字節異或,結果置于CRC寄存器。
(3)將CRC寄存器右移1位(向LSB方向),MSB充零,提取并檢測LSB。
(4)如果LSB為0:重復步驟(3)(另一次移位);如果LSB為1:對CRC寄存器異或多項式值0xA00l(1010000000000001)。
(5)重復步驟(3)和(4),直到完成8次移位。當做完此操作后,將完成對8位字節的完整操作。
(6)對報文中的下一個(gè)字節重復步驟(2)~(5),繼續此操作直至所有報文被處理完畢。
(7)CRC寄存器中的最終內容為CRC值。


這種方式計算CRC值的時(shí)間比其他方式計算CRC(比如查表法等)的時(shí)間稍微要長(cháng),但是它節省了資源,比如查表法計算CRC需要一個(gè)數組來(lái)存放所有可能的CRC結果值。圖5為對數據串“010300000001”(十六進(jìn)制)CRC-16運算的仿真時(shí)序圖,時(shí)鐘周期為50 MHz,由圖可見(jiàn),整個(gè)計算時(shí)間在2.5 μs內,估算一個(gè)含有240個(gè)字符的消息,CRC校驗總時(shí)間約為2.5μs×(240/6)=100μs,這樣長(cháng)的校驗計算時(shí)間對于來(lái)說(shuō)是完全可以接受的。

4 基于該接口的MODBUS從站協(xié)處理器
協(xié)處理器框圖如圖6所示。


從站協(xié)處理器控制模塊程序控制過(guò)程如下:
(1)置CE_為‘1’,把MAX485芯片信號輸出置低,即控制RS 485接口芯片處于接收狀態(tài)。
(2)等待一段延遲時(shí)間(RS 485接口芯片穩定時(shí)間),使能接口模塊即置CE_Modbus為‘1’,并置接收Modbus幀模式。
(3)如果接收到一個(gè)完整的幀(消息),則轉到步驟(4),如果沒(méi)接收到一個(gè)完整的消息,一直處于等待狀態(tài)。
(4)先置CE_Modbus為‘O’,再解釋接收緩沖寄存器里消息,等待消息處理完畢,如果消息不是發(fā)往該從站或者為廣播消息,則轉到步驟(2);否則把信號輸出置高,轉到步驟(5)。
(5)等待一段延遲時(shí)間,使能Modbus協(xié)議接口模塊即置CE_Modbus為‘1’,并置發(fā)送Modbus協(xié)議幀模式。



評論


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