C6678 SRIO 通道模式与波特率配置

1、 通道模式配置(1X 2X or 4X)

相关寄存器: PLM Port(n) Path Control Register (PLM_SP(n)_PATH_CTL)
寄存器地址: 0x0291B0B0

该寄存器的PATH_MODE域负责配置1X,2X,4X模式。下图为不同mode的配置图:
在这里插入图片描述
使用CSL库 API完成通道数配置工作:

//配置为Mode4,即4x 
CSL_SRIO_SetPLMPortPathControlMode (hSrio, i, 4);  // i 为端口号

各种模式对应使用端口如下图所示:如4x模式只能使用端口0进行通信。

//配置为Mode4,即4x ,端口0
CSL_SRIO_SetPLMPortPathControlMode (hSrio, 0, 4);  

在这里插入图片描述
在这里插入图片描述 蓝色数字表示每种模式对应端口号。

2、链接速率配置(link rate)

波特率配置寄存器: SerDes Macro Configuration Register (SRIO_SERDES_CFGPLL)
接收通道配置寄存器:SerDes Receive Channel Configuration Register(SRIO_SERDES_CFGRXn)
发送通道配置寄存器:SerDes Transmit Channel Configuration Register(SRIO_SERDES_CFGTXn)

在这里插入图片描述

在配置波特率相关寄存器之前必须先对寄存器进行解锁方可配置。解锁如下:

*((volatile unsigned int *)(0x02620038)) = 0x83E70B13;
*((volatile unsigned int *)(0x0262003C)) = 0x95A4F1E0;

波特率设置公式:
srioBaund = refClk ∗ MPY ∗ Rate
srioBaund: SRIO波特率
refClk: 参考时钟
MPY: 锁相环倍频乘数(SRIO_SERDES_CFGPLL寄存器MPY字段)
Rate: SRIO_SERDES_CFGRXn与SRIO_SERDES_CFGTXn 寄存器RATE字段

参考时钟为SRIOGMIICLKP和SRIOGMIICLKN管脚输入时钟(SRIOGMIICLK),锁相环倍频参考SRIO_SERDES_CFGPLL寄存器MPY字段,如下下图所示; MPY字段参考SRIO_SERDES_CFGRXn与SRIO_SERDES_CFGTXn 寄存器如下图所示。
在这里插入图片描述
在这里插入图片描述
RATE字段说明:
00: 完整波特率。 每1个PLL输出时钟周期采集4个数据样本。
01: 一半波特率。 每1个PLL输出时钟周期采集2个数据样本。
10:四分之一波特率。 每1个PLL输出时钟周期采集1个数据样本。
11:八分之一波特率。 每2个PLL输出时钟周期采集1个数据样本。
在这里插入图片描述

3、参考时钟设置

相关寄存器: RIO port IP prescalar (PRESCALAR_SRV_CLK)
寄存器地址: 0x0291BD30

在这里插入图片描述

参数PRESCALAR_SRV_CLK的计算方法如下,其中[]的意思是取最近的整数
prescalarClock = [refclk ÷ 10]

如参考时钟为156.25MHz配置如下:

// prescalrClock = (156.25/10) = 15.625 ≈ 16 = 0x10
CSL_SRIO_SetLLMPortIPPrescalar (hSrio, 0x10);

4、实 例

参考时钟为156.25MHz, 4X模式,波特率分别配置成1.25Gbps,2.5Gbps,3.125Gbps, 5.0Gbps。

参考时钟配置

// prescalrClock = (156.25/10) = 15.625 ≈ 16 = 0x10
CSL_SRIO_SetLLMPortIPPrescalar (hSrio, 0x10);

参考Table3-7图所示,若MPY选择10x即0b001010000,RATE只能为Haif模式,波特率计算如下:

	//RATE=01,每一个PLL输出时钟周期取2个数据样本,即:156.25 * 10 * 2 = 3.125Gbps
	CSL_BootCfgSetSRIOSERDESConfigPLL (0x51);

    CSL_BootCfgSetSRIOSERDESRxConfig (0, 0x00440495);
    CSL_BootCfgSetSRIOSERDESRxConfig (1, 0x00440495);
    CSL_BootCfgSetSRIOSERDESRxConfig (2, 0x00440495);
    CSL_BootCfgSetSRIOSERDESRxConfig (3, 0x00440495);

    CSL_BootCfgSetSRIOSERDESTxConfig (0, 0x00180795);
    CSL_BootCfgSetSRIOSERDESTxConfig (1, 0x00180795);
    CSL_BootCfgSetSRIOSERDESTxConfig (2, 0x00180795);
    CSL_BootCfgSetSRIOSERDESTxConfig (3, 0x00180795);

参考Table3-7图所示,若MPY选择16x即0b01000000,RATE可选择Haif,Qtr,Eighth模式,波特率计算如下:

    //RATE=01,每一个PLL输出时钟周期取2个数据样本,即:156.25 * 16 * 2 = 5.0Gbps
	CSL_BootCfgSetSRIOSERDESConfigPLL (0x81);

    CSL_BootCfgSetSRIOSERDESRxConfig (0, 0x00440495);
    CSL_BootCfgSetSRIOSERDESRxConfig (1, 0x00440495);
    CSL_BootCfgSetSRIOSERDESRxConfig (2, 0x00440495);
	CSL_BootCfgSetSRIOSERDESRxConfig (3, 0x00440495);

	CSL_BootCfgSetSRIOSERDESTxConfig (0, 0x00180795);
    CSL_BootCfgSetSRIOSERDESTxConfig (1, 0x00180795);
    CSL_BootCfgSetSRIOSERDESTxConfig (2, 0x00180795);
	CSL_BootCfgSetSRIOSERDESTxConfig (3, 0x00180795);


	//RATE=10,每一个PLL输出时钟周期取1个数据样本,即:156.25 * 16 * 1 = 2.5Gbps
	CSL_BootCfgSetSRIOSERDESConfigPLL (0x81);

    CSL_BootCfgSetSRIOSERDESRxConfig (0, 0x004404A5);
    CSL_BootCfgSetSRIOSERDESRxConfig (1, 0x004404A5);
    CSL_BootCfgSetSRIOSERDESRxConfig (2, 0x004404A5);
	CSL_BootCfgSetSRIOSERDESRxConfig (3, 0x004404A5);

	CSL_BootCfgSetSRIOSERDESTxConfig (0, 0x001807A5);
    CSL_BootCfgSetSRIOSERDESTxConfig (1, 0x001807A5);
    CSL_BootCfgSetSRIOSERDESTxConfig (2, 0x001807A5);
	CSL_BootCfgSetSRIOSERDESTxConfig (3, 0x001807A5);

	//RATE=11,每二个PLL输出时钟周期取1个数据样本,即:156.25 * 16 * 1/2 = 1.25Gbps
	CSL_BootCfgSetSRIOSERDESConfigPLL (0x81);

    CSL_BootCfgSetSRIOSERDESRxConfig (0, 0x004404B5);
    CSL_BootCfgSetSRIOSERDESRxConfig (1, 0x004404B5);
    CSL_BootCfgSetSRIOSERDESRxConfig (2, 0x004404B5);
	CSL_BootCfgSetSRIOSERDESRxConfig (3, 0x004404B5);

	CSL_BootCfgSetSRIOSERDESTxConfig (0, 0x001807B5);
    CSL_BootCfgSetSRIOSERDESTxConfig (1, 0x001807B5);
    CSL_BootCfgSetSRIOSERDESTxConfig (2, 0x001807B5);
	CSL_BootCfgSetSRIOSERDESTxConfig (3, 0x001807B5);
  • 0
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值