已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ProteusProteus SDKSDK 模型模型 来自来自 http jamsan blhttp jamsan blo 目录目录 1 第一章第一章 介绍介绍 3 第二章第二章 SPICE 工作原理工作原理 3 2 1 简介 3 2 2 电路表示 3 2 3 电阻 受控电流 电压源 4 2 4 非线性 4 第三章第三章 DSIM 工作原理工作原理 4 3 1 引言 4 3 2 启动过程 4 3 3 稳定过程 5 3 4 事件处理循环 5 3 6 九状态模型 6 3 7 未定义状态 6 3 9 毛剌处理 7 第四章第四章 混合模式仿真分析原理混合模式仿真分析原理 9 4 1 概述 9 4 2 混合模式接口模型 9 4 3 使用 ITFMOD 属性 11 第五章第五章 模型类型模型类型 11 概述 11 5 1 电气模型 11 5 2 图形模型 12 5 3 原理模型 12 5 4 SPICE 模型 13 5 5 VSM 模型 13 第六章第六章 模拟元件建模教程模拟元件建模教程 14 6 1 简介 14 6 2 设置测试用例 14 6 3 线圈元素建模 15 6 4 线圈电路概述 16 6 5 开关部件建模 18 6 6 开关电路概述 19 6 7 测试并编译模型 19 6 8 在其它设计中使用模型 20 第七章第七章 数字元件建模教程数字元件建模教程 21 7 1 简介 21 7 2 74123 单稳多谐振荡器 21 7 3 设置测试环境 22 7 4 进入等价电路 23 7 5 等价电路概述 24 7 5 1 功能建模 24 7 6 测试与编译模型 28 7 7 在其它设计中使用模型 28 第八章第八章 混合模式建模教程混合模式建模教程 29 8 1 简介 29 8 2 设置测试环境 30 8 4 等价电路 31 8 5 使用模型 33 第九章第九章 VSM 建模教程建模教程 33 9 1 简介 33 9 2 创建 VOLTMETER 部件 33 9 3 VOLTMETER 的属性定义的属性定义 34 9 4 VOLTMETER 的的 Active 模型设置模型设置 34 9 5 创建 C 工程 34 9 6 头文件 35 9 7 创建模型及许可 35 9 8 模型初始化 36 9 9 组合图形 电气模型 36 9 11 事件处理 38 第一章第一章 介绍介绍 这个文档包含了怎样创建你自己的 Proteus VSM 模型介绍 它针对这个系统的高级 用户并假定你深知怎样用 ISIS 和 PROSPICE 创建原理和运行仿真 我们也假定你具有必须 的电子知识来创建完全符合你器件行为的仿真模型 这并不总是个小事情 涉及很多技和 恰入其分的判断 已经充在的模型资料 可以访问 www labcenter co uk 你也可能申请由我们或者第 三方开发新的模型 第二章第二章 SPICE 工作原理工作原理 2 1 简介简介 本节将简要介绍 SPICE 如何进行电路仿真 如果您希望创建复杂的模拟电路元件模型 建议您阅读 SPICE3F5 相关文献 下面仅就暂态分析进行讨论 2 2 电路表示电路表示 一般来说 电路由节点与支路组成 其中 节点为两条以上的支路的共同连接点 在 SPICE 术语中只有节点电压 在支路已知的情况下 这就足以求解出所需的支路电流 电路中 有三种基本的元器件 即 电阻 理想电流源 VCCS 或 CCCS 理想电压源 VCVS 或 CCVS 可使用矩阵与向量来表示电路 当前状态及其结果 向量可看成是单维矩阵 或者是 一个简单的数列 在各计算阶段 均需计算表达式 I Y V 其中 I 与 V 为向量 而 Y 为一个二维矩阵 请注意该表达式与欧姆定律相类似 该表达式还代表了以下形式的方程组 IaYa IbYb IcYc V 这样可以求解 V V 也经常表示 RHS 向量 它位于上述方程右手端 Right Hand Side RHS 根据构成电路的支路 可设置 I 与矩阵 Y 中的值 从而求得矩阵方程的各个解 即 V 的 各个分量 这些值可能是来自元件模型中的特定值 它们可以表示该模型的一些状态 因 此 I 与 Y 一起将确定电路状态 而 V 表示了结果 来自 2 3 电阻 受控电流电阻 受控电流 电压源电压源 可视一个电阻为一个线性电压控制电流源 且其输入输出节点包含相同管脚 实际上 SPICE 就是通过将 I 与 Y 中的不同元素设置为常量这种方式来处理一个线性受控电流 电 压源 从另一角度来说 若注意到矩阵 Y 的特定行或列的值表示相应节点间的电流与它们之 间的电势差之间的关系 该数越大 电压值越大 因此 支路电流与节点电压之间的任意 线性关系可用矩阵 Y 中的常量来表示 同样 特定节点间的电流也可直接用 I 向量中的值 来表示 来自 2 4 非线性非线性 在前面 我们曾经提到过 各计算阶段 这些计算阶段是如何定义的呢 OK 让我们 先考虑简单的情况 如果我们面对的电路全是由线性时不变支路所构成 在所有时刻 均 可求得矩阵方程中节点电压向量 V 的唯一解 一条线性支路遵守欧姆定律 包括 R V 0 时 Y I 0 的情况 这也是可经由方程组 I Y V 求解的电路的唯一形式 但我们如何处理象二极管与三极管这样的非线性元件呢 我们构造与非线性电路状态 一致的虚假电路 让我们花点时间来理解这些概念 考虑一个电路中的一个二极管 假定 我们已经知道电路稳态时的各节点电压 从二极管的理论函数可以知道二极管的状态 第三章第三章 DSIM 工作原理工作原理 3 1 引言引言 可采用事件驱动仿真 Event Driven Simulation 技术来进行数字瞬态分析 它与 SPICE 中的模拟电路瞬态分析不同 后者仅当电路某些元素的状态发生改变时才进行 另外 数 字瞬态分析只考虑离散逻辑 而元件功能则表示为一种更高层次的逻辑 例如 我们可以 认为计数器是一个寄存器 它的值在每次时钟沿加一 而不认为计数器是几百个晶体管电 路元件 这样 针对同一个电路 采用事件驱动仿真分析比模拟电路仿真分析来说 速度 要快上几个数量级 3 2 启动过程启动过程 启动过程的目的是定义电路中所有网络的初始状态 且每个模型的分析函数被至少调 用一次 启动模块将进行以下处理 a 所有与 VCC 和 或 VDD 相连的输入管脚的电平置为高 b 所有与 GND 和 或 VSS 相连的输入管脚的电平置为低 c 所有与信号发生器相连的输入管脚的电平状态与信号发生器的初始属性值相同 d 所有其它的管脚初始化为悬空 e 所有模型都必须根据其逻辑 将输入变换求得输出 模型调用无固定顺序 f 如果网络的状态发生改变 则与其相关联的模型将被要求重新计算得到它们的输出 该过程将重复进行直到系统确认出现稳态 3 3 稳定过程稳定过程 考虑以下的三个非门电路 在启动过程中 除 U1 A 以外的非门都将得到一个未定义的输入状态 则它们将产生 一个未定义的输出状态 然而 因为调用了本过程即稳定过程 U1 A 的输出将改变 即由 未定义状态变为高电平 之后 将要求 U1 B 进行重新计算 这次的结果是输入逻辑 1 而 输出为逻辑 0 这将改变另一个网络状态 导致另一个稳定过程运行 最后 当 U1 C 改变 其输出状态为高时 再没有其它的改变发生 这时 可认为电路达到稳定 请注意 应假定在仿真分析开始之前电路已经稳定 且在模型内部的任何延时都将被 忽略 在一个混合模式的仿真分析中 在 SPICE 试图求得电路的 DC 工作点时 也会调用稳 定过程 3 4 事件处理循环事件处理循环 稳定过程之后 DSIM 才开始严格意义上的仿真分析过程 该过程在一个循环中调用 而该循环重复进行以下两步操作 将当前时刻所有状态改变事件加入到一个队列中 并交由相关网络进行处理 该 过程将得到新的网络状态集合 当一个网络状态发生改变时 该网络内所有的包含输入管脚的模型都将重新进行 仿真分析 如果它们的输出发生了改变 将产生新的事件 并被加入到事件队列中 当然 不同的模型将产生的事件需要在不同时刻进行处理 因此 DSIM 内核将在每次 循环时对队列中新产生的事件进行排序 需要指出的是 我们的方案可支持 0 时刻延迟模型 这里的含义是 根据事件产生的 方式 在事件产生的时刻 代码也在进行批处理 一批等价于循环体执行一遍 本段翻译得不好 原文如下 It is also worth pointing out that our scheme quite happily supports models which have a zero time delay In this context events generated with the same time code are processed in batches one batch equals one trip round the loop according to howthey were generated 3 5 结束条件 当达到以下条件之一时 仿真将停止 a 到了指定的仿真结束时间 b 出现了逻辑矛盾 如当前时刻停止不前 即使事件处理循环过程进入了死循环 c 出现了系统错误 如事件队列内存异常 这在正常情况下不大可能会发生 除非在 您的设计中使用了某些不稳定的因素 可能会导致某些地方的高频振荡 如 100MHz 3 6 九状态模型九状态模型 您可能会认为一个数字仿真器仅会处理高低逻辑 但实际上 DSIM 处理了 9 个完全 不同的状态 状态类型关键字说明 电源高态PHI电源高逻辑 强电高态SHI主动输出高逻辑 弱电高态WHI被动输出高逻辑 悬空态FLT悬空输出 高阻 未定义态WUD与模拟电压混联 竞争态CON与数字电压冲突 弱电低态WLO被动输出低逻辑 强电低态SLO主动输出低逻辑 电源低态PLO电源低逻辑 从根本上来说 一个给定的状态包含其极性信息 高 低或中间态 与强度信息 状态 的强度表示电流的大小 从而决定输出带负载能力或吸收电流能力 若多于一个输出连接到 同一个网络节点时有用 例如 如果一个集电极开路 OC 输出通过一个电阻连接到 VCC 则当输出为低时 在 网络中将同时出现 WHI 与 SLO 状态 结果 SLO 状态竞争获胜 导致相应节点为低电压状 态 相反 如果在网络中同时出现两个三态输出 且来自不同的方向 则两个输出都无法 获胜 导致出现竞争状态 该方案允许 DSIM 仿真包含 OC 与 OE 输出 上拉电阻的电路 也可分析经由电阻连 接的三态输出 那些可怜的人设计的多路输出 电路 然而 需要记得一点 DSIM 是一个数 字仿真器 它不能处理模拟电路的模型现象 例如 将大电阻连接到 TTL 输入端时 DSIM 的分析过程不会出现问题 但在实际工作中会因为不能提供足够的电流而导致相应 的问题 3 7 未定义状态未定义状态 当数字模型的输入未定义时 它可能会沿着模型的普通常识规律进行传播 例如 如 果与门的一个输入为低 则其输出将为低 但如果只有一个输入为高 而其它输入未定义 则输出也将为未定义 3 8 悬空输入 一般认为 未连接的 TTL 输入看起来与它连接到逻辑 1 时所导致的现象一致 但不能 基于此就说明这是实际事实情况 可能会在忽略导线 或输入连接到一个非激活的三态输 出时出现这种现象 DSIM 内部进行了一些处理 其内部模型都假定了期望高或低的输入 的真实逻辑响应 要是您真的希望 DSIM 将未连接的输入当成高 低电平逻辑 您可以通过将 FLOAT 模 拟器控制属性设置为 TRUE 或 FALSE 如果该属性值未指定 则缺省处理方式为未连接输 入会被当成未定义状态 3 9 毛剌处理毛剌处理 在设计 DSIM 时 我们曾就如何处理非常短的脉冲 毛剌 的模型仿真进行了大量讨论 问题的本质在于 在那些情况下 作为 DSIM 仿真分析的一个前提假设 模型的纯数字化 表现 有点不大成立了 例如 一个 5ns 输入脉冲时作用到 7400 芯片输入端时 它将会其 输出端产生某种形式的脉冲 但并不能满足 TTL 规范所要求逻辑电平 这样的输出脉冲能 否作为下一级计数器的时钟呢 这就基本上依赖于模拟计算的结果了 最好的处理方式考虑极端情况 即 一个 1ns 的输入脉冲压根不会在电路中传播 一个 20ns 的输入脉冲可以较好地在电路中传播 在这之间的情况 门电路将不会正确地传播脉冲 也可以说是欠脉冲 这给了我们毛 剌阈值时间 Glitch Threshold Time 它可以与 TDLH 和 TDHL 一样 作为模型的额外属性 另一个需要关心的是 究竟毛剌能否抑制模型的输入或输出 要解决这点疑问 我们 可以考虑一个受纹波计数器驱动的 4 16 解码器 见下图所示 纹波计数器的输入交错排列 这样可能会导致解码器的输入经过中间状态时产生出寄 生脉冲 下图所示为该仿真分析过程结果 以第一个毛剌为例来进行说明 因为 U1 QA 第一次触发低电平 它胜过 U1 QB 的高 电平而产生一个短时低电平脉冲 并成功地通过解码器并持续 10ns 问题是解码器能否对 此做出正确的响应 或更进一步地说 如果输入毛剌只有 1ns 或 1ps 会出现什么情况呢 当然 对于后面两种情况 结果很清楚 即实际器件不会响应 这也提示我们必须处理输 出端的毛剌而不是输入端的 这是因为 在上述例子中 输入脉冲相对而言长一些 对于 那些智能一些的准则而言 不会被当成是毛剌 但对于某些竞争产品 它们在此做了大量 的无用功 最终的结果是居然能对 1ps 的毛剌产生响应 真正让人感兴趣的部分在于 如果您构建了上面的电路 可能没有毛刺 说实在的 这种设计令人不敢恭维 但 154 的 TDLH 与 TDHL 大约为 22ns 这使得它对于 10ns 的输 入响应而言是一个较高的障碍 对于我们所测试的单个元件而言 并没有输出脉冲 但在 供应端可能还是有可测量的微小抖动 为提供对毛刺的处理 所有的 DSIM 元件都应提供一个用户可定义的毛剌阈值时间 Glitch Threshold Time 属性 即 TGxx 此处的 xx 为相应的输出名称 在我们所定义的 TTL 模型中 这些属性都可以被 TTL 元件所覆盖 它们的缺省值为主要的 L H 与 H L 传 播延迟的平均值 设置毛剌阈值时间 Glitch Threshold Time 属性为 0 将允许毛刺通过 或 许你喜欢这种效果吧 上面的图示效果就是将 74154 的属性 TGQ 设置为 0 的结果显示 转自 最后需重点指出的是 如果毛剌阈值时间 Glitch Threshold Time 属性大于 L H 或 H L 传播延迟时间 则该属性值会被忽略掉 这是因为 在输入边沿时刻之后 经过相关时间 延迟 元件就必须改变其输出 它不会再检查是否在不久的将来还有其它的事件会发生 哪怕该事件会取消本次输出 考虑一个对称门器件 假定其传播延迟为 10ns 而其毛剌阈 值时间 Glitch Threshold Time 属性为 20ns 在 t 0ns 时刻 输入变为高电平 而 t 15ns 时 输出变为低电平 您可能会这样认为 输入能传播过去 即输出在 t 10ns 时为高 而 t 25ns 时为低 从而产生一个宽度为 15ns 的脉冲 但因为它小于毛剌阈值时间 所以该脉 冲会受到抑制 事实上并不是如此 原因在于在 t 10ns 时刻 输出必须为高 它不能仍然 保持为低 等到 20ns 时 就象我们的例子所说的那样 才改变 使得第二个边沿到来时产生 一个受抑制的脉冲 只要输出在 t 10ns 时变为高电平 则第二个边沿 t 25ns 将自主地将 其复位 您需要仔细考虑并理解这点 第四章第四章 混合模式仿真分析原理混合模式仿真分析原理 4 1 概述概述 如果将各种数字器件用它们内部电路来进行建模 则任何电路都可以被当成模拟电路 来对待 如将一个 TTL 与非门分解为 8 个晶体管 通过这种方法可以得到非常精确的结果 并会告诉您 7400 门电路如何将 1 8V 的输入确切地转化成 4 3V 的输出 然而 如果对 9 个 门组成的 J K 触发器 再由 4 个触发器组成的 4 位计数器 你就会发现 再采用这种方法 来建立较大的数字电路模型将成为一件折磨人的痛苦漫长经历 来自 实际上 数字电路通常采用事件驱动方式来进行仿真分析 换句话说 只有当电路中 某部分状态发生改变时 仿真器才工作 这与 SPICE 类型的仿真器有极大不同 后者以相 对规律的时间间隔对整个电路进行重复分析 另外 事件驱动数字仿真器仅对三种逻辑感 兴趣 即高 低与未定义 它并不关心真实波形究竟是如何上升或下降的 这两种因素意 味着对给定电路的数字仿真分析将比相同电路的模拟仿真分析方式要快很多 但其代价是 电路真实结果现象的近似处理 特别是无法针对非标准的电压逻辑输入与短时脉冲输入进 行准确建模 来自 最大的困难来自电路中包含不少的模拟与数字电路部分 即要求程序同时使用两种类 型的仿真器 也就是所谓的混合模式仿真器 有多种方法可以实现这种需求 我们的解决 方式是着眼于获取数字分析的最高效率 如果数字部分以模拟方式工作时将付出一些准确 性的代价 例如 4000 系列缓冲器在供电不足时 我们也不试图将之当成一个理想的放大 器 我们的观点是 如果您对模拟响应感兴趣 您就应该使用一个完全意义上的模拟模型 如 SPICE 库中的适当的 MOSFET 管 总之 PROSPICE 混合模式仿真分析按以下方式进行工作 分析电路中各网络 以便确定与其相连的模拟 数字或混合类型元件 如果是模拟器件驱动数字输入 则加入模数转换 ADC 对象 反之亦然 这点说得稍 简单了一些 扩展开来就是 如果是数字器件驱动模拟输入 则加入数模转换 DAC 对象 陈斌文注 来自 之后 除 ADC 元件之外的对象在正常情况下会进行 SPICE 仿真过程 而 ADC 元 件会监视其输入值 在它们认为状态发生改变时创建数字事件 这种处理会导致调用数字 分析过程 并在以后某个时刻创建影响 DAC 输出的事件 根据这些事件而不是模拟信号 发生器电压 DAC 对象产生输出变化后 开始进行模拟仿真分析 当然 事情还不止这些 因为还需考虑所创建的异步数字事件 如数字时钟发生器 及 防止模拟仿真器运行超过这些时间点等因素 但这些也是你应该理解的本质所在 来自 关键在于 在数字部分中可能会产生大量的活动 这点与模拟仿真分析基本无关 除 非它们实际上改变了模拟网络部分的电压值 您可能会在任意模拟部分电路分析过程中 同时处理整个包含几千个数字事件的微处理器模型 4 2 混合模式接口模型混合模式接口模型 ITFMOD 来自 为在 PROSPICE 中设计我们的混合模式仿真方案 我们需考虑应如何给定器件系列的 模拟参数指标问题 这些指标包括 器件的输入输出阻抗 器件的输入逻辑阈值 输出的高低电压电平 器件输出的上升下降时间 可以说 指定 TTL 器件的的上述模拟参数指标是一件相当不爽的事 来自 另外 至少对于初学者而言 在定义供电时还有一个巨大的障碍问题 就如下图所示 的电路中 人们趋向于简化电路原理图而期望得到适宜的结果 当然 此处的问题在于有 一个隐含的前提假设条件 即 7400 可从它的连接到 VCC GND 的隐藏电源管脚获得 5V 供 电 可通过引入器件的 ITFMOD 属性来解决上述问题 它与 MODEL 属性非常类似 也提 供一系列属性值的引用 也能激活网表编译器中的特定机制 以下为它的必要工作步骤 对于任意拥有 ITFMOD 属性的器件而言 在其取得网表结果过程中还会调用另外 一个模型定义 它将指定 ADC 与 DAC 对象的控制参数 以及正负供电管脚名称 如上图 中 U1 A 的 ITFMOD 属性值为 TTL 即 ITFMOD TTL 在得到了供电管脚名称后 即 VCC GND 等 ISIS 将创建一个特定的基本对象 并将其与供电管脚相连 ISIS 按类似于对象的子模型或表单的方式来命名该对象 就如上 图中 供电对象将取名为 U1 A P 当 PROSPICE 仿真一个混合模式电路时 它将创建 ADC 与 DAC 对象 并认为它 们隶属于与它们相连的对象 如上图中 将创建一个名为 U1 A DAC 0000 的 DAC 对象 因为它提供 U1 A 的输出接口 来自 完成这些后 它还有一个巧妙的做法 即它会寻找拥有同一对象名称的供电接口对象 对于上例中的 U1 A 而言将可以找到 U1 A P 然后它将发出指令让 U1 A DAC 0000 对 象从 U1 A P 对象中取得其属性值 该属性值继承自其原始模型的 ITFMOD 属性 因此 在上例中 DAC 对象将根据所定义的 TTL 逻辑属性参数进行后续工作 各供电接口对象都包含一个电池组件 在接口模型定义中拥有 VOLTAGE 属性 TTL 接口模型定义中指定 VOLTAGE 5V 这意味着在上图电路中 在 VCC 与 GND 之间插入了一个 5V 电池 因为这是 7400 器 件的供电管脚所要求的 电池的内部阻抗可通过 RINT 属性来访问 其缺省值为 1 毫欧 这意味着如果您 将一个真实供电端赋值为 VCC VDD 可通过放置一个电源端或电压端来实现 则它将作用 于所定义的电池内部阻抗属性所对应的电阻 因此 在仿真世界里 电池可以流过大电流 如果要取消接口模型中的内部电池作用 可简单地置 RINT 0 4 3 使用使用 ITFMOD 属性属性 现有的接口模型中已定义了如下的 ITFMOD 属性 TTL标准 TTL 74 系列 TTLLS低压 Schottky TTL 74LS 系列 TTLS标准 Schottky TTL 74S 系列 TTLHC高速 CMOS TTL 74HC 系列 TTLHCT输出 TTL 的高速 CMOS TTL 74HCT 系列 CMOS4000 系列 CMOS MMOS微处理器类型 MOS 电路 PLDPLD 类型 MOS 电路 因此 任意新的数字模型中 可对一个元件系列添加一个属性 如 ITFMOD TTL 这些定义保存在文件 ITFMOD MDF 中 该文件位于 models 目录下 在每个定义中 可包含 ADC 与 DAC 对象相关的部分或全部属性 即 可按如下方式 给出 V 正电管脚名称 V 负电管脚名称 VOLTAGE5V标识缺省工作电压 RINT1mA表示内部电池阻抗 其值为 0 时将忽略电池作用 字号 大 中 小 以下文字内容转自 CSDN Arwen Blog 原 blog 无插图 由 Jamsan 补上并整理 Arwen Blog 地址 第五章第五章 模型类型模型类型 概述概述 在 Proteus VSM 中 有两类基本模型 电气模型与图形模型 这也是以后模型划分的 两个大类 5 1 电气模型电气模型 在传统意义上 这类模型与电路仿真分析有关 最常见的 画出模拟一个真实器件的 电路图时就创建了它的电气模型 我们也叫它为原理模型 这些画在模型电路中的基本对 象来自于内建于仿真器的库 这些基本对象不仅包括基本元件 如电阻 电容 二极管与 晶体管等 还包括许多理想化元件 如电压控制电流源 理想运放等 Proteus VSM 提供 大量的基本对象 包括模拟与数字器件 以及本文所涉及到它们的详细信息 您也可以通过使用 VSM API 函数来编程实现电气模型 该接口提供模拟 SPICE 与数 字 DSIM 模型 混合模式器件可通过实现这两种接口的同一模型的 DLL 来完成建模工作 另外 利用 API 实现的电气模型可以直接与图形模型交互 并可实现许多让人兴奋的功能 与应用 第三方电气模型基于标准 SPICE 网表格式 这是事实上存在的 它们可以描述模拟器 件模型 许多生产厂家现在都在他们的网站上提供其产品的 SPICE 模型 在 Proteus VSM 用户手册中说明了如何使用这些模型的方法 5 2 图形模型图形模型 在进行仿真分析时也可让您与模型元件进行交互 在这方面 Proteus VSM 是独一无 二的 直观例子包括 7 段 LED 管以及开关 但更复杂的元件如数字 LCD 显示屏也可以进 行建模 简单器件的建模无需编程就可实现 系统提供了一种解决方案 它可以显示与可 测量的节点电压或逻辑状态相应的给定数目的图形元素 我们称之为主动元件 有源元件 Active Components 然而 使用 VSM API 能使系统的强大功能得到体现 它提供了一套接口 模型可以通 过这些接口完成 Windows 中几乎所有的事情 它可以直接画到原理图上 或嵌入到一个弹 出式菜单中 或同时做这两件事 更多的是 在同一个 DLL 中 可将复杂图形模型与电气 模型同时实现 如数字 LCD 屏模型就是这样的一个典型例子 仿真基本元素仿真基本元素 仿真基本元素是 PROSPICE 的内建对象 要么属于 SPICE3F5 模拟器件 要么属于 DSIM 数字器件 仿真基本元素可在一些器件模型中直接使用 如电阻 电容 二极管 晶体管等 或者可作为更复杂器件的构造模块 如原理模型的一部分 一个仿真基本元素由仿真器通过 PRIMITIVE 属性定义 如 一个 NPN 三极管可能按 如下方式赋值 PRIMITIVE ANALOG NPN 它告诉系统 晶体管将通过 SPICE 进行建模 在此过程中 使用 NPN 基本元素 类似地 一个二输入与非门可按如下方式 PRIMITIVE DIGITAL AND 2 ISIS 库部分中可用的基本元素可以在 ASIMMDLS 与 DSIMMDLS 库中找到 还有一 些特别的基本元素在 REALTIME LIB 库中 它们用于构造主动元件 绝大多数的基本元素模型都具备一些属性 它们可以通过 Edit Component 对话框窗口 进行编辑 各模型还链接到本文档中相应的帮助主题 来自 5 3 原理模型原理模型 针对复杂器件如运放 较大的 TTL 与 CMOS 器件进行建模时 最普通的方法是使用 原理模型 原理模型是构造一个完全不使用基本元素的原理图 它对外的电气特性与待建 模对象完全相同 请注意它不必是待建模 IC 的内部实现原理电路图 在通常情况下确实也 不是 基于测试的目的 一个原理模型通常创建成为待建模对象的子电路 这使得在其父层 电路中画出其测试电路成为可能 我们称这种策略为测试用例 Test Jig 当证明模型的正 确性后 可使用 Model Compiler 命令将之编译成为一个 MDF 模型说明格式 Model Description Format 文件 使用 MODFILE 属性指明相应的 ISIS 库与 MDF 文件之间的关联关系 如 OPAMP lib 中的 741 中 该属性赋值语句为 MODFILE OA BIP 当电路中出现 741 时 ISIS 将之用 OA BIP MDF 中所描述的电路进行替代 更另人叫 绝的是 该模型还带有参数 父对象 此处为 741 的 VALUE 属性用于为模型中的特定元素 选择指定的属性值 这有赖于模型中的一个 MAP ON 脚本块 且一个模型文件可用于多个 运放实例 更多的信息请参阅 ISIS 文档中的参数化电路 Parameterized Circuits 在模拟与数字建模教程中 有针对如何创建新的原理模型的详细说明 5 4 SPICE 模型模型 最初的 Berkeley SPICE 网表格式决定了它成为模拟器件模型的事实标准 大量生产厂 家现在都针对其产品提供了可用的 SPICE 模型 PROSPICE 中已有数千种这样的模型 您 可以自己在 ISIS 库中直接使用任意的 SPICE 模型 在 PROSPICE 的使用 SPICE 模型 USING SPICE MODELS 文档中说明了如何使用 因为这些模型由 SPICE 内核处理 它们在系统中用其余的基本元素进行表示 典型地 它们可以按以下赋值语句方式使用 PRIMITIVE ANALOG SUBCKT SPICEMODEL LM741 NS SPICELIB NATOA 其中 SPICEMODEL 属性表示所使用的 SPICE 模型名称 而 SPICELIB 属性值为包 含它的 SML SPICE 模型库 文件名称 如果 SPICE 模型在 ASCII 形式的普通 SPICE 文件中 您需要使用 SPICEFILE 属性值 5 5 VSM 模型模型 VSM 模型与仿真基本元素相类似 不同之处在于 VSM 模型存在于 DLL 中 而不是在 可执行的 PROSPICE 仿真器中 对于非常复杂的器件如微处理器而言 使用基于 DLL 的 模型提供了另外一种建模途径 Proteus VSM 是唯一还可实现这些模型的图形功能 亦即 不仅向仿真器提供器件的电气模型 而且包含其人机界面接口 该功能的应用场合是相当 的令人眼花缭乱 The possibilities that this unleashes are pretty much mind boggling 本文大部分内容都在说明 VSM API 即 ISIS 与 PROSPICE 与 VSM 模型通信的 C 编 程接口 另外 给出一个简单的模型例子 以便您能着手进行这项工作 一般地 一个 VSM 模型可以用以下赋值语句来实现 PRIMITIVE DIGITAL 8052 MODDLL 8051 DLL 其中 PRIMITIVE 属性值表示该器件将直接由 PROSPICE 直接进行分析 这样 ISIS 不会用 MDF 文件中的内容来替换它 而 MODLL 属性值表示包括 8052 模型的 DLL 文件 名称 请注意 PRIMITIVE 属性的第二个参数 在此为 8052 将传递给 DLL 使得一个 DLL 可以包括多个不同的器件 第六章第六章 模拟元件建模教程模拟元件建模教程 6 1 简介简介 在本教程中 我们将针对继电器进行建模操作 它包含两个基本元素 一个继电器线 圈与一个单端双掷开关 SPDT 这两个基本元素在 ISIS 设备库中已经存在 其中 RELAY A 为线圈对象 而 RELAY B 为开关对象 其图形显示如下图所示 继电器操作很简单 当线圈两端电压低于 Von 时 继电器处于 关闭 状态 则其开 关的公共端 管脚 3 与正常接通 Normally Connected NC 端 管脚 4 相连 当线圈两端电压 上升并超过 Von 后 继电器切换到 接通 状态 其开关的公共端 管脚 3 与正常断开 Normally Open NO 端 管脚 5 相连 在线圈两端电压降到低于 Voff 之前 继电器仍保持 接通 状态 否则 继电器切换回到 关闭 状态 其开关的公共端 管脚 3 与正常接通 Normally Connected NC 端 管脚 4 相连 因此 继电器表现出磁滞现象 切换点电压值相 比 on 比 off 要高 我们应当针对其等价电路的各个元素进行建模 即实现与元素本身具有同样的功能与 瞬时现象的电路 您可以在目录 Samples Tutorials 下找到 AMODTUT DSN 这是本教程的 完全实现版本 6 2 设置测试用例设置测试用例 在开始对继电器建模之前 我们必须做的第一件事是设置一个测试环境 如下图所示 测试环境包括一个继电器线圈对象 来自 DEVICE 库的 RELAY A 与一个继电器开关对 象 来自同一库中的 RELAY B 线圈由一个 Pwlin 信号发生器驱动 而开关连接到一个 10V 电池与两个负载电阻 为了观察继电器的开关动作 将两个电压探针放置在其输出端 并与 Pwlin 信号发生器一起加入到模拟图表中 注意到 Pwlin 信号发生器的 V n 属性值的 赋值集合 它可以产生一个简单的斜坡上升 保持 斜坡下降信号 这些值是随意选取的 如果不满足我们的需要 也可在以后进行修改 6 3 线圈元素建模线圈元素建模 搭建测试环境后 我们现在可以开始对继电器的线圈进行建模工作 在开始之前 我 们必须首先为线圈元素创建一个子模块 以便我们能放置其等价电路 可通过以下操作来 完成这项任务 先用鼠标右键点击线圈对象 然后在线圈对象上点击鼠标左键 这样可调 出 Edit Component 对话框 在 Edit Component 对话框中 编辑元件元素名称为 RL1 A 置其值为 COIL 勾选附 加层次模块 Attach hierarchy module 选项 之后点击 OK 按钮 ISIS 将为线圈对象创建一 个子模块 当设计方案生成网络表之后 线圈对象将被替换为其子模块上的内容 而与线 圈管脚相连的任何连接将成为该子模块上的相应相似名称的接口端子 新模块的名称将为 与线圈的 Reference 属性值 RL1 A 这样保证了它的唯一性 因为从来不会在同一设计中 出现两个名为 RL1 A 的对象 类似地 子模块上的电路的名称将为 COIL 亦即为线圈对 象的 VALUE 属性值 并可以为本设计中所有值为 COIL 且其附加层次模块 Attach hierarchy module 选项被选中的那些对象所共用 为了查看与特定对象相关联的子模块 就象本电路中一样 您必须放大进入它 可以 通过将鼠标指向该对象 然后按下 CTRL Z 放大 现在就尝试吧 编辑窗口与概览窗口 将被重画 并显示一个空白模块 若要退出 则按 CTRL X 退出 这种方法太不通用了 一般而言 CTRL Z 为撤销操作 而 CTRL X 为剪切操作 幸而 7 1 版本之后 软件修改了 您可以通过右键菜单进入 退出子模块 陈斌文注 现在开始处理我们的模型 进入上面所描述的线圈子模块 即其等价的电路图 下图 即为我们将用的线圈全部电路图 上图中所有对象均为 PROSPICE 基本元素 来自于 ASIMMDLS 库 该库可通过设备 库选择对话框进行选择 不要使用编辑菜单中的 Pick Device Symbol 菜单项 除非 DEVICE 库中的器件被错误放置时 the Pick Device Symbol command on the Edit menu should not be used in case devices fromthe DEVICE library are picked by mistake 可通过选择 Terminals 图标访问缺省终端 选择 Script 图标时将放置 DEFINE 与注释脚本 看来写这个 SDK 的 2000 年确实离现在很远了 那时的软件咋这么难用的呢 说明书 绕口得很 操作也不直观 幸亏现在的软件好用了 这部分您能看明白就看 看不明白 也没有关系 用用软件习惯了就好了 陈斌文注 6 4 线圈电路概述线圈电路概述 线圈等价电路的目的在于取得线圈电压 其 C1 与 C2 两端之间的电压 以及相应的 Von 与 Voff 参数 根据线圈的 On 或 Off 状态来产生一个正或负的门信号输出 在其 GATE 与 GATE 端 模型的输入端包括串联的电感 L1 与电阻 R1 电感表示线圈的感应系数 而电阻表示 线圈的阻抗 电感与电阻的值被设置为成对映射值 mapped values 一个映射值由简单的 属性名称与成对的 符号组成 如 值 2 表示器件的值被设置为映射值的 2 倍 当 ISIS 在进行仿真分析前 需将模型 的网络表 即 MDF 文件 链接到设计网络表 这时 它会将映射值 即及其之间的名称 用 相应名称属性的值进行代替 这种代替是基于字面上直接进行的 例如 如果 BETA 属性 通过以下语句进行赋值 BETA 10 20 则器件的映射值 2 将被替换为 10 20 2 字符串 直接用字符串 10 20 进行替换 因为 ISIS 并不会试图进行映 射属性的编译解析 尽管该属性被赋予了一个表达式 该赋值语句还是有用的 因为所有 的值与属性赋值语句都将作为 PROSPICE 的表达式 在使用之前会自动计算 但是 因为 PROSPICE 所使用的表达式计算器处理时 其乘法运算的优先级高于加法运算 PROSPICE 将计算该表达式为 10 20 2 50 或许这不是您所期望的 如果您担心会发生 这样的错误 您应该声明器件值为 2 这在展开后成为 10 20 2 其运算结果为正确的 30 2 60 映射属性值可以通过以下两种方式之一进行赋值 作为父器件的一个属性 或在等价 的电路图中通过一个 DEFINE 或 MAP ON 脚本 如果一个属性同时实现这两种方式的赋值 则其在父器件中的方式拥有最高的优先级 这种优先策略很重要 因为它可以使得用户能 修改那些缺省值 因此 在我们的模型中 我们通过 DEFINE 脚本指定电感及串联电阻的 值分别为 100mH 与 100 欧姆 然后 该模型的用户可以指定其它值 其方法是在父器件的 属性列表中添加一个赋值语句即可 模型的输出端包括一个电压控制开关 VSW2 两个电池 GB1 与 GB2 以及一个串联电 阻 R4 当开关断开时 输出电压为 2V 该值由 GB2 与 R4 确定 当开关接通时 输出电 压为 2V 由 GB1 确定 R4 作为 GB2 的小电流开路支路 但不幸的是 若 PROSPICE 的 VSWITCH 模型的输出阻抗在不低于 Von 时为 Ron 而 不高于 Voff 时为 Roff 则在这些线性电压之间它是线性的 因此我们不能使用 VSW2 作 为磁滞现象的直接模型 当然我们也不能自己去做这件事 这是由 R2 与 VSW1 并联后与 R3 组成的分压电路的任务 R1 与 R2 的值被置为原来的 1 10 且不能使电感与电阻过载 基于后一种原因 R2 与 R3 均基于 R1 进行参数化 成比例 设置 开关的接通电压 通过 VON 属性指定 设置为 0 1 因为这是当输入到线圈两端 电压为时通过分压器后的输出电压 为使开关能在其 接通 断开 状态之间 干净 地切换 其关断电压 通过 VOFF 属性指定 也设置为同样的值 现在 我们必须确定 VSW1 的接通阻抗 因为一旦线圈接通后 即 VSW1 与 VSW2 都 接通 分压器上半部分的阻抗即为所求 假定线圈两端电压为线圈的值 则分压 器的输出为 0 1 开关的断开电压由 VOFF 属性值设置 当然 用下图来解释效果会 更好一些 应用欧姆定律 或分压原理 由上图可知 其中与都是映射参数 R2 与 R3 分别为 9 与 为线圈 映射阻抗 指定为 R1 的值 且 Ron 为我们所要求的 VSW1 的未知值 如果您进行代数计 算 可求得 Ron 为 这也是赋给 VSW1 的 RON 属性的表达式形式的值 等价电路通过与其父器件管脚同名的端口建立与父器件的连接关系 本例中为 C1 与 C2 因为父器件中的管脚为无源类型 我们可以使用缺省端口 对于其它类型的管脚 您 应该使用相应类型的端口 在对一个设计生成网络表时 如果 ISIS 发现某一个父器件的管 脚与其子模块中的相应端口不相匹配 如 我们忘记连接它们 或者我们连接了但却设置 了一个不匹配的类型 它就会报告一个警告 请注意 ISIS 对每个父器件的管脚仅检查那些 至少有一个相似名称的端口 它不会报告其它那些名称不匹配的端口 如果您在子模块中 有不止一个端口对象引用了父器件的同一个管脚 您应特别注意 ISIS 不会处理其中的一 个或更多的终端名称错误 因它只处理一个 您经常会发现 你所要建模的元件或对象并不是您自己所创建的 它的管脚名称还是 隐藏的 如本例中的继电器线圈 现在问题来了 您如何知道父器件的管脚名称呢 答案 是将鼠标移动到管脚末端 则在状态栏中会显示该管脚的相关信息 包括它的名称 数量 与电气类型等 为了与继电器开关的等价电路相连接 我们应再次使用 Default 端口 但是这次 我们 将该端口的网络名称设置成以星号 开始 当 ISIS 创建仿真网络表时 所有同一父部 件 本例中为 RL1 的不同子模块中以星号开始的类似名称的网络对象都将连接在一起 并 合并成为一个网络对象 这种功能将为不同子模块的对象之间的连接提供支持 尤其是在 对多元素器件进行建模时有用 6 5 开关部件建模开关部件建模 完成线圈部件的建模工作后 开关部件的等价电路相应工作就显得比较直观了 其子 模块如下图所示 与处理继电器线圈一样 在我们编辑处理开关的等价电路之前 我们应先编辑 RELAY B 元件实例对象 设置其引用名称为 RL1 B 设置其值为 SWITCH 并选中其 Attach Hierarchy Module 复选框以创建其子模块以便处理其等价电路 为进入到等价电路 我们需要将鼠标移动到开关对象上 按下 CTRL Z 之后就可以 按通常方式进入到等价电路 该电路包括两个电压控制开关 VSW3 与 VSW4 两个电容 C1 与 C2 以及 4 个二极管 D1 D4 所有器件都来自 ASIMMDLS 库 它可通过 Device Library Selector 对话框进行选择 同样 当错误选择 DEVICE 中的器件时不要使用 Edit 菜 单下的 Pick Device Symbol 子菜单项 选择 Terminals 图标后 Default 端口才可用 最后 选中 Script 图标后可以放置 DEFINE 脚本 该脚本可以在 ISIS 中编辑 也可在外部文本编 辑器中进行编辑 请参阅 ISIS 手册中的 Placing ISPICEMODEL getspicemodel CHAR device IDSIMMODEL getdsimmodel CHAR device VOID plot ACTIVESTATE state VOID animate INT element ACTIVEDATA newstate BOOL actuate WORD key INT x INT y DWORD flags private ICOMPONENT component POINT textorg HTEXTSTYLE textstyle CHAR readout 10 您将会发现 类 READOUT 派生于 并实现 接口 IACTIVEMODEL 请特别注意 IACTIVEMODEL 是一个抽象类 因此类 READOUT 必须实现其所有函 数 即使这些函数什么都不做 有关如何获得一个由 READOUT KEY 所定义的产品 ID 的说明信息 请参阅 Licencing Interface 一节 9 7 创建模型及许可创建模型及许可 在每一个 VSM DLL 中均要求包括以下代码 它用于 ISIS 与 PROSPICE 完成图形与电 气模型的创建工作 extern C IACTIVEMODEL export createactivemodel CHAR device ILICENCESERVER ils Exported constructor for active component models if ils authorize READOUT KEY return new READOUT else return NULL extern C VOID export deleteactivemodel IACTIVEMO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南宁采购流程管理制度
- 邢台新能源职业学院《经济思想史》2025-2026学年期末试卷
- 沈阳农业大学《旅游消费者行为学》2025-2026学年期末试卷
- 石家庄金融职业学院《农村经济管理》2025-2026学年期末试卷
- 沈阳体育学院《全新大学英语》2025-2026学年期末试卷
- 山西医科大学《网络舆情与概论》2025-2026学年期末试卷
- 山西医科大学《犯罪心理学》2025-2026学年期末试卷
- 山西电力职业技术学院《国民经济统计学》2025-2026学年期末试卷
- 山西经贸职业学院《细菌学检验》2025-2026学年期末试卷
- 沈阳农业大学《刑诉法》2025-2026学年期末试卷
- 空压机产品标准化设计方案
- 2026年南京机电职业技术学院单招职业技能考试必刷测试卷附答案
- 债务优化服务合同范本
- 胸腔穿刺知识培训课件
- 2025年公司代收款委托书(委托第三方代收款协议书范本)
- 家庭宽带网络知识培训课件
- DB45-T 2721-2023 珍贵树种移植技术规程
- 门面装修备案申请书
- 智慧树知道网课《幸福家庭建设》课后章节测试满分答案
- 明朝内阁制度解读
- 索尼摄像机HDR-CX180E说明书
评论
0/150
提交评论