Bop med FPGA ombord (6 / 7 steg)
Steg 6: VHDL moduler beskrivningar
Timer Counter:
Timer beror på några variabler. Den viktigaste variabeln är en, som har talats om i finita tillståndsdatorn. Detta program är de program som ser till att efter viss cykel (i vårt fall 4), programmet avslutas. Om sv = 1, så modulen lägger ett till ett 3 bitars binära tal, som är initialt nolla på resningen av clk. annars räknaren återställs till noll. Det finns också en utgång ska visas om tiden är över eller om du har tryckt på rätt knapp.
Score Counter:
Funktionellt, läggs räknaren upp 1 till den totala poängen om den tar emot en signal om matchen. Annars poängen ligger med föregående poängen. Partituret anges ursprungligen till noll. Poängen är att återställs till noll i viloläge av finita tillståndsdatorn.
Komparator:
Motsvarigheten tar i två 3 bitars bussar och jämför dem till bussarna när enen är 1. En av bussar representerar är btns och den andra lysdioderna. Denna komparator i princip kontrollerar om överensstämmer btns och lysdioderna. Om de gör, det signal en match, annars inte match signal är att skicka. Om motsvarigheten ser att btn inte har press, det kommer inte att ge matcha eller inte matchar någon signal.
sseg_dec:
Koden har skapats av Bryan Mealy. Denna kod innehåller få komponenter. Det omvandlar binär till decimal, förvaltar sju segmenterar skärmar med indatavärdet, och det också innehålla en klocka avdelare.
Klockan Division:
Klockan divider koden har skrivits av Bryan Mealy. En klocka avdelare saktar ner eller ökar frekvensen av klockan. Vi fixade max värden för att matcha tidsramen / cykla vi letade efter. Vår modifierade klocka divider körs på en fjärdedel en andra period.
Avkodare:
Vi har bara en dekoder som tilldelas slumpmässigt 8 bitars värdet värden olika 3 bitar. 8-bitars nummer representerar slumpmässiga värdet får vi från slumpmässigt bitars generatorn att vi pratade mer om i Detaljer senare. 3 bitars numret representerar den LED som kommer att lysa upp.
LED Driver:
Denna modul var tänkt att vara drivrutinen för knapp och tempo indikatorn LED'S. Tempo LED helt enkelt kopieras långsammare klocksignalen från vår klocka avdelare och blixtrade i takt med spelet. Knappen indikatorn LED blinkar för två första av de fyra takterna visas av indikatorn tempo som den kopierade signalen från vår super långsam klocka (period fyra takterna).
Random-knappen väljaren:
Random-knappen väljaren att vi hade använt en pseudo random lite generator, skapad av en linjär återkoppling skiftregister (eller LFSR för kort). Denna LFSR är helt enkelt en kedja av d-flip flops med några utvalda flip-flop utgångar till XOR grindar som leder tillbaka till den första d-flip floppen. Denna kedja skapas en semi-slumpmässigt sekvens som kommer att upprepa sig någon gång (men inte som snabbt). Denna LFSR skapar ett slumpmässigt åttabitars binärt tal (i decimal, någonstans mellan 0 och 255), som vi sedan skickar till vår dekoder att välja en knapp. (Våra PRBG var modellerad efter Debashish Mohapatra 16-bitars PRBG, som finns herehttp://www.debashish.info/index.php/e-learning/vlsi-design/vhdl-codes/174-prbs-pseudo-random-binary-sequence-generator-vhdl-code-and-vhdl-testbench-creation)