Detect aantal van bit te veranderen in een klokcyclus

M

mpatel

Guest
Hoe kan ik schrijven van een VHDL-code op te sporen van het aantal bit te veranderen ..

Zo heb ik 4-bits register A. De waarde van is A = 1100.Nu is het veranderd in A = 1010.Dus hoe kan ik ontdekken hoeveel bits zijn veranderd?

Is er een oplossing op te sporen in een enkele klokpuls?

Bedankt

 
Hoi,

Hieronder vindt u de eenvoudige stroom met Verilog-code

toewijzen no_of_change = data_dly ^ data_in;

altijd @ (posedge clk)
data_dly <= data_in;

for (i = 0; i = 3; i = i 1) / / zij zal de uitvoering van de combinatorische logica
count = count data_in ;

Deze telling geeft u het aantal wijzigingen.Groeten,
Kanags

 
Laat Q (3 Downto 0) worden de output van de verschuiving registreren.

proces (CLK)
if (clk = '1 'en clk'event)
if (A (3) = Q (3))
count <= count 1;
end if;
if (A (2) = Q (2))
count <= count 1;
end if;
if (A (1) = Q (1))
count <= count 1;
end if;
if (A (0) = Q (0))
count <= count 1;
end if;
end if;
einde proces

Zo, eindelijk dit COUNT geeft het niet.van bit wijzigingen

 
kunt u eenvoudig XOR elke vertraagde versie van een beetje met zijn huidige waarde, dus met elke verandering in elk beetje je plotseling detecteert de verandering (ogenblikkelijk met slechts een heel erg klein weinig vertraging).
Nu kunt u de daaruit voortvloeiende bits bij elkaar in een klokcyclus en ontvang het aantal van hen.

a: signaal std_logic_vector (3 Downto 0)
dlyd_a: signaal std_logic_vector (3 Downto 0)
c: signaal std_logic_vector (3 Downto 0)
res: signaal std_logic_vector (3 Downto 0)c <= a xor dlyd_a;

proces
beginnen
indien rising_edge (clk) then
dlyd_a <= a;
res <= C (0) c (1) c (2) C (3);
end if;
einde procesIk ben niet zeker over de syntax error, maar kunt u eenvoudig zelf aanpassen ...

 

Welcome to EDABoard.com

Sponsor

Back
Top