一種醫療CT數據采集系統解決方案
對于FPGA底層,采用運輸層接入用戶數據,按照標準以太網形式將數據封裝成完整的UDP數據格式,向下再封裝成IP數據報形式:增加IP數據報的版本號,生存時間,原地址及目的地址等信息,向下再封裝成MAC數據幀,增加數據的MAC地址及CRC校驗等信息。在實現完整的四層以太網的過程中均采用HDL語言進行描述,不調用IPCORE。
本文引用地址:http://www.104case.com/article/256099.htm為了充分利用FPGA并行處理的優勢,增加數據處理的速率,數據通常采用并行的方式進行打包和編碼。但是光纖通信傳輸的是串行數據,一對,兩條,一收一發的方式。因此,借助于FPGA的ROCKET IO模塊,將并行的數據輸入到FPGA的GTP IP CORE將數據串行化及8B10B編碼等,GTP就相當于傳統意義的PHY,在內部完成了PCS(物理編碼子層)和PMA(物理媒介適配層),從PHY出來的信號直連MDI接入現成的光模塊,光模塊經過光電轉換將電信號轉換成光信號在鏈路中進行傳輸。
4 IEEE802.3z光纖協議的實現
自協商協議:
由于在以太網通信過程中,有10M的、100M、1000M甚至10G的,為了支持多種不同標準的混合通信,IEEE802.3Z提出了一套自協商協議(Auto-nego),通信的雙方通過互發各自的通信能力信息,進行協商,從而達到最佳的通信模式,且只有當自動協商完成以后雙方才能進行通信。自協商通常用于通信速率、流量控制,狀態等信息的交互,其基本單元為一個16bit的寄存器,通過配置這個寄存器達到協商的目的。如下圖所示:rsvd為保留位,默認為0,D5為全雙工標志位,D6為半雙工標志位,為1時有效D7和D8和流量控制相關,RF1、RF2表明通信雙方自協商的結果。D14為應答標志位,NP為下一頁標志位,通常用于協商更為具體的內容,在本數據采集系統中將其置為0(圖3)。
在本系統的設計過程中,由于數據量大,且連續,因此采用傳統的Annex31B標準進行流量控制及重傳基本不可能,數據的可靠性只能靠系統的設計及鏈路的鏈接進行加固,且用FPGA實現流量控制較復雜且需消耗大量的邏輯資源,因此我們不進行流量的控制,數據直接編碼進行實時傳送。又由于上行數據量大,下行數據量較少,因此,上行鏈路采用UDP協議進行以太網格式的傳送,下行鏈路直接用串口替代。這樣做還有一個好處就是將數據和指令進行了完全的分離。具體實現過程如下:
本設計用6個狀態實現自動協商的過程:IDLE,READY,CONF,ACK_CONF,SYNC,AUTO_OK;上電復位以后,FPGA進入IDLE狀態,連續發送IDLE指令,使對端能正確識別FPGA的通信速率,當接收到3個以上的對方IDLE反饋以后,狀態機跳轉到READY狀態,發送配置準備狀態,表明FPGA方已準備進行配置,在收到3個以上的PC反饋過來的配置準備狀態指令以后,提取對端的通信模式的信息,寫入FPGA的寄存器,然后將其D14置1,作為反饋(FPGA的實際通信能力也許并不和對方對等,這樣設計簡化了自動協商的過程,消耗的邏輯資源更低),表明FPGA和PC具有相同的通信能力,一直發送反饋,直到接收到PC反饋的具有3個連續相同的配置能力的配置指令的字符,則跳入到SYNC,發送到同步指令,如果收到對方的3個連續的SYNC指令表示自動協商成功,否則協商失敗,重新跳入到IDLE進行協商,當跳入到AUTO_OK狀態則可以進行用戶數據的發送,如圖4為自動協商的過程。
西門子plc相關文章:西門子plc視頻教程
評論