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

Subversion Repositories s6soc

[/] [s6soc/] [trunk/] [rtl/] [toplevel.v] - Blame information for rev 2

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

Line No. Rev Author Line
1 2 dgisselq
`timescale 10ns / 100ps
2
module toplevel(i_clk_8mhz,
3
                o_qspi_cs_n, o_qspi_sck, io_qspi_dat,
4
                i_btn, o_led, o_pwm, o_pwm_shutdown_n, o_pwm_gain,
5
                        i_uart, o_uart,
6
                i_kp_row, o_kp_col,
7
                i_gpio, o_gpio,
8
                io_scl, io_sda);
9
        input           i_clk_8mhz;
10
        //
11
        // Quad SPI Flash
12
        output  wire            o_qspi_cs_n;
13
        output  wire            o_qspi_sck;
14
        inout   wire    [3:0]    io_qspi_dat;
15
        //
16
        // General purpose I/O
17
        input           [1:0]    i_btn;
18
        output  wire    [3:0]    o_led;
19
        output  wire            o_pwm, o_pwm_shutdown_n, o_pwm_gain;
20
        //
21
        // and our serial port
22
        input           i_uart;
23
        output  wire    o_uart;
24
        // Our keypad
25
        input           [3:0]    i_kp_row;
26
        output  wire    [3:0]    o_kp_col;
27
        // and our GPIO
28
        input           [15:2]  i_gpio;
29
        output  wire    [15:2]  o_gpio;
30
        // and our I2C port
31
        inout                   io_scl, io_sda;
32
 
33
/////
34
        wire    ck_zero_0, clk_s; // intermediate_clk, intermediate_clk_n;
35
 
36
        // Clock frequency = (25 / 2) * 8Mhz
37
        // Clock period = 10 ns
38
        DCM_SP #(
39
                .CLKDV_DIVIDE(2.0),
40
                .CLKFX_DIVIDE(2),
41
                .CLKFX_MULTIPLY(20),
42
                .CLKIN_DIVIDE_BY_2("FALSE"),
43
                .CLKIN_PERIOD(125.0),
44
                .CLKOUT_PHASE_SHIFT("NONE"),
45
                .CLK_FEEDBACK("1X"),
46
                .DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"),
47
                .DLL_FREQUENCY_MODE("LOW"),
48
                .DUTY_CYCLE_CORRECTION("TRUE"),
49
                .PHASE_SHIFT(0),
50
                .STARTUP_WAIT("TRUE")
51
        ) u0(   .CLKIN(i_clk_8mhz),
52
                .CLK0(ck_zero_0),
53
                .CLKFB(ck_zero_0),
54
                .CLKFX(clk_s),
55
                // .CLKFX180(intermediate_clk_n),
56
                .PSEN(1'b0),
57
                .RST(1'b0));
58
 
59
        // Generate active-high reset.
60
        /*
61
        reg     r_reset;
62
        initial r_reset = 1'b1;
63
        always @(posedge i_clk_12mhz)
64
                r_reset <= 1'b0;
65
        */
66
        assign  reset_s = 1'b0;
67
 
68
        wire            rx_stb, tx_stb;
69
        wire    [7:0]    rx_data, tx_data;
70
        wire            tx_busy;
71
        wire    [29:0]   uart_setup;
72
 
73
        wire    rx_break, rx_parity_err, rx_frame_err, rx_ck_uart, tx_break;
74
        assign  tx_break = 1'b0;
75
        rxuart  rcvuart(clk_s, reset_s, uart_setup, i_uart, rx_stb, rx_data,
76
                        rx_break, rx_parity_err, rx_frame_err, rx_ck_uart);
77
        txuart  tcvuart(clk_s, reset_s, uart_setup, tx_break, tx_stb, tx_data,
78
                        o_uart, tx_busy);
79
 
80
 
81
 
82
        wire    [3:0]    qspi_dat;
83
        wire    [1:0]    qspi_bmod;
84
        wire    [15:0]   w_gpio;
85
 
86
        busmaster       masterbus(clk_s, reset_s,
87
                // External ... bus control (if enabled)
88
                rx_stb, rx_data, tx_stb, tx_data, tx_busy,
89
                // SPI/SD-card flash
90
                o_qspi_cs_n, o_qspi_sck, qspi_dat, io_qspi_dat, qspi_bmod,
91
                // Board lights and switches
92
                i_btn, o_led, o_pwm, { o_pwm_shutdown_n, o_pwm_gain },
93
                // Keypad connections
94
                i_kp_row, o_kp_col,
95
                // UART control
96
                uart_setup,
97
                // GPIO lines
98
                { i_gpio, io_scl, io_sda }, w_gpio
99
                );
100
 
101
        assign io_qspi_dat = (~qspi_bmod[1])?({2'b11,1'bz,qspi_dat[0]})
102
                                :((qspi_bmod[0])?(4'bzzzz):(qspi_dat[3:0]));
103
 
104
        assign  io_sda = (w_gpio[0]) ? 1'bz : 1'b0;
105
        assign  io_scl = (w_gpio[1]) ? 1'bz : 1'b0;
106
        assign  o_gpio[15:2] = w_gpio[15:2];
107
 
108
endmodule

powered by: WebSVN 2.1.0

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