技术文章和通讯

使用神经网络修正ADC错误后

作者:Robert van Veldhoven, NXP Eindhoven


作为集成电路(IC)实现的模数转换器(adc)由于IC制造不完善,容易出错。不匹配的模拟元件,如晶体管、电阻和电容,会导致信号失真,例如,造成较差的总谐波失真(THD)。减少ADC误差的一种方法是通过使用更大的模拟组件来增强设计。这种方法改善了匹配,从而提高了失真数,但需要更多的面积和功率。第二种方法是增加校准电路,但这也需要额外的硅面积,并增加成本和功耗——通常,人们需要知道校准误差的确切原因。

在恩智浦埃因霍温,我和同事使用MATLAB设计和训练的神经网络post-correct ADC错误®和深度学习工具箱™。当在ASIC上实现时,该网络只需要ADC 15%的面积,而在正常运行条件下消耗约16倍的功率。

神经网络的设计与训练

我们在实验室中通过提供参考信号到30 ADC样本(模具)和捕获数字输出生成训练数据。另外留出10个样本用于验证网络。由于ADC误差受温度和电压的影响,我们在9种不同的电压-温度组合下测试了每个样本,总共进行了360次测量。我们使用信号处理技术对数据进行预处理,然后使用ADC的测量数字输出值作为神经网络的输入。通过将校正后的输出信号与原始参考信号进行比较,网络系数将得到更新(图1)。

图1所示。神经网络训练设置。

图1所示。神经网络训练设置。

因为在项目开始时,我几乎没有神经网络方面的经验,所以我不确定这个网络需要有多复杂。我一开始在MATLAB中创建了基本的两层和三层网络,并改变每一层的神经元数量。第一层和第二层的神经元使用sigmoid激活函数,输出层的激活函数是线性的。使用的代价函数是最小均方(LMS)代价函数。

在我们的数据集上训练了这些早期网络配置之后,我发现我可以通过将电压和温度测量作为预测器来提高它们的性能。当我实现这一改变时,网络性能在很大范围的温度和电压条件下显著提高。

评估IC面积和功率

一旦我有了一个神经网络,可以有效地纠正后,错误,我想评估它需要多少硅面积和功率。为了做到这一点,我生成了一个Simulink®基于MATLAB的训练神经网络模型。然后,在生成VHDL之前,我使用定点设计器™量化了所有网络系数®代码从网络与HDL Coder™。我的同事通过HDL Verifier™协同仿真在Simulink中验证生成的VHDL,然后使用Cadence®Genus合成设计。他还使用Cadence环境使用28纳米CMOS技术执行物理实现,生成功率报告,并计算使用的门的数量和这些门所需的面积。

这一分析的结果表明,神经网络可以在面积和功率方面以相对较低的成本纠正ADC错误。一个将信噪比提高约17 dB的网络只需要超过4600个栅极和0.0084毫米的硅面积2来实现。ADC,测量0.06毫米2的规模是该网络的7倍多。活跃时,网络消耗约15 μ W的功率,而ADC消耗233 μ W。

对于纠错电路,面积和功耗估计都被认为是可以接受的,但我有信心,通过优化,我们可以提高这些数字。尽管我在机器学习方面相对缺乏经验,但用于在VHDL中实现网络的工作流程非常简单。因此,设计和实现基于神经网络的电路所花费的时间并不比传统方法长,尽管我是这一过程的新手。

增加可重用性和可移植性

近期内,我们计划探索几种验证神经网络用于ADC纠错的方法。首先,我们希望更好地了解经过训练的网络是如何执行纠错的,以便我们可以将生产中意外行为的风险降到最低。第二,我们想要扩展我们的数据集。我们需要知道,如果我们使用100万个样本而不是仅仅40个样本,我们取得的结果是否会成立。最后,我们想衡量一个神经网络的可重用性有多大。我们期望单个网络能够比传统设计更有效地补偿跨越各种adc的不同错误,因为网络可以容纳广泛的传递函数。然而,我们需要进行进一步的测试来验证这一假设。

2021年出版的

查看相关行业文章

Baidu
map