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

Subversion Repositories ssbcc

[/] [ssbcc/] [trunk/] [core/] [9x8/] [peripherals/] [interrupt.v] - Blame information for rev 12

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 12 sinclairrf
//
2
// PERIPHERAL interrupt
3
// Copyright 2015, Sinclair R.F., Inc.
4
//
5
reg s_in_jump = 1'b0;
6
always @ (posedge i_clk)
7
  if (i_rst)
8
    s_in_jump <= 1'b0;
9
  else
10
    s_in_jump <= (s_bus_pc == C_BUS_PC_JUMP) || (s_bus_pc == C_BUS_PC_RETURN);
11
wire @WIDTH@ s_interrupt_raw = ( @INVERT@ ^ @INSIGNAL@ ) & @MASK@;
12
reg @WIDTH@ s_interrupt_raw_s = @INVERT@;
13
always @ (posedge i_clk)
14
  if (i_rst)
15
    s_interrupt_raw_s <= @INVERT@;
16
  else
17
    s_interrupt_raw_s <= s_interrupt_raw;
18
wire @WIDTH@ s_interrupt_trigger_raw = s_interrupt_raw & ~s_interrupt_raw_s;
19
reg s_interrupt_trigger_any = 1'b0;
20
always @ (posedge i_clk)
21
  if (i_rst) begin
22
    s_interrupt_trigger <= @ZERO@;
23
    s_interrupt_trigger_any <= 1'b0;
24
  end else if (@CLEAR_TRIGGER@) begin
25
    s_interrupt_trigger <= s_interrupt_trigger_raw;
26
    s_interrupt_trigger_any <= |s_interrupt_trigger_raw;
27
  end else begin
28
    s_interrupt_trigger <= s_interrupt_trigger | s_interrupt_trigger_raw;
29
    s_interrupt_trigger_any <= s_interrupt_trigger_any || (|s_interrupt_trigger_raw);
30
  end
31
reg s_interrupt_ena;
32
always @ (*)
33
  s_interrupt = s_interrupt_ena && s_interrupt_trigger_any && ~s_in_jump;
34
always @ (posedge i_clk)
35
  if (i_rst)
36
    s_interrupted <= 1'b0;
37
  else
38
    s_interrupted <= s_interrupt;
39
initial s_interrupt_ena = 1'b0;
40
always @ (posedge i_clk)
41
  if (i_rst)
42
    s_interrupt_ena <= 1'b0;
43
  else if (s_interrupt)
44
    s_interrupt_ena <= 1'b0;
45
  else if (s_outport && (s_T == @IX_OUTPORT_ENA@))
46
    s_interrupt_ena <= 1'b1;
47
  else if (s_outport && (s_T == @IX_OUTPORT_DIS@))
48
    s_interrupt_ena <= 1'b0;
49
  else
50
    s_interrupt_ena <= s_interrupt_ena;

powered by: WebSVN 2.1.0

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