Skip to content
Snippets Groups Projects

Resolve L2SDP-660

Merged
Job van Weerequested to merge
L2SDP-660 into master
8 open threads
2 files
+ 17
29
Compare changes
  • Side-by-side
  • Inline

Files

@@ -83,51 +83,39 @@ BEGIN
q_reg <= d_reg WHEN rising_edge(clk);
-- Increments the address each time in_sosi.valid = '1', if address = c_max_adr the address is reset to 0.
p_adr : PROCESS(rst, in_sosi.valid)
p_adr : PROCESS(rst, in_sosi, in_of, q_reg)
VARIABLE v : t_reg := c_t_reg_init;
VARIABLE v : t_reg;
BEGIN
v := q_reg;
v.out_mosi.wrdata(c_data_w-1 DOWNTO 0) := in_sosi.data(c_data_w - 1 DOWNTO 0);
v.out_mosi.wr := in_sosi.valid;
v.out_of := in_of;
IF rst = '1' THEN
v.state := RESET;
assert false report "setting state to reset" severity note;
ELSIF v.out_mosi.address(c_adr_w-1 DOWNTO 0) = c_max_adr(c_adr_w-1 DOWNTO 0) AND in_sosi.valid = '1' THEN
v.state := MAX;
assert false report "setting state to max" severity note;
ELSIF in_sosi.valid = '1' THEN
v.state := COUNTING;
assert false report "setting state to counting" severity note;
ELSE
v.state := IDLE;
assert false report "setting state to idle" severity note;
END IF;
assert false report "starting case" severity note;
CASE v.state IS
WHEN RESET =>
assert false report "starting reset" severity note;
v.out_mosi.address(c_adr_w-1 DOWNTO 0) := (OTHERS => '0');
WHEN COUNTING =>
assert false report "starting counting" severity note;
v.out_mosi.address(c_adr_w-1 DOWNTO 0) := STD_LOGIC_VECTOR(TO_UVEC(TO_UINT(v.out_mosi.address)+1, c_adr_w));
WHEN MAX =>
assert false report "starting max" severity note;
v.out_mosi.address(c_adr_w-1 DOWNTO 0) := (OTHERS => '0');
WHEN IDLE =>
assert false report "starting idle" severity note;
v.out_mosi.address(c_adr_w-1 DOWNTO 0) := q_reg.out_mosi.address(c_adr_w-1 DOWNTO 0);
assert false report "q_reg.out_mosi.address = " & NATURAL'image(TO_UINT(v.out_mosi.address)) severity note;
END CASE;
assert false report "ending case" severity note;
IF rst = '1' THEN
v.state := RESET;
ELSIF v.out_mosi.address(c_adr_w-1 DOWNTO 0) = c_max_adr(c_adr_w-1 DOWNTO 0) AND in_sosi.valid = '1' THEN
v.state := MAX;
ELSIF in_sosi.valid = '1' THEN
v.state := COUNTING;
ELSE
v.state := IDLE;
END IF;
d_reg <= v;
END PROCESS;
Loading