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

Subversion Repositories vg_z80_sbc

[/] [vg_z80_sbc/] [trunk/] [rtl/] [wb_cpu_ctrl.v] - Blame information for rev 36

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

Line No. Rev Author Line
1 3 hharte
//////////////////////////////////////////////////////////////////////////////////
2
// Wishbone Register File
3
//
4
// $Id: wb_cpu_ctrl.v,v 1.1 2008-12-01 02:00:10 hharte Exp $
5
//
6
// (C) 2007 Howard M. Harte
7
//
8
//////////////////////////////////////////////////////////////////////////////////
9
 
10
module wb_cpu_ctrl (clk_i, nrst_i, wb_adr_i, wb_dat_o, wb_dat_i, wb_sel_i, wb_we_i,
11
                                                 wb_stb_i, wb_cyc_i, wb_ack_o, datareg0, datareg1);
12
 
13
        input           clk_i;
14
        input   nrst_i;
15
        input   [2:0] wb_adr_i;
16
        output reg [31:0] wb_dat_o;
17
        input   [31:0] wb_dat_i;
18
        input   [3:0] wb_sel_i;
19
        input   wb_we_i;
20
        input   wb_stb_i;
21
        input   wb_cyc_i;
22
        output reg wb_ack_o;
23
        output  [31:0] datareg0;
24
        output  [31:0] datareg1;
25
 
26
        //
27
        // generate wishbone register bank writes
28
        wire wb_acc = wb_cyc_i & wb_stb_i;    // WISHBONE access
29
        wire wb_wr  = wb_acc & wb_we_i;       // WISHBONE write access
30
 
31
        reg     [31:0]   datareg0;
32
        reg     [31:0]   datareg1;
33
 
34
        always @(posedge clk_i or negedge nrst_i)
35
                if (~nrst_i)                            // reset registers
36
                        begin
37
                                datareg0 <= 32'h87654321;
38
                                datareg1 <= 32'h12345678;
39
                        end
40
                else if(wb_wr)          // wishbone write cycle
41
                        case (wb_adr_i)                 // synopsys full_case parallel_case
42
                                3'b000: datareg0 <= wb_dat_i;
43
                                3'b001: datareg1 <= wb_dat_i;
44
                        endcase
45
 
46
        //
47
   // generate dat_o
48
        always @(posedge clk_i)
49
                case (wb_adr_i)         // synopsys full_case parallel_case
50
                        3'b000: wb_dat_o <= datareg0;
51
                        3'b001: wb_dat_o <= datareg1;
52
                endcase
53
 
54
   //
55
   // generate ack_o
56
   always @(posedge clk_i)
57
                wb_ack_o <= #1 wb_acc & !wb_ack_o;
58
 
59
endmodule

powered by: WebSVN 2.1.0

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