首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

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

(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://先送高位到ST-BUS总线
dout1<=data1<<1; 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<=dout1<<1; 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

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

ST-BUS控制模块
    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接口板,完成了多路不同接口的数据复接通信,运行状况良好。
继承事业,薪火相传
返回列表