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

Subversion Repositories de1_olpcl2294_system

[/] [de1_olpcl2294_system/] [trunk/] [src/] [qaz_system.v] - Blame information for rev 8

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

Line No. Rev Author Line
1 8 qaztronic
// --------------------------------------------------------------------
2
//
3
// --------------------------------------------------------------------
4
 
5
`include "timescale.v"
6
 
7
 
8
module qaz_system(
9
                    input   [31:0]  sys_data_i,
10
                    output  [31:0]  sys_data_o,
11
                    input   [31:0]  sys_addr_i,
12
                    input   [3:0]   sys_sel_i,
13
                    input           sys_we_i,
14
                    input           sys_cyc_i,
15
                    input           sys_stb_i,
16
                    output          sys_ack_o,
17
                    output          sys_err_o,
18
                    output          sys_rty_o,
19
 
20
                    input           async_rst_i,
21
 
22
                    output    [6:0]   hex0,
23
                    output    [6:0]   hex1,
24
                    output    [6:0]   hex2,
25
                    output    [6:0]   hex3,
26
 
27
                    input           sys_clk_i,
28
                    output          sys_rst_o
29
                  );
30
 
31
 
32
  //---------------------------------------------------
33
  // register encoder
34
  reg [3:0] register_offset_r;
35
 
36
  always @(*)
37
    case( sys_addr_i[19:0] )
38
      20'h0_0000: register_offset_r = 4'h0;
39
      20'h0_0004: register_offset_r = 4'h4;
40
      default:    register_offset_r = 4'hf;
41
    endcase
42
 
43
 
44
  //---------------------------------------------------
45
  // register offset 0x0  -- system control register
46
  reg sys_rst_r;
47
 
48
  always @( posedge sys_clk_i )
49
    if( sys_rst_o )
50
      sys_rst_r <= 1'h0;
51
    else if( (sys_cyc_i & sys_stb_i & sys_we_i) & (register_offset_r == 4'h0) )
52
      sys_rst_r <= sys_data_i[0];
53
 
54
  wire [31:0]  sys_register_0 = { 31'b0, sys_rst_r };
55
 
56
 
57
  //---------------------------------------------------
58
  // register offset 0x4  -- hex led display register
59
  reg [31:0]  sys_register_4;
60
 
61
  always @( posedge sys_clk_i )
62
    if( sys_rst_o )
63
      sys_register_4 <= 32'h0000ffff;
64
    else if( (sys_cyc_i & sys_stb_i & sys_we_i) & (register_offset_r == 4'h4) )
65
      sys_register_4 <= sys_data_i;
66
 
67
 
68
  //---------------------------------------------------
69
  // register mux
70
  reg [31:0]  sys_data_o_r;
71
 
72
  always @(*)
73
    case( register_offset_r )
74
      4'h0:     sys_data_o_r = sys_register_0;
75
      4'h4:     sys_data_o_r = sys_register_4;
76
      4'hf:     sys_data_o_r = 32'h1bad_c0de;
77
      default:  sys_data_o_r = 32'h1bad_c0de;
78
    endcase
79
 
80
 
81
  //---------------------------------------------------
82
  // sync reset
83
  sync
84
    i_sync_reset(
85
            .async_sig( async_rst_i | sys_rst_r ),
86
            .sync_out(sys_rst_o),
87
            .clk(sys_clk_i)
88
          );
89
 
90
 
91
  //---------------------------------------------------
92
  // hex led encoders
93
  hex_led_encoder
94
    i_hex0(
95
            .encoder(hex0),
96
            .nibble(sys_register_4[3:0])
97
          );
98
 
99
  hex_led_encoder
100
    i_hex1(
101
            .encoder(hex1),
102
            .nibble(sys_register_4[7:4])
103
          );
104
 
105
  hex_led_encoder
106
    i_hex2(
107
            .encoder(hex2),
108
            .nibble(sys_register_4[11:8])
109
          );
110
 
111
  hex_led_encoder
112
    i_hex3(
113
            .encoder(hex3),
114
            .nibble(sys_register_4[15:12])
115
          );
116
 
117
 
118
  //---------------------------------------------------
119
  // outputs
120
  assign sys_data_o = sys_data_o_r;
121
  assign sys_ack_o = sys_cyc_i & sys_stb_i;
122
  assign sys_err_o = 1'b0;
123
  assign sys_rty_o = 1'b0;
124
 
125
endmodule
126
 

powered by: WebSVN 2.1.0

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