si.v
4.17 KB
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
/************************************************************************\
* *
* Copyright (C) 1994, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or cosied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
\************************************************************************/
// $Id: si.v,v 1.1 2002/03/28 00:26:13 berndt Exp $
module si(clk, reset_l,
cbus_read_enable, cbus_write_enable, cbus_select, cbus_command,
dma_start, dbus_enable, dma_grant, read_grant, pif_rsp,
dma_request, read_request, interrupt, pif_cmd, pif_clk,
cbus_data, dbus_data);
`include "si.vh"
input clk; // system clock
input reset_l; // system reset
input cbus_read_enable; // enable cbus read mux
input cbus_write_enable; // enable cbus tristate drivers
input [CBUS_SELECT_SIZE-1:0] cbus_select; // cbus data select
input [CBUS_COMMAND_SIZE-1:0] cbus_command; // cbus data type
input dma_start; // first dbus word flag
input dbus_enable; // enable dbus tristate drivers
input dma_grant; // DMA request granted
input read_grant; // read request granted
input pif_rsp; // PIF serial input
output dma_request; // request a DMA cycle
output read_request; // request a read response cycle
output interrupt; // SI interrupt source
output pif_cmd; // PIF serial output
output pif_clk; // PIF serial clock
inout [CBUS_DATA_SIZE-1:0] cbus_data; // IO bus
inout [DBUS_DATA_SIZE-1:0] dbus_data; // DMA bus
wire dma_read;
wire [DRAM_ADDRESS_SIZE-1:0] dma_address;
wire [DMA_LENGTH_SIZE-1:0] dma_length;
wire [CBUS_DATA_SIZE-1:0] reg_read_data;
wire [SI_REG_WRITE_SIZE-1:0] reg_write_data;
wire [SI_REG_ADDRESS_SIZE-1:0] reg_address;
wire [SI_IO_ADDRESS_SIZE-1:2] io_address;
wire reg_write_enable;
wire pif_clk;
wire [1:0] div_cnt;
wire pchclk;
wire pch_reg_msb;
wire pch_cmd_valid;
wire pch_rsp_reg;
wire pch_rsp_reg_d1;
si_dma si_dma_0 ( .clk(clk), .reset_l(reset_l),
.cbus_read_enable(cbus_read_enable), .cbus_write_enable(cbus_write_enable),
.cbus_select(cbus_select), .cbus_command(cbus_command),
.read_grant(read_grant), .dma_read(dma_read),
.dma_address(dma_address), .dma_length(dma_length),
.reg_read_data(reg_read_data), .io_busy(io_busy),
.read_request(read_request), .reg_write_data(reg_write_data),
.reg_address(reg_address), .io_address(io_address),
.reg_write_enable(reg_write_enable), .cbus_data(cbus_data));
si_control si_control_0 ( .clk(clk), .reset_l(reset_l),
.dbus_enable(dbus_enable), .dma_grant(dma_grant),
.dma_start(dma_start),
.write_data(reg_write_data), .reg_address(reg_address),
.io_address(io_address), .write_enable(reg_write_enable),
.div_cnt(div_cnt),
.pch_rsp_reg(pch_rsp_reg), .pch_rsp_reg_d1(pch_rsp_reg_d1),
.pch_reg_msb(pch_reg_msb), .pch_cmd_valid(pch_cmd_valid),
.dma_req(dma_request), .dma_read(dma_read), .dma_adrs(dma_address),
.dma_length(dma_length), .read_data(reg_read_data),
.interrupt(interrupt), .io_busy(io_busy),
.dbus_data(dbus_data));
si_pif_if si_pif_if_0(.pchclk(pchclk), .pch_reg_msb(pch_reg_msb),
.pch_cmd_valid(pch_cmd_valid), .pch_rsp_in(pif_rsp),
.pch_cmd_reg(pif_cmd),
.pch_rsp_reg(pch_rsp_reg), .pch_rsp_reg_d1(pch_rsp_reg_d1),
.pif_clk(pif_clk) );
si_pchclk si_pchclk_0(.clk(clk), .reset_l(reset_l),
.pchclk(pchclk), .div_cnt(div_cnt));
endmodule