Bonjour,
Je voudrais décaler mon horloge selon une valeur de sélection.
J'explique mon projet:
en sortie d'un démultiplexeur 1b/20b (chaque coup d'horloge un bit est mis en parallèle), je rentre dans un bloc VHDl de "détection" pour reconnaitre un mot de 10bits ("k28.5") dans ma sortie parallèle sur 20bit
ex: mots reconnu sur out(13 downto 4), pour connaitre la position de ce mot je me sert d'un signal "detect" sur 4bits qui m'indique la position du mot k25.5 .
donc
Et donc maintenant je voudrais donc pour pouvoir aligné correctement mon mot, le placé dans tout les cas à dout(9 downto 0).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 si K28.5 est positionnée sur dout( 9 downto 0) alors detect ="0001" si K28.5 est positionnée sur dout( 10 downto 1) alors detect ="0010" etc etc etc si K28.5 est positionnée sur dout( 18 downto 9) alors detect ="1001"
donc mon idée est donc si il ya détection du mots de décaler mon horloge en entré de démultiplexeur de la valeur du signal "detect".
donc en gros d'utiliser ce système:
et donc j'aimerais savoir la démarche a suivre pour réaliser ce décalage d'horloge;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 process(clk) begin case (detect) is when "0000" => DOUT_val<= CLK; when "0001" => DOUT_val<= "decalement de CLk de 1 bit"; when "0010" => DOUT_val<= "decalement de CLk de 2 bit"; when "0011" => DOUT_val<="decalement de CLk de 3 bit"; when "0100" => DOUT_val<="decalement de CLk de 4 bit"; when "0101" => DOUT_val<= "decalement de CLk de 5 bit"; when "0110" => DOUT_val<= "decalement de CLk de 6 bit"; when "0111" => DOUT_val<= "decalement de CLk de 7 bit"; when "1000" => DOUT_val<= "decalement de CLk de 8 bit"; when "1001" => DOUT_val<="decalement de CLk de 9 bit"; when "1010" => DOUT_val<= "decalement de CLk de 10 bit"; when others => DOUT_val<= CLK; end case; end process; CLK_decaler <= DOUT_val ;
je vous remercie d'avance pour toutes informations.
cordialement
Mathieu
Partager