TXRX Tillståndsmaskin
TXRX Tillståndsmaskin
Tog det här som en övning att designa logik för 4-bits seriell synkroniserad dataöverföring.
Muxen har en "idle", en nolla, sedan en startbit, etta, sedan D0 till D3 och sist en stoppbit, nolla.
GO måste gå hög för att starta TX och så länge inte detta skett så är signalen RDY hög.
Mottagaren detekterar startbiten och påbörjar sedan inskiftning av D0 till D3.
Sedan kollas att stoppbiten är korrekt. OK går hög en klockcykel. Om stoppbiten är
hög så går ERR hög och förblir hög tills nästa startbit anländer.
Fick lite huvudbry då skiftregistret stegade in en bit för mycket men ändrade till negativt flanktriggad och då fungerar det som tänkt.
Vore kul att bygga med TTL-logik eller CMOS.
Några mer funktioner för att latcha data till muxen och och styrning mha RDY- OK- och ERR-signalerna vore önskvärt.
Har testat det hela i LogiSim. Trevlig programvara.
Muxen har en "idle", en nolla, sedan en startbit, etta, sedan D0 till D3 och sist en stoppbit, nolla.
GO måste gå hög för att starta TX och så länge inte detta skett så är signalen RDY hög.
Mottagaren detekterar startbiten och påbörjar sedan inskiftning av D0 till D3.
Sedan kollas att stoppbiten är korrekt. OK går hög en klockcykel. Om stoppbiten är
hög så går ERR hög och förblir hög tills nästa startbit anländer.
Fick lite huvudbry då skiftregistret stegade in en bit för mycket men ändrade till negativt flanktriggad och då fungerar det som tänkt.
Vore kul att bygga med TTL-logik eller CMOS.
Några mer funktioner för att latcha data till muxen och och styrning mha RDY- OK- och ERR-signalerna vore önskvärt.
Har testat det hela i LogiSim. Trevlig programvara.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: TXRX Tillståndsmaskin
Testade med att ladda en serie 4-bits tal från ett minne och överföra.
I tur och ordning överförs 1,2,3,4,5,6,7,8 och sedan låses överföringen
tills G aktiveras på nytt och samma sekvens upprepas.
Tänker mig mottagardelen inbyggd i någon pryl som innehåller någon IC
som behöver initieras. Och sändardelen som en slags programmerare som man
ansluter för att konfigurera prylen med, vid behov.
I tur och ordning överförs 1,2,3,4,5,6,7,8 och sedan låses överföringen
tills G aktiveras på nytt och samma sekvens upprepas.
Tänker mig mottagardelen inbyggd i någon pryl som innehåller någon IC
som behöver initieras. Och sändardelen som en slags programmerare som man
ansluter för att konfigurera prylen med, vid behov.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: TXRX Tillståndsmaskin
Vet inte om någon har ett tips på hur jag får 2 klockor
med samma frekvens men som ligger ur fas att synkronisera ett antal klockcykler?
När tex startbiten kommer så ska klockan hos RX-delen läggas i fas med TX-klockan.
med samma frekvens men som ligger ur fas att synkronisera ett antal klockcykler?
När tex startbiten kommer så ska klockan hos RX-delen läggas i fas med TX-klockan.
Re: TXRX Tillståndsmaskin
Jag har aldrig byggt mottagning i hårdvara, däremot skrivit i Z80-assembler på ABC80.
Den var dock rätt dåligt optimerad (jag gick på högstadiet eller första året på gymnasiet på den tiden). Först låg en loop och väntade på startbit. Sen var det en fördröjning på en halv bit-längd för att hamna mitt i biten, och sen klockades bitarna in med en bit-längd emellan.
Jag tror att du på mottagarsidan behöver en klocka som är typ 4-5 gånger snabbare än på sändarsidan, just för att kunna se till att du hamnar mitt i bitarna när de ska klockas in.
Den var dock rätt dåligt optimerad (jag gick på högstadiet eller första året på gymnasiet på den tiden). Först låg en loop och väntade på startbit. Sen var det en fördröjning på en halv bit-längd för att hamna mitt i biten, och sen klockades bitarna in med en bit-längd emellan.
Jag tror att du på mottagarsidan behöver en klocka som är typ 4-5 gånger snabbare än på sändarsidan, just för att kunna se till att du hamnar mitt i bitarna när de ska klockas in.
Re: TXRX Tillståndsmaskin
I "verkliga" UART samplas input minst 8 gångar, oftast 16 gångar. Det kan finnas specialfall med fler eller färre.
De har sedan '1' som viloläge, detta för att kunde avkänna om en ledning är ryckt ut (ger RX-error).
De har sedan '1' som viloläge, detta för att kunde avkänna om en ledning är ryckt ut (ger RX-error).
Re: TXRX Tillståndsmaskin
I detta fallet går det inte ha en klocka med högre frekvens hos RX-delen.
Det skulle behövas en krets som avbryter en pågående klockcykel och startar
den från noll så att säga.
Det skulle behövas en krets som avbryter en pågående klockcykel och startar
den från noll så att säga.
Re: TXRX Tillståndsmaskin
Då får du väl sänka hastigheten på TX eller gå över till en syncron överföring...
Re: TXRX Tillståndsmaskin
Klockorna måste synka i samma frekvens annars fungerar det inte.
Drömmen är ju att bara ha seriedata som enda förbindelse.
555 har en Reset som kanske går nyttja.
555 går enkelt att få kristallstyrd med en standard 32768Hz-kristall.
Drömmen är ju att bara ha seriedata som enda förbindelse.
555 har en Reset som kanske går nyttja.
555 går enkelt att få kristallstyrd med en standard 32768Hz-kristall.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: TXRX Tillståndsmaskin
Att sända med den typ state-mashine er OK - men att ta emot på "bit-kanter" kommer att ge problem. Där behövs definitivt samplingen att vara minst mitt i en databit men helst ett par samplingar per databit.
Tänk tanken att startbit rent faktisk är en störning, något som definitivt sker utanför teori-världen. Den är lång nog till att starta mottagningen men så pass kort att den bara är en störning.
Men jag förstår det roliga i att ställa upp de olika funktioner i state-mashine diagrammer - men att bygga efter dom för praktisk bruk är inte vettigt utan tanke på vad som kan gå fel.
Du kan t.ex. inte veta om det var en giltig data som kom eller om det var en mottagning triggad av en störning. Likaså bör du tänka över hur du säkrar att du inte får overrun och andra fel. Signal för fel stopbit?
Teori är att det fungerar om alt annat, praktik är om det fungerar i verkligheten med störningar, glapp i kontaktdon, idioter som drar ut kontaktdon o annat skit.
Tänk tanken att startbit rent faktisk är en störning, något som definitivt sker utanför teori-världen. Den är lång nog till att starta mottagningen men så pass kort att den bara är en störning.
Men jag förstår det roliga i att ställa upp de olika funktioner i state-mashine diagrammer - men att bygga efter dom för praktisk bruk är inte vettigt utan tanke på vad som kan gå fel.
Du kan t.ex. inte veta om det var en giltig data som kom eller om det var en mottagning triggad av en störning. Likaså bör du tänka över hur du säkrar att du inte får overrun och andra fel. Signal för fel stopbit?
Teori är att det fungerar om alt annat, praktik är om det fungerar i verkligheten med störningar, glapp i kontaktdon, idioter som drar ut kontaktdon o annat skit.
Re: TXRX Tillståndsmaskin
Jag ska inte använda det hela till något extremt.
Får nog överge tanken med synkade klockor såvida jag inte tar emot någon signal i etern som sköter klockan.
Moddade schemat så det fungerar för 8 bitar. Jag behövde inte ändra något i kontroll-logiken (T0-T2).
Bara koda av TX-räknaren annorlunda och utöka MUXen.
Får nog överge tanken med synkade klockor såvida jag inte tar emot någon signal i etern som sköter klockan.
Moddade schemat så det fungerar för 8 bitar. Jag behövde inte ändra något i kontroll-logiken (T0-T2).
Bara koda av TX-räknaren annorlunda och utöka MUXen.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: TXRX Tillståndsmaskin
Kollade på en ic från Fujitsu och sättet att välja register. De har seriell laddning där sista biten styr data till 1 av 2 register.
Genom jag som i mitt fall vill sätta 4-bitsregister så låter jag D0-D3 hålla värdet
och D4-D7 (D4-D5 i exemplet) hålla adressen.
Register 3 ska sättas till 7.
Genom jag som i mitt fall vill sätta 4-bitsregister så låter jag D0-D3 hålla värdet
och D4-D7 (D4-D5 i exemplet) hålla adressen.
Register 3 ska sättas till 7.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: TXRX Tillståndsmaskin
Tanken med maskinen är att sätta upp och läsa registren i en Seiko Epson RTC-72421.
Här har jag alla kontrollpinnar som behöver styras och 3 register. Ett register för adress
och 2 för data. OC är till för att få three-state på skrivregistret så det går läsa med det
andra dataregistret. LogiSim har separata 3-state buffertar som jag inte ritat in.
Kanske jag kan utesluta OC och koppla three-state-pinnen hos registret till RD istället.
Det är ganska rättfram att programmera registren för utom att man måste kolla
BUSY-biten i ett register innan man kan skriva klart. På något sätt hoppas jag det går
lösa med en ASM (maskin). De ensamma D-vipporna sätts till 1 eller 0 med hjälp av D0 plus
val av vippa med D4-D6
Här har jag alla kontrollpinnar som behöver styras och 3 register. Ett register för adress
och 2 för data. OC är till för att få three-state på skrivregistret så det går läsa med det
andra dataregistret. LogiSim har separata 3-state buffertar som jag inte ritat in.
Kanske jag kan utesluta OC och koppla three-state-pinnen hos registret till RD istället.
Det är ganska rättfram att programmera registren för utom att man måste kolla
BUSY-biten i ett register innan man kan skriva klart. På något sätt hoppas jag det går
lösa med en ASM (maskin). De ensamma D-vipporna sätts till 1 eller 0 med hjälp av D0 plus
val av vippa med D4-D6
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: TXRX Tillståndsmaskin
Nu kommer jag att vara lite tråkig: μC is tha shit för sådana saker.
Re: TXRX Tillståndsmaskin
Jag plockade faktiskt fram min PIC 16F84 lärobok. Jag har ett kit från AoE från 2002, Picee nånting, för att labba med den processor.
Re: TXRX Tillståndsmaskin
Ovanstående fungerade inte riktigt.
Avkodaren måste nollställas efter att en vippa är satt.
Nu fungerar det.
Först måste jag i så fall löda i komponenterna och sedan lägga en hel del tid på att lära mig det som finns i boken.
Men det hade så klart kunna varit användbart för en del projekt att kunna klämma i en controller.
Avkodaren måste nollställas efter att en vippa är satt.
Nu fungerar det.
Först måste jag i så fall löda i komponenterna och sedan lägga en hel del tid på att lära mig det som finns i boken.
Men det hade så klart kunna varit användbart för en del projekt att kunna klämma i en controller.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.