主要内容

在时域全球适应接收机组件

这个例子展示了如何执行优化一组接收器组件作为一个系统在时域(GetWave)模拟。您将看到如何设置一个CTLE和DFECDR块所以他们设置适应全球一起在模拟。这是一个效仿的“全球适应接收机组件使用脉冲响应指标提高并行转换器性能。”

接收机组件全球适应概述:

CTLE接收机组件和DFECDR可以一起工作来执行适应在时域仿真。通常情况下,它们独立运作如下:

  • CTLE适应在统计(Init),然后设置这个值在时域仿真开始时

  • DFECDR适应在统计(Init),然后设置这些利用时域值和块收益不断训练利用价值

你可以按照以下的步骤来定制CTLE DFECDR分享RX系统中的信号在时域仿真一起适应全球:

第1部分:确定一个方法优化处方波形与均衡

您将看到如何均衡可以影响RX波形over-equalized, under-equalized或critically-equalized(例如类似于过滤反应可以被定义为阻尼状态,欠阻尼、或临界阻尼)。

注意:每一数据字的概念符号(3)从通讯理论是本例中使用。

低频(LF)和高频(HF)数据字为本例定义如下:

  • 低频词保留同一逻辑值在3象征UI(例如111或000)代表不变bit-to-bit值在一个词。

  • 高频词的变化在3象征UI(例如101或010)代表改变bit-to-bit值在一个词。

注意:内眼CTLE块优化(高频内容只)。

第2部分:定制仿真软件接收机节块金宝app

  • 禁用CTLE内部适应通过连接输出终结者

  • 改变CTLE使用一个信号从输入DFECDR(允许适应全球一起)

  • 定制DFECDR通过创建一个MATLAB功能块眼睛评价指标,根据内部总线和CTLE参数,然后输出一个值用于CTLE配置。

第3部分:实现自定义的MATLAB函数在时域仿真适应均衡

  • DFECDR,代码MATLAB函数操作输入信号在UI边界上,而不是在每个取样间隔

  • 添加条件语句比较眼指标之间的低频(LF)数据词汇和高频(HF)数据的话,来确定下一个最佳均衡值。

  • MATLAB函数是一个均衡值输出的信号模型。金宝app这意味着CTLE块将使用这个作为输入,所以每次变化,RX波形将平衡的新值在时域仿真。

注意:块内的RX系统可以共享信号。在TX系统也是如此。但是,没有信号可以RX和TX系统之间共享。

第1部分:确定一个方法优化接收机波形与均衡

初始化并行转换器系统CTLE和DFECDR接收器

开放系统通过输入serdesDesigner (“TDadapt.mat”)。您将看到一个系统,一个基本的TX, 100 - 16欧姆损失的通道后5 ghz,和一个包含CTLE后跟一个DFECDR RX。在这个例子中,CTLE定制使用“固定”模式(因为这个例子展示了如何在MATLAB编程上适应通过评估固定值函数),和规范设置为“直流增益和峰值增益,”和“直流增益”范围从0到-15分贝(增量1 dB),并设置“峰值增益”一个范围从0到+ 15分贝(增量的+ 1 dB)如下所示。还要注意,DFECDR应该设置为“适应”模式。

你可以点击CTLE并将模式设置为“固定”。

然后你可以通过不同的周期值配置选择CTLE和观察不同的均衡值的影响接收机眼图:

上图:Under-equalized RX波形:CTLE配置选择设置为0(最低)。

上图:Over-equalized RX波形:CTLE配置选择设置为15(最大值)。

上图:Critically-equalized信号:CTLE配置选择设置为7(例如一个中档值)。

您可以开发一个算法来优化接收机信号通过均衡的概念。例如,一个RX信号可以被视为over-equalized, under-equalized,或critically-equalized:

第2部分:接收机系统中定制仿真软件模金宝app块

导出系统仿真软件。金宝app

接收器内的部分,您可以修改CTLE和DFECDR分享值使用信号以启用全局适应在时域仿真。

修改CTLE

你可以看下CTLE面具(CTRL-U),然后改变ConfigSelect输出到《终结者》而不是DataStoreWrite。通过将一个《终结者》ConfigSelect输出,CTLE不再反馈模式,和任何其他块RX系统可以控制这个CTLE写它ConfigSelect输入信号。

你会改变CTLE。ConfigSelectoutput to connect to a terminator:

添加CTLE DFECDR适应

您现在可以修改DFECDR控制的价值ConfigSelect输入使用的CTLE在时域仿真。这可以通过添加一个MATLAB函数,使用以下参数评估CTLE配置适应下一个最佳均衡值:

•模式

•ConfigIn

•symbolRecovered

•voltageSample

接下来,您将看到如何改变DFECDR添加这个MATLAB函数。

您将看到一个总线选择器在输出端口室内。双击打开其块参数菜单,做以下修改:

点击信号symbolRecovered然后单击“选择> >”按钮,重复这个voltageSample。这些是可选的输出,这就是为什么你必须启用这些。同时,你需要更改的配置symbolTimesampleInterval从“信号”到“参数”。You can do this from the "edit data" toolstrip while in the function editor in MATLAB:

添加一个仿真软件MATLAB函数画布。金宝app你可以得到模型自动生成港金宝app口通过定义函数声明行代码如下:

% ctleTimeDomainAdapt -简单的适应算法优化CTLE配置%对NRZ信号在时域。当前serdes.CTLE%只适应在Init /统计。%%的目标是监控决策和电压水平的决策的象征% serdes.DFECDR。由此,高、低频电压的平均值来计算%调整CTLE配置将平均在一起。一旦解决,检测开关%的配置,配置调整锁。配置调整下运作%假设CTLE“刺激”增加而增加配置从0到X和%调制NRZ只有。% 2020年版权MathWorks公司。函数配置= ctleTimeDomainAdapt(模式、configIn symbolRecovered、voltageSample SampleInterval, SymbolTime)

注意:您可以使用代码片段连接,因为它们是解释在这个例子中,或者您可以使用附加的“ctleTimeDomainAdapt MATLAB函数。m”供参考。

或者你可以在仿真软件使用画布工具创建端口。金宝app使用方法,港口将出现如下:

输入:

  • 模式

  • configIn

  • voltageSample

  • symbolRecovered

  • 请注意:symbolRecoveredvoltageSample是可选的输出DFECDR块如图所示在上面的总线选择器。

输出(与函数名相同):

  • 配置

创建一个常数块和配置它的元素赋值CTLESignal.Mode。然后将它连接到函数的输入端口模式。

接下来,创建一个数据存储读取块和配置元素赋值CTLESignal.ConfigSelect。然后连接为configin函数输入端口。

接下来,创建一个数据存储块写,和配置元素赋值CTLESignal.ConfigSelect。然后连接函数输出端口配置。

请注意:你可以添加一个观察的适应值范围CTLESignal.ConfigSelect在模拟。

当你完成连接信号,DFECDR将显示如下:

第3部分:实现算法适应均衡在时域仿真

您可以编辑文件”ctleTimeDomainAdapt。m”附加到这个示例作为起点为适应算法。这个例子使用了持久变量跟踪值每次调用MATLAB函数。作为一个起点,你将评估如果变量是零(例如使用isempty()函数),所以当第一次函数被调用时,它们可以被初始化。在这一点上,他们的价值观将配置CTLE和DFECDR块一起工作。

持续的sps sampleCounter symbolCounter持续的internalConfig updateConfig符号电压持续的lowFreqCount highFreqCount lowFreqVoltage highFreqVoltage持续的preventToggle切换如果sps = SymbolTime / SampleInterval isempty (sps);sampleCounter = 0;%的总样本symbolCounter = 0;总额%符号internalConfig = configIn;%从初始化配置和设置的初始配置% internalConfig = 0;从Init %使用这个而忽视价值updateConfig = false;符号= (0 0 0);%符号历史(3)电压= (0 0 0);在每个符号%电压(3)lowFreqCount = 0;%低频事件计数highFreqCount = 0;%高频事件计数lowFreqVoltage = 0;%电压和低频率的事件highFreqVoltage = 0;%在高频电压和事件preventToggle = [0 0 0 0];%切换跟踪;最后4配置更新1 / + 1切换= false;%切换检测国旗结束

注意:持续的一个变量时,变量保留其价值。否则它们实例化定义为每次调用MATLAB函数。

实现监管机构如切换探测器

您可以实现多种监督测试,但这个例子实现了一个切换探测器。如果CTLE在给定值并开始盈亏由1(例如4 - 5、5 - 4、4 - 5)从单词到单词,程序将检测通过检测3重复切换条件。如果这是真的,它退出循环,从而CTLE保留其训练有素的最优值。

注意:你可以看到一个示例实现这种算法的附加文件。

如果= = 2 & & ~切换模式

理解数据切片机

您可以使用信号symbolRecoveredvoltageSample处理RX波形。但首先,重要的是理解数据切片机操作:

1。每一次时钟时间出现在UI的开始,

2。DFECDR块适用于水龙头,

3所示。触发数据切片机在+ 0.5用户界面后,

4所示。然后利用价值的决定发生的。

符号和数据切片机输出电压。例如,如果数据切片机运行在0.5界面位置,切片机输出符号+ 0.5或-0.5和电压值已达到象征。

发现界面边界数据切片机

系统运行在一个时间步纸浆包,所以您可以通过设置跟踪界面边界样本和象征。当样品数整除该设置为“样品每一点”,这个定义一个符号边界。通过这种方式,您可以找到的高频组合(如010、101)或低频(如111、000)数据字为关键的均衡优化:

%的频率更新CTLE配置updateFrequencySymbols = 1000;%的CTLE配置minCTLEConfig = 0;maxCTLEConfig = 15;%设置一个计数器样本和象征来追踪整体进步sampleCounter = sampleCounter + 1;%每个调用这个函数是一个示例%样品数整除时每一点样品,有一个符号边界如果国防部(sampleCounter, sps) = = 0 symbolCounter = symbolCounter + 1;updateConfig = true;%的旗帜继续更新循环的部分%保持位/电压的历史符号=(符号(2:3)symbolRecovered);% -0.5或0.5电压=(电压(2:3)voltageSample);在每个符号%电压%保持计数低/高频率的事件,在这些事件和电压%低频=稳定的高或低%高频快速tranition =如果isequal(符号,[0.5 0.5 0.5])| | isequal(符号,(-0.5 -0.5 -0.5))% 1 1 1或0 0 0lowFreqCount = lowFreqCount + 1;lowFreqVoltage = lowFreqVoltage + abs(电压(2));%保持中间电压样本elseifisequal(符号,[-0.5 0.5 -0.5])| | isequal(符号,(0.5 -0.5 0.5))% 0 1 0或1 0 1highFreqCount = highFreqCount + 1;highFreqVoltage = highFreqVoltage + abs(电压(2));%保持中间电压样本结束结束

找到3-Symbol组合对高频和低频信号的内容进行排序

您可以使用MATLAB函数国防部找到样品/ s已经达到了国防部0时,它定义了用户界面边界。一旦象征计数器达到模0,你可以积累这些位置。之后积累足够的比特(例如1000),计算电压在这个人口的平均值,并更新CTLE配置。

创建一个if语句来执行以下测试和决定:

  • 如果信号是111或000,为低频增量计数变量

  • 如果信号是010年或101年,增量为高频计数变量

  • 对于每个案例,把电压符号和变量电压增量计数器

%符号数整除时更新频率,检查如果CTLE更新是必需的如果国防部(symbolCounter updateFrequencySymbols) = = 0 & & updateConfig%计算低/高电压平均值lowFreqAvg = lowFreqVoltage / lowFreqCount;highFreqAvg = highFreqVoltage / highFreqCount;

更新CTLE

你希望你可以实现任何算法,但是在这个例子CTLE始于configSelect从初始化值,函数执行一个增量。每次DFECDR评估和比较持久的变量。根据这个结果,CTLE递增或递减。

注意:重要的是为您的代码测试,CTLE没有设置为无效configSelect

%增加CTLE配置如果低频率高于高频率如果lowFreqAvg > highFreqAvg%防止超过最大CTLE配置如果internalConfig < maxCTLEConfig%如果发现切换,禁用适应如果~ isequal (preventToggle [1 1 1 1) internalConfig = internalConfig + 1;%添加动作电流切换跟踪preventToggle = [preventToggle (2:4) 1];其他的切换= true;结束结束%减少CTLE配置如果高频率高于低频率elseiflowFreqAvg < = highFreqAvg%防止超过最低CTLE配置如果internalConfig > minCTLEConfig如果~ isequal (preventToggle [1 1 1 1) internalConfig = internalConfig - 1;%添加动作电流切换跟踪preventToggle = [preventToggle (2:4) 1];其他的切换= true;结束结束结束%重置变量与平均每个updateFrequencySymbols有关lowFreqCount = 0;lowFreqVoltage = 0;highFreqCount = 0;highFreqVoltage = 0;updateConfig = false;%更新锁,直到下一个符号边界结束结束配置= internalConfig;结束

在时域仿真图:眼图。

你可以看到的范围CTLE开始初始化的值,和“锁”CTLE toggle-detector代码配置几个迭代:

图:时域仿真开始时,CTLE开始初始化的值。

你可以设置的代码从CTLE配置0和发现算法的增量配置直到切换:

图:范围的输出信号CTLESignal.ConfigSelect如果函数是程序从0开始,而不是从初始化值。

找到的值忽略接收方,可以评估需要多少UI CTLE解决。在这种情况下,它就等于CTLE配置可用的数量。

图:可以忽略位的值设置为16,可用CTLE配置的数量在这个例子。

当仿真完成后,你可以看到时域眼睛有一个有效的浴缸曲线如果模拟使用足够的忽略接收比特。

图:时域统计和结果有足够的忽视。

您可以测试的影响忽略部分通过将该值设置为零,重新运行仿真:

图:你可以设置忽略从16位为0的值来测试其时域结果的影响。

图:统计和时域结果忽略一些不足。

另请参阅

||

相关的话题