LFSR with dynamic count-to flag
Caracteristici
- Programare dinamica a valorii count_to, care indica momentul in care numaratorul atinge o valoare specificata
- Viteza ridicata
- Reset asincron
- Indicator de terminare a numararii
Functionarea numaratorului
width este un parametru ce poate lua valori intregi de la 1 la 50.
Numaratorul este incarcat cu data prin aplicarea valorii logice 0 pe intrarea load. Operatia de incarcare (load) este sincrona cu frontul pozitiv al semnalului de ceas.
Count_to este intrarea secventei binare pseudoaleatoare, cu o dimensiune de width-1 biti.
Cand cen (count eneble) este 1, numaratorul este activ. Daca cen este 0, numararea este inhibata si valoarea count ramane neschimbata.
Semnalul reset, activ in 0, este asincron.. Cand reset este 0, iesirea numaratorului este “00…00”. Cand reset este 1, numaratorul functioneaza normal.
count este iesirea secventei binare pseudoaleatore, cu o dimensiune de width-1 biti. Valoarea de 2width-2(“11…11”) este ilegala; de aceea, numaratorul se va bloca la aceasta valoare.
tercnt este semnalul de iesire care indica terminarea numararii, activ in 1. tercnt devine 1 pentru o perioada de ceas pentru a indica faptul ca iesirea numaratorul are valoarea egala cu intrarea count_to.
Modelul comportamental
1. Modulul de test
module lfsr(
data,
count_to,
cen,
load,
clk,
reset,
count,
tercnt);
parameter width=8;
input clk;
input cen, load, reset;
input [width-1:0] data, count_to;
output [width-1:0] count;
output tercnt;
reg [width-1:0] count;
always@(posedge clk or negedge reset)
begin
if(~reset)
count<=8'b0;
else
if(cen)
begin
if(load)
count<={~(count[6]^count[5]^count[1]^count[0]), count[7:1]};
else
count<=data;//counterul se initializeaza cu data daca cen e activ si load
//inactiv
end
end
assign tercnt=(count==count_to);//generarea impulsului tercnt daca s-a ajuns la valoarea count_to
endmodule
2. Generatorul de stimuli
module lfsr_tb(
Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.