This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ISO1042:在仿真 ISO1042隔离式 CAN 收发器的 SPICE 模型时出错

Guru**** 2353820 points
Other Parts Discussed in Thread: ISO1042, PSPICE-FOR-TI
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/isolation-group/isolation/f/isolation-forum/1418906/iso1042-error-while-simulating-spice-model-of-iso1042-isolated-can-transceiver

器件型号:ISO1042
Thread 中讨论的其他器件: PSPICE-FOR-TI

工具与软件:

大家好!

我正在尝试在远征 AMS (仿真工具)中对 IS01042 CAN 收发器 SPICE 模型执行功能仿真。  以下是我针对同一电路拥有的电路-  

运行仿真后、我得到一个错误为:  

"+对象"E7":保利名称的声明不正确。"

我还尝试了在 LTSpice 中进行仿真、其中我得到一个错误为-  

"节点太少:e7 VCC 0 1700"

如何解决此问题并使 SPICE 模型正常工作?

请在下面找到 SPICE 模型的子电路以供参考。 我还附加了模型文件(.lib)。 -

. SUBCKT ISO1042 VCC TXD RXD GND VCC2 CANH CANL CAN_GND
E1 N01 CAN_GND 值={VALIF ((V (OUT)==1)、2.5、5)* V (UVLO_VCC2)* V (UVLO_VCC)}
E2 N02 CAN_GND 值={VALIF ((V (OUT)==1)、2.5、0)* V (UVLO_VCC2)* V (UVLO_VCC)}

EROP VTR_P GND 表{V (VCC、GND)}
+(1 0.7)
+(10 7)
Eron VTR_N GND 表{V (VCC、GND)}
+(1 0.3)
+(10 3)
Ethr VTHR GND 值={V (VTR_N、GND)* V (OUT、GND)+ V (VTR_P、0)*(1-V (OUT、GND))}
EOUT OUT OUT OUT OUT OUT GND 值={0.5*(Sgn (V (N03、VTHR))+ ABS (Sgn (V (N03、VTHR)))}

E4 CAN_DIFF 0值={VALIF ((V (CANH)-V (CANL)>=750M)、0、V (VCC))* V (UVLO_VCC)}
RIN_H N01 CANH 40.
RIN_L N02 CANL 40.
Rdiff CANL CANH 30k
Cdiff CANH CANL 12p.
CIN_L CANL CAN_GND 24p
CIN_H CANH CAN_GND 24p
R_TXDDelay N06 N03 100
C_TXDDelay N03 0 690P
C2 N04 0 690P
R2 N04 CAN_DIFF 100

EROP2 VTR_P2 GND 表{V (VCC、GND)}
+(1 0.7)
+(10 7)
ERON2 VTR_N2 GND 表{V (VCC、GND)}
+(1 0.3)
+(10 3)
ETHR2 VTHR2 GND 值={V (VTR_N2、0)* V (RX_DIGITAL、GND)+ V (VTR_P2、GND)*(1-V (RX_DIGITAL、GND))}
EOUT2 RX_DIGITAL GND 值={0.5*(Sgn (V (N04、VTHR2))+ ABS (Sgn (V (N04、VTHR2)))}

E3 N05 0值={V (VCC)* V (RX_DIGITAL)}
R4 RXD N05 20
R3 CAN_GND 0 1G
e5 UVLO_VCC2 0值={VALIF ((V (VCC2)< 4.5)、0、1)}
E6 UVLO_VCC 0值={VALIF ((V (VCC)<1.71)、0、1)}
E1 N06 0 TXD 0 1
R5 VCC TXD 5Meg
E7 VCC GND 1700

. 结束

e2e.ti.com/.../iso1042.lib

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Umesh、  

    感谢您联系我们。 ISO1042模型专为 PSPICE-FOR-TI 工具而设计、其中仅使用 PSPICE 模型和语法进行了验证。 很遗憾、LTSPICE 或 远征无法提供很多帮助。  

    话虽如此、我知道有时不同的 SPICE 工具对等式控制源使用不同的语法。 我会首先将所有"E"源更改为"B"源。  

    此致!
    Andrew

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Andrew、您好!

    感谢您的答复。

    您能否使用 B 源代码提供此模型的正确语法?

    此外、如果可能、您能否提供声明 E7组件的替代语法?

    此外、对于所有 TI 模型还是仅针对 ISO1042、仅针对 PSPICE-FOR-TI 进行了验证?

    因为 以前观察到所有的远征 SPICE 模型都可以在 ISA Server 中正常工作。

    再次感谢您的答复!

    此致、

    阿马特·乌姆斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Umesh、  

    您能用 B 源代码提供此型号的正确语法吗?

    请注意、我们官方仅支持 PSPICE-FOR-TI。 但是、请参阅随附的代码作为起点。   

    .SUBCKT ISO1042 VCC TXD RXD GND VCC2 CANH CANL CAN_GND
    B1 N01 CAN_GND V=IF(V(OUT)==1, 2.5, 5)*V(UVLO_VCC2)*V(UVLO_VCC)
    B2 N02 CAN_GND V=IF(V(OUT)==1, 2.5, 0)*V(UVLO_VCC2)*V(UVLO_VCC)
    .SUBCKT X1 INPUT_ST_CMOS OUT IN VCC VEE
    ETRP_P VTR_P VEE TABLE {V(VCC,VEE)} = (1,0.7) (10,7)
    ETRP_N VTR_N VEE TABLE {V(VCC,VEE)} = (1,0.3) (10,3)
    ETHR VTHR VEE VALUE = {V(VTR_N,VEE)*V(OUT,VEE) + V(VTR_P,VEE)*(1-V(OUT,VEE))}
    EOUT OUT VEE VALUE = {0.5*(SGN(V(IN,VTHR)) + ABS(SGN(V(IN,VTHR))))}
    .ENDS
    X1 tx_buffer OUT N03 VCC 0 X1 
    B4 CAN_diff 0 V=IF(V(CANH)-V(CANL)>=750m, 0, V(VCC))*V(UVLO_VCC)
    Rin_H N01 CANH 40
    Rin_L N02 CANL 40
    Rdiff CANL CANH 30K
    Cdiff CANH CANL 12p
    Cin_L CANL CAN_GND 24p
    Cin_H CANH CAN_GND 24p
    R_TXDDelay N06 N03 100
    C_TXDDelay N03 0 690p
    C2 N04 0 690p
    R2 N04 CAN_diff 100
    .SUBCKT X2 INPUT_ST_CMOS OUT IN VCC VEE
    ETRP_P VTR_P VEE TABLE {V(VCC,VEE)} = (1,0.7) (10,7)
    ETRP_N VTR_N VEE TABLE {V(VCC,VEE)} = (1,0.3) (10,3)
    ETHR VTHR VEE VALUE = {V(VTR_N,VEE)*V(OUT,VEE) + V(VTR_P,VEE)*(1-V(OUT,VEE))}
    EOUT OUT VEE VALUE = {0.5*(SGN(V(IN,VTHR)) + ABS(SGN(V(IN,VTHR))))}
    .ENDS
    X2 rx_buffer RX_digital N04 VCC 0 X2 
    B3 N05 0 V=V(VCC)*V(RX_digital)
    R4 RXD N05 20
    R3 CAN_GND 0 1G
    B5 UVLO_VCC2 0 V=IF(V(VCC2) <4.5, 0,1)
    B6 UVLO_VCC 0 V=IF(V(VCC) <1.71, 0,1)
    E1 N06 0 TXD 0 1
    R5 VCC TXD 5Meg
    B7 VCC 0 R=IF(V(VCC) == 5, 1500, V(VCC)/3.5m)
    .ENDS

    此外、是所有 TI 型号都采用了这种说法、还是仅针对 ISO1042采用了仅针对 PSPICE-for-TI 的验证?

    如前所述、TI 支持  PSPICE-FOR-TI 工具。 TI 其他团队制作的模型可以支持各种软件、也可以简单地在其他地方运行。  

    我希望这对您有所帮助。
    此致!
    Andrew