Hjælp i VHDL?

B

BGA

Guest
-------
Sidst redigeret af BGA den
23. maj 2003 21:03, edited 1 gang i den samlede

 
Hvis jeg har forstået det korrekt, du ønsker at udskyde det signal, ikke i kanten af det.Så med dine krav, det synes næsten umuligt at opnå.Du vil skulle veeeery længe skift register at have forsinkelse 500us, hvilket er
100.000 ur cyklusser af dine vigtigste ur 20MHz.Det er rigtigt, at FPGAs er register rige, men ikke så meget ...Ud over at have det programmerbare du skulle vælge et output fra kræves registrere, hvad der også vil ikke være triviel.

Hvis du ønsker at forsinkelsen kun kanten af det signal, så det er en anden historie.

 
BGA wrote:

Jeg har brug for at forsinke en digital linje mellem 0 ns og 500us med praecision 5ns.

Mængden af forsinkelser er angivet i et register.

Enhver hjælp?
 
Hej ...tak for det replay.
Jeg
vil forsøge at forklare mere ...
Hvad jeg behøver at gøre, det
er præcis, hvad Gunship writed i stillingen.Du kan løse problemet med hukommelse Jeg tænker at gemme indgangssignal som følger:
Jeg har brug for at bruge 2 counters clocked på 200 MHz (opkaldt Counter1 og Counter2).
-Den første stigende kanten af det indgangssignal, der bruges til at starte Counter1;
-Når en faldende kant kommer, den stopper Counter1 og lad starte Counter2.
-Værdien af Counter1 er lagret i hukommelsen.
-Når det næste stigende kanten af indgangssignalet er opdaget, Counter2 er stoppet og Counter1 er startet.
-Værdien af Counter2 er gemt.
....og så videre.
Til at producere output signal, jeg har brug for at gøre sekventiel adgang til cirkulære buffer og sætte værdien i andre to tællere (Counter3 og Counter4).
Terminalen counter signal om Counter3 bruges til at fastsætte en FF; terminalen counter af Counter4 bruges til at Ryd FF.

Med de karakteristika af indgangssignalet jeg modtager, jeg har brug for mindre end 1000 element i en 32 bit hukommelse (formentlig 1000 * 16 bit).

Forsinkelsen D er D = N * 5ns hvor N er lagret i et register og kan ændre sig i løbet af den forsinkede processen.

Nu er problemet, at jeg ikke er uddannet til vhdl og en hjælp er nødvendig for at gennemføre denne maskine i fpga.
Kan U hjælpe mig?

 
Jeg er virkelig ikke er sikker på, hvad du vil gøre ..
Men det kan være til hjælp, hvis du ønsker at forsinke et signal i en FPGA ..som FPGA bruger du?Hvis det er Xilinx Virtex / SpartanII, du kan gennemføre denne i SRL16Es.

Som bekendt grundlæggende element i en FPGA er et kig op bordet.Xilinx FPGAs bruge en 4 input slå op i tabellen og igen, jeg taler af Xilinx Virtex Familie FPGAs.I Virtex FPGA, kan du konfigurere en LUT som et skift register med 16 niveauer forsinkelse.På den måde behøver du ikke spilde logik ressourcer på chippen.

Hvis du ikke bruger Xilinx udstyr ..og især Virtex familie udstyr ...og jeg dont kende

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smile" border="0" />Lad mig vide, hvis du ønsker mere info om dette SRL16Es

Hope this helps
Kode

 
Lad os prøve denne måde:
1: opnå singal af de stigende kant, som du ønsker at forsinke
2:
Brug 200m frequence [T = 5ns], (kan kan genereres fra FPGA)
3:
Brug en tæller, længden er 17 mindst

når afsløret signal om stigende kant, kan du indlede mod nul, indstille udgangssignal til en samme time.as gang, der sker, det couter fortsætter med at stige indtil den ankommer til målrette dine bare sæt., derefter deaktivere den udgangssignal, abtain faldet kant.

men problemet er, at outputtet jitter vil over 5ns.

 
Problemet er, at i den tid, det signal til forsinkelse kan have mere end en stigende og faldende kant.Signalet kan skifte mellem 0 og 1 med ingen særlige regler.

 

Welcome to EDABoard.com

Sponsor

Back
Top