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,
......
...@@ -42,13 +42,13 @@ ENTITY ddrctrl_controller IS ...@@ -42,13 +42,13 @@ ENTITY ddrctrl_controller IS
g_stop_percentage : NATURAL := 50 g_stop_percentage : NATURAL := 50
); );
PORT ( PORT (
clk : IN STD_LOGIC; clk : IN STD_LOGIC;
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;
...@@ -56,7 +56,7 @@ ENTITY ddrctrl_controller IS ...@@ -56,7 +56,7 @@ ENTITY ddrctrl_controller IS
rd_siso : OUT t_dp_siso; rd_siso : OUT t_dp_siso;
-- ddrctrl -- ddrctrl
stop_in : IN STD_LOGIC stop_in : IN STD_LOGIC
); );
END ddrctrl_controller; END ddrctrl_controller;
...@@ -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
in_data_cnt <= in_data_cnt+1; make_data : FOR J IN 0 TO c_sim_length-1 LOOP
fill_in_sosi_arr_0 : FOR I IN 0 TO g_nof_streams-1 LOOP in_data_cnt <= in_data_cnt+1;
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); 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);
END LOOP;
WAIT FOR c_clk_period*1;
END LOOP; END LOOP;
WAIT FOR c_clk_period*1; IF k = 2 THEN
END LOOP; stop_in <= '1';
ELSE
-- sending a stop signal stop_in <= '0';
stop_in <= '1'; END IF;
-- 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';
END LOOP;
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.
Finish editing this message first!
Please register or to comment