Det jag vill göra är att återskapa funktionaliteten som finns i en MT8812 (länk: https://www.microsemi.com/document-port ... eet-sept11) , som är en 8x12 Switch Array. Sju ingångar bestämmer exakt en utgång som signalen DATA ska hamna på när STROBE pulsas hög. Det här borde, tycker min humla, inte vara ogenomförbart med en CPLD. Jag vet bara inte riktigt hur ännu.
I mitt fall har jag också sju ingångar, fördelat på en 4-bit AX[3-0] samt en 3-bit AY[2-0]. Utgångar är två 8-bit YA[7-0] samt YB[7-0]. Beroende av alla kombinationer på AX och AY ska exakt en bit i vardera PA/PB påverkas, när och endast när STROBE pulsas. Om RESET sätts ska samtliga utgångar nollas.
Ungefärlig sanningstabell för AX/AY kontra YA/YB:
Min Verilog-fil har just inget mer än enbart deklarationen, längre än så har jag inte kommit:
Kod: Markera allt
module Main(
output [7:0] PA,
output [7:0] PB,
input [3:0] AX,
input [2:0] AY,
input STROBE,
input DATA,
input RESET
);
endmodule
Frågor:
Vilket är lämpligt sätt att implementera en uppslagstabell enligt den sanningstabell jag har tagit fram för det aktuella projektet? En hord med if-satser? (Jag är i detta begynnelsestadie mer intresserad av fullt läsbar kod jämfört med superkomprimerade quick-n-dirty-hack)
STROBE pulsas externt av en microcontroller. Utöver denna signal, behöver jag en klocksignal till CPLD-kretsen? Databladet för XC2C32A är lite vagt skriven, pinne 1 sägs vara "Global clock" men mer information om klocka hittar jag inte. Jag vet alltså inte om kretsen måste klockas (som en microcontroller), eller om den kan köras ändå.