Stap 5: Deel 2: logica Gates
We hebben doorgebracht deze hele tutorial over programma geheugenadressen en registers en dat alles. Nu wil ik een paar minuten duren en duik neer in wat is op deze adressen gaande er. Met andere woorden, hoe kan ik een byte van de gegevens op sommige adres opslaan? Wat is er gaande? Wat is een "register"? Dus wat is het elektrische circuit dat ik kan bouwen die een 8-bits getal zoals 0x03 of een 0b10101011 bijvoorbeeld slaat?
Onderhand hebt u opgemerkt dat alle van de instructies in de instructieset kan worden teruggebracht tot twee typen. De eerste is opslaan, ophalen of bits kopiëren van en tussen registers. Het tweede type is het uitvoeren van logische bewerkingen op die gegevens. Bijvoorbeeld toevoegen, aftrekken, ANDing, ORing, XORing, enz. Dat is echt alles wat er gaande is hier. Verschillende combinaties van getallen op te slaan, en vervolgens uit te voeren wiskundige bewerkingen op deze nummers is wat resulteert in alle coole dingen computers en microcontrollers kan doen. Het is nogal verbazingwekkend als je erover nadenkt.
In deel 2 van deze tutorial gaan we een laatste stap gaan en kijken naar een van de belangrijkste onderdelen van dit proces. We gaan eerst voor de bouw van een bepaald soort "logische poort" riep een NOR-poort, en dan gaan we NOR poorten gebruiken voor de bouw van een SR-Latch.
Neem een kijkje op de foto van de logic-poorten die ik hierboven gegeven heb. Zij zijn de schema's die aan een bepaalde wiskundige bewerking. U herinnert zich dat dit soort operaties dat alles wat wij nodig hebben is om instructies voor een instructieset. Toen we bespraken de SREG voordat u zag dat alle vlaggen afhing van enkele logica berekening met behulp van de bits in onze registers en het uitvoeren van OR, AND, enz op hen. Als je kijkt naar het diagram u zie, dat elk van deze "logica gates" heeft twee ingangen (die in wezen draden) en een output (ook een draad). Dus als je had bijvoorbeeld een AND-poort, ziet u dat als ik 5 V op elk van de input draden, dan ik 5V op de uitgang krijgt. Aan de andere kant, zou een andere combinatie van input spanningen (0 of 1's) resulteren in 0V op de uitgang. Hetzelfde geldt voor de andere logic-poorten. Dit zijn dus een manier om beslissingen te nemen en berekeningen uitvoeren op de bits in onze registers, net als de berekeningen die zijn gedaan door de CPU om erachter te komen welke vlaggen krijgen ingeschakeld in SREG.
Dus laten we eens kijken naar de NOR poort. De NOR poort is gewoon een OR poort met een N achter zit. Dat betekent dat de "waarheid-tabel" van de OR-poort en nemen het compliment voor alle antwoorden. Dus een 1 wordt een 0 en een 0 wordt een 1. U ziet iets in het bijzonder. De enige manier kan ik 5V uit de andere kant van een NOR poort is als er geen volt vanuit beide input! Dit is soort van cool. Het is de reden waarom wij gaan gebruiken deze baby zodat iets zelfs koelketel, een SR-Latch.
Een SR-Latch is gebouwd door het nemen van twee NOR poorten en het opzetten van een feedback-lus zodat de output van een één van de ingangen voor de andere en vice versa wordt. Neem een kijkje op mijn tweede diagram met een SR-Latch. Zie als u kunt zien waarom de logica tabel wat moet worden weergegeven. Stel dat ik 5V op R en 0V op S. Nou weet je hoe een NOR poort werkt, aangezien er 5V op R we weten dat de output bij Q 0V zijn zal, omdat de enige manier om een signaal uit een NOR poort is als beide ingangen uitgeschakeld zijn. Dus dat betekent dat 0V komt uit een Q en gevoed terug in S. Dus de andere NOR-poort 0V heeft vanuit S, en ook 0V vandaan de feedback lus. Het wordt dus de andere uitgang Q ingesteld op 5V. Dus nu zie je hoe het recht werkt?
De reden waarom die het heet een SR-Latch is dat de S voor "Set staat" en de R voor "Reset staat". Zeg ik verbinden met een LED1 Q en een ander LED2 tot en met Q , ik beginnen met S ingesteld op 1 (dat wil zeggen op 5V) en R ingesteld op 0 (d.w.z. 0V), dan LED1 zullen op en LED2 zal worden uitgeschakeld. Dan stel ik vrijgeven S dus dat het teruggaat tot 0V. We hebben nog 5V bij Q omdat R 0V en de feedback van Q ook 0V is. Maar nu S bedraagt in plaats van 5V 0V dus wat zal er veranderen? Niets! We kunnen houden schakelen S tussen de 0V en 5V en niets zal gebeuren. De LED bij Q zal aanblijven en de LED op Q blijft uit. We hebben "instellen" de vergrendeling op. (Q is verlichte middelen op)
Nu wat gebeurt er als we 5V op R? Nou dan aangezien 0V is afkomstig uit de Q -feedback en 5V is afkomstig van R, de NOR poort zal afsluiten en Q zal afsluiten. Vervolgens zal de feed terug van Q 0V en aangezien S 0V zien we dat de andere LED bij Q zal aanzetten! Nu Overtuig uzelf die als wij R overschakelt houden nu niets de LED bij Q veranderen zal op blijft ongeacht wat we naar R. doen De enige manier om het uitgeschakeld is te duwen S weer. Het nettoresultaat van deze SR-klink is dat duwen S een van de LEDs oplichten zullen en het blijven zal zelfs nadat je laat S Ga terug naar 0V, de klink blijft "set". De enige manier om het te krijgen uit is te duwen R die zal afsluiten die hebben geleid en zet op de andere. Vervolgens kunt u R Ga terug naar de 0V en de klink blijft "reset".
Dus is een SR-klink een manier om een stukje van de gegevensop te slaan. Als u definiëren om een '1' als de Q-LED brandt en een "0" als de Q -LED brandt u effectief opgeslagen een enkele bit. U kunt een puls spanning op de hendel en set die 1, en vervolgens u annuleerteken uitsluitend vertrek het worden en blijft het een 1. Vervolgens als u een andere spanning puls naar R sturen worden ingesteld op 0 en blijft op die manier ook.
Dit is het fundamentele element van opslag in de computer. Er zijn iets meer verfijnde opslagmethoden zoals slippers en D-klinken, maar ze zijn allemaal gemaakt van een SR-latch met sommige extra functies zoals een klok signaalingang die ingesteld en stelt de klink volgens het klok-puls en een andere poort of twee op één van de ingangen. Maar de basiseenheid is de SR-Latch.
We kunnen verder ingaan op de theorie en tonen hoe je kunt nemen 8 van deze sloten en maken een "8-bit Register" uit hen. D.w.z. u kunt het opslaan van 8 bits, één in elk van de 8 SR-sloten. Onze algemene doel werken registers in de atmega328p zijn in wezen een verzameling van SR-sloten. In feite, kan ooit ik pak een breadboard en bouwen van 8 SR-hendels zoals die we proberen op te bouwen hier in deel 2 van deze tutorial en vervolgens haak ze samen maken van een Register. Het zou leuk dan het uitvoeren van logische bewerkingen op het Enzo dergelijks. Als ik ooit een register als dat bouwde ik denk dat ik zal noemen het "r16" :)