DennisD7's CPLD-PacMan

Berätta om dina pågående projekt.
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

matseng skrev:
Hur många gates (och är alla av samma sort eller måste man hushålla med de olika typerna) finns det i den CPLD du använder?

...

Hur stor flexibilitet finns det i CPLD'n? Kan man koppla utgången på en and-gate till ingången på 250 st andra and-gates? (bortser här ifrån problem med fanout (drivförmågan på utgången))

Vad har man för grindfördröjning?
DennisD7 får rätta mig om jag har fel, men jag tror det är XC9500XL-serien han använder. Varje CPLD där har mellan 36 och 288 macroceller. Macrocellerna har en vippa och på ingången till den något som ungefär motsvarar en 5-ingångs OR-grind, som på varje ingång har en 54-ingångars AND-grind (om jag fattat databladet rätt). En makrocell kan också låna "OR-ingångar" från andra macroceller vid behov, och så finns det lite extra logik för att generera set/reset till vippan och output enable och lite sånt. Utången från varje macrocell tas antingen direkt från OR-grinden eller från vippan och kan gå till en utångspinne eller till andra macroceller.

Så det är inte direkt en stor soppa med olika sorters grindar som flyter omkring, men varje macrocell kan implementera nästan vilken logisk funktion man vill så det går bra att rita massa grindar och sen översätter programmet det till en stor AND-OR struktur.

Det som brukar ta slut först i CPLDs är vipporna, i den minsta XC9500 kan man t.ex. göra en 36bits räknare - sen är det fullt.

Det finns olika speed-grades, men i den långsammaste XC9500XL-varianten är det ungefär 10ns genom en macrocell tror jag, och c:a 15ns från pinne till pinne (genom en macrocell).

Är imponerad av det här projektet förresten, tror inte jag ens skulle komma på tanken att göra ett pacman på det här sättet, speciellt inte genom att rita scheman med lösa grindar. Har visserligen gjort ett pong (med TV som display) i CPLDs, men det var skrivet i VHDL.

Keep up the good work!
Användarvisningsbild
DennisD7
Inlägg: 259
Blev medlem: 6 januari 2005, 17:35:23
Ort: Stockholm
Kontakt:

Inlägg av DennisD7 »

Hej, oj vad kul med en massa respons. Nu ska vi se...

Cyr: Jag märker att jag vet pinsamt lite om hur det verkligen funkar med makroceller osv. Jag använder XCR3064XL som har 64 makroceller, och i specen står det att det motsvarar 1500 grindar. Jag har märkt att den gnäller när jag använder jättemånga vippor på en gång, men jag tror den ändå klarar fler än 64. Jag ska undersöka saken närmre. Tack för de uppmuntrande orden! :)

sebastiannielsen: Bra idé faktiskt. jag ska se hur jag löser det.

matseng:
Grundläggande element... det finns ett stort bibliotek med alla man kan önska sig, plus en hel del som verkar vara ihopsatta (typ räknare osv). Jag försöker hålla det så enkelt som möjligt, om inte annat för att jag vill kunna göra allt själv. Jag håller mig till varianter av AND, OR, XOR, inverterare, samt D-vippor.

Antal gates ska vara 1500, och jag tror de internt kan fungera som vad som helst... precis som cyr säger. Jag har inte någon prognos hur många jag kommer att använda, jag bara hoppas att det ska få plats över huvudtaget... vi får se. I värsta fall får jag använda 2 CPLDer. Men det löser sig.

Flexibilitet: svaret är "ja", tror jag. Jag brukar bara rita och testa. Inga problem hittills. Fördröjning sägs vara 10 ns, vilket är en miljon gånger snabbare (bokstavligen) än vad som behövs. Men men... det är kul att lära sig och det är rätt billigt.

Jo, Elektron, jag vet. Men min pacman är egentligen en gul polisbil som kör omkring i gängområden i LA och bustar gröna gangbangers. De röda är crack-kungar som är för farliga till och med för polisen. Aight! 8)
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Ah, coolrunner. De vet jag inte så mycket om, förutom att namnet är coolt :)
Det kan hända att det finns extra vippor förutom de 64 macrocellerna, jag vet t.ex. att en gammal MACH-krets jag använt även hade vippor direkt på varje ingång.

Trots det så lyckades vi på något sätt göra av med tre styck 128-macrocells såna chip till vårt pong om jag minns rätt. Men låt inte det skrämma dig :wink:
evert2
Inlägg: 2182
Blev medlem: 18 april 2004, 22:47:56
Ort: Jönköping

Inlägg av evert2 »

Jag minns att man i ett verktyg för VHDL, kunde göra olika optimerings-inställningar....t ex timing eller yta .....är ju iofs osäker på om det går att göra likadant med denna typ av verktyg.... :o
Användarvisningsbild
DennisD7
Inlägg: 259
Blev medlem: 6 januari 2005, 17:35:23
Ort: Stockholm
Kontakt:

Inlägg av DennisD7 »

Well, som sagt så löser det sig säkert.
Jo jag har sett nån sån inställning, men jag vet inte om det gör en enorm skillnad....

BTW så räknade jag ut att jag behöver (minst) 53 vippor.
- 1 vippa per piller (35 st)
- 6 vippor för pacman
- 6 vippor per spöke (jag tänkte ha 2 spöken)
...sen lite olika counters osv, så jag får se hur det går.
Användarvisningsbild
DennisD7
Inlägg: 259
Blev medlem: 6 januari 2005, 17:35:23
Ort: Stockholm
Kontakt:

Inlägg av DennisD7 »

News:
Igår kom jag en bit på väg. V0.1 uppgraderades så att spelplanen i början är fylld av gröna prickar som "äts upp" när man går på dem. Rätt sweet, och det gick förvånansvärt smidigt att bygga. 2 problem:

1. Man börjar i övre vänstra hörnet eftersom det är adress 00-000 på vipporna. Jag måste fundera ut ett smart sätt att initiera spelet så att man flyttas till en bra startposition. Dessutom har jag ingen reset-funktion för pillerna, utan jag måste stänga av spelet och starta igen när jag har ätit upp alla.

2. Det verkar stämma att en vippa tar upp en hel makrocell :( Efter gårdagens grej använder jag 22 vippor (15 piller + X och Y för gubben) och rapporten säger att 38 (av 64) macroceller används. Jag kommer antagligen att få använda en separat CPLD bara för mina 35 piller. Tråkigt, men vad kan man göra?

...en annan sak är att jag har tappat bort mina röd-gröna lysdioder. De borde ligga i en liten påse någonstans i lägenheten, MEN VAR?! :?
Användarvisningsbild
metanolic
Inlägg: 154
Blev medlem: 7 december 2004, 19:29:42
Ort: Trollhättan
Kontakt:

Inlägg av metanolic »

ursäkta OT men DennisD7, du är min nya idol :D

jag ska lätt bygga en sådan pongbyggsats och ha fast monterad i bilen.. knapparna får sitta nånstans i konsollen mellan framstolarna, bredvid handbromsspaken.. så ska jag tvinga alla som åker med att spela Pong :badgrin:

/Pongfreak
evert2
Inlägg: 2182
Blev medlem: 18 april 2004, 22:47:56
Ort: Jönköping

Inlägg av evert2 »

metanolic: Ja låt ingen komma undan :twisted:
Användarvisningsbild
DennisD7
Inlägg: 259
Blev medlem: 6 januari 2005, 17:35:23
Ort: Stockholm
Kontakt:

Inlägg av DennisD7 »

Jag förlåter dig för den här gången :wink:

Coolt! Men menar du att de i baksätet ska spela? Eller tänkte du sätta in TVn där stereon brukar sitta? Kan bli bra. Jag har några äkta arkadknappar över (både lysande och vanliga) om du behöver.
Användarvisningsbild
metanolic
Inlägg: 154
Blev medlem: 7 december 2004, 19:29:42
Ort: Trollhättan
Kontakt:

Inlägg av metanolic »

menar att dom där fram ska kunna spela :) pong'et får använda samma lcdskärm som dvd'n och nintendo 8-bit'et ;) har tyvärr ingen skärm än men..

nej tack, ska sätta dit elhissknappar istället.. tror det blir mycket bättre spelkänsla med såna istället för 2 (4) separata knappar..
Användarvisningsbild
DennisD7
Inlägg: 259
Blev medlem: 6 januari 2005, 17:35:23
Ort: Stockholm
Kontakt:

Inlägg av DennisD7 »

Ajaj,
Som jag just svarade på ditt mail behöver man trycka ner både upp och ner samtidigt ibland....
Användarvisningsbild
metanolic
Inlägg: 154
Blev medlem: 7 december 2004, 19:29:42
Ort: Trollhättan
Kontakt:

Inlägg av metanolic »

aj då.. men det borde ju gå att lösa med en separat tryckknapp med serve/smash-funktion.. alltså om man trycker på den knappen får det samma konsekvens som att trycka upp/ner samtidigt..
Användarvisningsbild
DennisD7
Inlägg: 259
Blev medlem: 6 januari 2005, 17:35:23
Ort: Stockholm
Kontakt:

Inlägg av DennisD7 »

Buhu, jag ligger hemma med feber. :?

Häromdagen blev jag lite löd-tokig:

Bild

Plus att jag har kommit på ungefär hur jag ska gå tillväga med att använda två CPLDer. Det blir en del krångel, men det har ju aldrig stoppat mig förr.
Användarvisningsbild
DennisD7
Inlägg: 259
Blev medlem: 6 januari 2005, 17:35:23
Ort: Stockholm
Kontakt:

Inlägg av DennisD7 »

Som syns ovan har jag lött fast alla lysdioder, och nu har jag dessutom kopplat ihop dem på baksidan också.

Nästa steg är redan halvklart, nämligen att göra motsvarande Version 0.1 men med 7 rader. DVS: en gul prick som man kan förflytta med hjälp av knapparna (och som stannar när en yttervägg dyker upp). Sedan är det dags för innerväggarna och sen ska jag göra 2 farliga "spöken" som vandrar omkring i labyrinten.

Beställde för övrigt en sån här: (Elfalänk)

Bild

Den är 7,5 x 7,5 x 5 mm och kanske blir bra i pacmanspelet. Vi får se...
Användarvisningsbild
DennisD7
Inlägg: 259
Blev medlem: 6 januari 2005, 17:35:23
Ort: Stockholm
Kontakt:

Inlägg av DennisD7 »

En produktiv helg:
- testade displayen och gjorde en förteckning av pinnarna.
- programmerade och testade ett höger/vänster-minne för pac-gubben, och lade dessutom till en resetfunktion som placerar gubben i startposition.
- programmerade och testade upp/ner-minne, även den med resetfunktion enligt ovan.
- implementerade ovanstående.

Vi kan kalla det Prototyp 1 Version 0.2: en röd prick som man kan gå omkring med och som stannar när den kommer till en yttervägg. Man kan dessutom enkelt nollställa och då hamnar man i startposition.

Det låter kanske inte som så mycket, men eftersom jag insisterar att jobba med logiska grindar så har jag haft mardrömmar där en ond XNOR-grind jagar mig genom en labyrint av AND-gindar, och skrattar åt mina amatörmässiga kopplingsfel, och min tjej påstår att jag svamlar i sömnen "noll-ett-ett, ett-noll-ett. Nej!".
Skriv svar