基于單片機和CPLD的PLC背板總線協(xié)議接口芯片設(shè)計(二)
3.2 基于Verilog HDL 語言的硬件程序設(shè)計
本設(shè)計采用Verilog HDL 語言進行協(xié)議芯片的程序設(shè)計,Verilog HDL 語言是一種硬件描述語言,設(shè)計數(shù)字芯片時可以按照層次描述,并可以進行時序建模。本設(shè)計采用混合設(shè)計模式,主要設(shè)計的模塊有狀態(tài)機、協(xié)議幀檢測、FIFO 控制器設(shè)計等。
1)狀態(tài)機設(shè)計。
協(xié)議芯片的頂層模塊是狀態(tài)控制器部分,協(xié)議芯片共有四個狀態(tài), 分別處理基于Verilog HDL 程序語言的狀態(tài)機描述偽代碼如下:
2)協(xié)議幀檢測。
本協(xié)議芯片的幀校驗和采用簡單的加和形式進行,在接收一方,如果數(shù)據(jù)幀中有用數(shù)據(jù)的加和同后續(xù)的校驗和字節(jié)相同,則協(xié)議是正確的,否則丟棄該幀。協(xié)議幀校驗和計算的代碼如下:
3)FIFO 設(shè)計。
FIFO 利用了MachXO 系列CPLD 的嵌入式SRAM 塊的資源,Lattice 公司的ispLEVER 7.0 軟件提供了可配置的IP 軟核,該軟核可以采用基于嵌入式SRAM 塊實現(xiàn), 也可以使用查找表實現(xiàn),F(xiàn)IFO 的IP 核框圖如圖4 所示,F(xiàn)IFO 的可配置參數(shù)包括FIFO字節(jié)深度、EmptyFull、Almostempty 和AlmostFull觸發(fā)字節(jié)深度、數(shù)據(jù)寬度、大小端模式等。
圖4 可配置FIFO 控制器IP 軟核框圖
3.3 協(xié)議芯片綜合
Verilog HDL 程序通過Lattice 公司的CPLD 開發(fā)軟件ispLEVER 7.0 進行編譯、綜合,多次嘗試后最終選擇了Lattice 公司MachXO 系列CPLD 中的MachXO2280 芯片, 綜合后的主機協(xié)議芯片占用CPLD 資源的60%左右, 從機協(xié)議芯片占用CPLD資源的45%左右,F(xiàn)IFO 控制器充分利用了MachXO2280芯片內(nèi)部的嵌入式RAM 塊, 同時利用了鎖相環(huán)實現(xiàn)高頻率的時鐘工作。最后通過LSC ispVM(R)System 燒寫軟件經(jīng)JTAG 口下載到CPLD 芯片中進行協(xié)議芯片功能驗證測試。
4 結(jié)語
本文設(shè)計的背板總線協(xié)議芯片在背板串行總線時鐘頻率為25MHz、信號電平為LVTTL,底板引線長度為40cm,1 臺主機連接3 臺擴展模塊的情況下工作穩(wěn)定并通過了群脈沖試驗,驗證了這一組協(xié)議芯片的設(shè)計是成功的。由于該組協(xié)議芯片是針對PLC 的周期性和非周期性數(shù)據(jù)傳送專門設(shè)計的,硬件實現(xiàn)的協(xié)議幀控制器支持高速率通信、支持數(shù)據(jù)幀檢驗功能,避免了數(shù)據(jù)傳送的錯誤,大大降低了外圍單片機的軟件開銷,增強了可靠性,是一組非常適合用于PLC 背板總線或者需要多模塊協(xié)同工作的背板總線系統(tǒng)協(xié)議芯片。
評論