学生休息室

分享学生如何在日常项目中使用MATLAB和Simulink的技术和现实例子#学生成功#金宝app

最近,来自MathWorks学生项目团队的李平接受了卢凌峰和李江川的采访,他们谈到了他们在参加其中一个项目时,如何使用深度学习来加速PLL (Phase Locked Loop)设计的经验MathWorks在创新项目上的卓越表现.你可以在GitHub上下载团队共享的代码和数据:https://github.com/lulf0020/Behavior-modeling-of-PLL
凌峰和江川的店开于2021年,当时他们还是上海交通大学的学生。他们参加了由杨宇红教授讲授,MathWorks工程师徐跃义博士支持的校企合作课程“工程实践与科学创新”。金宝app他们需要完成这门课程的一个项目,所以决定选择MathWorks卓越创新项目之一,并在三个月内完成。
MathWorks在创新项目上的卓越表现为学生和研究人员提供不同的前沿思想。所有的项目都是由MathWorks的工程师结合当前的行业需求和最新的技术发展趋势设计的。主题涵盖5G、大数据、工业4.0、人工智能、自动驾驶、机器人、无人机、计算机视觉、可持续发展、可再生能源等不同领域。
在查看项目名单时,凌峰和江川被其中一个名字所吸引基于深度学习技术的锁相环行为建模

什么是锁相环(PLL)?

随着芯片设计复杂性的显著增加,如何更快地探索设计空间变得越来越具有挑战性!锁相环通常被称为芯片的“心脏”,它使用来自外部振荡器的信号作为参考,并通过闭环控制产生一个稳定的时钟输出,通常具有更高的频率。设计一个稳定而健壮的锁相环对芯片来说很重要,就像设计一颗健康的心脏对人体一样重要。
图1 PLL架构。jpg

你为什么选择这个项目?

这个项目的实用性和新颖性吸引了我们!锁相环的行为级建模可以节省设计过程中的时间和成本。具体来说,在建立锁相环的行为级模型后,我们可以通过将设备参数导入模型,直接获得锁相环的性能,而无需进行大量的仿真或测试。

你在这个项目中解决了什么问题?

数据集和模型是深度学习的两个关键因素。在这个项目中,我们遇到的两个主要问题是:
问题1:如何高效地建立数据集?
问题2:如何构建有效的深度学习模型?

问题1的解决方案:如何高效地建立数据集?

在这个项目中,我们没有可用的数据集。在我们开始之前,设计问题的MathWorks工程师Pragati Tiwary先生对问题陈述进行了深入的解释。他告诉我们,n除法锁相环参考模型提供了混合信号Blockset™在MATLAB中提供了一种通过仿真构建数据集的方法。
其中一个参考模型如下所示,包括五个模块:相位检波器(PFD)、电荷泵、环路滤波器、压控振荡器(VCO)和分频器。我们需要做的是不断地改变五个模块的参数,以测试锁相环在工作频率、锁定时间和相位噪声方面的性能。
锁相环refModel.JPG
除了参考模型,mix - signal Blockset™提供的许多不同的测试平台使我们的工作更容易。利用锁相环测试台,我们可以方便地用各种参数测试锁相环模型的性能,并记录结果。
一开始,为了获得一组数据,我们手动更改模型的参数设置,进行仿真,然后手动记录输出结果。然而,我们发现收集数据的方法非常耗时。
在这一点上,Pragati耐心地指导我们如何自动导入数据、运行模拟和批量导出性能结果。请参考此网页有关Simulink中程序化模型管理的更多信息。金宝app在Pragati的帮助下,我们将模型参数由常数变为变量,然后使用MATLAB程序调整Simulink PLL模型的参数值,进行仿真,然后自动采集结果。金宝app
然而,我们随后发现,一些定义模型结构的参数,例如循环过滤器的顺序,不能简单地通过改变变量的值来修改。
当我们迷失路径时,我们愉快地发现,我们总是可以假设一个四阶环路滤波器架构,并将一些电容和电阻值设置为0来实现低阶环路滤波器,例如,我们设置R3=R4=0(欧姆)和C3=C4=0 (F)的四阶环路滤波器架构来实现二阶环路滤波器。这样,我们可以快速扫描不同的模型设置。
图3 Loop Filters.jpg
我们也希望程序能自动记录表演。但是,我们发现所需要的性能数据无法导出,所以我们必须导出试验台的中间输出,然后用MATLAB程序计算最终输出。
最后,我们建立了一个MATLAB程序来自动模拟和测试锁相环模型。在每一轮中,程序:
  1. 生成一定范围内的随机数,然后将模型参数的值设置为这些随机数。
  2. 对Simulink模型进行了仿真和测试。金宝app
  3. 记录由Simulink发回的中间结果。金宝app
  4. 根据记录的中间结果计算最终的性能指标。
利用MATLAB程序自动采集数据,大大提高了数据集建立的效率。在我们有了数据集之后,我们的问题变成了如何建立一个有效的深度学习模型。

问题2的解决方案:如何构建有效的深度学习模型?

深度学习一般用于特征提取和回归或拟合。例如,卷积神经网络模型有许多用于特征提取的卷积层和池化层。
通过实验,我们发现两层前馈神经网络已经可以很好地模拟输入参数和输出性能指标之间的映射,因此我们在我们的项目中使用了一个简单的前馈神经网络结构。
MATLAB提供了深度学习工具箱,在这里您可以从头开始或通过修改参考模型来构建神经网络模型。有了这个工具箱,MATLAB支持流行的预训练模型(如金宝appDarkNet-53, ResNet-50, NASNet和SqueezeNet)的迁移学习。此外,您还可以从TensorFlow和Caffe导入模型到MATLAB。
我们在这个项目中使用的是深度学习工具箱™中包含的神经网络拟合应用程序。我们推荐这个App,因为它提供了一个两层前馈神经网络,神经元数量可选,如下图所示。
图4神经网络拟合
在我们的神经网络中,隐含层使用经典非线性函数Sigmoid作为神经元的激活函数,而输出层使用线性输出函数。利用均方误差(MSE)和回归分析对神经网络的性能进行了评价。
必须提到的是,模型一开始的拟合效果并不好,于是我们尝试了数据预处理、增加神经元数量、调整训练、测试、验证集的比例等不同的方法,最终取得了很好的效果。我们最终在项目中使用的改进方法包括:
  1. 数据预处理:对于幅度差异较大的数据,我们用对数函数对数据进行归一化,使得输出数据的分布更加均匀,减少了欠拟合或过拟合的可能性。
  2. 增加测试集的大小:像往常一样,我们项目中的数据集被分为训练集、测试集和验证集。训练使用训练集和测试集,最终评价主要使用验证集。我们注意到至少有200个样本的测试集是必要的,以确保模型训练的可靠性。

结论:努力学习+勇敢尝试=成功

时间过得真快。凌峰目前在上海三菱电梯有限公司(SMEC)工作,江川正在准备考研。
他们告诉我们这次跨文化差异的经历非常难忘。这个项目不仅开阔了他们的视野,也提高了他们与世界各地的人交流的勇气。通过这个项目,他们意识到学生利用知识和创新来解决现实问题的重要性。
最后,感谢MathWorks为他们提供的机会,感谢杨教授、Tiwary先生、徐博士对他们的帮助和指导!
|

评论

要发表评论,请点击此处登录到您的MathWorks帐户或创建一个新帐户。