Register Set Designerbeta


VeriedaGuest Project → GenerateLog In
This is a Verieda For Guests Project. Changes will not be saved. If you have an account, please log in

Project: Guest Project

(10 register free trial)

Settings

Top level entity name: mycomponent
Default IO access macro:on
Undefined words read:as 0x0
Modify Settings

Generate

Generate
Download .zip

Generating mycomponent...
  • Validation Ok
  • Generating RTL
  • Generating C Access macros
  • Generating Testbench
Generation Successful.Download
Return to Editor

Preview: mycomponent.vhdl

library IEEE;
use IEEE.STD_LOGIC_1164.all;

entity mycomponent is
    port (signal clk : in std_logic;
          signal reset : in std_logic;
          signal avs_read : in std_logic;
          signal avs_write : in std_logic;
          signal avs_address : in std_logic_vector (0 downto 0);
          signal avs_readdata : out std_logic_vector (31 downto 0);
          signal avs_writedata : in std_logic_vector (31 downto 0);
          signal avs_waitrequest : out std_logic;
          signal version : in std_logic_vector (15 downto 0));
end;
architecture rtl of mycomponent is
    signal dnt_readdataready : std_logic;
    signal dnt_readdatareg : std_logic_vector(31 downto 0);
    signal dnt_waitrequest : std_logic;
begin
avslave: process (clk,reset)
  variable dnt_readdata : std_logic_vector(31 downto 0);
  variable dnt_writedata : std_logic_vector(31 downto 0);
begin
  if reset = '1' then
    dnt_readdatareg <= (others => '0');
    dnt_readdataready <= '0';
  elsif rising_edge(clk) then
    dnt_readdataready <= dnt_waitrequest and avs_read;
    if avs_read = '1' then
      dnt_readdata := (others => '0');
      case avs_address is
        when "0" =>
          dnt_readdata(15 downto 0)  := version;
        when others =>
      end case;
    else
      dnt_readdata := (others => '0');
    end if;
    dnt_readdatareg <= dnt_readdata;
    if avs_write = '1' then
      dnt_writedata := avs_writedata;
      case avs_address is
      when others =>
      end case;
    end if;
  end if;
end process; 

dnt_waitrequest <= avs_read and not dnt_readdataready;

avs_readdata <= dnt_readdatareg;

process (avs_address)
begin
end process;

avs_waitrequest <= dnt_waitrequest;

end;