URL
https://opencores.org/ocsvn/atlas_core/atlas_core/trunk
Subversion Repositories atlas_core
Compare Revisions
- This comparison shows the changes necessary to convert path
/atlas_core
- from Rev 13 to Rev 14
- ↔ Reverse comparison
Rev 13 → Rev 14
/trunk/core/rtl/ATLAS_pkg.vhd
1,10 → 1,10
-- ######################################################## |
-- # << ATLAS Project - System Package >> # |
-- # << ATLAS Project - Prject Package >> # |
-- # **************************************************** # |
-- # All architecture configurations, options, signal # |
-- # definitions and components are listed here. # |
-- # **************************************************** # |
-- # Last modified: 17.04.2013 # |
-- # Last modified: 27.04.2013 # |
-- # **************************************************** # |
-- # by Stephan Nolting 4788, Hanover, Germany # |
-- ######################################################## |
45,6 → 45,14
constant branch_slots_en_c : boolean := false; -- use branch delay slots (highly experimental!!!) |
|
|
-- Interrupt/Exception Vectors ------------------------------------------------------------ |
-- ------------------------------------------------------------------------------------------- |
constant res_int_vec_c : std_logic_vector(15 downto 0) := x"0000"; -- use boot address instead! |
constant irq0_int_vec_c : std_logic_vector(15 downto 0) := x"0001"; -- external int line 0 IRQ |
constant irq1_int_vec_c : std_logic_vector(15 downto 0) := x"0002"; -- external int line 1 IRQ |
constant swi_int_vec_c : std_logic_vector(15 downto 0) := x"0003"; -- software IRQ |
|
|
-- Wishbone Bus Constants ----------------------------------------------------------------- |
-- ------------------------------------------------------------------------------------------- |
constant wb_classic_cyc_c : std_logic_vector(2 downto 0) := "000"; -- classic cycle |
65,7 → 73,7
constant msr_sys_o_flag_c : natural := 7; -- system mode overflow flag |
constant msr_sys_n_flag_c : natural := 8; -- system mode negative flag |
constant msr_sys_t_flag_c : natural := 9; -- system mode transfer flag |
constant msr_usr_cp_ptc_c : natural := 10; -- user coprocessor protected |
constant msr_usr_cp_ptc_c : natural := 10; -- user coprocessor protection |
constant msr_xint_en_c : natural := 11; -- enable external interrupts (global) |
constant msr_xint0_en_c : natural := 12; -- enable external interrupt 0 |
constant msr_xint1_en_c : natural := 13; -- enable external interrupt 1 |
94,16 → 102,7
constant flag_t_c : natural := 4; -- user mode transfer flag |
constant flag_bus_width_c : natural := 5; -- size of flag bus |
|
|
-- Tochter aus Elysium, |
-- Wir betreten feuertrunken, |
-- Himmlische, dein Heiligthum! |
-- Deine Zauber binden wieder |
-- Was die Mode streng geteilt; |
|
|
|
|
-- Main Control Bus ----------------------------------------------------------------------- |
-- ------------------------------------------------------------------------------------------- |
-- Global Control -- |
184,14 → 183,15
constant ctrl_use_offs_c : natural := 54; -- use loaded offset |
|
-- -- EX Forwarding -- |
-- constant ctrl_a_ex_ma_fw_c : natural := 55; |
-- constant ctrl_a_ex_wb_fw_c : natural := 56; |
-- constant ctrl_b_ex_ma_fw_c : natural := 57; |
-- constant ctrl_b_ex_wb_fw_c : natural := 58; |
-- constant ctrl_c_ex_wb_fw_c : natural := 59; |
-- constant ctrl_a_ex_ma_fw_c : natural := 55; -- obsolete |
-- constant ctrl_a_ex_wb_fw_c : natural := 56; -- obsolete |
-- constant ctrl_b_ex_ma_fw_c : natural := 57; -- obsolete |
-- constant ctrl_b_ex_wb_fw_c : natural := 58; -- obsolete |
-- constant ctrl_c_ex_wb_fw_c : natural := 59; -- obsolete |
|
-- Bus Size -- |
constant ctrl_width_c : natural := 55; -- control bus size |
-- constant ctrl_width_c : natural := 60; -- obsolete |
|
-- Progress Redefinitions -- |
constant ctrl_wb_en_c : natural := ctrl_rd_wb_c; -- valid write back |
300,7 → 300,10
-- M: Mean Creek |
-- S: Mumford & Sons - Lover of the Light |
-- M: 127 Hours |
-- M: Hart of Dixie |
-- M: Nick und Norah - Soundtack einer Nacht |
|
|
-- Functions ------------------------------------------------------------------------------ |
-- ------------------------------------------------------------------------------------------- |
function log2(temp : natural) return natural; -- logarithm base 2 |
648,7 → 651,6
end component; |
|
|
|
end atlas_core_package; |
|
package body atlas_core_package is |
667,5 → 669,4
end function log2; |
|
|
|
end atlas_core_package; |
/trunk/core/rtl/SYS_REG.vhd
6,7 → 6,7
-- # processing circuits are implemented within this # |
-- # unit. # |
-- # **************************************************** # |
-- # Last modified: 17.04.2013 # |
-- # Last modified: 27.04.2013 # |
-- # **************************************************** # |
-- # by Stephan Nolting 4788, Hanover, Germany # |
-- ######################################################## |
80,8 → 80,8
|
-- Interrupt System -- |
signal INT_REQ : std_logic; |
signal INT_VECTOR : std_logic_vector(1 downto 0); |
signal XINT_SYNC : std_logic_vector(1 downto 0); |
signal INT_VECTOR : std_logic_vector(15 downto 0); |
signal XINT_SYNC : std_logic_vector(01 downto 0); |
signal XINT_0_TAKEN : std_logic; |
signal XINT_1_TAKEN : std_logic; |
|
118,17 → 118,17
-- exception priority list and encoding -- |
if ((xint0_valid_v = '1') and (XINT_SYNC(0) = '1')) then -- external interrupt 0 |
INT_REQ <= '1'; |
INT_VECTOR <= "01"; -- ext int 0 vector |
INT_VECTOR <= irq0_int_vec_c; |
elsif ((xint1_valid_v = '1') and (XINT_SYNC(1) = '1')) then -- external interrupt 1 |
INT_REQ <= '1'; |
INT_VECTOR <= "10"; -- ext int 1 vector |
INT_VECTOR <= irq1_int_vec_c; |
elsif ((EXC_POS_I = '1') and (EX_CTRL_BUS_I(ctrl_syscall_c) = '1')) then |
-- software interrupt: system call // msr/coprocessor access violation // undefined instruction |
INT_REQ <= '1'; |
INT_VECTOR <= "11"; -- sw int vector |
INT_VECTOR <= swi_int_vec_c; |
else -- no exception |
INT_REQ <= '0'; |
INT_VECTOR <= "00"; -- irrelevant [hw reset vector] |
INT_VECTOR <= res_int_vec_c; -- irrelevant, use boot address config instaed! |
end if; |
end process EXC_SYS; |
|
231,8 → 231,7
|
-- Exception PC Update -------------------------------------------------- |
if (INT_REQ = '1') then |
SYS_REG_PC <= (others => '0'); |
SYS_REG_PC(2 downto 1) <= INT_VECTOR; |
SYS_REG_PC <= INT_VECTOR; |
|
-- Manual/Branch PC Update ---------------------------------------------- |
elsif (VALID_BRANCH = '1') or ((EX_CTRL_BUS_I(ctrl_en_c) = '1') and (EX_CTRL_BUS_I(ctrl_ctx_down_c) = '1')) then -- valid automatic/manual update/goto user mode |
/trunk/core/doc/Atlas Processor Datasheet.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream