新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > ST-BUS总线接口模块的Verilog HDL设计

ST-BUS总线接口模块的Verilog HDL设计

作者:时间:2011-04-09来源:网络收藏


(1)同步检测及数据发送
if(!f0) begin file://同步信号低电平有效
f0_flag=1;//同步状态标志
bitcounter=bitsofbyte-1;//位计数器复位
bytecounter=0; file://时隙计数器复位
if(byte_pos1==0) file://通道1为时隙0,则开始发送数据
begin dx=data1[7]; file://先送高位到
dout1=data11; file://移位准备下一位待发数据
dout2=data2;end file://准备下一通道待发数据
else if(byte_pos2==0)//通道2为时隙0,则开始发送数据(同通道1)
……
else dx=1‘bZ; end file://如果没有选择0时隙,则输出高阻,释放

(2)定位计数及数据发送
if(f0_flag) file://判断同步状态
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发送数据
begin dx=dout1[7];
file://发送数据的最高位
dout1=dout11; end
file://移位准备下一位待发数据
else if(bytecounter==byte_pos2-1) file://通道2发送数据(同通道1)
……
else dx=1‘bZ;end
file://非占用通道则释放
default:begin
bitcounter=bitcounter-1;
file://位计数递减
……
file://同前面通道1、通道2发送数据
end endcase end

根据总线收发规则及发送基本工作原理,发送各功能块均采用C2上升沿,或者采用C2下降沿转换状态而采用C2上升沿发送数据。对前者,以上发送可用1个或2个always语句完成;对后者,以上发送模块则至少需用2个always语句实现,并将数据发送从以上两部分中分离出来。采用类似接收模块的方法,对发送模块单独综合后作时序仿真,结果如图3(b)所示。值得注意的是,为了说明模块对于通道设置顺序的无关性,图中第一通道为31时隙,第二通道为0时隙。

控制模块
ST-BUS控制模块主要完成ST-BUS总线的收发控制与协调,同时也负责与外部的数据交换功能,这部分代码因涉密不再列出,这里仅简单介绍一下其功能。

控制模块的功能划分大致分为以下5部分:外部时钟产生及管理,控制收发模块与控制模块的数据交换,控制模块与其它接口的数据交换,对速率不匹配的数据作缓存(FIFO),提供对外通信接口供用户设置参数。根据实际应用情况,以上所列的功能可以适当取舍或调整。如果速率匹配,则可以舍弃第4部分;如果参数固化,则可舍弃第5部分。
  
结语
基于MAX7000S系列CPLD器件分析收发模块的最高工作性能可知,接收模块的位时钟C2最高工作频率可达21.74MHz,而发送模块的位时钟C2最高工作频率则达到32.26MHz,完全符合要求。本文所的ST-BUS接口模块具有很强的通用性、可扩展性和可移植性,利用MAX7000S系列CPLD器件成功实现了ST-BUS与UART、RS-232、RS-485等接口单元的顺利对接,并已成功应用于某专用集群通信设备的E1接口板,完成了多路不同接口的数据复接通信,运行状况良好。

本文引用地址:http://www.eepw.com.cn/article/150876.htm

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭