SpaceWire Codec接收端FPGA时序设计
时间:03-22
来源:互联网
点击:
引言
SpacewiTe是欧空局2003年提出的一种高速的、点对点、全双工的串行总线网络,面向空间应用。它以IEEE 1355—1995和LVDS标准为基础,提供了一种通用接口标准以简化和规范不同设备之间的互连,对解决目前星上数据处理系统的总线带宽不足有重要作用。而且,随着FPGA容量增大和功耗降低,以及内部软核的广泛应用,使用FPGA开发数字电路,可以缩短设计时间、减少PCB面积、提高系统的可靠性,FPGA已成为解决系统级设计的重要选择方案之一。本文在Actel的集成开发环境Libem下编写了HDL代码,利用内部集成仿真工具Mod—elSim对设计进行了时序仿真。
1 SpaceWire Codec接收端概述
SpaceWire标准饵CSS—E一50—12A)包括链路,节点和交换机三方面的内容。SpaceWire采用线路交换形式,节点是指传输包的流出设备或者流向设备,链路是指数据包传输的路径。
SpaceWire是总线数据网络结构,包括6层协议:物理层,信号层,字符层,交换层,信息包层和网络层。SpaceWire Codec实现的是信号层,字符层和交换层的相关内容。
SpaceWire物理层电缆采用九针微型D连接器.由四对双绞线组成,传输四对差分信号。
SpaceWire信号层用LVDS差分信号传输,抑制了共模噪声,保证了低电磁干扰。采用DS(data-strobe)编码实现嵌入式时钟总线传输,Ds编码用data信号表示实际传输的数据,strobe信号随D信号变化而编码,原则是在任一时钟周期Ds信号只有一个发生变化,这样DS信号异或就可得到接收端的时钟。如图1:
SpaceWire字符层定义了两种类型的字符:四个控制字符和数据字符,采用奇校验方式。
串行比特流各个字符之间没有分隔符,每个字符以奇偶检验位开始,第二位是ctrl—flag位,即区分数据字符和控制字符的标志,后面是不同的数据字符和控制字符。串行的比特流以包的形式传输,包以控制字符EOP标志结尾。
SpaceWire交换层定义了链路的初始化和状态机的运转,实现链路的拥塞控制,检测链路的断开等。
SpaceWire Codec由发送端,接收端和控制器组成,控制器根据接收端收到的不同数据字符控制状态机的运行,协调发送端和接收端的工作。
其中接收端实现时钟恢复,检测DS信号,判断并处理Data数据,进行奇偶校验,把数据字符送到fifo中,实现链路的拥塞控制,检测链路的断开状况等。这些功能的实现使用到不同的时钟,设计时需要解决多时钟域信号传输的同步问题。
在本设计中。SpaceWire Codec接收端按照功能不同划分为以下几个模块:
图2接收端模块划分
上图中的asyrst_n由epu复位信号和控制器的复位信号做组合逻辑得到。设计时用cpu配置链路状态,控制FPGA运行。数据字符经过6fo送到epu存储区中。
2 时钟域划分
上图中,虚线表示了不同的时钟域。
用恢复的时钟clk0进行Ds信号的检测和处理.在clk0时钟域内实现的是同步检测和设计。由于DS信号不能通过自身恢复得到的时钟去检测DS链路的断开.因此需要采用FPGA的pU模块倍频得到的高频时钟gclk 来检测链路的断开状_re况。在本设计中,拥塞控制要和发送端配合工作,发送端使用的是本地时钟gclk,因此链路拥塞控制模块也要用本地时钟gclk来控制。用cpu时钟clk_c读走fifo中数据,送到cpu存储区中。
3 复位信号处理
接收端模块的复位信号由cpu给出,链路状态机运行到复位状态也要对接收端进行复位。由于复位信号扇出很大,且要在不同的时钟域起作用.因此对复位信号的处理相当重要。
在接收端中,DS信号到来之前,DS信号检测和Data数据一处理模块的寄存器必须有确定的状态,这两个模块复位时clk0还没有出现,因此采用了不需要时钟控制的异步复位。
对复位信号而言,复位信号的释放和时钟沿之间也存在时间约束关系,如同触发器的D输入端必须满足建立和保持时间一样,复位信号相对时钟也必须满足recovery time/removaltime。如图3所示,recovery time指复位信号无效电平相对时钟沿到来前的稳定时间,removal time指复位信号无效电平相对时钟沿到来后的稳定时间。
图3复位信号的recovery/removal time
4 DS信号的检测
如图4示,恢复的clkO时钟是D信号频率的1/2,用clk0检测DS信号,必须用elk0的上沿和下沿实现,如下图所示:
图4 DS信号的检测
clk0是DS组合逻辑得到的门控时钟,且clk0的扇出很大,上沿和下沿都要用到,布局布线时将它放在全局时钟bu雎r上,保证了clkO有最小的抖动和偏移。
5 data数据处理
SpaceWire总线定义的串行数据的最大特点是各个不同的数据之间没有分割字符。处理数据时不仅要对本次数据格式进行正确判断和校验,并且要根据判读和检验结果指出下一个data起始位,否则下一个数据的判断将会出现错误。
设计中采取了串行移位寄存器的方法,设置了5个两位的寄存器。在同—个cIkO周期内能看到串行数据线上的10位串行数据,根据不同数据位进行判读和奇偶校验。正确判读后,根据不同的data数据长度.分别用不同的ready信号指示下—个data的起始位,进而进行下一个数据格式的处理。
这些信号都是clkO时钟域的同步信号,且移位寄存器间没有长路径延时,这样可以保证数据处理模块的稳定运行。
SpacewiTe是欧空局2003年提出的一种高速的、点对点、全双工的串行总线网络,面向空间应用。它以IEEE 1355—1995和LVDS标准为基础,提供了一种通用接口标准以简化和规范不同设备之间的互连,对解决目前星上数据处理系统的总线带宽不足有重要作用。而且,随着FPGA容量增大和功耗降低,以及内部软核的广泛应用,使用FPGA开发数字电路,可以缩短设计时间、减少PCB面积、提高系统的可靠性,FPGA已成为解决系统级设计的重要选择方案之一。本文在Actel的集成开发环境Libem下编写了HDL代码,利用内部集成仿真工具Mod—elSim对设计进行了时序仿真。
1 SpaceWire Codec接收端概述
SpaceWire标准饵CSS—E一50—12A)包括链路,节点和交换机三方面的内容。SpaceWire采用线路交换形式,节点是指传输包的流出设备或者流向设备,链路是指数据包传输的路径。
SpaceWire是总线数据网络结构,包括6层协议:物理层,信号层,字符层,交换层,信息包层和网络层。SpaceWire Codec实现的是信号层,字符层和交换层的相关内容。
SpaceWire物理层电缆采用九针微型D连接器.由四对双绞线组成,传输四对差分信号。
SpaceWire信号层用LVDS差分信号传输,抑制了共模噪声,保证了低电磁干扰。采用DS(data-strobe)编码实现嵌入式时钟总线传输,Ds编码用data信号表示实际传输的数据,strobe信号随D信号变化而编码,原则是在任一时钟周期Ds信号只有一个发生变化,这样DS信号异或就可得到接收端的时钟。如图1:
SpaceWire字符层定义了两种类型的字符:四个控制字符和数据字符,采用奇校验方式。
串行比特流各个字符之间没有分隔符,每个字符以奇偶检验位开始,第二位是ctrl—flag位,即区分数据字符和控制字符的标志,后面是不同的数据字符和控制字符。串行的比特流以包的形式传输,包以控制字符EOP标志结尾。
SpaceWire交换层定义了链路的初始化和状态机的运转,实现链路的拥塞控制,检测链路的断开等。
SpaceWire Codec由发送端,接收端和控制器组成,控制器根据接收端收到的不同数据字符控制状态机的运行,协调发送端和接收端的工作。
其中接收端实现时钟恢复,检测DS信号,判断并处理Data数据,进行奇偶校验,把数据字符送到fifo中,实现链路的拥塞控制,检测链路的断开状况等。这些功能的实现使用到不同的时钟,设计时需要解决多时钟域信号传输的同步问题。
在本设计中。SpaceWire Codec接收端按照功能不同划分为以下几个模块:
图2接收端模块划分
上图中的asyrst_n由epu复位信号和控制器的复位信号做组合逻辑得到。设计时用cpu配置链路状态,控制FPGA运行。数据字符经过6fo送到epu存储区中。
2 时钟域划分
上图中,虚线表示了不同的时钟域。
用恢复的时钟clk0进行Ds信号的检测和处理.在clk0时钟域内实现的是同步检测和设计。由于DS信号不能通过自身恢复得到的时钟去检测DS链路的断开.因此需要采用FPGA的pU模块倍频得到的高频时钟gclk 来检测链路的断开状_re况。在本设计中,拥塞控制要和发送端配合工作,发送端使用的是本地时钟gclk,因此链路拥塞控制模块也要用本地时钟gclk来控制。用cpu时钟clk_c读走fifo中数据,送到cpu存储区中。
3 复位信号处理
接收端模块的复位信号由cpu给出,链路状态机运行到复位状态也要对接收端进行复位。由于复位信号扇出很大,且要在不同的时钟域起作用.因此对复位信号的处理相当重要。
在接收端中,DS信号到来之前,DS信号检测和Data数据一处理模块的寄存器必须有确定的状态,这两个模块复位时clk0还没有出现,因此采用了不需要时钟控制的异步复位。
对复位信号而言,复位信号的释放和时钟沿之间也存在时间约束关系,如同触发器的D输入端必须满足建立和保持时间一样,复位信号相对时钟也必须满足recovery time/removaltime。如图3所示,recovery time指复位信号无效电平相对时钟沿到来前的稳定时间,removal time指复位信号无效电平相对时钟沿到来后的稳定时间。
图3复位信号的recovery/removal time
4 DS信号的检测
如图4示,恢复的clkO时钟是D信号频率的1/2,用clk0检测DS信号,必须用elk0的上沿和下沿实现,如下图所示:
图4 DS信号的检测
clk0是DS组合逻辑得到的门控时钟,且clk0的扇出很大,上沿和下沿都要用到,布局布线时将它放在全局时钟bu雎r上,保证了clkO有最小的抖动和偏移。
5 data数据处理
SpaceWire总线定义的串行数据的最大特点是各个不同的数据之间没有分割字符。处理数据时不仅要对本次数据格式进行正确判断和校验,并且要根据判读和检验结果指出下一个data起始位,否则下一个数据的判断将会出现错误。
设计中采取了串行移位寄存器的方法,设置了5个两位的寄存器。在同—个cIkO周期内能看到串行数据线上的10位串行数据,根据不同数据位进行判读和奇偶校验。正确判读后,根据不同的data数据长度.分别用不同的ready信号指示下—个data的起始位,进而进行下一个数据格式的处理。
这些信号都是clkO时钟域的同步信号,且移位寄存器间没有长路径延时,这样可以保证数据处理模块的稳定运行。
总线 FPGA 电路 PCB 仿真 连接器 嵌入式 相关文章:
- 基于FPGA的片上系统的无线保密通信终端(02-16)
- 基于FPGA的DVI/HDMI接口实现(05-13)
- 基于PLB总线的H.264整数变换量化软核的设计(03-20)
- FPGA 重复配置和测试的实现(08-14)
- 经I/O优化的FPGA(04-23)
- 基于Actel FPGA的PWM IP的应用(09-17)