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.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?
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!