library IEEE; use IEEE.STD_LOGIC_1164.ALL; library STD; use IEEE.NUMERIC_STD.ALL; entity DSPn is port( CLK : in std_logic; CE : in std_logic; RST_N : in std_logic; ENABLE : in std_logic; A0 : in std_logic; DI : in std_logic_vector(7 downto 0); DO : out std_logic_vector(7 downto 0); CS_N : in std_logic; RD_N : in std_logic; WR_N : in std_logic; DP_ADDR : in std_logic_vector(11 downto 0); DP_SEL : in std_logic; VER : in std_logic_vector(2 downto 0);--00-DSP1B, 01-DSP2, 10-DSP3, 11-DSP4 BRK_OUT : out std_logic; DBG_REG : in std_logic_vector(7 downto 0); DBG_DAT_IN : in std_logic_vector(7 downto 0); DBG_DAT_OUT : out std_logic_vector(7 downto 0); DBG_DAT_WR : in std_logic ); end DSPn; architecture rtl of DSPn is constant ACC_A : integer range 0 to 1 := 0; constant ACC_B : integer range 0 to 1 := 1; constant FLAG_OV0 : integer range 0 to 5 := 0; constant FLAG_OV1 : integer range 0 to 5 := 1; constant FLAG_Z : integer range 0 to 5 := 2; constant FLAG_C : integer range 0 to 5 := 3; constant FLAG_S0 : integer range 0 to 5 := 4; constant FLAG_S1 : integer range 0 to 5 := 5; constant INSTR_OP: std_logic_vector(1 downto 0) := "00"; constant INSTR_RT: std_logic_vector(1 downto 0) := "01"; constant INSTR_JP: std_logic_vector(1 downto 0) := "10"; constant INSTR_LD: std_logic_vector(1 downto 0) := "11"; -- IO Registers signal DR : std_logic_vector(15 downto 0); signal SR : std_logic_vector(15 downto 0); signal DP : std_logic_vector(10 downto 0); signal RP : std_logic_vector(10 downto 0); signal PC : std_logic_vector(10 downto 0); type StackRam_t is array (0 to 7) of std_logic_vector(10 downto 0); signal STACK_RAM : StackRam_t; signal SP : unsigned(2 downto 0); signal K, L, M, N : std_logic_vector(15 downto 0); signal P, Q : std_logic_vector(15 downto 0); type Acc_t is array (0 to 1) of std_logic_vector(15 downto 0); signal ACC : Acc_t; type Flags_t is array (0 to 1) of std_logic_vector(5 downto 0); signal FLAGS : Flags_t; signal TR, TRB : std_logic_vector(15 downto 0); signal SI, SO : std_logic_vector(15 downto 0); signal SGN : std_logic_vector(15 downto 0); signal RQM : std_logic; signal DRS, DRC : std_logic; signal USF0, USF1 : std_logic; signal P0, P1 : std_logic; signal EI, DMA : std_logic; signal OP_DST : std_logic_vector(3 downto 0); signal OP_SRC : std_logic_vector(3 downto 0); signal OP_RP : std_logic; signal OP_DPH : std_logic_vector(3 downto 0); signal OP_DPL : std_logic_vector(1 downto 0); signal OP_A : unsigned(0 downto 0); signal OP_ALU : std_logic_vector(3 downto 0); signal OP_P : std_logic_vector(1 downto 0); signal OP_ID : std_logic_vector(15 downto 0); signal OP_NA : std_logic_vector(10 downto 0); signal OP_BRCH : std_logic_vector(8 downto 0); signal OP_INSTR : std_logic_vector(1 downto 0); signal IDB : std_logic_vector(15 downto 0); signal ALU_R : std_logic_vector(15 downto 0); signal PROG_ROM_ADDR : std_logic_vector(12 downto 0); signal PROG_ROM_Q : std_logic_vector(23 downto 0); signal DATA_ROM_ADDR : std_logic_vector(12 downto 0); signal DATA_ROM_Q : std_logic_vector(15 downto 0); signal DATA_RAM_ADDR_A, DATA_RAM_ADDR_B : std_logic_vector(10 downto 0); signal DATA_RAM_Q_A, DATA_RAM_Q_B : std_logic_vector(15 downto 0); signal DATA_RAM_WE : std_logic; signal EN : std_logic; signal RD_Nr, WR_Nr : std_logic_vector(2 downto 0); signal PORT_ACTIVE : std_logic; --debug signal DBG_RUN_LAST : std_logic; signal DBG_DAT_WRr : std_logic; signal DBG_BRK_ADDR : std_logic_vector(10 downto 0) := (others => '1'); signal DBG_CTRL : std_logic_vector(7 downto 0) := (others => '0'); component dp16k_wrapper_8bit generic ( addr_width : natural := 11 ); port ( clock : in STD_LOGIC;
use work.pkg.all;
entity riassoc01 is
port (v : nat_rec;
res : out natural);
end riassoc01;
architecture behav of riassoc01 is
begin
res <= v.a + v.b;
end behav;
entity iassoc01 is
port (a, b : natural;
res : out natural);
end iassoc01;
architecture behav of iassoc01 is
begin
inst : entity work.riassoc01
port map (v.a => a, v.b => b, res => res);
end behav;