Hallo,
ich habe eine digitales Eingangssignal (Data_in) welches asynchron
eingespeist wird. Dieses Eingangssignal habe ich zuerst
Einsynchronisiert für eine Flankenerkennung. Das Eingangssignal hat High
und Lowpegel mit 2 und 4 MHz. Anschließend wollte ich dieses Signal
welches seriell ist, parallel wandeln. Jedoch schaffe ich es nicht
parallel auszugeben. Mein Code ist hier:
1 | Startup: Process(CLK,Data_in)
|
2 | begin
|
3 | if rising_edge(CLK) then
|
4 | Data_In_Sync <= Data_In_Sync(1 downto 0) & Data_in;
|
5 | end if;
|
6 | end Process Startup;
|
7 |
|
8 | Shift: Process(CLK)
|
9 | begin
|
10 | if rising_edge(CLK) then
|
11 |
|
12 | if (Data_In_Sync(2 downto 1) = "01") then
|
13 | enable <= '1';
|
14 | Data_Buffer(15 downto 0) <= Data_Buffer(14 downto 0) & Data_In_Sync(0);
|
15 | elsif (Data_In_Sync(2 downto 1) = "10") then
|
16 | Data_Buffer(15 downto 0) <= Data_Buffer(14 downto 0) & Data_In_Sync(0);
|
17 | enable <= '0';
|
18 | end if;
|
19 |
|
20 | end if;
|
21 | end Process Shift;
|
22 |
|
23 |
|
24 | SIPO: Process(CLK)
|
25 | begin
|
26 | if rising_edge(CLK) then
|
27 | if enable = '1' then
|
28 | if Data_Buffer = "0100110100110011" then
|
29 | Data_out <= '0';
|
30 | Sync_out <= '0';
|
31 | Data_Buffer <= "0000000000000000";
|
32 | elsif Data_Buffer = "0100110100110101" then
|
33 | Data_out <= '1';
|
34 | Sync_out <= '0';
|
35 | Data_Buffer <= "0000000000000000";
|
36 | elsif Data_Buffer = "0100110101010011" then
|
37 | Data_out <= '1';
|
38 | Sync_out <= '1';
|
39 | Data_Buffer <= "0000000000000000";
|
40 | end if;
|
41 | end if;
|
42 | end if;
|
43 | end Process SIPO;
|
44 |
|
45 |
|
46 | end Behavioral;
|
Das zweite Problem welches ich habe, ist das von meinem Eingangssignal
(Data_in) zum Beispiel irgendein high Pegel 500ns breit ist. Nach dem
einsynchronisieren aber nicht mehr, da ja hart auf die steigende Flanke
des Clks getriggert wird. Wie kann ich das bewerkstelligen das dass
einsynchronisierte Signal bei dem erwähnten high Pegel auch die 500ns
hat und nicht um 2.5ns verringert wird?
Grüße und vielen Dank euch