Sida 1 av 2
Emulera mikroprocessorer/mikrokontrollanter i SPICE...
Postat: 8 oktober 2006, 14:39:38
av Seven11
Är det någon som vet hur en mikrokontrollant/mikroprocessor emuleras i SPICE? Det borde ju vara så att komponenten byts ut ben för ben mot något motsvarande, typ ett input ben motsvaras av några komponenter, ett output ben av några andra komponenter osv... eller vad tror ni?
Postat: 8 oktober 2006, 14:53:13
av pagge
Mer komplicerade digitala kretsar som t.ex. en uC skulle jag tro simuleras med hjälp av VHDL, ett språk utvecklat för att simulera avancerade digitala kretsar och sedan vidareutvecklat för att även kunna skapa avancerade digitala kretsar.
Postat: 8 oktober 2006, 15:37:16
av Seven11
självklart används VHDL för att simulera µC men verkligen inte i SPICE applikationer. För att överhuvudtaget kunna infoga en komponent i SPICE så måste den kunna modelleras som en kombination av enklare krets element, tex (o)beroende ström och spänningskällor, induktorer, kapacitorer, resistorer eller liknande. Så med andra ord borde det vara så att varje ben modelleras beroende på om det är satt som ingång/utgång eller liknande...
Postat: 8 oktober 2006, 18:52:13
av Andax
Proteus VSM (Virtual System Modelling)
http://www.labcenter.co.uk/index_uk.htm kan simulera massa olika mikrokontrollrar i en mixad SPICE modell.
De gör en speciell DLL för varje typ av mikrokontroller som sedan anropas av deras spice version.
På så vis kan man testa både sitt program OCH elektroniken innan man byggt något.

Postat: 8 oktober 2006, 19:30:13
av Seven11
jo jag känner till Proteus, använde det ett tag... men vad jag undrar över är hur det fungerar rent matematiskt och programmeringsmässigt. Håller nämligen på med en egen SPICE version där jag vill ha stöd för att kunna infoga µC...
Postat: 8 oktober 2006, 20:56:44
av Andax
TJa, det beror väl på... Redan nu finns det väl stöd i open-source versionerna för mixed simulation. Det borde väl finnas ett gränssnitt hur en digital krets skall kopplas i källkoden. Eftersom du själv håller på med en SPICE version kan du väl berätta om hur du lagt upp det.
Att simulera en MCU är ju i princip inte speciellt svårt (beror ju givetvis på grad av sofistikering). Man får modellera upp register, adressbuss, databus, programräknare mm. Sedan får man göra ett program som kan tolka och exekvera maskinkodsinstruktionerna.
Postat: 8 oktober 2006, 22:33:59
av Seven11
Jag gör precis som orginal SPICE gör... bygger upp en systemmatris som löses med LU Decomp. för linjära fallet och Newton-Raphson metoden för icke linjära scheman. Problemet är att man i båda fallen ställer upp nodanalys former (även om det i LU D och NR är förenklingar av nodanalysen) men det är svårt att skriva en formel för en µCPU

så vad jag antar att man för en Output pinne tex använder en modell med en kondensator, en resistor och en oberoende ström eller spännings källa. Men sen vet jag inte om det gäller för alla fall av Output pinnar, om det finns olika typer samt hur man skriver för Input pinnar osv. När man väl fått reda på dom modellerna (om det är som jag tror) så borde det ju inte vara så svårt att fortsätta...
Jag har redan skrivit hyffsade modeller för en x86 CPU, PIC och 65xx MCU men det måste fyllas på i alla 3 fallen med rutiner som kopplas till SPICE delen.
Postat: 8 oktober 2006, 22:36:57
av bengt-re
I det flesta fall är det effektivare att bygga protoyper än att simulera då simuleringen ändå aldrig ger säkra svar och riskerar att dra in nya felkällor.
Använd hellre bara simulering på just den pinnen eller den funktionen du vill ha svar på och se till att skapa en bra modell för just detta.
Proteus VSM är aning bättre än totalt värdelöst.... Det är för mycket fel i miljön för att den skall kunna ge några svar du inte kan få på annat sätt.
Postat: 9 oktober 2006, 09:50:01
av pagge
Jag vet inte om jag missar frågan, men PSpice gör iallafall en helt digital simulering av digitala kretsar, endast 1,0,H,L,Z m.fl. dvs. de logiska nivåerna i VHDL. Inga spänningar/strömmar är inblandade där, endast digitala fenomen som propagation delay m.m.. Sen i övergången från den digitala domänen till den analoga (dvs när man hakar på en analog komponent på en digital nod eller vice versa) så modeleras en utgång med t.ex. utresistans drivförmåga och en digital ingång med incapacitans m.m. Först iomed övergången tar den vanliga spice simulatorn vid.
Postat: 9 oktober 2006, 18:04:30
av Seven11
pagge: är du säker på det? källa?
Postat: 11 oktober 2006, 14:00:37
av pagge
Min lärare

. Det var vad han påstog under våran elektronikkonstruktionskurs. Det stämmer ju även om du testar att simulera nån digital krets. Sätt en prob på utgången på en digital krets då det bara är andra digitala ingångar kopplade till den. Då blir simulerings tracen bara 0,1,X m.m. Kopplar du däremot dit ett 10Megs motstånd paralellt mot jord (som inte borde göra nån skillnad praktiskt) så är det helt plötsligt en analog spänning du får ut som simuleringstrace på den noden.
Edit: Lägger till en liten test simulering. Notera hur det är digitala traces på nod 1 och 3 som inte har analoga komponenter men hur det blir analog simulering av nod 2.

Postat: 12 oktober 2006, 23:23:36
av Seven11
jag tror snarare att det emuleras som analoga signaler och skrivs ut som digitala värden... här verkar det dock som om det är analoga signaler hela vägen.
Postat: 13 oktober 2006, 00:31:04
av Andax
Postat: 13 oktober 2006, 07:37:44
av pagge
Hmm. Jag ser inte anledningen till varför de skulle simuleras som analoga signaler. Göra en heldigital simulering ger ju tillförlitliga resultat och är otroligt mkt snabbare. Men jag vet ju som sagt inte, posta gärna vad du kommer fram till. Jag är nyfiken hur det ligger till.
Postat: 17 april 2007, 22:06:55
av ucadv
pagge>>
visst simuleras en del digitala kretsar analogt. Det gör man när man utvecklar avancerad ASIC. Hur skulle vi annars kunna klocka en processor i 5GHz??
dock får vi vanliga dödliga förlita oss på "mixad" simulering (om du nu inte råkar ha en superdator i källaren). Det finns varianter av Spice som även hanterar digitala nätlistor (skapade från VHDL eller Verilog).
/uc