@@ -0,0 +1,129 | |||||
|
1 | LIBRARY IEEE; | |||
|
2 | USE IEEE.std_logic_1164.ALL; | |||
|
3 | USE IEEE.numeric_std.ALL; | |||
|
4 | ||||
|
5 | ENTITY MS_control IS | |||
|
6 | PORT ( | |||
|
7 | clk : IN STD_LOGIC; | |||
|
8 | rstn : IN STD_LOGIC; | |||
|
9 | ||||
|
10 | -- IN | |||
|
11 | fifo_in_lock : OUT STD_LOGIC_VECTOR(4 DOWNTO 0); | |||
|
12 | fifo_in_data : IN STD_LOGIC_VECTOR(32*5-1 DOWNTO 0); | |||
|
13 | fifo_in_full : IN STD_LOGIC_VECTOR(4 DOWNTO 0); | |||
|
14 | fifo_in_empty : IN STD_LOGIC_VECTOR(4 DOWNTO 0); | |||
|
15 | fifo_in_ren : OUT STD_LOGIC_VECTOR(4 DOWNTO 0); | |||
|
16 | fifo_in_reuse : OUT STD_LOGIC_VECTOR(4 DOWNTO 0); | |||
|
17 | -- OUT | |||
|
18 | fifo_out_data : OUT STD_LOGIC_VECTOR(32*2-1 DOWNTO 0); | |||
|
19 | fifo_out_ren : IN STD_LOGIC_VECTOR(1 DOWNTO 0); | |||
|
20 | fifo_out_empty : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); | |||
|
21 | -- OUT | |||
|
22 | correlation_start : OUT STD_LOGIC; | |||
|
23 | correlation_auto : OUT STD_LOGIC; -- 1 => auto correlation / 0 => inter correlation | |||
|
24 | correlation_done : IN STD_LOGIC | |||
|
25 | ); | |||
|
26 | END MS_control; | |||
|
27 | ||||
|
28 | ARCHITECTURE beh OF MS_control IS | |||
|
29 | ||||
|
30 | TYPE fsm_control_MS IS (WAIT_DATA, CORRELATION_ONGOING); | |||
|
31 | SIGNAL state : fsm_control_MS; | |||
|
32 | ||||
|
33 | SUBTYPE fifo_pointer IS RANGE 0 TO 4; | |||
|
34 | SIGNAL fifo_1 : fifo_pointer; | |||
|
35 | SIGNAL fifo_2 : fifo_pointer; | |||
|
36 | ||||
|
37 | SIGNAL fifo_in_lock_s : STD_LOGIC_VECTOR(4 DOWNTO 0); | |||
|
38 | SIGNAL fifo_in_reuse_s : STD_LOGIC_VECTOR(4 DOWNTO 0); | |||
|
39 | ||||
|
40 | BEGIN -- beh | |||
|
41 | ||||
|
42 | fifo_in_lock <= fifo_in_lock_s; | |||
|
43 | fifo_in_reuse <= fifo_in_reuse_s; | |||
|
44 | ||||
|
45 | PROCESS (clk, rstn) | |||
|
46 | BEGIN | |||
|
47 | IF rstn = '0' THEN | |||
|
48 | state <= WAIT_DATA; | |||
|
49 | fifo_1 <= 0; | |||
|
50 | fifo_2 <= 0; | |||
|
51 | fifo_in_lock_s <= (OTHERS => '0'); | |||
|
52 | fifo_in_reuse_s <= (OTHERS => '0'); | |||
|
53 | correlation_start <= '0'; | |||
|
54 | correlation_auto <= '0'; | |||
|
55 | ELSIF clk'event AND clk = '1' THEN | |||
|
56 | CASE state IS | |||
|
57 | WHEN WAIT_DATA => | |||
|
58 | fifo_in_reuse_s <= (OTHERS => '0'); | |||
|
59 | IF fifo_in_full[fifo_1] = '1' AND fifo_in_full[fifo_2] = '1' THEN | |||
|
60 | fifo_in_lock_s(fifo_1) <= '1'; | |||
|
61 | fifo_in_lock_s(fifo_2) <= '1'; | |||
|
62 | correlation_start <= '1'; | |||
|
63 | IF fifo_1 = fifo_2 THEN | |||
|
64 | correlation_auto <= '1'; | |||
|
65 | END IF; | |||
|
66 | state <= CORRELATION_ONGOING; | |||
|
67 | END IF; | |||
|
68 | ||||
|
69 | WHEN CORRELATION_ONGOING => | |||
|
70 | correlation_start <= '0'; | |||
|
71 | correlation_auto <= '0'; | |||
|
72 | IF correlation_done = '1' THEN | |||
|
73 | state <= WAIT_DATA; | |||
|
74 | IF fifo_2 = 4 THEN | |||
|
75 | fifo_in_lock_s(fifo_1) <= '0'; | |||
|
76 | IF fifo_1 = 4 THEN | |||
|
77 | fifo_1 <= 0; | |||
|
78 | fifo_2 <= 0; | |||
|
79 | ELSE | |||
|
80 | fifo_in_reuse_s(fifo_2) <= '1'; | |||
|
81 | fifo_1 <= fifo_1 + 1; | |||
|
82 | fifo_2 <= fifo_1 + 1; | |||
|
83 | END IF; | |||
|
84 | ELSE | |||
|
85 | fifo_in_reuse_s(fifo_2) <= '1'; | |||
|
86 | fifo_in_reuse_s(fifo_1) <= '1'; | |||
|
87 | fifo_2 <= fifo_2 + 1; | |||
|
88 | END IF; | |||
|
89 | END IF; | |||
|
90 | ||||
|
91 | WHEN OTHERS => NULL; | |||
|
92 | END CASE; | |||
|
93 | END IF; | |||
|
94 | END PROCESS; | |||
|
95 | ||||
|
96 | ||||
|
97 | fifo_out_data(31 DOWNTO 0) <= fifo_in_data(31*1-1 DOWNTO 32*0) WHEN fifo_1 = 0 ELSE | |||
|
98 | fifo_in_data(32*2-1 DOWNTO 32*1) WHEN fifo_1 = 1 ELSE | |||
|
99 | fifo_in_data(32*3-1 DOWNTO 32*2) WHEN fifo_1 = 2 ELSE | |||
|
100 | fifo_in_data(32*4-1 DOWNTO 32*3) WHEN fifo_1 = 3 ELSE | |||
|
101 | fifo_in_data(32*5-1 DOWNTO 32*4);-- WHEN fifo_1 = 4 | |||
|
102 | ||||
|
103 | ||||
|
104 | fifo_out_data(63 DOWNTO 32) <= fifo_in_data(31*1-1 DOWNTO 32*0) WHEN fifo_2 = 0 ELSE | |||
|
105 | fifo_in_data(32*2-1 DOWNTO 32*1) WHEN fifo_2 = 1 ELSE | |||
|
106 | fifo_in_data(32*3-1 DOWNTO 32*2) WHEN fifo_2 = 2 ELSE | |||
|
107 | fifo_in_data(32*4-1 DOWNTO 32*3) WHEN fifo_2 = 3 ELSE | |||
|
108 | fifo_in_data(32*5-1 DOWNTO 32*4);-- WHEN fifo_2 = 4 | |||
|
109 | ||||
|
110 | fifo_out_empty(0) <= fifo_in_empty(0) WHEN fifo_1 = 0 ELSE | |||
|
111 | fifo_in_empty(1) WHEN fifo_1 = 1 ELSE | |||
|
112 | fifo_in_empty(2) WHEN fifo_1 = 2 ELSE | |||
|
113 | fifo_in_empty(3) WHEN fifo_1 = 3 ELSE | |||
|
114 | fifo_in_empty(4); | |||
|
115 | ||||
|
116 | fifo_out_empty(1) <= fifo_in_empty(0) WHEN fifo_2 = 0 ELSE | |||
|
117 | fifo_in_empty(1) WHEN fifo_2 = 1 ELSE | |||
|
118 | fifo_in_empty(2) WHEN fifo_2 = 2 ELSE | |||
|
119 | fifo_in_empty(3) WHEN fifo_2 = 3 ELSE | |||
|
120 | fifo_in_empty(4); | |||
|
121 | ||||
|
122 | ||||
|
123 | all_fifo: FOR I IN 0 TO 4 GENERATE | |||
|
124 | fifo_in_ren(I) <= fifo_out_ren(I) WHEN fifo_1 = I ELSE | |||
|
125 | fifo_out_ren(I) WHEN fifo_2 = I ELSE | |||
|
126 | '1'; | |||
|
127 | END GENERATE all_fifo; | |||
|
128 | ||||
|
129 | END beh; |
@@ -388,6 +388,7 vcom_lpp: | |||||
388 | $(CMD_VCOM) lpp $(VHDLIB)/lib/lpp/lpp_matrix/SpectralMatrix.vhd |
|
388 | $(CMD_VCOM) lpp $(VHDLIB)/lib/lpp/lpp_matrix/SpectralMatrix.vhd | |
389 | $(CMD_VCOM) lpp $(VHDLIB)/lib/lpp/lpp_Header/lpp_Header.vhd |
|
389 | $(CMD_VCOM) lpp $(VHDLIB)/lib/lpp/lpp_Header/lpp_Header.vhd | |
390 | $(CMD_VCOM) lpp $(VHDLIB)/lib/lpp/lpp_Header/HeaderBuilder.vhd |
|
390 | $(CMD_VCOM) lpp $(VHDLIB)/lib/lpp/lpp_Header/HeaderBuilder.vhd | |
|
391 | $(CMD_VCOM) lpp lpp_memory.vhd | |||
391 | $(CMD_VCOM) lpp $(VHDLIB)/lib/lpp/./dsp/lpp_fft/CoreFFT_simu.vhd |
|
392 | $(CMD_VCOM) lpp $(VHDLIB)/lib/lpp/./dsp/lpp_fft/CoreFFT_simu.vhd | |
392 | $(CMD_VCOM) lpp $(VHDLIB)/lib/lpp/lpp_top_lfr/lpp_lfr_pkg.vhd |
|
393 | $(CMD_VCOM) lpp $(VHDLIB)/lib/lpp/lpp_top_lfr/lpp_lfr_pkg.vhd | |
393 | $(CMD_VCOM) lpp $(VHDLIB)/lib/lpp/lpp_top_lfr/lpp_lfr_ms_fsmdma.vhd |
|
394 | $(CMD_VCOM) lpp $(VHDLIB)/lib/lpp/lpp_top_lfr/lpp_lfr_ms_fsmdma.vhd |
@@ -697,7 +697,11 BEGIN | |||||
697 | END PROCESS; |
|
697 | END PROCESS; | |
698 | END GENERATE all_lock; |
|
698 | END GENERATE all_lock; | |
699 |
|
699 | |||
|
700 | ----------------------------------------------------------------------------- | |||
|
701 | ||||
700 |
|
702 | |||
|
703 | ||||
|
704 | ||||
701 |
|
705 | |||
702 | ----------------------------------------------------------------------------- |
|
706 | ----------------------------------------------------------------------------- | |
703 | SM0 : MatriceSpectrale |
|
707 | SM0 : MatriceSpectrale |
@@ -31,10 +31,10 USE grlib.stdlib.ALL; | |||||
31 | USE GRLIB.DMA2AHB_Package.ALL; |
|
31 | USE GRLIB.DMA2AHB_Package.ALL; | |
32 | LIBRARY techmap; |
|
32 | LIBRARY techmap; | |
33 | USE techmap.gencomp.ALL; |
|
33 | USE techmap.gencomp.ALL; | |
34 | LIBRARY lpp; |
|
34 | --LIBRARY lpp; | |
35 | USE lpp.lpp_amba.ALL; |
|
35 | --USE lpp.lpp_amba.ALL; | |
36 | USE lpp.apb_devices_list.ALL; |
|
36 | --USE lpp.apb_devices_list.ALL; | |
37 | USE lpp.lpp_memory.ALL; |
|
37 | --USE lpp.lpp_memory.ALL; | |
38 |
|
38 | |||
39 | PACKAGE lpp_dma_pkg IS |
|
39 | PACKAGE lpp_dma_pkg IS | |
40 |
|
40 |
General Comments 0
You need to be logged in to leave comments.
Login now