Sida 1 av 2
Komponent för 4-bit till 8-bit konvertering
Postat: 26 april 2015, 12:52:00
av falken
Hej,
Jag håller på att funta på en 4-bits dator som jag tänkte bygga helt med 74-serie logik. Cpu'n har två interna bussar; adressbus på 8 bitar å en databuss på 4. Utöver detta finns 16 register r0-15 samt ett A som accumulator. Mitt problem är att jag vill kunna ladda register med värde från minne, dvs
mv r0, $ab
Eftersom adressen (ab) är 8-bitar så läggs detta ut på databussen över två clocktick, jag måste då "komma ihåg" de första 4-bitarna för att sedan fylla på med nästa 4 för att bilda en 8-bits adress. Jag är ganska ny kring detta så jag vet inte smartaste sättet att göra detta på. Spontant tänkte jag på ett skift register, men finns det sådana som tar 4-bitar å skiftar dem 4-bitar på ett tick?
Tack för hjälpen,
Johan
Re: Komponent för 4-bit till 8-bit konvertering
Postat: 26 april 2015, 13:13:25
av bearing
Tror komponenten du söker heter Latch.
Re: Komponent för 4-bit till 8-bit konvertering
Postat: 26 april 2015, 13:34:55
av Swech
Du måste väl ha samma problem med hela instruktionen då den är 4 bitars.
Ditt exempel
Mov r0, $ab
instruktionen Mov måste vara ett separat 4 bitars ord.
r0 är ytterligare ett 4 bitars ord eftersom du har 16 register
$ab är två 4 bitars ord
Totalt är det alltså 4 st 4 bitars ord som skall in och avkodas
Kul ide men fundera allvarligt på att göra en 8 bitars direkt
Swech
Re: Komponent för 4-bit till 8-bit konvertering
Postat: 26 april 2015, 14:48:19
av falken
@Swech, jag tog inte med de "gömda" registerna som är inblandade, jag har ett MAR (8-bit, memory adress register) ett IR (4-bit, instruction register) samt ett REG_SEL (4-bit, register select). Vad som händer är
mv opkod -> IR på första clock ticket
register code -> REG_SEL på andra clock tick
sen måste jag bygga upp min adress till MAR
Re: Komponent för 4-bit till 8-bit konvertering
Postat: 26 april 2015, 14:55:38
av Tekko
Går det öht att konvertera 4-bit till 8-bit ? 4-bit har ju lixom 16 ord medans 8-bit har dubbelt (fyra?) gånger så många.
Re: Komponent för 4-bit till 8-bit konvertering
Postat: 26 april 2015, 17:03:14
av falken
@bearing, du har nog rätt, den smidigaste lösningen kanske helt enkelt är att låta första adress cykeln latchas in till ena bufferten å andra adressen till den andra buffern. Valet kan ju göras med en enkel mux och lite klister logik. Provar en sån lösning
Re: Komponent för 4-bit till 8-bit konvertering
Postat: 27 april 2015, 10:00:23
av falken
@bearing, gjorde ett försök imorse i min simulator å det verkar fungera bra så kör på ditt förslag. Tack för hjälpen
@Swech, microarkitekturen är enligt bifogad bild så borde klara sig med 4-bitar fast varje instruktion kommer ta mellan 2 och 6 klockcykler, tror jag kommer binda så att alla tar 6 klockcykler oavsett, det blir lättare att programmera den då
Re: Komponent för 4-bit till 8-bit konvertering
Postat: 27 april 2015, 12:19:42
av Swech
Du har inget ram överhuvudtaget m.a.o.
Jag skissade på något liknande för måååånga år sedan. Det är riktigt kul.
Ett litet tips kanske..
Om du bygger dina register av 4029 så får du register som är möjliga att ladda men
också går att räkna upp / ned ett steg.
Då kan du göra loopräknare i ditt program utan att behöva snurra via ALUn...
Jag körde nog även programräknaren med två 4029
Swech
Re: Komponent för 4-bit till 8-bit konvertering
Postat: 27 april 2015, 13:02:30
av falken
Perfekt, jättebra tips! Sånna får det nog bli! Funderade på en "rep" instruktion men kom fram till att det behövdes ytterligare komponenter, med ditt tips blir det kanske helt trivialt. Näpp, inget RAM, tänkte mig lite som en microcontroller, nästa projekt så kanske det blir fler bitar å mer minne, skulle gärna ha en stack för att stödja funktionsanrop mm, men det blir svårt, eller så slänger jag in det ändå

, 8-bitar adress, dela hälften ROM hälften RAM, så 128-ord vardera.... eller kanske 70/30% lite tight men kan gå... Ja, det är riktigt roligt att sitta å fundera på hur det egentligen funkar allt det där.
Re: Komponent för 4-bit till 8-bit konvertering
Postat: 27 april 2015, 14:10:11
av Swech
Sedan är 4022 johnson counter helt perfekt till ett sådant här bygge också
För att styra sekvensen för instruktionsavkodning.
Du får upp till 8 steg....
steg 1. hämta instr
steg 2. avkoda instr
steg 3. utför
steg 4.... osv....
Swech
Re: Komponent för 4-bit till 8-bit konvertering
Postat: 27 april 2015, 15:51:37
av MiaM
4017 har fler steg och vad jag minns i övrigt inga nackdelar jämfört med 4022, så jag skulle nog valt 4017.
(Jag erkänner att jag dock använt 4022 rätt friskt genom tiderna, men det är mest för att "det blev så").
Men räcker en instruktion om 4 bitar? Är det inte läge att ha två IR-register? (Jag har inte tänkt efter själv, ställer bara frågan för säkerhets skull så att trådstartaren tänker på detta

)
Re: Komponent för 4-bit till 8-bit konvertering
Postat: 27 april 2015, 16:44:03
av falken
@MiaM jag hoppas det räcker, ger 16 instruktioner. Gjorde en ISA på mnemonik nivå och tycker jag fick med de flesta. Har två mov å en ld, sen de vanliga ALU instruktionerna (add, sub, and, xor, or, shr, shl), en jmp, push, pop, call å ret. Det som jag är lite osäker på är branch instruktioner, jag tänker mig att det räcker med en brz dvs hoppa om föregående ALU instruktion gav noll resultat, borde kunna räcka tycker jag. Sen är bitrymden fylld.
Siktar på att skriva lite i min blogg ikväll om detta, länkar in det hit sen.
Bra förslag med 4017 komponenten, men som det ser ut nu behöver jag "bara" 6-steg
Re: Komponent för 4-bit till 8-bit konvertering
Postat: 27 april 2015, 16:45:35
av Platis
Vad är det för simulator du använder?
Re: Komponent för 4-bit till 8-bit konvertering
Postat: 27 april 2015, 16:55:11
av falken
Kör logisim
http://www.cburch.com/logisim/
Tycker den funkar riktigt bra för att testa logiken
Re: Komponent för 4-bit till 8-bit konvertering
Postat: 27 april 2015, 19:48:03
av Swech
Bra förslag med 4017 komponenten, men som det ser ut nu behöver jag "bara" 6-steg
Precis... då drar du sjätte utgången till reset på kretsen...
Swech