Comment faire pour retarder la sortie?

A

anee_anil

Guest
Salut à tous,

Mon entrée est de 10 MHz (100 ns).Horloge du CPLD est 80MHz.
Il ya 5-bit ligne de sélection de retard qui sélectionne l'entrée d'être retardé en nombre de cycles d'horloge.
par exemple, 00101 retards de sortie de 5 cycles d'horloge 12,5 * 5 = 62.5ns
mais mon code ne fonctionne pas après 00011 sélection.S'il vous plaît quelqu'un m'aider.
Voici mon code.IEEE bibliothèque;
IEEE.STD_LOGIC_1164.ALL utilisation;
IEEE.STD_LOGIC_ARITH.ALL utilisation;
IEEE.STD_LOGIC_UNSIGNED.ALL utilisation;

fiber_splitter entité est
port (CLK: en std_logic;
inp_wave: en std_logic;
delay_sel: en std_logic_vector (4 downto 0);
out_wave: std_logic out);
fiber_splitter fin;

l'architecture du comportement des fiber_splitter est

commencer
processus (CLK)
commencer
- Si (clk'event et CLK = '1 ') puis
delay_sel cas est
quand «00000» = out_wave <> = inp_wave;
quand "00001" => out_wave <= inp_wave après 12.5ps;
quand "00010" => out_wave <= inp_wave après 25.0ps;
quand "00011" => out_wave <= inp_wave après 37.5ps;
quand "00100" => out_wave <= inp_wave après 50.0ps;
quand "00101" => out_wave <= inp_wave après 62.5ps;
quand "00110" => out_wave <= inp_wave après 75.0ps;
quand "00111" => out_wave <= inp_wave après 87.5ps;
quand "01000" => out_wave <= inp_wave après 100.0ps;
quand "01001" => out_wave <= inp_wave après 112.5ps;
quand "01010" => out_wave <= inp_wave après 125.0ps;
quand "01011" => out_wave <= inp_wave après 137.5ps;
quand "01100" => out_wave <= inp_wave après 150.0ps;
quand "01101" => out_wave <= inp_wave après 162.5ps;
quand "01110" => out_wave <= inp_wave après 175.0ps;
quand "01111" => out_wave <= inp_wave après 187.5ps;
quand "10000" => out_wave <= inp_wave après 200.0ps;
quand les autres => null;
Fin de cas;
- Fin si;
processus de bout;
fin comportement;Merci d'avance

 
En autant que je sache le «après» est pour la simulation seulement, et ne peuvent pas être synthétisés.
Donc, vous devez créer un peu registre à décalage-63, et l'utilisation d'un multiplexeur pour sélectionner la sortie appropriée.

Quelque chose comme ce «code», qui n'est pas vérifiée à tous et ne montre que l'essentiel:
Code:

...

signal Shifreg: std_logic_vector (62 downto 0);

...

processus (CLK)

commencer

si rising_edge (CLK), puis

Shiftreg <= Shiftreg (61 downto 0) & inp_wave;

fin si;

processus de bout;avec delay_sel sélectionnez

<= Out_wave inp_wave lorsque «00000»,

Shiftreg (0) lorsque "00001",

Shiftreg (1) lorsque "00010",

Shiftreg (2) lorsque "00011",

Shiftreg (3) lorsque "00100",

........

Shiftreg (62) lorsque "11111";

 

Welcome to EDABoard.com

Sponsor

Back
Top