全文预览

基于FPGA的HDLC协议设计

上传者:随心@流浪 |  格式:docx  |  页数:19 |  大小:344KB

文档介绍
ll,rdempty)通过指定的地址接口送给CPU。考虑实际要求及FPGA的自身特性,本设计中采用一个64×8的FIF0完成速率转换和数据缓存功能。FPGA内的功能模块如图所示。第二节HDLC协议器通过HDLC协议分析可知,要将数据以HDLC协议透明传送出去,还需要在FPGA中完成将FIFO送出的数据进行数据分段(SENDCONTROL)、并/串转换(PSC0NTROL)、插“0”操作(AZERO)和增加标志字(AHEAD)等模块处理。经过这些处理,送出的就是满足HDLC协议的数据(sdataout)和全局时钟(sclkout)。FPGA串行通信控制器接收HDLC数据的原理为:首先,将接收到的数据帧的消息字段和附加的状态字段移入,然后根据选定的寻址模式,对接收帧中的目的地址进行识别,确认数据帧的发送地址是否为本设备,是本设备数据帧则进行接收数据并存储在FIFO中,当接收数据帧结束时,发出中断信号给ARM系统,请求接收HDLC数据。目的地址不是本设备的数据帧将被抛弃,流程图如图3所示。一、时钟与分频器要求HDLC传输数率为t_clk,同时提供数据时钟。本设计中采用分频器对已有的时钟进行分频,产生所需的rd_clk作为FIF0读时钟及计数时钟。从FIFO读出的数据数率即为rd_clk的时钟周期。其中分频器以VHDL语言写成,是一个通用型分频器,程序代码如下。其中若要求对时钟进行X分频,则m=X/2,n=X一1;if(clkin7eventandclkin=‘1‘)thenif(count—O)the“clko<一’O7:count<:=count+1:elseif(count—m)thenclko<一’1’:count·<一count+1;elseif(count—n)thencount<二一O;elsecount<:一count+1;endif:elsenull:endif:

收藏

分享

举报
下载此文档