Cross ur domæne

E

EDA_hg81

Guest
I mit design, er et lokalt ur genereres af et ur skillevæg, der ser ud som følger:

Citat:

proces (iARM7_CLK)

begynd

if (rising_edge (iARM7_CLK)) then

spiclkcon <= spiclkcon 1;

if (spiclkcon = spiclk_gen) then

spiclkcon <= x "00";

spiclk <= ikke spiclk;

elsif (spiclkcon = x "32" og spiclk = '0 ') then

..
kontrollere data fra ARM7 CLOCK domæne
 
whato du skal gøre, er at fortsætte med at bruge din, lad os kalde det ur, og brug din delt ur som ur muligt.

hvis risinge_edge (sys_clk) then

hvis divide_clk = '1 'så
(
sætte din logik her;

)

Deres resultater er nu bragt i overensstemmelse med systemets ur.
betale Attentio dit output til dit domæne er nu tilpasse med sys_clk, og ikke divide_clk.så du er nødt til at flytte dem.

 
det er ikke rigtig CDC da du kun bruger en ur til at producere delt ur, begge af disse ure vil være i samme phace.

CDC betyder, når du krydser domæne mellem to ure og der ikke er nogen sammenhæng mellem disse ure

 
Kode:

if (rising_edge (iARM7_CLK)) then

spiclkcon <= spiclkcon 1;

if (spiclkcon = spiclk_gen) then

spiclkcon <= x "00";

spiclk <= ikke spiclk;

elsif (spiclkcon = x "05" og spiclk = '0 ') then

tilfælde readstatus er

når x "00" =>

if (iSD_BUF (7) = '1 ') then

command <= command09;

readstatus <= readstatus 1;

elsif (iSD_BUF (6) = '1 ') then

command <= command09;

readstatus <= readstatus 1;

end if;
 
ser sig om ret, men jeg havde fortalt dig før, skal du adskille dine processer, gøre kode mere readble, og også gøre compilier job let.Også når du læser din timing rapport, giver det mere let at analysere, når du har mere struktureret kode

god mangler

 

Welcome to EDABoard.com

Sponsor

Back
Top