1. vaja: Kvadrirnik

Naredili bomo komponento vezja, ki izračuna kvadrate in zmnožke kvadratov vhodnih vrednosti. Komponento bomo povezali na vodilo AXI Lite s pomočjo vnaprej pripravljenega paralelnega vmesnika. Naredili bomo simulacijo komponente s testno strukturo.

1.1 Osnovno vezje

Najprej naredimo sekvenčno vezje, ki izračuna kvadrat vhodnih vrednosti. Vezje naj ima dva 8-bitna vhodna vektorja: a in b tipa std_logic_vector in dva 32-bitna izhoda: prod1 in prod2. Vrednosti binarnih vektorjev bomo obravnavali kot nepredznačena števila in za izvedbo računskih operacij v vezje vključimo knjižnico IEEE.numeric.std.

Naloga

 

1.2 Komponenta AXI

Dodaj v projekt paralelni vmesnik za vodilo AXI in ga vključi v prejšnje vezje kot komponento. Vse signale vodila AXI deklariraj kot zunanje signale in poveži vhode in izhode na notranje registre.

 Naloga

entity kvadrat is
  -- Vmesnik AXI Slave (s0_axi), ADDR_WIDTH=4, DATA_WIDTH=32
  port (s0_axi_aclk    : in std_logic;   
        s0_axi_aresetn : in std_logic;
        s0_axi_awaddr  : in std_logic_vector(3 downto 0);
        s0_axi_awprot  : in std_logic_vector(2 downto 0);
        s0_axi_awvalid : in std_logic;
        s0_axi_awready : out std_logic;
        s0_axi_wdata   : in std_logic_vector(31 downto 0);
        s0_axi_wstrb   : in std_logic_vector(3 downto 0);
        s0_axi_wvalid  : in std_logic;
        s0_axi_wready  : out std_logic;
        s0_axi_bresp   : out std_logic_vector(1 downto 0);
        s0_axi_bvalid  : out std_logic;
        s0_axi_bready  : in std_logic;
        s0_axi_araddr  : in std_logic_vector(3 downto 0);
        s0_axi_arprot  : in std_logic_vector(2 downto 0);
        s0_axi_arvalid : in std_logic;
        s0_axi_arready : out std_logic;
        s0_axi_rdata   : out std_logic_vector(31 downto 0);
        s0_axi_rresp   : out std_logic_vector(1 downto 0);
        s0_axi_rvalid  : out std_logic;
        s0_axi_rready  : in std_logic);

 parvmes : parvmes_v1_0_s0_AXI
    generic map (
        C_S_AXI_DATA_WIDTH    => 32,
        C_S_AXI_ADDR_WIDTH    => 4
    )
    port map (
        p0_dataout => a,
        p1_dataout => b,
        p2_datain => prod1,

        p3_datain => prod2,
        S_AXI_ACLK    => s0_axi_aclk ...

1.3 Simulacija komponente AXI

Uporabi testno strukturo za simulacijo delovanja komponente. Testna struktura naj generira signale vodila AXI Lite.