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 10

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

powered by: WebSVN 2.1.0

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