OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 171 to Rev 172
    Reverse comparison

Rev 171 → Rev 172

/open8_urisc/trunk/VHDL/o8_etc.vhd
23,11 → 23,11
--
-- VHDL Units : o8_etc
-- Description: Provides a 24-bit, 4uS resolution elapsed timer with
-- : alarm and interrupt for the Open8 CPU.
-- : alarm and interrupt for the Open8 CPU.
--
-- Notes : Requires an externally provided uSec tick input - one clock
-- : per microsecond.
--
--
-- Register Map:
-- Offset Bitfield Description Read/Write
-- 0x0 AAAAAAAA B0 of Setpoint (W) and Buffered Time(R)
111,10 → 111,10
Interrupt <= '0';
elsif( rising_edge( Clock ) )then
epoch_tmr <= epoch_tmr + uSec_Tick;
-- Force the lower bits of the setpoint to "11" so that the offset is
-- reduced to 1uS (reproducing the original behavior). Software should
-- always subtract 4uS (-1) from the desired time to compensate
epoch_setpt(1 downto 0) <= "11";
-- Force the lower bits of the setpoint to "11" so that the offset is
-- reduced to 1uS (reproducing the original behavior). Software should
-- always subtract 4uS (-1) from the desired time to compensate
epoch_setpt(1 downto 0) <= "11";
Reg_Addr_q <= Reg_Addr;
Wr_Data_q <= Wr_Data;
 
149,7 → 149,7
 
-- Set and hold on alarm condition
if( (epoch_tmr > epoch_setpt) and (epoch_alarm = '0') )then
epoch_alarm <= '1';
epoch_alarm <= '1';
end if;
 
epoch_alarm_q <= epoch_alarm;
/open8_urisc/trunk/VHDL/o8_gpout.vhd
102,7 → 102,7
end if;
end if;
 
Rd_Data <= (others => '0');
Rd_Data <= (others => '0');
Rd_En <= Addr_Match and Rd_Enable;
if( Rd_En = '1' )then
Rd_Data <= User_Out;
/open8_urisc/trunk/VHDL/o8_vdsm8.vhd
70,12 → 70,12
signal Wr_Data_q : DATA_TYPE;
signal Rd_En : std_logic;
signal DACin : DATA_TYPE;
 
-- DAC WIDTH = 8 is fixed, with all constants normalized
-- against 256 (the MAX PERIOD)
 
constant DAC_WIDTH : integer := 8;
 
constant DELTA_1_I : integer := 1;
constant DELTA_2_I : integer := 5;
constant DELTA_3_I : integer := 25;
146,17 → 146,17
io_reg: process( Clock, Reset )
begin
if( Reset = Reset_Level )then
Wr_En <= '0';
Wr_En <= '0';
Wr_Data_q <= x"00";
Rd_En <= '0';
Rd_Data <= x"00";
DACin <= x"00";
DACin <= x"00";
elsif( rising_edge( Clock ) )then
Wr_En <= Addr_Match and Wr_Enable;
Wr_Data_q <= Wr_Data;
if( Wr_En = '1' )then
DACin <= Wr_Data_q;
end if;
DACin <= Wr_Data_q;
end if;
 
Rd_Data <= (others => '0');
Rd_En <= Addr_Match and Rd_Enable;
185,7 → 185,7
(others => '0');
 
Next_Period <= q(7 downto 0) - 1;
 
vDSM_proc: process( Clock, Reset )
begin
if( Reset = Reset_Level )then
/open8_urisc/trunk/VHDL/Open8.vhd
62,7 → 62,7
-- : had no interrupt mask, this should be set to x"FF". Otherwise
-- : it can be initialized to any value. Note that Enable_NMI
-- : will logically force the LSB high.
-- :
-- :
-- : Reset_Level determines whether the processor registers reset
-- : on a high or low level from higher logic.
-- :
116,7 → 116,7
-- :
-- : Seventh, the original CPU model had 8 non-maskable interrupts
-- : with priority. This model has the same 8 interrupts, but
-- : allows software to mask them (with an additional option to
-- : allows software to mask them (with an additional option to
-- : override the highest priority interrupt, making it the NMI.)
-- :
-- : Lastly, previous unmapped instructions in the OP_STK opcode
657,7 → 657,7
ALU_Ctrl.Oper <= ALU_POP;
ALU_Ctrl.Reg <= SubOp;
ALU_Ctrl.Data <= Operand1;
 
-------------------------------------------------------------------------------
-- Subroutines & Interrupts (RTS, JSR)
-------------------------------------------------------------------------------
963,7 → 963,7
-- with the mask. Record any incoming interrupts to the pending buffer
i_Ints := (Interrupts or INT_Ctrl.Soft_Ints) and
Int_Mask;
 
Pending <= i_Ints or Pending;
 
if( Wait_for_FSM = '0' )then
/open8_urisc/trunk/VHDL/Open8_pkg.vhd
39,7 → 39,7
-- External constants and type declarations
--
-- These subtypes can be used with external peripherals to simplify
-- connection to the core.
-- connection to the core.
-------------------------------------------------------------------------------
 
-- These must never be changed, as the core requires them to be these static
79,7 → 79,7
end component;
 
-------------------------------------------------------------------------------
-- Internal constants and type declarations.
-- Internal constants and type declarations.
--
-- These are only used in the actual model, and aren't generally useful for
-- external application.
/open8_urisc/trunk/VHDL/o8_alu16.vhd
97,7 → 97,7
-- 0x1D AAAAAAAA Tolerance (15:8) (RW)
-- 0x1E E---DCBA Status & Flags (RW)
-- A = Zero Flag
-- B = Carry Flag
-- B = Carry Flag
-- C = Negative Flag
-- D = Overflow / Error Flag
-- E = Busy Flag (1 = busy, 0 = idle)
219,7 → 219,7
 
-- Reserved for future use
constant OP_RSVD : std_logic_vector(4 downto 0) := "10110";
 
-- Byte Swap ( U <> L )
constant OP_BSWP : std_logic_vector(4 downto 0) := "10111";
 
495,7 → 495,7
u_accum <= '0' &
Operand_2(7 downto 0) &
Operand_2(15 downto 8);
 
when OP_SMAG =>
s_accum <= S_Operand_2;
if( S_Operand_2 < 0)then
/open8_urisc/trunk/VHDL/o8_rtc.vhd
5,7 → 5,7
-- : to ensure time consistency during accesses. Also provides
-- : a programmable periodic interrupt timer, as well as a uSec
-- : tick for external use.
--
--
-- Register Map:
-- Offset Bitfield Description Read/Write
-- 0x0 AAAAAAAA Periodic Interval Timer in uS (RW)

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.