summaryrefslogtreecommitdiff
path: root/hdl/top.sv
blob: d765bebaf6ae2534e895faa2a0932bff6c76cdee (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
module top
    (   input   bit         clock
    ,   input   bit         resetn

    ,   output  bit         ram_resetn
    ,   output  bit [1:0]   ram_csn
    ,   output  bit         ram_clkp
    ,   output  bit         ram_clkn
    ,   inout   bit         ram_rwds
    ,   inout   bit [7:0]   ram_data
    );

    bit         rx_ready;
    bit         rx_valid;
    bit [7:0]   rx_data;

    bit         tx_ready;
    bit         tx_valid;
    bit [7:0]   tx_data;

    bit         echo_in0_ready;
    bit         echo_in0_valid;
    bit [7:0]   echo_in0_data;

    bit         echo_in1_ready;
    bit         echo_in1_valid;
    bit [7:0]   echo_in1_data;

    bit         command_ready;
    bit         command_valid;
    bit [23:0]  command_address;
    bit         command_write;
    bit [15:0]  command_data;

    bit         result_ready;
    bit         result_valid;
    bit [15:0]  result_data;

    bit         ram_rwds_oe;
    bit         ram_rwds_out;
    assign ram_rwds = ram_rwds_oe ? ram_rwds_out : 'bZ;

    bit         ram_data_oe;
    bit [7:0]   ram_data_out;
    assign ram_data = ram_data_oe ? ram_data_out : 'bZ;

    alt_jtag_atlantic
        #(  .INSTANCE_ID(0)
        ,   .LOG2_RXFIFO_DEPTH(6)
        ,   .LOG2_TXFIFO_DEPTH(6)
        ,   .SLD_AUTO_INSTANCE_INDEX("NO")
        ) jtag
        (   .clk(clock)
        ,   .rst_n(resetn)

        ,   .r_dat(tx_data)
        ,   .r_val(tx_valid)
        ,   .r_ena(tx_ready)

        ,   .t_dat(rx_data)
        ,   .t_dav(rx_ready)
        ,   .t_ena(rx_valid)
        );

    echo_arbiter arb
        (   .clock(clock)
        ,   .resetn(resetn)

        ,   .in0_ready(echo_in0_ready)
        ,   .in0_valid(echo_in0_valid)
        ,   .in0_data(echo_in0_data)

        ,   .in1_ready(echo_in1_ready)
        ,   .in1_valid(echo_in1_valid)
        ,   .in1_data(echo_in1_data)

        ,   .out_ready(tx_ready)
        ,   .out_valid(tx_valid)
        ,   .out_data(tx_data)
        );

    command_parser parser
        (   .clock(clock)
        ,   .resetn(resetn)

        ,   .uart_ready(rx_ready)
        ,   .uart_valid(rx_valid)
        ,   .uart_data(rx_data)

        ,   .echo_ready(echo_in0_ready)
        ,   .echo_valid(echo_in0_valid)
        ,   .echo_data(echo_in0_data)

        ,   .command_ready(command_ready)
        ,   .command_valid(command_valid)
        ,   .command_address(command_address)
        ,   .command_write(command_write)
        ,   .command_data(command_data)
        );

    ram_controller ram
        (   .clock(clock)
        ,   .resetn(resetn)

        ,   .command_ready(command_ready)
        ,   .command_valid(command_valid)
        ,   .command_address(command_address)
        ,   .command_write(command_write)
        ,   .command_data(command_data)

        ,   .result_ready(result_ready)
        ,   .result_valid(result_valid)
        ,   .result_data(result_data)

        ,   .ram_resetn(ram_resetn)
        ,   .ram_csn(ram_csn)
        ,   .ram_clkp(ram_clkp)
        ,   .ram_clkn(ram_clkn)
        ,   .ram_rwds_oe(ram_rwds_oe)
        ,   .ram_rwds_in(ram_rwds)
        ,   .ram_rwds_out(ram_rwds_out)
        ,   .ram_data_oe(ram_data_oe)
        ,   .ram_data_in(ram_data)
        ,   .ram_data_out(ram_data_out)
        );

    result_printer print
        (   .clock(clock)
        ,   .resetn(resetn)

        ,   .result_ready(result_ready)
        ,   .result_valid(result_valid)
        ,   .result_data(result_data)

        ,   .echo_ready(echo_in1_ready)
        ,   .echo_valid(echo_in1_valid)
        ,   .echo_data(echo_in1_data)
        );

endmodule