飞利浦医疗保健为MRI系统开发智能数字RF功率子系统

挑战

开发了一种用于核磁共振系统的数字射频功率子系统

解决方案

使用Si金宝appmulink模拟,模拟和验证设计,并使用HDL编码器为FPGA实现生成一致和可预测的VHDL代码

结果

  • 设计问题在开发的早期就解决了
  • 快速评估和实施权衡
  • 过程一致性和可预测性提高

“金宝appSimulink帮助系统架构师和硬件设计师进行通信。它就像一种共享语言,使我们能够交流知识,想法和设计。金宝appSimulink和HDL编码器使我们能够专注于开发我们的算法并通过仿真提炼我们的设计,而不是检查VHDL语法和编码规则。“

Marcel van Bakel,飞利浦医疗保健公司
van Helvoort(左)和Van Bakel与飞利浦医疗保健MRI扫描仪。

磁共振成像(MRI)系统利用强大的射频(RF)和强磁场来系统地对齐人体组织中质子的磁矩。为了使核磁共振系统产生高质量的图像,射频功率子系统的时序和线性度必须得到精确控制。随着射频功率放大器的峰值功率接近40 kW,保持信号相位精确到几皮秒内是一个重大挑战。

飞利浦医疗保健工程师使用MATLAB进行基于模型的设计®,S金宝appimulink.®和HDL Coder™,为MRI机器开发创新的数字射频功率子系统。实现硬件描述语言(VHDL)®该子系统部署在FPGA上,采用数字预失真和反馈控制回路来实现所需的精度和线性度。

飞利浦医疗高级经理马克•范•赫尔沃特表示:“创建VHDL代码是我们必须做的一件事,但我们并没有为此增加多少价值。”“金宝appSimulink和HDL Coder使我们能够专注于通过模拟开发算法和优化设计,而不是检查VHDL语法和编码规则。”

挑战

在以前的项目中,飞利浦医疗硬件工程师通常很难将系统架构师用C语言开发的算法思想转换为位和周期精确的FPGA实现。这些翻译问题,结合放大器线性的变化和VHDL程序员的编码风格的差异,使开发过程更难以预测。

手编码HDL减慢设计迭代,使得难以调试现有算法,测试新算法的想法,并评估设计权衡,以确保整个设计适合目标FPGA。飞利浦医疗保健工程师需要一种方法来评估硬件测试前的设计修改和权衡,并加速其FPGA上有效的设计。

解决方案

飞利浦医疗保健使用模型的设计,开发MRI数字RF功率子系统,并在VHDL中实现它。

工程师使用Simulink模拟由数字R金宝appF接收器和比较器,RF波形发生器和放大器组成的架构。在该架构中,感测放大器的前向和反射输出并反馈回数字接收器,其中与所需的有效信号输入进行比较。使用数字预失真创建校正的目标信号并将其发送到波形发生器。

Simulink中的射频波形发生器子模型包括载波NCO、单边带混频、级联梳式金宝app积分器(CIC)和有限脉冲响应(FIR)滤波器组件,以及一个多波段调制器。数字接收机和比较器子模型包括模数转换器、解调和数字下变频模块,以及其他滤波器。

该团队在Simulink中使用浮点精度模拟了这些子系统,然后模拟了模型测试,调试和优化RF传输链。金宝app

它们将模型转换为固定点精度并耗尽额外的模拟以验证转换。

使用HDL编码器,它们从其Simulink模型生成VHDL代码,并将代码打包到库中。金宝app将库导入导师图形后®ModelSim®,团队将生成的代码集成到整体FPGA设计中。在ModelsIM中运行模拟以证明整体设计是正确的,他们将代码部署到Xilinx®VIRTEX.®FPGA。

在Chain生成新的VHDL库之前,在Simulink模型中复制,诊断,并在Simulink模型中进行复制,并在FPGA上更新FPGA以进行进一步测试,以便在Simulink模型金宝app中进行复制。

飞利浦医疗保健计划在一台生产MRI机器中使用创新的数字射频功率子系统,包括由HDL Coder生成的代码。

结果

  • 设计问题在开发的早期就解决了。“Simulink中的固定点模拟显示了我们的系统架构被确金宝app定为不可接受的虚假频率,”飞利浦医疗保健的电子设计师Marcel Van Bakel说。“使用Simu金宝applink,我们将问题追溯到舍入错误。基于模型的设计使我们能够在开发的早期解决这个问题。“

  • 快速评估和实施权衡。“早期设计包括一个24级FIR滤波器,但我们看到它会消耗太多的FPGA资源,”Van Bakel说。“在30分钟内,我们建模了一个更简单的过滤器,使用Simulink中使用Spectrum Analyzer验证它。金宝app这种变化将需要一周的时间才能在VHDL中的手段和硬件测试。“

  • 过程一致性和可预测性提高。“与不同开发人员编写的VHDL代码不同,HDL编码器生成的代码一致,这意味着使用它表现得可预测的下游工具,”Van Bakel说。“生成代码不仅节省了时间,它也会降低风险并减少引入错误的可能性。”