Innehållsförteckning:

Bonde, räv, gås, kornpussel: 6 steg
Bonde, räv, gås, kornpussel: 6 steg

Video: Bonde, räv, gås, kornpussel: 6 steg

Video: Bonde, räv, gås, kornpussel: 6 steg
Video: Bonden och räven 2024, November
Anonim
Bonde, räv, gås, kornpussel
Bonde, räv, gås, kornpussel

När jag var barn hämtade jag en bok som var mina pappor, kallad The Scientific American Book Of Projects For The Amateur Scientist. Jag har fortfarande boken, och min förståelse är att det är en svår bok att få tag på nuförtiden. Men du kan läsa den online nu. Den här boken introducerade mig till många saker, men kapitlet som väckte mitt intresse var det om matematiska maskiner. Det kan mycket väl vara det som satte mig igång med min slutliga karriär inom mjukvaruutveckling.

I detta kapitel finns beskrivningar av pussellösningsmaskiner som använder tidens kretsar … som föregick moderna integrerade kretsar eller till och med transistorer (med hjälp av reläer). Men några av samma begrepp fanns där, för logiska enheter som i huvudsak är samma sak som moderna datorer fortfarande använder idag.

Dessa dagar kan du enkelt och billigt få hela datorsystem för några dollar, och bara programmera ditt pussel eller spel. Men du kan också göra många saker på en lägre nivå, med hjälp av de logiska grindarna som datorer är byggda från, för att skapa anpassad hårdvara för ditt pussel. Även om detta kanske inte är praktiskt eller idealiskt, låter det dig lära dig hur datorer verkligen fungerar. Det är också kul.

Steg 1: Material som krävs

Du kan bygga detta helt i Tinkercad Circuits och simulera hur pusslet fungerar.

Om du vill bygga det fysiskt, här är vad du behöver:

4 växlar eller skjutreglage.

1 tryckknapp (tillfällig)

2 små brödbrädor.

9 lysdioder.

9 1K motstånd.

1 7475 fyrkantig spärrchip

2 7408 fyr- och grindar

1 7432 fyr- eller grind

1 batteri som rymmer 3 AA- eller AAA -celler.

uppsättning bygelkablar.

För chipsen i 74xx -serien kan du använda valfri variation av dessa. IE, 74xx -versionerna är de ursprungliga TTL, men du kan också använda 74LSxx -versionerna (lägre effektanvändning), eller 74HCxx (ännu lägre effekt -cmos -versioner) etc. Kom bara ihåg att 74xx- och 74LSxx -versionerna är lätta att hantera, men alla andra variationer är känslig statisk elektricitet.

Steg 2: Boolsk logik

Boolsk logik
Boolsk logik
Boolsk logik
Boolsk logik

Boolsk logik kan låta skrämmande men det är faktiskt ganska enkelt. Boolean betyder bara att du har att göra med endast 1: or och 0: or, eller True and False. Eller inom elektronik, + och -. Den logiska delen av det handlar bara om en massa "om det här då". De mest grundläggande logiska operationerna är helt enkelt dessa tre saker: OCH, ELLER och INTE. Dessa kallas grindar, eftersom de i huvudsak fungerar som bokstavliga grindar till flödet av elektricitet genom en krets.

OCH -grinden fungerar enligt följande. Den har två ingångar och en utgång. De två ingångarna kan vara en 1 eller 0, och utgången är en 1 eller 0. För OCH -grinden, om båda ingångarna är 1, är utgången 1. Annars matar den ut ett 0.

För OR -grinden har den också två ingångar och en utgång. Om den ena eller andra ingången är en 1, är utgången en 1.

Den sista grinden är NOT -porten, och den har bara en ingång och en utgång. Om ingången är en 1, då är utgången 0. Om ingången är 0, matar den ut en 1.

OR- och AND -grindarna kan också ha mer än 2 ingångar. För förenkling kan de visas med 2 eller flera rader som går in i en grind, men egentligen är en 3 ingångsport bara två 2 ingångsportar med en matning in i den andra.

Du vet nu allt du behöver veta för att bygga en dator. Även de mest moderna datorerna använder bara dessa tre saker, även om de kanske använder miljontals av dem.

Så låt oss bygga ett pussel.

Steg 3: Bonde, räv, gås och spannmålspussel

Bonde, räv, gås och spannmålspussel
Bonde, räv, gås och spannmålspussel

Det första i boken är en logisk krets för att skapa det klassiska pusslet av bonden, räven, gåsen och säden. Detta pussel har funnits i hundratals år i olika former. Det är ett grundläggande logikpussel med bara några regler. Pusslet är följande.

En bonde har en räv, en gås och lite säd. Han kommer till en flod han måste korsa, och det finns en båt, men den kan bara hålla honom och en annan sak åt gången.

Han kan inte lämna räven med gåsen, för räven äter gåsen. Det är vad rävar gör, det är bara deras natur.

Han kan inte lämna gåsen med säden, för gåsen kommer att äta upp den.

Hur kan han få dem alla tre säkert över till andra sidan floden?

För att skapa detta pussel behöver vi några saker. Först med start med fyra växlar, en för var och en av bonden, räven, gåsen och säden. Detta är hur vi kommer att ställa in som går på båten.

För det andra behöver vi pusslet för att komma ihåg var allt är från steg till steg.

Sedan behöver vi en knapp för att berätta när båten ska flyttas.

Slutligen behöver vi lite logik för att tillämpa reglerna.

Steg 4: Minne

Minne
Minne
Minne
Minne

För att komma ihåg platserna för föremålen i detta pussel kommer vi att använda något mer avancerat än reläerna som används i den ursprungliga kretsen. När den här boken skrevs fanns det inga transistorer, men de hade reläer. Dessa reläer var anslutna så att när du tryckte på en knapp stängdes de och stängdes sedan tills du tryckte på knappen på andra sidan.

Idag använder vi en vanlig och billig del som kallas en 4 -bitars spärr. En "bit" i datalogik hänvisar bara till en enda 1 eller 0. Det är samma sak som en siffra. Denna integrerade krets (eller "IC" eller "Chip") innehåller fyra logiska komponenter som kallas flip -flops. En flip -flop är bara ett par grindar konfigurerade så att när du ger den en 1 eller 0 som en ingång, kommer den att mata ut en 1 eller 0 och sedan hålla sig "fast". Därav namnet flip / flop. Det kommer att vända från 1 till 0 eller floppa från 0 till 1 (eller är det tvärtom?) Och sedan stanna där. Detta gör i princip samma sak som de fyra reläerna i den gamla kretsen.

Du kan göra en enkel flip -flop med bara två grindar, men de i denna spärr har en extra funktion (kräver några fler grindar). Istället för att omedelbart få utgångsändringen med ingången att ändra, har den en annan ingång som aktiverar eller inaktiverar ingångarna. Normalt förblir det inaktiverat. Detta låter dig ställa in två av omkopplarna (bonden och en annan) innan den försöker "skicka" båten till andra sidan. Vår krets är redan smartare än den gamla.

Vi har nu möjlighet att ställa in och komma ihåg platserna för alla principer i vårt pussel.

Här är vår krets hittills: 4 bitars spärr

Steg 5: Rules Logic

Regler logik
Regler logik

För att tillämpa reglerna och ange när det finns ett problem använder vi några booleska logikportar för att implementera de begränsningar vi behöver.

Vi behöver fyra tester för att avgöra om det är ett problem - om någon av dessa är sanna, tänd sedan varningssignalen.

1. Om spannmålen och gåsen ligger på andra sidan floden och inte bonden.

2. Om räven och gåsen ligger på andra sidan floden och inte bonden.

3. Om bonden korsar floden och ingen räv och utan gås är med honom.

4. Om bonden korsar floden och inga spannmål och ingen gås är med honom.

Notera hur jag har formulerat detta för att exakt matcha logiken vi kommer att använda, som är OCH grindar med antingen de normala eller de inverterade utgångarna från spärren, de inverterade fungerar som ett "nej" eller ett "INTE".

Eftersom någon av dem kan vara sanna och orsaka problem, matar de alla in i en ELLER -grind.

Den färdiga logiken, inklusive 4 -bitars spärren, visas i skärmdumpen. Detta är från ett program som heter logicaly. Detta program är utmärkt för att visa flödet av logik när du manipulerar omkopplarna och markerar blått anslutningarna med ett '1' -värde. Jag har bifogat filen som du kan ladda in logiskt.

Steg 6: Prototypa en riktig krets

Prototyp en riktig krets
Prototyp en riktig krets

Nu kan vi skapa en riktig arbetskrets. Med hjälp av Tinkercad -kretsar kan vi göra detta med simulering av hårdvarans verkliga utseende och funktionalitet.

Tinkercad har byggt in en 7475 4 bitars spärr, så den delen är enkel. För grindarna har jag valt att använda två marker med 4 OCH grindar vardera (7408). För att skapa fyra, 3 ingång OCH grindar använder vi två OCH grindar med utgången från den ena som går in i 1 ingång på den andra. Detta lämnar 1 ingång på den andra och 2 ingångar på den första, vilket skapar en 3 ingång OCH grind. För OR -grinden gör jag samma sak. Ett fyra OR -grindchip använder två OR -grindar med utgångarna in i en tredje OR -grind. En grind lämnas oanvänd.

Kör simuleringen på Tinkercad -kretsar

Rekommenderad: