Skip to content
Snippets Groups Projects
Commit 3bc43cc9 authored by Job van Wee's avatar Job van Wee
Browse files

Ready for review.

parent fd844d5d
No related branches found
No related tags found
1 merge request!232Resolve L2SDP-667
Pipeline #28104 passed
...@@ -201,9 +201,9 @@ BEGIN ...@@ -201,9 +201,9 @@ BEGIN
clk => clk, clk => clk,
rst => rst, rst => rst,
out_of => out_of, inp_of => out_of,
out_sosi => out_sosi, inp_sosi => out_sosi,
out_adr => out_adr, inp_adr => out_adr,
dvr_mosi => dvr_mosi, dvr_mosi => dvr_mosi,
wr_sosi => wr_sosi, wr_sosi => wr_sosi,
......
...@@ -46,9 +46,9 @@ ENTITY ddrctrl_controller IS ...@@ -46,9 +46,9 @@ ENTITY ddrctrl_controller IS
rst : IN STD_LOGIC; rst : IN STD_LOGIC;
-- ddrctrl_input -- ddrctrl_input
out_of : IN NATURAL; inp_of : IN NATURAL;
out_sosi : IN t_dp_sosi; inp_sosi : IN t_dp_sosi;
out_adr : IN NATURAL; inp_adr : IN NATURAL;
-- io_ddr -- io_ddr
dvr_mosi : OUT t_mem_ctlr_mosi; dvr_mosi : OUT t_mem_ctlr_mosi;
...@@ -99,7 +99,7 @@ BEGIN ...@@ -99,7 +99,7 @@ BEGIN
q_reg <= d_reg WHEN rising_edge(clk); q_reg <= d_reg WHEN rising_edge(clk);
-- put the input data into c_v and fill the output vector from c_v -- put the input data into c_v and fill the output vector from c_v
p_state : PROCESS(q_reg, rst, out_of, out_sosi, out_adr) p_state : PROCESS(q_reg, rst, inp_of, inp_sosi, inp_adr)
VARIABLE v : t_reg := c_t_reg_init; VARIABLE v : t_reg := c_t_reg_init;
...@@ -115,12 +115,12 @@ BEGIN ...@@ -115,12 +115,12 @@ BEGIN
WHEN WRITING => WHEN WRITING =>
IF TO_UVEC(out_adr, c_adr_w)(c_bitshift_adr-1 DOWNTO 0) = c_zeros THEN -- if adr mod c_burstsize = 0 IF TO_UVEC(inp_adr, c_adr_w)(c_bitshift_adr-1 DOWNTO 0) = c_zeros THEN -- if adr mod c_burstsize = 0
v.dvr_mosi.burstbegin := '1'; v.dvr_mosi.burstbegin := '1';
IF out_adr = 0 THEN IF inp_adr = 0 THEN
v.dvr_mosi.address := TO_UVEC(c_max_adr-c_burstsize, dvr_mosi.address'length); v.dvr_mosi.address := TO_UVEC(c_max_adr-c_burstsize, dvr_mosi.address'length);
ELSE ELSE
v.dvr_mosi.address := TO_UVEC(out_adr-c_burstsize, dvr_mosi.address'length); v.dvr_mosi.address := TO_UVEC(inp_adr-c_burstsize, dvr_mosi.address'length);
END IF; END IF;
ELSE ELSE
v.dvr_mosi.burstbegin := '0'; v.dvr_mosi.burstbegin := '0';
...@@ -128,26 +128,26 @@ BEGIN ...@@ -128,26 +128,26 @@ BEGIN
v.dvr_mosi.burstsize := TO_UVEC(c_burstsize, dvr_mosi.burstsize'length); v.dvr_mosi.burstsize := TO_UVEC(c_burstsize, dvr_mosi.burstsize'length);
v.dvr_mosi.wr := '1'; v.dvr_mosi.wr := '1';
v.dvr_mosi.rd := '0'; v.dvr_mosi.rd := '0';
v.wr_sosi := out_sosi; v.wr_sosi := inp_sosi;
WHEN SET_STOP => WHEN SET_STOP =>
--setting a stop address dependend on the g_stop_percentage --setting a stop address dependend on the g_stop_percentage
IF out_adr+c_pof_ma >= c_max_adr THEN IF inp_adr+c_pof_ma >= c_max_adr THEN
v.stop_adr(c_adr_w-1 DOWNTO c_bitshift_adr) := TO_UVEC(out_adr-c_pof_ma, c_adr_w)(c_adr_w-1 DOWNTO c_bitshift_adr); v.stop_adr(c_adr_w-1 DOWNTO c_bitshift_adr) := TO_UVEC(inp_adr-c_pof_ma, c_adr_w)(c_adr_w-1 DOWNTO c_bitshift_adr);
ELSE ELSE
v.stop_adr(c_adr_w-1 DOWNTO c_bitshift_adr) := TO_UVEC(out_adr+c_pof_ma, c_adr_w)(c_adr_w-1 DOWNTO c_bitshift_adr); v.stop_adr(c_adr_w-1 DOWNTO c_bitshift_adr) := TO_UVEC(inp_adr+c_pof_ma, c_adr_w)(c_adr_w-1 DOWNTO c_bitshift_adr);
END IF; END IF;
v.stop_adr(c_bitshift_adr-1 DOWNTO 0) := c_zeros; v.stop_adr(c_bitshift_adr-1 DOWNTO 0) := c_zeros;
-- still a write cyle -- still a write cyle
IF TO_UVEC(out_adr, c_adr_w)(c_bitshift_adr-1 DOWNTO 0) = c_zeros THEN -- adr mod 64 = 0 IF TO_UVEC(inp_adr, c_adr_w)(c_bitshift_adr-1 DOWNTO 0) = c_zeros THEN -- adr mod 64 = 0
v.dvr_mosi.burstbegin := '1'; v.dvr_mosi.burstbegin := '1';
IF out_adr = 0 THEN IF inp_adr = 0 THEN
v.dvr_mosi.address := TO_UVEC(c_max_adr-c_burstsize, dvr_mosi.address'length); v.dvr_mosi.address := TO_UVEC(c_max_adr-c_burstsize, dvr_mosi.address'length);
ELSE ELSE
v.dvr_mosi.address := TO_UVEC(out_adr-c_burstsize, dvr_mosi.address'length); v.dvr_mosi.address := TO_UVEC(inp_adr-c_burstsize, dvr_mosi.address'length);
END IF; END IF;
ELSE ELSE
v.dvr_mosi.burstbegin := '0'; v.dvr_mosi.burstbegin := '0';
...@@ -155,7 +155,7 @@ BEGIN ...@@ -155,7 +155,7 @@ BEGIN
v.dvr_mosi.burstsize := TO_UVEC(c_burstsize, dvr_mosi.burstsize'length); v.dvr_mosi.burstsize := TO_UVEC(c_burstsize, dvr_mosi.burstsize'length);
v.dvr_mosi.wr := '1'; v.dvr_mosi.wr := '1';
v.dvr_mosi.rd := '0'; v.dvr_mosi.rd := '0';
v.wr_sosi := out_sosi; v.wr_sosi := inp_sosi;
...@@ -179,7 +179,7 @@ BEGIN ...@@ -179,7 +179,7 @@ BEGIN
v.state := RESET; v.state := RESET;
ELSIF stop_in = '1' THEN ELSIF stop_in = '1' THEN
v.state := SET_STOP; v.state := SET_STOP;
ELSIF v.stop_adr = TO_UVEC(out_adr, c_adr_w) AND v.stop_adr(c_bitshift_adr-1 DOWNTO 0) = c_zeros(c_bitshift_adr-1 DOWNTO 0) AND q_reg.stopped = '0' THEN ELSIF v.stop_adr = TO_UVEC(inp_adr, c_adr_w) AND v.stop_adr(c_bitshift_adr-1 DOWNTO 0) = c_zeros(c_bitshift_adr-1 DOWNTO 0) AND q_reg.stopped = '0' THEN
v.state := STOP_WRITING; v.state := STOP_WRITING;
ELSIF v.stopped = '1' THEN ELSIF v.stopped = '1' THEN
v.state := IDLE; v.state := IDLE;
......
...@@ -131,32 +131,19 @@ BEGIN ...@@ -131,32 +131,19 @@ BEGIN
-- filling the input data vectors with the corresponding numbers -- filling the input data vectors with the corresponding numbers
make_data_0 : FOR J IN 0 TO c_sim_length-1 LOOP run_multiple_times : FOR K in 0 TO 4 LOOP
make_data : FOR J IN 0 TO c_sim_length-1 LOOP
in_data_cnt <= in_data_cnt+1; in_data_cnt <= in_data_cnt+1;
fill_in_sosi_arr_0 : FOR I IN 0 TO g_nof_streams-1 LOOP fill_in_sosi_arr_0 : FOR I IN 0 TO g_nof_streams-1 LOOP
in_sosi_arr(I).data(g_data_w-1 DOWNTO 0) <= c_total_vector(g_data_w*(I+1)+J*c_in_data_w-1 DOWNTO g_data_w*I+J*c_in_data_w); in_sosi_arr(I).data(g_data_w-1 DOWNTO 0) <= c_total_vector(g_data_w*(I+1)+J*c_in_data_w-1 DOWNTO g_data_w*I+J*c_in_data_w);
END LOOP; END LOOP;
WAIT FOR c_clk_period*1; WAIT FOR c_clk_period*1;
END LOOP; END LOOP;
IF k = 2 THEN
-- sending a stop signal
stop_in <= '1'; stop_in <= '1';
ELSE
-- filling the input data vectors with the corresponding numbers
make_data_1 : FOR J IN 0 TO c_sim_length-1 LOOP
in_data_cnt <= in_data_cnt+1;
fill_in_sosi_arr_1 : FOR I IN 0 TO g_nof_streams-1 LOOP
in_sosi_arr(I).data(g_data_w-1 DOWNTO 0) <= c_total_vector(g_data_w*(I+1)+J*c_in_data_w-1 DOWNTO g_data_w*I+J*c_in_data_w);
END LOOP;
WAIT FOR c_clk_period*1;
stop_in <= '0'; stop_in <= '0';
END LOOP; END IF;
make_data_2 : FOR J IN 0 TO c_sim_length-1 LOOP
in_data_cnt <= in_data_cnt+1;
fill_in_sosi_arr_2 : FOR I IN 0 TO g_nof_streams-1 LOOP
in_sosi_arr(I).data(g_data_w-1 DOWNTO 0) <= c_total_vector(g_data_w*(I+1)+J*c_in_data_w-1 DOWNTO g_data_w*I+J*c_in_data_w);
END LOOP;
WAIT FOR c_clk_period*1;
END LOOP; END LOOP;
test_running <= '0'; test_running <= '0';
wr_not_rd <= '0'; wr_not_rd <= '0';
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment