Hallo zusammen! Ich bin hier gerade dabei für ein Schulprojekt eine Schaltung in LT Spice zu simulieren und brauche dafür einen 74HC148 als Spice Modell, was ich auch gefunden habe. Nun habe ich allerdings das Problem, dass ich es nicht einbinden kann. Habe bis jetzt mal ein Standart DIP16 Gehäuse benutzt, Value 74HC148 eingegeben, sowie Spice Directive und .txt Datei erstellt. Allerdings passt das Spicemodell irgendwie nicht zum Programm und bringt andauernd Fehler... Kann mir jemand helfen? Unten seht ihr noch das Modell! Vielleicht kann es mal jemand ausprobieren und sagen, ob und wie es funktioniert hat. Bitte helft mir, bevor ich meinen PC an die Wand haue! Gruß Markus ------------------------------------------------------------------------ --- * 74HC148 PRIORITY ENCODER 8-3 LINE * * HIGH-SPEED CMOS LOGIC DATA BOOK, AUG 1989, TI * JLS 8-26-92 REMODELED USING LOGICEXP, PINDLY, AND CONSTRAINT DEVICES * .SUBCKT 74HC148 IN0_I IN1_I IN2_I IN3_I IN4_I IN5_I IN6_I IN7_I EI_I + A0_O A1_O A2_O GS_O EO_O + OPTIONAL: DPWR=$G_DPWR DGND=$G_DGND + PARAMS: MNTYMXDLY=0 IO_LEVEL=0 * UHC148LOG LOGICEXP (9,14) DPWR DGND + IN0_I IN1_I IN2_I IN3_I IN4_I IN5_I IN6_I IN7_I EI_I + IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7 EI + A0 A1 A2 GS EO + D0_GATE IO_HC + IO_LEVEL={IO_LEVEL} + + LOGIC: + IN0 = { IN0_I } + IN1 = { IN1_I } + IN2 = { IN2_I } + IN3 = { IN3_I } + IN4 = { IN4_I } + IN5 = { IN5_I } + IN6 = { IN6_I } + IN7 = { IN7_I } + EI = { EI_I } + IN0BAR = { ~IN0 } + IN1BAR = { ~IN1 } + IN2BAR = { ~IN2 } + IN3BAR = { ~IN3 } + IN4BAR = { ~IN4 } + IN5BAR = { ~IN5 } + IN6BAR = { ~IN6 } + IN7BAR = { ~IN7 } + EIBAR = { ~EI } + + A0 = { ~(EIBAR & ((IN1BAR & IN2 & IN4 & IN6) | + (IN3BAR & IN4 & IN6) | (IN5BAR & IN6) | IN7BAR)) } + A1 = { ~(EIBAR & ((IN2BAR & IN4 & IN5) | + (IN3BAR & IN4 & IN5) | IN6BAR | IN7BAR)) } + A2 = { ~(EIBAR & (IN4BAR | IN5BAR | IN6BAR | IN7BAR)) } + EO = { ~(IN0 & IN1 & IN2 & IN3 & IN4 & IN5 & IN6 & IN7 & EIBAR) } + GS = { ~(EO & EIBAR) } * UHC148DLY PINDLY (5,0,9) DPWR DGND + A0 A1 A2 GS EO + IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7 EI + A0_O A1_O A2_O GS_O EO_O + IO_HC + MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL} + + BOOLEAN: + DATAHI = { IN7=='1 & IN6=='1 & IN5=='1 & IN4=='1 & + IN3=='1 & IN2=='1 & IN1=='1 & IN0=='1 } + ENABLE = { CHANGED(EI,0) } + + PINDLY: + A2_O A1_O A0_O = { + CASE ( + ENABLE, DELAY(-1,26NS,49NS), + DELAY(-1,23NS,45NS) + ) + } + GS_O = { + CASE ( + ENABLE, DELAY(-1,19NS,36NS), + DELAY(-1,25NS,48NS) + ) + } + EO_O = { + CASE ( + ENABLE, DELAY(-1,22NS,41NS), + DELAY(-1,20NS,38NS) + ) + } *
Die Logikbeschreibungen mit LOGIC, LOGICEXP, PINDLY usw. sind kein gewöhnliches Spice. Bist du sicher, dass LTspice diese Erweiterungen beherrscht? Das Modell ist wohl eher für PSpice gemacht.
Zunächst mal danke für deine Antwort! Sicher bin ich leider nicht. Hab nur nach Spice modellen gesucht und wußte nicht, dass es einen Unterschied zwischen PSpice un LT gibt... Kannst du mir vielleicht sagen, wo ich so einen 74HC148 für LTSpice bekomme? Hab bisher nur nach Spice modell gegoogelt und alles was ich gefunden habe sah genauso aus... Gruß Markus
Die SPICE-Programme sind "nur" bezüglich anaoger ICs/Bauteile kompatibel. Digitale Elemente sind leider in jedem SPICE-Programm anders definiert. Male einfach diese Schaltung mit LTspice ab und nenne sie 74HC148.asc. So kompliziert ist die nicht. http://www.classiccmp.org/rtellason/chipdata/mm74hc148.pdf Dann machst du ein Symbol mit dem Namen 74HC148.asy. Beide Dateine kopierst du in das Verzeichnis in dem den der Top-level Schltplan ist. Dort kannst du jetzt dein Symbol 74HC148 einügen und damit simulieren.
Danke für die Info, aber was heißt einfach abmalen? Ich muss doch auch irgendwo die Funktion genau definieren? Hat jemand einen Link für mich, wo ich genau lesen kann, wie man sowas genau aus einem Datasheet umsetzt? Gruß Markus
Da ist das Schaltbild mit NAND und Invertern drin. http://www.classiccmp.org/rtellason/chipdata/mm74hc148.pdf Die benötigten Grundelemnte gibt es in LTspice im Ordner [Digiltal]. Ich habe da schon kompliziertere Schaltungen abgezeichnet.
Helmut S. schrieb: > Die benötigten Grundelemnte gibt es in LTspice im Ordner [Digiltal]. Was bei denen im Vergleich zum Modell im Originalpost ein wenig fehlt, ist das Timing. Wenn ich das richtig sehe, haben die LTspice-Gatter keine Verzögerungszeit. Oder kann man die vielleicht irgendwo als Parameter angeben?
Yalu X. schrieb: > Oder kann man die vielleicht irgendwo als > Parameter angeben? Kann man. Und noch viel mehr. Aus dem Manual:
1 | Name Default Description |
2 | Vhigh 1 Logic high level |
3 | Vlow 0 Logic low level |
4 | Trise 0 Rise time |
5 | Tfall Trise Fall time |
6 | Tau 0 Output RC time constant |
7 | Cout 0 Output capacitance |
8 | Rout 1 Output impedance |
9 | Rhigh Rout Logic high level impedance |
10 | Rlow Rout Logic low level impedance |
HildeK schrieb: > Kann man. Und noch viel mehr. Ah, vielen Dank für den Hinweis. Das klingt interessant. > Aus dem Manual: Ja, das hätte ich vielleicht erst mal aufschlagen sollen. Asche auf mein Haupt :-(
Fairerweise sollte man aber erwähnen, dass auch LTSpice für den Mixedmode-Krams ein eigenes Modell ('A') eingeführt hat. Auch der Varistor ist damit modelliert. Mittlerweile ist dieses A-Modell etwas besser im Handbuch dokumentiert, früher wurde darum ein größeres Geschiss veranstaltet... Es wird aber immer noch davon abgeraten, A-Modelle direkt zu benutzen, weil die sich scheinbar öfter mal ändern zwischen den Programmversionen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.