@@ -0,0 +1,53 | |||
|
1 | #GRLIB=../.. | |
|
2 | VHDLIB=../.. | |
|
3 | SCRIPTSDIR=$(VHDLIB)/scripts/ | |
|
4 | GRLIB := $(shell sh $(VHDLIB)/scripts/lpp_relpath.sh) | |
|
5 | TOP=leon3mp | |
|
6 | BOARD=em-LeonLPP-A3PE3kL-v3-core1 | |
|
7 | include $(GRLIB)/boards/$(BOARD)/Makefile.inc | |
|
8 | DEVICE=$(PART)-$(PACKAGE)$(SPEED) | |
|
9 | UCF=$(GRLIB)/boards/$(BOARD)/$(TOP).ucf | |
|
10 | QSF=$(GRLIB)/boards/$(BOARD)/$(TOP).qsf | |
|
11 | EFFORT=high | |
|
12 | XSTOPT= | |
|
13 | SYNPOPT="set_option -pipe 0; set_option -retiming 0; set_option -write_apr_constraint 0" | |
|
14 | #VHDLSYNFILES=config.vhd ahbrom.vhd leon3mp.vhd | |
|
15 | VHDLSYNFILES= | |
|
16 | VHDLSIMFILES= tb.vhd | |
|
17 | SIMTOP=testbench | |
|
18 | #SDCFILE=$(GRLIB)/boards/$(BOARD)/synplify.sdc | |
|
19 | #SDC=$(GRLIB)/boards/$(BOARD)/leon3mp.sdc | |
|
20 | PDC=$(GRLIB)/boards/$(BOARD)/em-LeonLPP-A3PE3kL.pdc | |
|
21 | BITGEN=$(GRLIB)/boards/$(BOARD)/default.ut | |
|
22 | CLEAN=soft-clean | |
|
23 | ||
|
24 | TECHLIBS = proasic3e | |
|
25 | ||
|
26 | LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ | |
|
27 | tmtc openchip hynix ihp gleichmann micron usbhc | |
|
28 | ||
|
29 | DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan ddr usb ata i2c \ | |
|
30 | pci grusbhc haps slink ascs pwm coremp7 spi ac97 \ | |
|
31 | ./amba_lcd_16x2_ctrlr \ | |
|
32 | ./general_purpose/lpp_AMR \ | |
|
33 | ./general_purpose/lpp_balise \ | |
|
34 | ./general_purpose/lpp_delay \ | |
|
35 | ./lpp_bootloader \ | |
|
36 | ./lpp_cna \ | |
|
37 | ./lpp_uart \ | |
|
38 | ./lpp_usb \ | |
|
39 | ./dsp/lpp_fft_rtax \ | |
|
40 | ||
|
41 | FILESKIP = i2cmst.vhd \ | |
|
42 | APB_MULTI_DIODE.vhd \ | |
|
43 | APB_MULTI_DIODE.vhd \ | |
|
44 | Top_MatrixSpec.vhd \ | |
|
45 | APB_FFT.vhd \ | |
|
46 | lpp_lfr_apbreg.vhd \ | |
|
47 | CoreFFT.vhd | |
|
48 | ||
|
49 | include $(GRLIB)/bin/Makefile | |
|
50 | include $(GRLIB)/software/leon3/Makefile | |
|
51 | ||
|
52 | ################## project specific targets ########################## | |
|
53 |
|
1 | NO CONTENT: new file 100644, binary diff hidden |
@@ -0,0 +1,17 | |||
|
1 | vcom -quiet -93 -work lpp ../../lib/lpp/dsp/chirp/chirp_pkg.vhd | |
|
2 | vcom -quiet -93 -work lpp ../../lib/lpp/dsp/chirp/chirp.vhd | |
|
3 | vcom -quiet -93 -work lpp ../../lib/lpp/dsp/cic/cic_pkg.vhd | |
|
4 | vcom -quiet -93 -work lpp ../../lib/lpp/dsp/cic/cic.vhd | |
|
5 | vcom -quiet -93 -work lpp ../../lib/lpp/dsp/cic/cic_integrator.vhd | |
|
6 | vcom -quiet -93 -work lpp ../../lib/lpp/dsp/cic/cic_downsampler.vhd | |
|
7 | vcom -quiet -93 -work lpp ../../lib/lpp/dsp/cic/cic_comb.vhd | |
|
8 | ||
|
9 | vcom -quiet -93 -work work tb.vhd | |
|
10 | ||
|
11 | vsim work.testbench | |
|
12 | ||
|
13 | log -r * | |
|
14 | ||
|
15 | do wave.do | |
|
16 | ||
|
17 | run -all |
@@ -0,0 +1,78 | |||
|
1 | ||
|
2 | LIBRARY ieee; | |
|
3 | USE ieee.std_logic_1164.ALL; | |
|
4 | USE IEEE.MATH_REAL.ALL; | |
|
5 | USE ieee.numeric_std.ALL; | |
|
6 | ||
|
7 | LIBRARY lpp; | |
|
8 | USE lpp.cic_pkg.ALL; | |
|
9 | USE lpp.chirp_pkg.ALL; | |
|
10 | ||
|
11 | ENTITY testbench IS | |
|
12 | END; | |
|
13 | ||
|
14 | ARCHITECTURE behav OF testbench IS | |
|
15 | ||
|
16 | SIGNAL clk : STD_LOGIC := '0'; | |
|
17 | SIGNAL rstn : STD_LOGIC; | |
|
18 | SIGNAL run : STD_LOGIC; | |
|
19 | SIGNAL data_in : STD_LOGIC_VECTOR(15 DOWNTO 0); | |
|
20 | SIGNAL data_in_valid : STD_LOGIC; | |
|
21 | SIGNAL data_out : STD_LOGIC_VECTOR(15 DOWNTO 0); | |
|
22 | SIGNAL data_out_valid : STD_LOGIC; | |
|
23 | ||
|
24 | BEGIN | |
|
25 | ||
|
26 | clk <= NOT clk AFTER 5 ns; | |
|
27 | ||
|
28 | PROCESS | |
|
29 | BEGIN -- PROCESS | |
|
30 | WAIT UNTIL clk = '1'; | |
|
31 | rstn <= '0'; | |
|
32 | run <= '0'; | |
|
33 | data_in_valid <= '0'; | |
|
34 | ||
|
35 | WAIT UNTIL clk = '1'; | |
|
36 | rstn <= '1'; | |
|
37 | WAIT UNTIL clk = '1'; | |
|
38 | WAIT UNTIL clk = '1'; | |
|
39 | run <= '1'; | |
|
40 | WAIT UNTIL clk = '1'; | |
|
41 | WAIT UNTIL clk = '1'; | |
|
42 | data_in_valid <= '1'; | |
|
43 | WAIT FOR 105 us; | |
|
44 | REPORT "*** END simulation ***" SEVERITY failure; | |
|
45 | WAIT; | |
|
46 | END PROCESS; | |
|
47 | ----------------------------------------------------------------------------- | |
|
48 | DUT_cic: cic | |
|
49 | GENERIC MAP ( | |
|
50 | D_delay_number => 2, | |
|
51 | S_stage_number => 3, | |
|
52 | R_downsampling_decimation_factor => 16, | |
|
53 | b_data_size => 16, | |
|
54 | b_grow => 15) | |
|
55 | PORT MAP ( | |
|
56 | clk => clk, | |
|
57 | rstn => rstn, | |
|
58 | run => run, | |
|
59 | data_in => data_in, | |
|
60 | data_in_valid => data_in_valid, | |
|
61 | data_out => data_out, | |
|
62 | data_out_valid => data_out_valid); | |
|
63 | ----------------------------------------------------------------------------- | |
|
64 | chirp_gen: chirp | |
|
65 | GENERIC MAP ( | |
|
66 | LOW_FREQUENCY_LIMIT => 0, | |
|
67 | HIGH_FREQUENCY_LIMIT => 1000, | |
|
68 | NB_POINT_TO_GEN => 10000, | |
|
69 | AMPLITUDE => 200, | |
|
70 | NB_BITS => 16) | |
|
71 | PORT MAP ( | |
|
72 | clk => clk, | |
|
73 | rstn => rstn, | |
|
74 | run => run, | |
|
75 | data_ack => data_in_valid, | |
|
76 | data => data_in); | |
|
77 | ||
|
78 | END; |
@@ -0,0 +1,30 | |||
|
1 | onerror {resume} | |
|
2 | quietly WaveActivateNextPane {} 0 | |
|
3 | add wave -noupdate /testbench/dut_cic/d_delay_number | |
|
4 | add wave -noupdate /testbench/dut_cic/s_stage_number | |
|
5 | add wave -noupdate /testbench/dut_cic/r_downsampling_decimation_factor | |
|
6 | add wave -noupdate -format Analog-Step -height 74 -max 1999.9999999999998 /testbench/chirp_gen/freq_chirp | |
|
7 | add wave -noupdate -format Analog-Step -height 74 -max 10000.0 /testbench/chirp_gen/n | |
|
8 | add wave -noupdate -format Analog-Step -height 74 -max 200.0 -min -200.0 -radix decimal /testbench/dut_cic/data_in | |
|
9 | add wave -noupdate -format Analog-Step -height 74 -max 189.0 -min -172.0 -radix decimal /testbench/dut_cic/data_out | |
|
10 | add wave -noupdate -divider COMB | |
|
11 | add wave -noupdate -radix decimal -expand -subitemconfig {/testbench/dut_cic/c_data(3) {-format Analog-Step -height 74 -max 6208650.0000000009 -min -5630018.0 -radix decimal} /testbench/dut_cic/c_data(2) {-format Analog-Step -height 74 -max 22640530.0 -radix decimal} /testbench/dut_cic/c_data(1) {-format Analog-Step -height 74 -max 1067269590.0 -min -1072646474.0 -radix decimal} /testbench/dut_cic/c_data(0) {-format Analog-Step -height 74 -max 1071549238.9999998 -min -1068913901.0 -radix decimal}} /testbench/dut_cic/c_data | |
|
12 | add wave -noupdate -divider INTEGRATOR | |
|
13 | add wave -noupdate -radix decimal -expand -subitemconfig {/testbench/dut_cic/i_data(3) {-format Analog-Step -height 74 -max 1073731108.9999998 -min -1073537753.0 -radix decimal} /testbench/dut_cic/i_data(2) {-format Analog-Step -height 74 -max 164477947.0 -radix decimal} /testbench/dut_cic/i_data(1) {-format Analog-Step -height 74 -max 22580.0 -radix decimal} /testbench/dut_cic/i_data(0) {-format Analog-Step -height 74 -max 200.0 -min -200.0 -radix decimal}} /testbench/dut_cic/i_data | |
|
14 | TreeUpdate [SetDefaultTree] | |
|
15 | WaveRestoreCursors {{Cursor 1} {3685000 ps} 0} | |
|
16 | configure wave -namecolwidth 370 | |
|
17 | configure wave -valuecolwidth 40 | |
|
18 | configure wave -justifyvalue left | |
|
19 | configure wave -signalnamewidth 0 | |
|
20 | configure wave -snapdistance 10 | |
|
21 | configure wave -datasetprefix 0 | |
|
22 | configure wave -rowmargin 4 | |
|
23 | configure wave -childrowmargin 2 | |
|
24 | configure wave -gridoffset 0 | |
|
25 | configure wave -gridperiod 1 | |
|
26 | configure wave -griddelta 40 | |
|
27 | configure wave -timeline 0 | |
|
28 | configure wave -timelineunits ns | |
|
29 | update | |
|
30 | WaveRestoreZoom {0 ps} {110307750 ps} |
@@ -0,0 +1,85 | |||
|
1 | ------------------------------------------------------------------------------ | |
|
2 | -- This file is a part of the LPP VHDL IP LIBRARY | |
|
3 | -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS | |
|
4 | -- | |
|
5 | -- This program is free software; you can redistribute it and/or modify | |
|
6 | -- it under the terms of the GNU General Public License as published by | |
|
7 | -- the Free Software Foundation; either version 3 of the License, or | |
|
8 | -- (at your option) any later version. | |
|
9 | -- | |
|
10 | -- This program is distributed in the hope that it will be useful, | |
|
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
|
13 | -- GNU General Public License for more details. | |
|
14 | -- | |
|
15 | -- You should have received a copy of the GNU General Public License | |
|
16 | -- along with this program; if not, write to the Free Software | |
|
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
|
18 | ------------------------------------------------------------------------------- | |
|
19 | -- Author : Jean-christophe Pellion | |
|
20 | -- Mail : jean-christophe.pellion@lpp.polytechnique.fr | |
|
21 | -- jean-christophe.pellion@easii-ic.com | |
|
22 | ---------------------------------------------------------------------------- | |
|
23 | ||
|
24 | LIBRARY ieee; | |
|
25 | USE ieee.std_logic_1164.ALL; | |
|
26 | USE IEEE.std_logic_arith.ALL; | |
|
27 | USE IEEE.std_logic_signed.ALL; | |
|
28 | USE IEEE.MATH_real.ALL; | |
|
29 | ||
|
30 | ENTITY chirp IS | |
|
31 | ||
|
32 | GENERIC ( | |
|
33 | LOW_FREQUENCY_LIMIT : INTEGER := 0; | |
|
34 | HIGH_FREQUENCY_LIMIT : INTEGER := 2000; | |
|
35 | NB_POINT_TO_GEN : INTEGER := 10000; | |
|
36 | AMPLITUDE : INTEGER := 100; | |
|
37 | NB_BITS : INTEGER := 16); | |
|
38 | ||
|
39 | PORT ( | |
|
40 | clk : IN STD_LOGIC; | |
|
41 | rstn : IN STD_LOGIC; | |
|
42 | run : IN STD_LOGIC; | |
|
43 | ||
|
44 | data_ack : IN STD_LOGIC; | |
|
45 | data : OUT STD_LOGIC_VECTOR(NB_BITS-1 DOWNTO 0) | |
|
46 | ); | |
|
47 | ||
|
48 | END chirp; | |
|
49 | ||
|
50 | ARCHITECTURE beh OF chirp IS | |
|
51 | ||
|
52 | SIGNAL reg : STD_LOGIC_VECTOR(NB_BITS-1 DOWNTO 0); | |
|
53 | SIGNAL n : INTEGER; | |
|
54 | SIGNAL current_time : REAL := REAL(0); | |
|
55 | SIGNAL freq_chirp : REAL := REAL(0); | |
|
56 | BEGIN -- beh | |
|
57 | ||
|
58 | current_time <= REAL(n) / REAL(NB_POINT_TO_GEN); | |
|
59 | freq_chirp <= REAL(LOW_FREQUENCY_LIMIT) + (REAL(HIGH_FREQUENCY_LIMIT) - REAL(LOW_FREQUENCY_LIMIT))*current_time; | |
|
60 | ||
|
61 | PROCESS (clk, rstn) | |
|
62 | BEGIN -- PROCESS | |
|
63 | IF rstn = '0' THEN -- asynchronous reset (active low) | |
|
64 | reg <= (OTHERS => '0'); | |
|
65 | n <= 0; | |
|
66 | ELSIF clk'event AND clk = '1' THEN -- rising clock edge | |
|
67 | IF run = '0' THEN | |
|
68 | reg <= (OTHERS => '0'); | |
|
69 | n <= 0; | |
|
70 | ELSE | |
|
71 | IF data_ack = '1' THEN | |
|
72 | IF n < NB_POINT_TO_GEN THEN | |
|
73 | n <= n+1; | |
|
74 | reg <= conv_std_logic_vector(INTEGER(REAL(AMPLITUDE) * SIN(MATH_2_PI*current_time*freq_chirp)),NB_BITS); | |
|
75 | ELSE | |
|
76 | reg <= (OTHERS => '0'); | |
|
77 | END IF; | |
|
78 | END IF; | |
|
79 | END IF; | |
|
80 | END IF; | |
|
81 | END PROCESS; | |
|
82 | ||
|
83 | data <= reg; | |
|
84 | ||
|
85 | END beh; |
@@ -0,0 +1,45 | |||
|
1 | ------------------------------------------------------------------------------ | |
|
2 | -- This file is a part of the LPP VHDL IP LIBRARY | |
|
3 | -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS | |
|
4 | -- | |
|
5 | -- This program is free software; you can redistribute it and/or modify | |
|
6 | -- it under the terms of the GNU General Public License as published by | |
|
7 | -- the Free Software Foundation; either version 3 of the License, or | |
|
8 | -- (at your option) any later version. | |
|
9 | -- | |
|
10 | -- This program is distributed in the hope that it will be useful, | |
|
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
|
13 | -- GNU General Public License for more details. | |
|
14 | -- | |
|
15 | -- You should have received a copy of the GNU General Public License | |
|
16 | -- along with this program; if not, write to the Free Software | |
|
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
|
18 | ------------------------------------------------------------------------------- | |
|
19 | -- Author : Jean-christophe Pellion | |
|
20 | -- Mail : jean-christophe.pellion@lpp.polytechnique.fr | |
|
21 | -- jean-christophe.pellion@easii-ic.com | |
|
22 | ---------------------------------------------------------------------------- | |
|
23 | ||
|
24 | LIBRARY ieee; | |
|
25 | USE ieee.std_logic_1164.ALL; | |
|
26 | ||
|
27 | PACKAGE chirp_pkg IS | |
|
28 | ||
|
29 | COMPONENT chirp | |
|
30 | GENERIC ( | |
|
31 | LOW_FREQUENCY_LIMIT : INTEGER; | |
|
32 | HIGH_FREQUENCY_LIMIT : INTEGER; | |
|
33 | NB_POINT_TO_GEN : INTEGER; | |
|
34 | AMPLITUDE : INTEGER; | |
|
35 | NB_BITS : INTEGER); | |
|
36 | PORT ( | |
|
37 | clk : IN STD_LOGIC; | |
|
38 | rstn : IN STD_LOGIC; | |
|
39 | run : IN STD_LOGIC; | |
|
40 | data_ack : IN STD_LOGIC; | |
|
41 | data : OUT STD_LOGIC_VECTOR(NB_BITS-1 DOWNTO 0)); | |
|
42 | END COMPONENT; | |
|
43 | ||
|
44 | ||
|
45 | END chirp_pkg; |
@@ -0,0 +1,122 | |||
|
1 | ------------------------------------------------------------------------------ | |
|
2 | -- This file is a part of the LPP VHDL IP LIBRARY | |
|
3 | -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS | |
|
4 | -- | |
|
5 | -- This program is free software; you can redistribute it and/or modify | |
|
6 | -- it under the terms of the GNU General Public License as published by | |
|
7 | -- the Free Software Foundation; either version 3 of the License, or | |
|
8 | -- (at your option) any later version. | |
|
9 | -- | |
|
10 | -- This program is distributed in the hope that it will be useful, | |
|
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
|
13 | -- GNU General Public License for more details. | |
|
14 | -- | |
|
15 | -- You should have received a copy of the GNU General Public License | |
|
16 | -- along with this program; if not, write to the Free Software | |
|
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
|
18 | ------------------------------------------------------------------------------- | |
|
19 | -- Author : Jean-christophe Pellion | |
|
20 | -- Mail : jean-christophe.pellion@lpp.polytechnique.fr | |
|
21 | -- jean-christophe.pellion@easii-ic.com | |
|
22 | ---------------------------------------------------------------------------- | |
|
23 | ||
|
24 | LIBRARY ieee; | |
|
25 | USE ieee.std_logic_1164.ALL; | |
|
26 | ||
|
27 | LIBRARY lpp; | |
|
28 | USE lpp.cic_pkg.ALL; | |
|
29 | ||
|
30 | ENTITY cic IS | |
|
31 | ||
|
32 | GENERIC ( | |
|
33 | D_delay_number : INTEGER := 2; | |
|
34 | S_stage_number : INTEGER := 3; | |
|
35 | R_downsampling_decimation_factor : INTEGER := 16; | |
|
36 | ||
|
37 | b_data_size : INTEGER := 16; | |
|
38 | b_grow : INTEGER := 5 -- | |
|
39 | ); | |
|
40 | ||
|
41 | PORT ( | |
|
42 | clk : IN STD_LOGIC; | |
|
43 | rstn : IN STD_LOGIC; | |
|
44 | run : IN STD_LOGIC; | |
|
45 | ||
|
46 | data_in : IN STD_LOGIC_VECTOR(b_data_size-1 DOWNTO 0); | |
|
47 | data_in_valid : IN STD_LOGIC; | |
|
48 | ||
|
49 | data_out : OUT STD_LOGIC_VECTOR(b_data_size-1 DOWNTO 0); | |
|
50 | data_out_valid : OUT STD_LOGIC | |
|
51 | ); | |
|
52 | ||
|
53 | END cic; | |
|
54 | ||
|
55 | ARCHITECTURE beh OF cic IS | |
|
56 | ||
|
57 | TYPE data_vector IS ARRAY (NATURAL RANGE <>) OF STD_LOGIC_VECTOR(b_data_size + b_grow - 1 DOWNTO 0); | |
|
58 | ||
|
59 | SIGNAL I_data : data_vector(S_stage_number DOWNTO 0); | |
|
60 | SIGNAL I_valid : STD_LOGIC_VECTOR(S_stage_number DOWNTO 0); | |
|
61 | ||
|
62 | SIGNAL C_data : data_vector(S_stage_number DOWNTO 0); | |
|
63 | SIGNAL C_valid : STD_LOGIC_VECTOR(S_stage_number DOWNTO 0); | |
|
64 | ||
|
65 | BEGIN -- beh | |
|
66 | ----------------------------------------------------------------------------- | |
|
67 | I_valid(0) <= data_in_valid; | |
|
68 | I_data(0)(b_data_size-1 DOWNTO 0) <= data_in; | |
|
69 | all_bit_grow: FOR I IN 0 TO b_grow-1 GENERATE | |
|
70 | I_data(0)(I+b_data_size) <= data_in(b_data_size-1); | |
|
71 | END GENERATE all_bit_grow; | |
|
72 | ----------------------------------------------------------------------------- | |
|
73 | all_I: FOR S_i IN 1 TO S_stage_number GENERATE | |
|
74 | I_1: cic_integrator | |
|
75 | GENERIC MAP ( | |
|
76 | b_data_size => b_data_size + b_grow) | |
|
77 | PORT MAP ( | |
|
78 | clk => clk, | |
|
79 | rstn => rstn, | |
|
80 | run => run, | |
|
81 | ||
|
82 | data_in => I_data(S_i-1), | |
|
83 | data_in_valid => I_valid(S_i-1), | |
|
84 | data_out => I_data(S_i), | |
|
85 | data_out_valid => I_valid(S_i) | |
|
86 | ); | |
|
87 | END GENERATE all_I; | |
|
88 | ----------------------------------------------------------------------------- | |
|
89 | cic_downsampler_1: cic_downsampler | |
|
90 | GENERIC MAP ( | |
|
91 | R_downsampling_decimation_factor => R_downsampling_decimation_factor, | |
|
92 | b_data_size => b_data_size + b_grow) | |
|
93 | PORT MAP ( | |
|
94 | clk => clk, | |
|
95 | rstn => rstn, | |
|
96 | run => run, | |
|
97 | data_in => I_data(S_stage_number), | |
|
98 | data_in_valid => I_valid(S_stage_number), | |
|
99 | data_out => C_data(0), | |
|
100 | data_out_valid => C_valid(0)); | |
|
101 | ----------------------------------------------------------------------------- | |
|
102 | all_C: FOR S_i IN 1 TO S_stage_number GENERATE | |
|
103 | cic_comb_1: cic_comb | |
|
104 | GENERIC MAP ( | |
|
105 | b_data_size => b_data_size + b_grow, | |
|
106 | D_delay_number => D_delay_number) | |
|
107 | PORT MAP ( | |
|
108 | clk => clk, | |
|
109 | rstn => rstn, | |
|
110 | run => run, | |
|
111 | ||
|
112 | data_in => C_data(S_i-1), | |
|
113 | data_in_valid => C_valid(S_i-1), | |
|
114 | data_out => C_data(S_i), | |
|
115 | data_out_valid => C_valid(S_i)); | |
|
116 | END GENERATE all_C; | |
|
117 | ----------------------------------------------------------------------------- | |
|
118 | data_out <= C_data(S_stage_number)(b_data_size + b_grow - 1 DOWNTO b_grow); | |
|
119 | data_out_valid <= C_valid(S_stage_number); | |
|
120 | ----------------------------------------------------------------------------- | |
|
121 | END beh; | |
|
122 |
@@ -0,0 +1,94 | |||
|
1 | ------------------------------------------------------------------------------ | |
|
2 | -- This file is a part of the LPP VHDL IP LIBRARY | |
|
3 | -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS | |
|
4 | -- | |
|
5 | -- This program is free software; you can redistribute it and/or modify | |
|
6 | -- it under the terms of the GNU General Public License as published by | |
|
7 | -- the Free Software Foundation; either version 3 of the License, or | |
|
8 | -- (at your option) any later version. | |
|
9 | -- | |
|
10 | -- This program is distributed in the hope that it will be useful, | |
|
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
|
13 | -- GNU General Public License for more details. | |
|
14 | -- | |
|
15 | -- You should have received a copy of the GNU General Public License | |
|
16 | -- along with this program; if not, write to the Free Software | |
|
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
|
18 | ------------------------------------------------------------------------------- | |
|
19 | -- Author : Jean-christophe Pellion | |
|
20 | -- Mail : jean-christophe.pellion@lpp.polytechnique.fr | |
|
21 | -- jean-christophe.pellion@easii-ic.com | |
|
22 | ---------------------------------------------------------------------------- | |
|
23 | ||
|
24 | LIBRARY IEEE; | |
|
25 | USE IEEE.numeric_std.ALL; | |
|
26 | USE IEEE.std_logic_1164.ALL; | |
|
27 | ||
|
28 | ENTITY cic_comb IS | |
|
29 | ||
|
30 | GENERIC ( | |
|
31 | b_data_size : INTEGER := 16; | |
|
32 | D_delay_number : INTEGER := 2 | |
|
33 | ); | |
|
34 | ||
|
35 | PORT ( | |
|
36 | clk : IN STD_LOGIC; | |
|
37 | rstn : IN STD_LOGIC; | |
|
38 | run : IN STD_LOGIC; | |
|
39 | ||
|
40 | data_in : IN STD_LOGIC_VECTOR(b_data_size-1 DOWNTO 0); | |
|
41 | data_in_valid : IN STD_LOGIC; | |
|
42 | ||
|
43 | data_out : OUT STD_LOGIC_VECTOR(b_data_size-1 DOWNTO 0); | |
|
44 | data_out_valid : OUT STD_LOGIC | |
|
45 | ); | |
|
46 | ||
|
47 | END cic_comb; | |
|
48 | ||
|
49 | ARCHITECTURE beh OF cic_comb IS | |
|
50 | ||
|
51 | TYPE data_vector IS ARRAY (NATURAL RANGE <>) OF STD_LOGIC_VECTOR(b_data_size - 1 DOWNTO 0); | |
|
52 | ||
|
53 | SIGNAL data_reg : data_vector(D_delay_number DOWNTO 0); | |
|
54 | ||
|
55 | BEGIN -- beh | |
|
56 | ||
|
57 | data_reg(0) <= data_in; | |
|
58 | ||
|
59 | all_D: FOR I IN D_delay_number DOWNTO 1 GENERATE | |
|
60 | PROCESS (clk, rstn) | |
|
61 | BEGIN | |
|
62 | IF rstn = '0' THEN | |
|
63 | data_reg(I) <= (OTHERS => '0'); | |
|
64 | ELSIF clk'event AND clk = '1' THEN | |
|
65 | IF run = '0' THEN | |
|
66 | data_reg(I) <= (OTHERS => '0'); | |
|
67 | ELSIF data_in_valid = '1' THEN | |
|
68 | data_reg(I) <= data_reg(I-1); | |
|
69 | END IF; | |
|
70 | END IF; | |
|
71 | END PROCESS; | |
|
72 | END GENERATE all_D; | |
|
73 | ||
|
74 | PROCESS (clk, rstn) | |
|
75 | BEGIN | |
|
76 | IF rstn = '0' THEN | |
|
77 | data_out <= (OTHERS => '0'); | |
|
78 | data_out_valid <= '0'; | |
|
79 | ELSIF clk'event AND clk = '1' THEN | |
|
80 | IF run = '0' THEN | |
|
81 | data_out <= (OTHERS => '0'); | |
|
82 | data_out_valid <= '0'; | |
|
83 | ELSE | |
|
84 | data_out_valid <= data_in_valid; | |
|
85 | IF data_in_valid = '1' THEN | |
|
86 | data_out <= STD_LOGIC_VECTOR(resize(SIGNED(data_reg(0))-SIGNED(data_reg(D_delay_number)),b_data_size)); | |
|
87 | END IF; | |
|
88 | END IF; | |
|
89 | END IF; | |
|
90 | END PROCESS; | |
|
91 | ||
|
92 | ||
|
93 | END beh; | |
|
94 |
@@ -0,0 +1,87 | |||
|
1 | ------------------------------------------------------------------------------ | |
|
2 | -- This file is a part of the LPP VHDL IP LIBRARY | |
|
3 | -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS | |
|
4 | -- | |
|
5 | -- This program is free software; you can redistribute it and/or modify | |
|
6 | -- it under the terms of the GNU General Public License as published by | |
|
7 | -- the Free Software Foundation; either version 3 of the License, or | |
|
8 | -- (at your option) any later version. | |
|
9 | -- | |
|
10 | -- This program is distributed in the hope that it will be useful, | |
|
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
|
13 | -- GNU General Public License for more details. | |
|
14 | -- | |
|
15 | -- You should have received a copy of the GNU General Public License | |
|
16 | -- along with this program; if not, write to the Free Software | |
|
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
|
18 | ------------------------------------------------------------------------------- | |
|
19 | -- Author : Jean-christophe Pellion | |
|
20 | -- Mail : jean-christophe.pellion@lpp.polytechnique.fr | |
|
21 | -- jean-christophe.pellion@easii-ic.com | |
|
22 | ---------------------------------------------------------------------------- | |
|
23 | ||
|
24 | LIBRARY ieee; | |
|
25 | USE ieee.std_logic_1164.ALL; | |
|
26 | ||
|
27 | ENTITY cic_downsampler IS | |
|
28 | ||
|
29 | GENERIC ( | |
|
30 | R_downsampling_decimation_factor : INTEGER := 16; | |
|
31 | b_data_size : INTEGER := 16 | |
|
32 | ); | |
|
33 | ||
|
34 | PORT ( | |
|
35 | clk : IN STD_LOGIC; | |
|
36 | rstn : IN STD_LOGIC; | |
|
37 | run : IN STD_LOGIC; | |
|
38 | ||
|
39 | data_in : IN STD_LOGIC_VECTOR(b_data_size-1 DOWNTO 0); | |
|
40 | data_in_valid : IN STD_LOGIC; | |
|
41 | ||
|
42 | data_out : OUT STD_LOGIC_VECTOR(b_data_size-1 DOWNTO 0); | |
|
43 | data_out_valid : OUT STD_LOGIC | |
|
44 | ); | |
|
45 | ||
|
46 | END cic_downsampler; | |
|
47 | ||
|
48 | ARCHITECTURE beh OF cic_downsampler IS | |
|
49 | ||
|
50 | SUBTYPE INTEGER_downsampler IS INTEGER RANGE 0 TO R_downsampling_decimation_factor-1; | |
|
51 | ||
|
52 | SIGNAL counter_downsampler : INTEGER_downsampler; | |
|
53 | ||
|
54 | BEGIN -- beh | |
|
55 | ||
|
56 | PROCESS (clk, rstn) | |
|
57 | BEGIN -- PROCESS | |
|
58 | IF rstn = '0' THEN -- asynchronous reset (active low) | |
|
59 | data_out <= (OTHERS => '0'); | |
|
60 | data_out_valid <= '0'; | |
|
61 | counter_downsampler <= 0; | |
|
62 | ELSIF clk'event AND clk = '1' THEN -- rising clock edge | |
|
63 | IF run = '0' THEN | |
|
64 | data_out <= (OTHERS => '0'); | |
|
65 | data_out_valid <= '0'; | |
|
66 | counter_downsampler <= 0; | |
|
67 | ELSE | |
|
68 | data_out_valid <= '0'; | |
|
69 | IF data_in_valid = '1' THEN | |
|
70 | IF counter_downsampler = R_downsampling_decimation_factor-1 THEN | |
|
71 | counter_downsampler <= 0; | |
|
72 | ELSE | |
|
73 | counter_downsampler <= counter_downsampler + 1; | |
|
74 | END IF; | |
|
75 | ||
|
76 | IF counter_downsampler = 0 THEN | |
|
77 | data_out_valid <= '1'; | |
|
78 | data_out <= data_in; | |
|
79 | END IF; | |
|
80 | ||
|
81 | END IF; | |
|
82 | END IF; | |
|
83 | END IF; | |
|
84 | END PROCESS; | |
|
85 | ||
|
86 | END beh; | |
|
87 |
@@ -0,0 +1,78 | |||
|
1 | ------------------------------------------------------------------------------ | |
|
2 | -- This file is a part of the LPP VHDL IP LIBRARY | |
|
3 | -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS | |
|
4 | -- | |
|
5 | -- This program is free software; you can redistribute it and/or modify | |
|
6 | -- it under the terms of the GNU General Public License as published by | |
|
7 | -- the Free Software Foundation; either version 3 of the License, or | |
|
8 | -- (at your option) any later version. | |
|
9 | -- | |
|
10 | -- This program is distributed in the hope that it will be useful, | |
|
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
|
13 | -- GNU General Public License for more details. | |
|
14 | -- | |
|
15 | -- You should have received a copy of the GNU General Public License | |
|
16 | -- along with this program; if not, write to the Free Software | |
|
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
|
18 | ------------------------------------------------------------------------------- | |
|
19 | -- Author : Jean-christophe Pellion | |
|
20 | -- Mail : jean-christophe.pellion@lpp.polytechnique.fr | |
|
21 | -- jean-christophe.pellion@easii-ic.com | |
|
22 | ---------------------------------------------------------------------------- | |
|
23 | ||
|
24 | LIBRARY IEEE; | |
|
25 | USE IEEE.numeric_std.ALL; | |
|
26 | USE IEEE.std_logic_1164.ALL; | |
|
27 | ||
|
28 | ENTITY cic_integrator IS | |
|
29 | ||
|
30 | GENERIC ( | |
|
31 | b_data_size : INTEGER := 16 | |
|
32 | ); | |
|
33 | ||
|
34 | PORT ( | |
|
35 | clk : IN STD_LOGIC; | |
|
36 | rstn : IN STD_LOGIC; | |
|
37 | run : IN STD_LOGIC; | |
|
38 | ||
|
39 | data_in : IN STD_LOGIC_VECTOR(b_data_size-1 DOWNTO 0); | |
|
40 | data_in_valid : IN STD_LOGIC; | |
|
41 | ||
|
42 | data_out : OUT STD_LOGIC_VECTOR(b_data_size-1 DOWNTO 0); | |
|
43 | data_out_valid : OUT STD_LOGIC | |
|
44 | ); | |
|
45 | ||
|
46 | END cic_integrator; | |
|
47 | ||
|
48 | ARCHITECTURE beh OF cic_integrator IS | |
|
49 | ||
|
50 | SIGNAL data_reg : STD_LOGIC_VECTOR(b_data_size-1 DOWNTO 0); | |
|
51 | SIGNAL data_add : STD_LOGIC_VECTOR(b_data_size-1 DOWNTO 0); | |
|
52 | ||
|
53 | BEGIN -- beh | |
|
54 | ||
|
55 | data_out <= data_reg; | |
|
56 | ||
|
57 | data_add <= STD_LOGIC_VECTOR(resize(SIGNED(data_in)+SIGNED(data_reg),b_data_size)); | |
|
58 | ||
|
59 | PROCESS (clk, rstn) | |
|
60 | BEGIN -- PROCESS | |
|
61 | IF rstn = '0' THEN -- asynchronous reset (active low) | |
|
62 | data_reg <= (OTHERS => '0'); | |
|
63 | data_out_valid <= '0'; | |
|
64 | ELSIF clk'event AND clk = '1' THEN -- rising clock edge | |
|
65 | IF run = '0' THEN | |
|
66 | data_reg <= (OTHERS => '0'); | |
|
67 | data_out_valid <= '0'; | |
|
68 | ELSE | |
|
69 | data_out_valid <= data_in_valid; | |
|
70 | IF data_in_valid = '1' THEN | |
|
71 | data_reg <= data_add; | |
|
72 | END IF; | |
|
73 | END IF; | |
|
74 | END IF; | |
|
75 | END PROCESS; | |
|
76 | ||
|
77 | END beh; | |
|
78 |
@@ -0,0 +1,55 | |||
|
1 | ------------------------------------------------------------------------------ | |
|
2 | -- This file is a part of the LPP VHDL IP LIBRARY | |
|
3 | -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS | |
|
4 | -- | |
|
5 | -- This program is free software; you can redistribute it and/or modify | |
|
6 | -- it under the terms of the GNU General Public License as published by | |
|
7 | -- the Free Software Foundation; either version 3 of the License, or | |
|
8 | -- (at your option) any later version. | |
|
9 | -- | |
|
10 | -- This program is distributed in the hope that it will be useful, | |
|
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
|
13 | -- GNU General Public License for more details. | |
|
14 | -- | |
|
15 | -- You should have received a copy of the GNU General Public License | |
|
16 | -- along with this program; if not, write to the Free Software | |
|
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
|
18 | ------------------------------------------------------------------------------- | |
|
19 | -- Author : Jean-christophe Pellion | |
|
20 | -- Mail : jean-christophe.pellion@lpp.polytechnique.fr | |
|
21 | -- jean-christophe.pellion@easii-ic.com | |
|
22 | ---------------------------------------------------------------------------- | |
|
23 | ||
|
24 | LIBRARY ieee; | |
|
25 | USE ieee.std_logic_1164.ALL; | |
|
26 | ||
|
27 | LIBRARY lpp; | |
|
28 | USE lpp.cic_pkg.ALL; | |
|
29 | USE lpp.data_type_pkg.ALL; | |
|
30 | ||
|
31 | ENTITY cic_lfr IS | |
|
32 | ||
|
33 | PORT ( | |
|
34 | clk : IN STD_LOGIC; | |
|
35 | rstn : IN STD_LOGIC; | |
|
36 | run : IN STD_LOGIC; | |
|
37 | ||
|
38 | data_in : IN sample_vector(5 DOWNTO 0,15 DOWNTO 0); | |
|
39 | data_in_valid : IN STD_LOGIC; | |
|
40 | ||
|
41 | data_out_16 : OUT sample_vector(5 DOWNTO 0,15 DOWNTO 0); | |
|
42 | data_out_256 : OUT sample_vector(5 DOWNTO 0,15 DOWNTO 0); | |
|
43 | data_out_valid : OUT STD_LOGIC | |
|
44 | ); | |
|
45 | ||
|
46 | END cic_lfr; | |
|
47 | ||
|
48 | ARCHITECTURE beh OF cic_lfr IS | |
|
49 | ||
|
50 | BEGIN | |
|
51 | ||
|
52 | ||
|
53 | ||
|
54 | END beh; | |
|
55 |
@@ -0,0 +1,89 | |||
|
1 | ------------------------------------------------------------------------------ | |
|
2 | -- This file is a part of the LPP VHDL IP LIBRARY | |
|
3 | -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS | |
|
4 | -- | |
|
5 | -- This program is free software; you can redistribute it and/or modify | |
|
6 | -- it under the terms of the GNU General Public License as published by | |
|
7 | -- the Free Software Foundation; either version 3 of the License, or | |
|
8 | -- (at your option) any later version. | |
|
9 | -- | |
|
10 | -- This program is distributed in the hope that it will be useful, | |
|
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
|
13 | -- GNU General Public License for more details. | |
|
14 | -- | |
|
15 | -- You should have received a copy of the GNU General Public License | |
|
16 | -- along with this program; if not, write to the Free Software | |
|
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
|
18 | ------------------------------------------------------------------------------- | |
|
19 | -- Author : Jean-christophe Pellion | |
|
20 | -- Mail : jean-christophe.pellion@lpp.polytechnique.fr | |
|
21 | -- jean-christophe.pellion@easii-ic.com | |
|
22 | ---------------------------------------------------------------------------- | |
|
23 | ||
|
24 | LIBRARY ieee; | |
|
25 | USE ieee.std_logic_1164.ALL; | |
|
26 | ||
|
27 | PACKAGE cic_pkg IS | |
|
28 | ||
|
29 | ----------------------------------------------------------------------------- | |
|
30 | COMPONENT cic | |
|
31 | GENERIC ( | |
|
32 | D_delay_number : INTEGER; | |
|
33 | S_stage_number : INTEGER; | |
|
34 | R_downsampling_decimation_factor : INTEGER; | |
|
35 | b_data_size : INTEGER; | |
|
36 | b_grow : INTEGER); | |
|
37 | PORT ( | |
|
38 | clk : IN STD_LOGIC; | |
|
39 | rstn : IN STD_LOGIC; | |
|
40 | run : IN STD_LOGIC; | |
|
41 | data_in : IN STD_LOGIC_VECTOR(b_data_size-1 DOWNTO 0); | |
|
42 | data_in_valid : IN STD_LOGIC; | |
|
43 | data_out : OUT STD_LOGIC_VECTOR(b_data_size-1 DOWNTO 0); | |
|
44 | data_out_valid : OUT STD_LOGIC); | |
|
45 | END COMPONENT; | |
|
46 | ----------------------------------------------------------------------------- | |
|
47 | COMPONENT cic_integrator | |
|
48 | GENERIC ( | |
|
49 | b_data_size : INTEGER); | |
|
50 | PORT ( | |
|
51 | clk : IN STD_LOGIC; | |
|
52 | rstn : IN STD_LOGIC; | |
|
53 | run : IN STD_LOGIC; | |
|
54 | data_in : IN STD_LOGIC_VECTOR(b_data_size-1 DOWNTO 0); | |
|
55 | data_in_valid : IN STD_LOGIC; | |
|
56 | data_out : OUT STD_LOGIC_VECTOR(b_data_size-1 DOWNTO 0); | |
|
57 | data_out_valid : OUT STD_LOGIC); | |
|
58 | END COMPONENT; | |
|
59 | ||
|
60 | COMPONENT cic_downsampler | |
|
61 | GENERIC ( | |
|
62 | R_downsampling_decimation_factor : INTEGER; | |
|
63 | b_data_size : INTEGER); | |
|
64 | PORT ( | |
|
65 | clk : IN STD_LOGIC; | |
|
66 | rstn : IN STD_LOGIC; | |
|
67 | run : IN STD_LOGIC; | |
|
68 | data_in : IN STD_LOGIC_VECTOR(b_data_size-1 DOWNTO 0); | |
|
69 | data_in_valid : IN STD_LOGIC; | |
|
70 | data_out : OUT STD_LOGIC_VECTOR(b_data_size-1 DOWNTO 0); | |
|
71 | data_out_valid : OUT STD_LOGIC); | |
|
72 | END COMPONENT; | |
|
73 | ||
|
74 | COMPONENT cic_comb | |
|
75 | GENERIC ( | |
|
76 | b_data_size : INTEGER; | |
|
77 | D_delay_number : INTEGER); | |
|
78 | PORT ( | |
|
79 | clk : IN STD_LOGIC; | |
|
80 | rstn : IN STD_LOGIC; | |
|
81 | run : IN STD_LOGIC; | |
|
82 | data_in : IN STD_LOGIC_VECTOR(b_data_size-1 DOWNTO 0); | |
|
83 | data_in_valid : IN STD_LOGIC; | |
|
84 | data_out : OUT STD_LOGIC_VECTOR(b_data_size-1 DOWNTO 0); | |
|
85 | data_out_valid : OUT STD_LOGIC); | |
|
86 | END COMPONENT; | |
|
87 | ----------------------------------------------------------------------------- | |
|
88 | ||
|
89 | END cic_pkg; |
@@ -0,0 +1,6 | |||
|
1 | cic_pkg.vhd | |
|
2 | cic.vhd | |
|
3 | cic_integrator.vhd | |
|
4 | cic_downsampler.vhd | |
|
5 | cic_comb.vhd | |
|
6 | cic_lfr.vhd |
@@ -0,0 +1,31 | |||
|
1 | ------------------------------------------------------------------------------ | |
|
2 | -- This file is a part of the LPP VHDL IP LIBRARY | |
|
3 | -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS | |
|
4 | -- | |
|
5 | -- This program is free software; you can redistribute it and/or modify | |
|
6 | -- it under the terms of the GNU General Public License as published by | |
|
7 | -- the Free Software Foundation; either version 3 of the License, or | |
|
8 | -- (at your option) any later version. | |
|
9 | -- | |
|
10 | -- This program is distributed in the hope that it will be useful, | |
|
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
|
13 | -- GNU General Public License for more details. | |
|
14 | -- | |
|
15 | -- You should have received a copy of the GNU General Public License | |
|
16 | -- along with this program; if not, write to the Free Software | |
|
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
|
18 | ------------------------------------------------------------------------------- | |
|
19 | -- Author : Jean-christophe Pellion | |
|
20 | -- Mail : jean-christophe.pellion@lpp.polytechnique.fr | |
|
21 | -- jean-christophe.pellion@easii-ic.com | |
|
22 | ------------------------------------------------------------------------------- | |
|
23 | ||
|
24 | LIBRARY ieee; | |
|
25 | USE ieee.std_logic_1164.ALL; | |
|
26 | ||
|
27 | PACKAGE data_type_pkg IS | |
|
28 | ||
|
29 | TYPE sample_vector IS ARRAY(NATURAL RANGE <>, NATURAL RANGE <>) OF STD_LOGIC; | |
|
30 | ||
|
31 | END data_type_pkg; |
General Comments 0
You need to be logged in to leave comments.
Login now