Explicați și corectați eroarea prezentă în următoarea porțiune de cod.
Explicați și corectați eroarea prezentă în următoarea porțiune de cod.
module Loop_Bad;
reg [3:0] i;
reg [31:0] DBus;
initial DBus = 0;
initialbegin #1;
for (i=0; i<=15; i=i+1) DBus[i]=1;
end
initialbegin
$display("DBus = %b",DBus);
#2;
$display("DBus = %b",DBus);
$stop;
end
endmodule
Explicați următoarele.
Explicați următoarele.
integer IntA;
IntA = -12 / 3; // rezultat -4
IntA = -'d 12 / 3; // rezultat 1431655761
Determinați și explicați valorile pentru intA și regA după fiecare atribuire din codul următor:
integer intA;
reg [15:0] regA;
intA = -4'd12;
regA = intA/3;
regA = -4'd12;
intA = regA/3;
intA = -4'd12/3;
regA = -12/3;
Considerați următoarele specificații:
Considerați următoarele specificații:
reg [7:0] a, b, sum;
sum = (a + b) >> 1;
Intenția este de a aduna a cu b. Acest lucru ar putea genera depășire, apoi să se facă o deplasare drepta cu intenția de a păstra bitul de transport. Însă, deoarece toți operanzii sunt reprezentanți pe 8 biți, expresia (a + b) va avea doar 8 biți, iar bitul de tranport va fi pierdut înainte de a face deplasarea la dreapta. O soluție este ca expresia (a + b) să fie reprezentată pe minim 9 biți. De exemplu, adunând o valoare întreagă 0, se va forța ca rezultatul să fie reprezentat ca întreg. Verificați dacă alternativele de mai jos produc efectul dorit.
sum = (a + b + 0) >> 1;
sum = {0,a} + {0,b} >> 1;
Tabelul de mai jos prezintă diverse modalități de modelare a unui registru de deplasare de 2 biți. Verificați prin simulare corectitudinea acestor modele.
Tabelul de mai jos prezintă diverse modalități de modelare a unui registru de deplasare de 2 biți. Verificați prin simulare corectitudinea acestor modele.
Proiectați un model pentru un semafor. Frecvența ceasului de intrare este de 1MHz. Semaforul are următorul ciclu: verde (60 s), galben (1 s), roșu (60 s).
Proiectați un model pentru un semafor. Frecvența ceasului de intrare este de 1MHz. Semaforul are următorul ciclu: verde (60 s), galben (1 s), roșu (60 s).
Modificați modelul pentru a avea următorul ciclu: roșu (60 s), roșu+galben (5 s), verde (60 s), galben(10 s).
Modificați modelul pentru a admite un ciclu programabil.
Proiectați un numărător de 9 biți având următoarea interfață. Numărătorul trebuie să funcționeze la frecvență maximă într-o implementare pe FPGA Spartan3E.
Proiectați un numărător de 9 biți având următoarea interfață. Numărătorul trebuie să funcționeze la frecvență maximă într-o implementare pe FPGA Spartan3E.