8-bit computer op een breadboard

@fred101: hoe leuk komen gelijk weer mijn herinneringen aan de microprofessor naar boven (MPF-1)

Op 16 oktober 2017 12:42:03 schreef tmdr:
[...]

(@Gerard: op een keyboard HEX tikken bijv) ;-)

Ja! daar heb ik ook over na zitten denken... De uitvoer van zo'n toetsenbordje kun je op de bus aansluiten en dan is het een kwestie van de juiste control signalen genereren. Denk even mee?

  1. (schakelaar op "ADDR") en eerst het start adres ingeven
  2. bij "ENTER":
    • waarde (= address) op de bus
    • PCI openzetten en een klokpuls geven
    • PCI uitzetten
  3. (schakelaar op "PROG") en waarde intoetsen
  4. bij "ENTER":
    • PCO, MAI aan, gevolgd door een klokpuls
    • waarde (= inhoud) op de bus
    • rest uit, MI en CE (volgende waarde naar volgende address) aan, gevolgd door een klokpuls
    • loop naar 3

Edit: ik zou het leuk vinden als er wat foto’s van de computers geplaatst worden. Ik ga dit ook zo snel mogelijk doen. Schaam me alleen nog een beetje want er zijn wat dingen die nog niet zo netjes zijn helaas. Haha.

Netjes of niet, gewoon plaatsen joh. Dat laat je proces zien. En dan kun je straks als hij af is, extra tevreden zijn, want dat gaat er vast heel netjes uitzien!

Hier zijn mijn foto's:

Ain't no place like 127.0.0.1
fred101

Golden Member

Ik gebruik bijna nooit een breadboard maar het is handig als je met IC's werkt. Ik bouw bijna alles deadbug gecombineerd met frezen.

Voor dit project is dat niet handig. Ik gebruik nu een pcb wat waarschijnlijk ooit gemaakt is voor dit soort werk maar dan waarschijnlijk met wirewrap. En helaas heb ik dat niet dus soldeer ik het.

Het zou handig zijn als er een gaatjes print versie van een breadboard was.

Als je dit nu op een breadboard bouwt en je wilt het permanenter dan kun je de draden met wat secondenlijm en/of hotglue vast zetten aan elkaar en als je echt zeker bent dat je niets meer veranderd kun je ze met wat hotglue aan het boad lijmen. Daarna een plexiglas plaat er over met gaten boven dingen als schakelaars. Dat ding van Ben op die verzameling breadboards met die netjes gebogen draadjes ziet er erg gaaf uit.

www.pa4tim.nl, www.schneiderelectronicsrepair.nl, Reparatie van meet- en calibratie apparatuur, ook maritieme en industriele PCBs

De prints die ik gebruik zijn "Euro"-prints. Zie bijgaande foto van de achterkant van mijn Control Unit. Voor de modules gebruik ik prints met 3-gaatjes eilanden, voor de bus-print gebruik ik prints met doorlopende banen (duh...).

Ain't no place like 127.0.0.1

@fred

Het zou handig zijn als er een gaatjes print versie van een breadboard was.

die zijn er wel degelijk
https://www.adafruit.com/product/590

vast ook goedkoper te krijgen bij ali denk ik

I would rather attempt something great and fail, than to attempt nothing and succeed

Op 18 oktober 2017 10:06:34 schreef fred101:
Het zou handig zijn als er een gaatjes print versie van een breadboard was.

Als je dit nu op een breadboard bouwt en je wilt het permanenter dan kun je de draden met wat secondenlijm en/of hotglue vast zetten aan elkaar en als je echt zeker bent dat je niets meer veranderd kun je ze met wat hotglue aan het boad lijmen.

Klinkt misschien als een goed idee, maar hoe zorg je dan voor een goede verbinding / geleiding? (om nog maar niet te spreken van alle capacitaire "vervuiling")

Gerard

Ain't no place like 127.0.0.1
Anoniem

Leuk om de foto's te zien! Daar is goed de tijd voor genomen Gerard :). Je hebt alles eerst op een breadboard getest voor je ging bouwen neem ik aan?

Het valt me op dat de opbouw erg ruim is, extra draadlengte is breedbandigere non-immuniteit. Volgens mij los je dit op door de antenne lengte te berekenen en met Ctjes de frequenties op de lijnen kort te sluiten. Met steile flanken komt de HF er vanuit de schakeling zelf op de koop bij.

Zelf heb ik de indruk dat ik mijn tijd(kosten) hoger zijn dan de financiele kosten van een pcb laten ontwerpen. Dan zou ik voor SMD gaan met lekker veel PAD's voor experimenten / noodzakelijke toevoegingen achteraf (C).

In een eerdere post heb ik het advies om dit in een FGPA te integreren ter harte genomen. Mijn ervaring met de Cypress PSOC4 heeft me geleerd dat met software (2 klikken) een poort of functie gewijzigd kan worden zonder hardware wijziging. Dit onderwerp in software emuleren is altijd sneller natuurlijk.

De bouwverslagen zijn ook op mijn website te volgen, klik maar in mijn "signature"...

Jep, alles is eerst op een breadboard opgezet alvorens deze vorm te bouwen.

Met de frequenties die ik ga gebruiken (tot max. 500Hz denk ik) zal het met die HF wel meevallen, of het moeten de harmonischen van de blokgolven zijn... Maar ja, 100nF erover en klaar weer.

Een PCB LATEN ontwerpen? ;-) Dat kunnen we natuurlijk met EAGLE prima zelf. Het laten etsen etc. daar zijn wel firma's voor te vinden.

En tja, weet je, een FPGA (zelf nooit echt mee gewerkt by the way) staat al weer een stuk verder van de basis poorten als AND, OR, NAND etc. af en is daarmee niet echt goed aan mijn leerlingen uit te leggen. Deze met basis IC's opgebouwde schakeling wel.

En daar was het me om te doen, een computer vanuit de hardware opbouwen en stap voor stap kunnen uitleggen hoe die werkt.

Gerard

Ain't no place like 127.0.0.1
tmdr

Golden Member

Nah, zojuist voor het eerst het bekende testprogramma van Ben gedraaid. Na wat stoeien kwam er toch 42 te staan! Ik heb volgens mij redelijk wat geklooi met mijn power supply. Volgende stap zal dus zijn dat ik het helemaal vol ga zetten met condensatoren. (edit: bijv. de step counter reset constant, vandaar ook een jumper daar)

Nu hij draait durf ik ook wat foto's hier neer te zetten!

@Gerard: aangezien mijn breadboard versie van de programmer niets meer deed op een of andere manier, heb ik mijn DIY universele programmer maar lopen debuggen. Vandaar dat ik de ROMs nog niet met jouw code heb kunnen programmeren.

PE9SMS

Special Member

Wow! Dat ziet er indrukwekkend uit zeg! Leuk dat het werkt!

This signature is intentionally left blank.
tmdr

Golden Member

Op 18 oktober 2017 16:10:49 schreef PE9SMS:
Wow! Dat ziet er indrukwekkend uit zeg! Leuk dat het werkt!

Af en toe gaat er nog redelijk wat mis. En volgens mij heeft mijn power supply het zojuist begeven.
Soms worden instructies overgeslagen (de PC tikt dan twee keer) of worden waardes niet of fout in de registers gezet. Zal wel aan het ontbreken van die caps liggen.

Iemand tips mbt de caps die ik over de power bussen kan zetten? Of een linkje naar wat theorie zodat ik het zelf kan berekenen?

[Bericht gewijzigd door tmdr op woensdag 18 oktober 2017 16:25:54 (13%)

eSe

Honourable Member

Beste AndOrNot freaks,

Ik volg al een tijdje jullie topic hier, ziet er leuk uit. En leerzaam.

Eind jaren '70(ja,ja, vorige eeuw) zelf een processor bordje gebouwd met een 8080 cpu. Alles op gaatjesprint zonder koper, veel te dikke draden (0,75 dacht ik), een tweede bordje met geluidsgenerator (chipje van Tandy) en een frontplaat met 16 schakelaars voor het adress, 8 voor data, 1 load toets en een schakelaar om te kiezen tussen program load en run. 16 adress schakelaars was wat veel, ik had slechts 256 bytes aan geheugen :-) 8 chips, 256x1, toen verschrikkelijk duur. En de boel zag er niet uit. Maar ik was dolgelukkig als de eerste biepjes door de luidspreker kwamen.

Later een Apple ][ cloon gebouwd, ook op gaatjes bord, maar nu met hele fijne draad, soort wire wrap draad, maar wel gesoldeerd. Zag er een stuk beter uit, en ik kon er Apple Basic op draaien.

Maar altijd over de voedings pinnen van alle ic's 100nf (sibatit) c's geplaatst. En die zie ik niet op jullie breadboards.

Toch doen, en hier en daar ook een kleine elco over de voeding plaatsen.

Have a lot of fun.

Groetjes,
eSe

CChheecckk yyoouurr dduupplleexx sswwiittcchh..
fred101

Golden Member

Heb je al met een scoop gekeken naar de voeding en gemeten hoeveel stroom het trekt ? Ik heb alleen de counter en klok klaar en bij mij zitten alle leds achter weerstanden. Dat geheel trekt al 60mA.

Volgende stap worden de registers. Bijna niet te geloven maar ik blijk geen 74LS173 te hebben.

www.pa4tim.nl, www.schneiderelectronicsrepair.nl, Reparatie van meet- en calibratie apparatuur, ook maritieme en industriele PCBs

Op 18 oktober 2017 17:14:37 schreef fred101:
Heb je al met een scoop gekeken naar de voeding en gemeten hoeveel stroom het trekt ? Ik heb alleen de counter en klok klaar en bij mij zitten alle leds achter weerstanden. Dat geheel trekt al 60mA.

Niet met de scoop, maar ik gebruik twee labvoedingen, ingesteld op 5 Volt, eentje aan beide zijden van de bus voor de breadboards, en die leveren allebei zo rond de 600mA... In totaal zit dat spul dus ruim boven de 1 Ampere.

Gerard

Ain't no place like 127.0.0.1
fred101

Golden Member

Op 18 oktober 2017 16:56:09 schreef eSe:

Maar altijd over de voedings pinnen van alle ic's 100nf (sibatit) c's geplaatst. En die zie ik niet op jullie breadboards.

Die zitten bij mij onder de print.

Gerard, dat met die scoop was een antwoord op tmdr die voedingsproblemen heeft.

www.pa4tim.nl, www.schneiderelectronicsrepair.nl, Reparatie van meet- en calibratie apparatuur, ook maritieme en industriele PCBs

Op 18 oktober 2017 18:04:13 schreef fred101:

Gerard, dat met die scoop was een antwoord op tmdr die voedingsproblemen heeft.

;-)

Ain't no place like 127.0.0.1

En tja, weet je, een FPGA (zelf nooit echt mee gewerkt by the way) staat al weer een stuk verder van de basis poorten als AND, OR, NAND etc. af en is daarmee niet echt goed aan mijn leerlingen uit te leggen. Deze met basis IC's opgebouwde schakeling wel. Gerard

Dit begrijp ik niet. Wat is nu het verschil tussen een schema met de hand getekend en een schema entry in bv Quartus (Altera) met een FPGA of CPLD ? Exact hetzelfde schema met and's, or's, tellers, jkff's met dezelfde IC nummer uit de lib vb 74x00 74x90 enz. Je hebt gewoon input en output pinnen en ertussen zit dat schema. Bij een FPGA moet je niets doen wat tussen die pinnen zit behalve je schema compileren en downloaden. Zit er een foutje in, pas je schema aan volgens dat je denkt dat het moet, compileer en test het opnieuw. Je kunt het ook simuleren zonder iets te maken.

Ik begrijp de keuze om het op een breadboard te maken. Dat mag want het is leuk en goed zelfs als je het eerst ontworpen hebt. Maar het gaat zovele malen sneller in ontwerp en doorzicht. Zonder maar een draadje te moeten hersolderen. Je in en uitgangen mogen dus op je breadboard zitten maar je 74xx IC's zitten gewoon met duizenden in de FPGA, alle soorten dat je maar kunt indenken. Ik heb ook vroeger alles gemaakt met de 74 reeks, gewoon de jaren 1980. Honderen pcb's gemaakt met de 6809, eprom's, buffers, sram's enz. Dat kan nu allemaal eerst gewoon getest worden in een FPGA en dan stuk per stuk de deeltje dat je uitgetest hebt op een breadboard plaatsen omdat het didacktisch is of dat je het zo wilt hebben.

Je schema verschilt gewoon in niets met wat je nu doet. Op je scherm leg je het schema uit aan de leerlingen. Je maakt zelfs opzettelijk fouten of wijzigen en toont de resultaten op je breadboard.

En ja, ik maak altijd gebruik van een LA of minstens een 2 ch scoop. Dan zie je ook timmingen, pulsen enz. Maar bij eenvoudige schakelingen kan dit nog wegvallen.

Op 18 oktober 2017 18:56:23 schreef fotoopa:
[...]
Dit begrijp ik niet. Wat is nu het verschil tussen een schema met de hand getekend en een schema entry in bv Quartus (Altera) met een FPGA of CPLD ?

Beste opa, ik heb het op geen moment over schema's gehad. Dat is juist het mooie van deze manier van werken, gewoon een chip pakken, in je breadboard prikken en aansluiten. Dat is tastbaar; handwerk. FPGA's daarentegen, voorzover ik ze begrijp, zijn zeer complexe IC's waar je van alles mee kunt doen. Dat is dan geen bouwen meer, maar reduceert het bouwen (met alle respect) tot programmeren. Nu heb ik als ouwe programmeur niks tegen programmeren, maar de charme van de 74LS... serie chips is juist de ambachtelijkheid ervan.

Ik begrijp de keuze om het op een breadboard te maken. Dat mag want het is leuk en goed zelfs als je het eerst ontworpen hebt. Maar het gaat zovele malen sneller in ontwerp en doorzicht.

Kijk, daar gaan we. Het GAAT helemaal niet om snelheid bij een hobby. Het gaat om leren.

Je schema verschilt gewoon in niets met wat je nu doet. Op je scherm leg je het schema uit aan de leerlingen. Je maakt zelfs opzettelijk fouten of wijzigen en toont de resultaten op je breadboard.

Ieder zijn meug zal ik maar zeggen...

Ain't no place like 127.0.0.1
Anoniem

Een van de leuke dingen van ontwerpen vind ik het "verwonderen". Met een breadboard en een lade met 74xx kan ik me lekker bezighouden. Zo hoop ik later veel behendiger te zijn met FPGA dan de gemiddelde iemand die vanuit software komt. Uiteindelijk is elk ICtje een booleaanse formule :).

fred101

Golden Member

Ben verwoordt het goed bij de opbouw van de registers video. Hij zegt dat het eenvoudiger kan maar met de 74LS173 en 74LS245 kan hij met behulp van de ledjes mooi laten zien wat er gebeurd. En dat is voor mij de hoofdreden geweest om dit te bouwen. Je kunt nog zo'n mooie schemas maken maar ik vind het geweldig dat je nu aan al die ledjes en de supertrage klok ziet wat er gebeurd. Je ziet de data gewoon door de computer gaan.

www.pa4tim.nl, www.schneiderelectronicsrepair.nl, Reparatie van meet- en calibratie apparatuur, ook maritieme en industriele PCBs

Op 18 oktober 2017 19:42:20 schreef fred101:
Hij zegt dat het eenvoudiger kan maar met de 74LS173 en 74LS245 kan hij met behulp van de ledjes mooi laten zien wat er gebeurd.

Je ziet de data gewoon door de computer gaan.

Die ledjes zet je toch ook op breadboard met draadjes aan je uitgangen van de FPGA, het is ook een chipje.
Schema entry heeft weinig te maken met programmeren, het zijn je draden met de logica symbolen die je tekent, geen formules of eerder welke code.
Het probleem ligt gewoon bij het onbekende omdat er idd een leer kurve bij zit hoe je een FPGA voor het eerst moet gebruiken. Als je nu een NAND in een FPGA of in een 1/4 74LS00 gebruikt heb je toch 2 ingangen en 1 uitgang. Je ledje mag toch ook aan die uitgang liggen (met een R ). Heb je een inverter nodig moet je direct een 74LS04 bijzetten, in de FPGA tekent je hem gewoon erbij

Maar oké, mijn tip zal hopeloos blijven...

tmdr

Golden Member

Ik denk dat we geen discussie moeten gaan voeren over FPGA of het feit dat breadboards en/of lange draden op een gaatjes print niet optimaal zijn. Dat weten we allemaal wel. Het gaat ook niet om de hoge snelheden of de functionaliteit (want dan zou een MCU een stuk makkelijker zijn ;-) ). Gerard verwoordt het bijzonder goed: het gaat om het leren. Laten we dus de topic titel eer aan doen; 8-bit computer op een breadboard (of gaatjes print of whatever). Mee doen met die FPGA stuff is natuurlijk ook leuk, kan me voorstellen dat niet iedereen zin/tijd/geld heeft voor een dergelijk fysiek project.

Anyway, ben nog bezig met mijn caps. Ik heb ongeveer even veel 104 schijfjes over de voedingsbussen gezet als dat ik ICs heb nu. Lijkt wel vrij stabiel maar moet nog een volledig programma in RAM zetten om echt te testen.

Dan wat anders: wilde zojuist een 28C256 geprobeerd te programmeren, in tegenstelling tot de 28C16 die ik tot nu toe alleen maar heb geprogrammeerd met mijn universele DIY programmer. Echter, wat ik ook doe, lees ik slechts 0xFF. Nu heb ik gelezen dat dit af fabriek de waarde op de ROM is, dus heb ik zitten kijken naar de write protection. Af fabriek zou die disabled moeten zijn. Maar goed, wél de meest logische verklaring voor dit verschijnsel. Dus ik heb de write sequence voor het disablen opgezocht en geprobeerd:

c code:


  write_rom(0x5555, 0xAA);
  write_rom(0x2AAA, 0x55);
  write_rom(0x5555, 0x80);
  write_rom(0x5555, 0xaa);
  write_rom(0x2AAA, 0x55);
  write_rom(0x5555, 0x20);

Heb overigens wel gezorgd dat tussen de writes van de sequence zo min mogelijk tijd zit (las dat ergens op internet, not sure). Dus alleen delays waar echt nodig is. Verder heb ik CE, die normaal aan GND hangt bij mijn programmer, aan WE gehangen omdat de datasheet laat zien dat die tijdens de sequence het zelfde gedrag moeten vertonen. Verder datasheet nog helemaal niet goed bestudeerd, dus wie weet mis ik iets.

Ik heb ook geprobeerd om meer dan de ~500ns WE pulse te doen (die ik voor de 28C16 gebruk), maar geen effect.

Edit: @fred101 ik heb helaas geen scope tot mijn beschikking. De boel trekt momenteel 1.14A. De uitvallende PS bleek een klein brugje te zijn dat voor een lichte kortsluiting kon zorgen (denk ik, nu in ieder geval geen problemen meer mee).

Op 18 oktober 2017 18:56:23 schreef fotoopa:
[...]
Dit begrijp ik niet. Wat is nu het verschil tussen een schema met de hand getekend en een schema entry in bv Quartus (Altera) met een FPGA of CPLD ? Exact hetzelfde schema met and's, or's, tellers, jkff's met dezelfde IC nummer uit de lib vb 74x00 74x90 enz. Je hebt gewoon input en output pinnen en ertussen zit dat schema. Bij een FPGA moet je niets doen wat tussen die pinnen zit behalve je schema compileren en downloaden. Zit er een foutje in, pas je schema aan volgens dat je denkt dat het moet, compileer en test het opnieuw. Je kunt het ook simuleren zonder iets te maken.

Ik ben het deels met u eens ;-)

Ik ben ook bezig om een met TTL een CPU te ontwerpen.
In tegenstelling tot de meesten, ben ik nu wel begonnen een schema entry te maken in quartus.

Dit heeft deels te maken, dat ik een idee heb hoe ik een computer wil bouwen, maar de architectuur is een beetje afwijkend. Dit is dus handig om eerst te simuleren, omdat er op internet bijna geen voorbeelden en documentatie over te vinden is.

Mijn doel is wel om met een hele zooi onderdelen die ik in de jaren heb verzameld een junkbox computer te bouwen. :-)

meten is weten, weten is meten, maar hoe kan je weten wat je allemaal moet meten en weten.

Op 18 oktober 2017 20:28:22 schreef tmdr:
...
Dan wat anders: wilde zojuist een 28C256 geprobeerd te programmeren, in tegenstelling tot de 28C16 die ik tot nu toe alleen maar heb geprogrammeerd met mijn universele DIY programmer. Echter, wat ik ook doe, lees ik slechts 0xFF. Nu heb ik gelezen dat dit af fabriek de waarde op de ROM is...

Klopt.

...
Heb overigens wel gezorgd dat tussen de writes van de sequence zo min mogelijk tijd zit (las dat ergens op internet, not sure). Dus alleen delays waar echt nodig is. Verder heb ik CE, die normaal aan GND hangt bij mijn programmer, aan WE gehangen omdat de datasheet laat zien dat die tijdens de sequence het zelfde gedrag moeten vertonen. Verder datasheet nog helemaal niet goed bestudeerd, dus wie weet mis ik iets.

Ik heb ook geprobeerd om meer dan de ~500ns WE pulse te doen (die ik voor de 28C16 gebruk), maar geen effect.

De timing schijnt erg belangrijk te zijn. Kijk even op de datasheet, en even naar de video van Ben.

Succes!

Gerard

Ain't no place like 127.0.0.1
tmdr

Golden Member

Op 18 oktober 2017 21:06:27 schreef GerardWassink:

[...]

De timing schijnt erg belangrijk te zijn. Kijk even op de datasheet, en even naar de video van Ben.

Succes!

Gerard

Voor de 28C16 die Ben gebruikt (en ik tot op heden) is WE pulse max 1us. DelayMicroseconds(1) plus de overhead van een digital write / direct port manipulation is dus > 1us (Ben heeft hier af en toe ook gedoe mee). Daarom heb ik dat wat aangepast met direct port manipulation en ivp delayMicroseconds(1) doe ik 8 NOPs tussen m'n C code (op 16Mhz is dat 62,5ns). In totaal zit ik dus voor de 28C16 op 8 * 62,5 + overhead van port manip. Dat leek me beter en werkt als een trein. De 28C256 datasheet is niet expliciet in een maximum voor zo ver ik kan zien. Misschien dat jij uit ervaring kunt spreken?