ST-BUS總線接口模塊的Verilog HDL設計
(1)同步檢測及數據發(fā)送
if(!f0) begin file://同步信號低電平有效
f0_flag=1;//同步狀態(tài)標志
bitcounter=bitsofbyte-1;//位計數器復位
bytecounter=0; file://時隙計數器復位
if(byte_pos1==0) file://通道1為時隙0,則開始發(fā)送數據
begin dx=data1[7]; file://先送高位到ST-BUS總線
dout1=data11; file://移位準備下一位待發(fā)數據
dout2=data2;end file://準備下一通道待發(fā)數據
else if(byte_pos2==0)//通道2為時隙0,則開始發(fā)送數據(同通道1)
……
else dx=1‘bZ; end file://如果沒有選擇0時隙,則輸出高阻,釋放總線
(2)定位計數及數據發(fā)送
if(f0_flag) file://判斷同步狀態(tài)
begin case(bitcounter)
0:begin bitcounter=bitsofbyte-1;//位計數器復位
if(bytecounter==(bytes_per_frame-1)) bytecounter=0;//時隙計數滿則復位
else bytecounter=bytecounter +1;//時隙計數器遞增
if(bytecounter==byte_pos1-1)
file://通道1發(fā)送數據
begin dx=dout1[7];
file://發(fā)送數據的最高位
dout1=dout11; end
file://移位準備下一位待發(fā)數據
else if(bytecounter==byte_pos2-1) file://通道2發(fā)送數據(同通道1)
……
else dx=1‘bZ;end
file://非占用通道則釋放總線
default:begin
bitcounter=bitcounter-1;
file://位計數遞減
……
file://同前面通道1、通道2發(fā)送數據
end endcase end
根據ST-BUS總線收發(fā)規(guī)則及發(fā)送模塊基本工作原理,發(fā)送模塊各功能塊均采用C2上升沿,或者采用C2下降沿轉換狀態(tài)而采用C2上升沿發(fā)送數據。對前者,以上發(fā)送模塊可用1個或2個always語句完成;對后者,以上發(fā)送模塊則至少需用2個always語句實現,并將數據發(fā)送從以上兩部分中分離出來。采用類似接收模塊的方法,對發(fā)送模塊單獨綜合后作時序仿真,結果如圖3(b)所示。值得注意的是,為了說明模塊設計對于通道設置順序的無關性,圖中第一通道為31時隙,第二通道為0時隙。
ST-BUS控制模塊
ST-BUS控制模塊主要完成ST-BUS總線的收發(fā)控制與協調,同時也負責與外部接口的數據交換功能,這部分代碼因涉密不再列出,這里僅簡單介紹一下其功能。
控制模塊的功能劃分大致分為以下5部分:外部接口時鐘產生及管理,控制收發(fā)模塊與控制模塊的數據交換,控制接口模塊與其它接口的數據交換,對速率不匹配的數據作緩存(FIFO),提供對外通信接口供用戶設置參數。根據實際應用情況,以上所列的功能可以適當取舍或調整。如果速率匹配,則可以舍棄第4部分;如果參數固化,則可舍棄第5部分。
結語
基于MAX7000S系列CPLD器件分析收發(fā)模塊的最高工作性能可知,接收模塊的位時鐘C2最高工作頻率可達21.74MHz,而發(fā)送模塊的位時鐘C2最高工作頻率則達到32.26MHz,完全符合設計要求。本文所設計的ST-BUS接口模塊具有很強的通用性、可擴展性和可移植性,利用MAX7000S系列CPLD器件成功實現了ST-BUS與UART、RS-232、RS-485等接口單元的順利對接,并已成功應用于某專用集群通信設備的E1接口板,完成了多路不同接口的數據復接通信,運行狀況良好。本文引用地址:http://www.ex-cimer.com/article/150876.htm
評論