1.引言
随着半导体工业的飞速发展,新型电力电子器件不断涌现,用户对器件建模的需求越来越迫切,对专用建模工具的开发提出了新的挑战。本文基于开放工业标准仿真源码开发了轻便专用的器件建模工具。
2.仿真模块设计
SPICE模型已被广泛用于电子设计中,本文器件参数提取按照spice语法对输入等效电路进行解析,对开发源码spice3f5导出相关接口作为仿真内核,从而完成仿真模块设计。
2.1 接口设计
为了方便与spice3f5仿真源码通信,在研究源码的基础上,编译生成spice3f5.dll,导出仿真输入输出相关API接口。
其接口函数如表1所示。
2.2 spice语法参数提取
模型参数提取技术是器件建模的基础,只有向电路模拟软件提供相应的模型参数,才可以进行电路设计。因此器件模型所有用到的参数均需要精确地提取。我们需要对用户输入的等效电路网表进行spice语法解析,获得电路参数。
考虑到修改元件参数值反复仿真的需要,将用户输入电路网表做预处理,仅保留仿真有效部分并按行存放在字符串链表中,现在需要从中提取出元件参数信息及实例化的模型、子电路中的参数信息。
第一次遍历网表字符串做提取模块的工作。一旦遇到子电路或模型定义,构造对应类型对象保存模块信息并将指针保存到对应的指针链表中;第二次遍历完成最终输入仿真网表文件。这一过程跳过子电路或模型定义,定位至实例化语句,解析出该实例对应的模块名和实例名,然后根据模块名找到指向该子模块对象的指针,将该实例名添加到该模块的实例链表中。扩展该实例需要该实例对应模块的定义语句,通过获取的模块指针调用其方法构造由实例名定义子模块语句并保存到字符串链表中,然后将其添加到语句链表中。
3.图形显示模块
仿真数据与实际测量数据的对比需要以不同的图形特征作对比,然后通过不断调节一系列参数值重新仿真,寻求两组相关曲线的最佳拟合点。现就对仿真曲线中的smith阻抗图的实现作一介绍。
3.1 smith阻抗图
Smith阻抗图在测量某高频电路的负载时能够直观的在smith图上显示负载阻抗及反射系数[3],它由恒定电阻圆和恒定电抗圆组成,因此其绘制工作也分为两部分进行。首先将其归一化到单位圆,然后按照视图比例乘以具体倍数。
定义如下数组分别是等阻圆和恒定电抗圆弧的特殊值。
double dRadius[]={0.0,0.2,0.5,1.0,2.0,5.0}
double dArc[]={-5.0,2.0,-1.0,-0.5,-0.2,0.2,0.5,1.0,2.0,5.0}
GDI图形编程中,用设备上下文DC绘制圆Eclipse所需参数为该圆外接矩形,画圆弧Arc接口需要圆弧所属圆的外接矩形和圆弧的起始 点坐标。
等阻圆外接矩形左上角和右下角坐标分别为(x取自数组dRadius):
[(x-1)/(x+1),1/(x+1)]和[1,-1/(x+1)]
以上为归一化到单位圆内的转换关系,绘图时需设定坐标原点,确定放大比例。
3.2 扩充功能
在建模过程中,需要不断观测曲线调节参数使之与实测曲线拟合,而放大及记忆功能为此提供了便利。
我们需维护两个放大参数:放大区域中心点及放大比例。
每次拖动方框局部放大时调用InvalidateRect只刷新图形显示区域,然后访问存储的放大比例更新smith最大半径。再用内存DC创建图形显示区域大小的位图,用内存DC只需要绘制放大之后的部分区域。然后根据放大中心点确定位图的视图原点,设置屏幕DC的视图原点为smith圆图的中心点,最后调用BitBlt函数将放大的部分拷贝到屏幕上即可。
多次放大之后需要回退到上次的状态只需访问放大信息数组中的上一组参数,然后刷新视图即可。此外,还涉及到多次放大多次回退再次放大时要覆盖掉此次放大之后的参数,要做好内存释放的工作。
4.结束语
本文所述的基于spice3f5的建模工具将面向对象设计思想引入到仿真器的器件建模机制中,实现了模块复用和快速原型化开发,达到了缩短器件模型开发周期和降低开发成本的目的,对设计专用器件建模工具有一定的启发作用。