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

Subversion Repositories y80e

[/] [y80e/] [trunk/] [rtl/] [machine.v] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 bsa
/*******************************************************************************************/
2
/**                                                                                       **/
3
/** COPYRIGHT (C) 2011, SYSTEMYDE INTERNATIONAL CORPORATION, ALL RIGHTS RESERVED          **/
4
/**                                                                                       **/
5
/** state machine module                                              Rev 0.0  07/01/2011 **/
6
/**                                                                                       **/
7
/*******************************************************************************************/
8
module machine (ld_ctrl, state_reg, wait_st, clkc, dmar_reg, intr_reg, ld_inta, ld_wait,
9
                resetb, state_nxt, wait_req);
10
 
11
  input         clkc;          /* main cpu clock                                           */
12
  input         dmar_reg;      /* latched dma request                                      */
13
  input         intr_reg;      /* latched interrupt request                                */
14
  input         ld_inta;       /* load interrupt request                                   */
15
  input         ld_wait;       /* load wait request                                        */
16
  input         resetb;        /* internal reset                                           */
17
  input         wait_req;      /* wait request                                             */
18
  input   [`STATE_IDX:0] state_nxt;   /* next processor state                              */
19
  output        ld_ctrl;       /* load control register                                    */
20
  output        wait_st;       /* wait state identifier                                    */
21
  output  [`STATE_IDX:0] state_reg;   /* current processor state                           */
22
 
23
  /*****************************************************************************************/
24
  /*                                                                                       */
25
  /* signal declarations                                                                   */
26
  /*                                                                                       */
27
  /*****************************************************************************************/
28
  wire         ld_ctrl;                                    /* advance state                */
29
 
30
  reg          wait_st;                                    /* wait state - inhibit op      */
31
  reg  [`STATE_IDX:0] state_reg;                           /* current processor state      */
32
 
33
  /*****************************************************************************************/
34
  /*                                                                                       */
35
  /* processor state machine                                                               */
36
  /*                                                                                       */
37
  /*****************************************************************************************/
38
  assign ld_ctrl = !ld_wait || !wait_req;
39
 
40
  always @ (posedge clkc or negedge resetb) begin
41
    if (!resetb) wait_st   <= 1'b0;
42
    else         wait_st   <= !ld_ctrl;
43
    end
44
 
45
  always @ (posedge clkc or negedge resetb) begin
46
    if      (!resetb) state_reg <= `sRST;
47
    else if (ld_ctrl) state_reg <= (ld_inta && dmar_reg) ? `sDMA1 :
48
                                   (ld_inta && intr_reg) ? `sINTA : state_nxt;
49
    end
50
 
51
  endmodule
52
 
53
 
54
 
55
 
56
 

powered by: WebSVN 2.1.0

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