Cum să întârzie de ieşire?

A

anee_anil

Guest
Bună tuturor,

De intrare meu este de 10MHz (100ns).Ceas de CPLD este de 80MHz.
Există 5-bit Delay Line de selecţie care selectează de intrare care urmează să fie amânată după numărul de cicluri de ceas.
de exemplu, 00101 întârzieri de ieşire de cicluri de ceas 5 12.5 * 5 = 62.5ns
, dar codul meu nu funcţionează după 00011 de selecţie.Te rog pe cineva sa ma ajuti.
Aici este codul meu.IEEE biblioteca;
IEEE.STD_LOGIC_1164.ALL utilizare;
IEEE.STD_LOGIC_ARITH.ALL utilizare;
IEEE.STD_LOGIC_UNSIGNED.ALL utilizare;

fiber_splitter entitate este
port (CLK: in std_logic;
inp_wave: in std_logic;
delay_sel: in std_logic_vector (4 downto 0);
out_wave: out std_logic);
fiber_splitter scop;

arhitectura comportamentale ale fiber_splitter este

începe
proces (CLK)
începe
- în cazul în care (clk'event şi CLK = '1 '), apoi
delay_sel caz este
atunci când "00000" => out_wave <= inp_wave;
atunci când "00001" => out_wave <= inp_wave după 12.5ps;
atunci când "00010" => out_wave <= inp_wave după 25.0ps;
atunci când "00011" => out_wave <= inp_wave după 37.5ps;
atunci când "00100" => out_wave <= inp_wave după 50.0ps;
atunci când "00101" => out_wave <= inp_wave după 62.5ps;
atunci când "00110" => out_wave <= inp_wave după 75.0ps;
atunci când "00111" => out_wave <= inp_wave după 87.5ps;
atunci când "01000" => out_wave <= inp_wave după 100.0ps;
atunci când "01001" => out_wave <= inp_wave după 112.5ps;
atunci când "01010" => out_wave <= inp_wave după 125.0ps;
atunci când "01011" => out_wave <= inp_wave după 137.5ps;
atunci când "01100" => out_wave <= inp_wave după 150.0ps;
atunci când "01101" => out_wave <= inp_wave după 162.5ps;
atunci când "01110" => out_wave <= inp_wave după 175.0ps;
atunci când "01111" => out_wave <= inp_wave după 187.5ps;
atunci când "10000" => out_wave <= inp_wave după 200.0ps;
atunci când alţii => null;
cazul scop;
- în cazul în care scop;
Procesul de sfârşitul anului;
sfârşitul comportamentale;Thanks in advance

 
În ceea ce ştiu "după" este doar pentru simulare, şi nu pot fi sintetizate.
Deci, va trebui să creaţi un 63-bit deplasare registru, şi de a folosi un multiplexor pentru a selecta de ieşire corespunzător.

Ceva de genul codul de acest "", care nu este verificat la toate şi arată doar elementele de bază:
Cod:

...

semnal de Shifreg: std_logic_vector (62 downto 0);

...

proces (CLK)

începe

în cazul în care rising_edge (CLK), apoi

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

sfârşitul anului în cazul în care;

Procesul de sfârşitul anului;selectaţi cu delay_sel

out_wave <= inp_wave atunci când "00000",

Shiftreg (0) atunci când "00001",

Shiftreg (1) atunci când "00010",

Shiftreg (2), atunci când "00011",

Shiftreg (3) atunci când "00100",

........

Shiftreg (62) atunci când "11111";

 

Welcome to EDABoard.com

Sponsor

Back
Top