Skip to content
Snippets Groups Projects
Commit cc1292a9 authored by Reinier van der Walle's avatar Reinier van der Walle
Browse files

added conversion between byte and word addressing

parent 3db7f083
No related branches found
No related tags found
1 merge request!327Resolve HPR-85
Pipeline #48867 passed
......@@ -31,6 +31,8 @@
-- . The read latency is not adapted. Ensure that the Controller and Peripheral use the same
-- read-latency.
-- . Both AXI4-lite and MM use ready latency = 0 for waitrequest/ready.
-- . AXI4-lite is assumed to use byte addressed registers while MM uses word addressed
-- registers.
LIBRARY IEEE, common_lib;
USE IEEE.STD_LOGIC_1164.ALL;
......
......@@ -109,9 +109,9 @@ PACKAGE BODY axi4_lite_pkg IS
VARIABLE v_mm_copi : t_mem_copi := c_mem_copi_rst;
BEGIN
IF axi4_copi.awvalid = '1' THEN
v_mm_copi.address := axi4_copi.awaddr;
v_mm_copi.address := "00" & axi4_copi.awaddr(c_axi4_lite_address_w-1 DOWNTO 2); -- convert byte addressed to word addressed.
ELSE
v_mm_copi.address := axi4_copi.araddr;
v_mm_copi.address := "00" & axi4_copi.araddr(c_axi4_lite_address_w-1 DOWNTO 2); -- convert byte addressed to word addressed.
END IF;
v_mm_copi.wrdata(c_axi4_lite_data_w-1 DOWNTO 0) := axi4_copi.wdata;
v_mm_copi.wr := axi4_copi.awvalid;
......@@ -131,14 +131,14 @@ PACKAGE BODY axi4_lite_pkg IS
FUNCTION func_axi4_lite_from_mm_copi(mm_copi : t_mem_copi) RETURN t_axi4_lite_copi IS
VARIABLE v_axi4_copi : t_axi4_lite_copi := c_axi4_lite_copi_rst;
BEGIN
v_axi4_copi.awaddr := mm_copi.address;
v_axi4_copi.awaddr := mm_copi.address(c_axi4_lite_address_w-3 DOWNTO 0) & "00"; -- convert word addressed to byte addressed.
v_axi4_copi.awprot := (OTHERS => '0');
v_axi4_copi.awvalid := mm_copi.wr;
v_axi4_copi.wdata := mm_copi.wrdata(c_axi4_lite_data_w-1 DOWNTO 0);
v_axi4_copi.wstrb := (OTHERS => '1'); -- Either ignored or all bytes selected.
v_axi4_copi.wvalid := mm_copi.wr;
v_axi4_copi.bready := '1'; -- Unsupported by MM, assuming always ready.
v_axi4_copi.araddr := mm_copi.address;
v_axi4_copi.araddr := mm_copi.address(c_axi4_lite_address_w-3 DOWNTO 0) & "00"; -- convert word addressed to byte addressed.
v_axi4_copi.arprot := (OTHERS => '0');
v_axi4_copi.arvalid := mm_copi.rd;
v_axi4_copi.rready := '1'; -- Unsupported by MM, assuming always ready.
......
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