@@ -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 | 388 | $(CMD_VCOM) lpp $(VHDLIB)/lib/lpp/lpp_matrix/SpectralMatrix.vhd |
|
389 | 389 | $(CMD_VCOM) lpp $(VHDLIB)/lib/lpp/lpp_Header/lpp_Header.vhd |
|
390 | 390 | $(CMD_VCOM) lpp $(VHDLIB)/lib/lpp/lpp_Header/HeaderBuilder.vhd |
|
391 | $(CMD_VCOM) lpp lpp_memory.vhd | |
|
391 | 392 | $(CMD_VCOM) lpp $(VHDLIB)/lib/lpp/./dsp/lpp_fft/CoreFFT_simu.vhd |
|
392 | 393 | $(CMD_VCOM) lpp $(VHDLIB)/lib/lpp/lpp_top_lfr/lpp_lfr_pkg.vhd |
|
393 | 394 | $(CMD_VCOM) lpp $(VHDLIB)/lib/lpp/lpp_top_lfr/lpp_lfr_ms_fsmdma.vhd |
@@ -697,7 +697,11 BEGIN | |||
|
697 | 697 | END PROCESS; |
|
698 | 698 | END GENERATE all_lock; |
|
699 | 699 | |
|
700 | ----------------------------------------------------------------------------- | |
|
701 | ||
|
700 | 702 | |
|
703 | ||
|
704 | ||
|
701 | 705 | |
|
702 | 706 | ----------------------------------------------------------------------------- |
|
703 | 707 | SM0 : MatriceSpectrale |
@@ -31,10 +31,10 USE grlib.stdlib.ALL; | |||
|
31 | 31 | USE GRLIB.DMA2AHB_Package.ALL; |
|
32 | 32 | LIBRARY techmap; |
|
33 | 33 | USE techmap.gencomp.ALL; |
|
34 | LIBRARY lpp; | |
|
35 | USE lpp.lpp_amba.ALL; | |
|
36 | USE lpp.apb_devices_list.ALL; | |
|
37 | USE lpp.lpp_memory.ALL; | |
|
34 | --LIBRARY lpp; | |
|
35 | --USE lpp.lpp_amba.ALL; | |
|
36 | --USE lpp.apb_devices_list.ALL; | |
|
37 | --USE lpp.lpp_memory.ALL; | |
|
38 | 38 | |
|
39 | 39 | PACKAGE lpp_dma_pkg IS |
|
40 | 40 |
General Comments 0
You need to be logged in to leave comments.
Login now