文章 ID: 000073672 内容类型: 故障排除 上次审核日期: 2021 年 08 月 29 日

用于 TX 和 RX 的 PLL 是否可以使用 Stratix IV GX ES 设备中的 SPI 4.2 内核进行共享?

环境

BUILT IN - ARTICLE INTRO SECOND COMPONENT
说明

是的,可以在 Stratix® IV GX 设备中使用Altera® SPI 4.2 MegaCore® 功能共享 PLL。与其他FPGA设备相比,与 SPI 4.2 内核之间传输 (TX) 和收发 (RX) 的 PLL 共享对于Stratix IV GX ES 来说更为复杂。

SPI 4.2 内核的 Stratix IV GX ES 的 ALTLVDS 宏功能不支持用于 Tx 和 Rx 的 PLL 的内部共享。 DPA 卸载比选择最佳相所需的时间要长得多。这样会导致不理想的阶段,并导致数据位错误,即使在 DPA 锁信号被表明之后。重置 DPA 电路也会触发此问题。

要启用 PLL 共享,请按照以下步骤设置操作:

1. 在 ALTLVDS 宏功能参数设置 选项卡中检查"使用外部 PLL"

2. 在 ALTLVDS 宏功能的 Frequency/PLL 设置选项卡中取消勾选"使用共享 PLL(s)用于接收器和发射器"

3. 在 ALTLVDS 宏功能的第三 DPA 设置选项卡中检查"启用 PLL 校准"

4. 执行 Megawistreamd 插件管理器并创建 ALTPLL 宏功能。根据系统配置应用相应的设备速度等级和时钟输入频率。选择 Left_Right PLL

4-1. 在 PLL 重新配置选项卡中,在动态相配置下,选择"创建用于动态阶段重新配置的可选输入"

4-2. 在 Output Clocks 选项卡 - clk c0 中,输入输出时钟频率(以 LVDS 数据速率运行的快速时钟)。此时钟将馈送rx_inclock和tx_inclock。设置相位移 = -180 度(对于 VCO 时钟)。将功耗周期设置为 50%。选择"对 DPA 时钟使用这些时钟设置"

4-3. 在 Output Clocks 选项卡 - clk c1 中,输入 ouput 时钟频率(快速时钟/解算因数)。将此时钟输出馈送至tx_enable和rx_enable。将相位移位设置为 [(解算因数 - 2)/解层化因数]* 360 度。将容积周期设置为 (100/ 解算系数)

4-4. 在 Output Clocks 选项卡 - clk c2,输入输出时钟频率(快速时钟/解算因数)。将此时钟输出馈送至rx_syncclock。将相移设置为(-180 偏差/解压因子)。将占比周期设置为 50%

Figure 1 

图 1 PLL 至 LVDS 时钟方案

5. 对 SPI4.2 Rx 内核模块进行更改

5-1. 在 _rx_core.v 中,用以下实例化替换 _rx_data_phy_altlvds:

_rx_data_phy_altlvds rx_data_phy_altlvds (

.pll_areset(pll_areset),
.pll_phasedone(阶段),
.rx_cda_reset({lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset}),
.rx_channel_data_align (bitslip),
.rx_enable(rx_enable)
.rx_fifo_reset({lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset}),
.rx_in(rx_in),
.rx_inclock(rx_inclock),
.rx_reset({lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset,lvds_reset}),//输入 [16:0],
.rx_syncclock(rx_syncclock),
.dpa_pll_cal_busy(dpa_pll_cal_busy)
.pll_phasecounterselect(相台人员电子)
.pll_phasestep(phasestep),
.pll_phaseupdown(逐步淘汰)
.pll_scanclk(扫描),
.rx_dpa_locked(stat_rd_dpa_lvds_locked)
.rx_out(rx_out_serdes));

5-2. 在 .v (SPI4.2 Rx 内核包装器) 中,包括以下实例化:

_pl4_rx_core _pl4_rx_core_inst (

...

.rx_inclock(rx_inclock),
.rx_enable(rx_enable)
.rx_syncclock(rx_syncclock)
.dpa_pll_cal_busy(dpa_pll_cal_busy)
.phasecounterselect(相机者电)
.phaseStep(phasestep),
.阶段性(阶段性淘汰),
.scanclk(扫描),
.phasedone(相端),

...);

6. 对 SPI4.2 Tx 内核模块进行更改:

6-1. 在 _tx_core.v 中,用以下实例化替换 _tx_data_phy_altlvds:

_tx_data_phy_altlvds tx_data_phy_altlvds (

.tx_enable(tx_enable)、/输入
.tx_in(tx_in_i)、/输入
.tx_inclock(tx_inclock)//输入
.tx_coreclk(tx_coreclk)
.tx_out(tx_out)、/输出
.tx_outclock(tx_outclock) //output );

6-2. .v (SPI4.2 Tx 内核包装器) 中,包含以下实例化:

_pl4_tx_core _pl4_tx_core_inst (

...

.trefclk (trefclk),
.tx_enable(tx_enable)
.tx_coreclk(tx_coreclk)

... );

7. SPI4.2 接收器 ALTLVDS rx_out 总线输出已注册 为 rx_outclock

8. SPI4.2 发射器 ALTLVDS tx_in 总线已用 tx_coreclock预先注册。

9. 反转共享 PLL 锁输出,并将其馈送至 ALTLVDS 宏功能 的pll_areset 端口。

相关产品

本文适用于 1 产品

Stratix® IV GX FPGA

本页面上的内容是原始英文内容的人工翻译与计算机翻译的组合。我们提供此内容是为了您的便利并且仅供参考,未必完整或准确。如果本页面的英文版与翻译版之间存在任何冲突,应以英文版为准。 查看此页面的英语版本。