OpenCores
URL https://opencores.org/ocsvn/usb_ft232h_avalon-mm_interface/usb_ft232h_avalon-mm_interface/trunk

Subversion Repositories usb_ft232h_avalon-mm_interface

[/] [usb_ft232h_avalon-mm_interface/] [trunk/] [hw/] [usb_ft232h.sv] - Blame information for rev 6

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 6 melman701
/*!
2
 * \brief UsB FT232H core module
3
 * \version 1.8
4 2 melman701
 */
5
 
6
 
7
module usb_ft232h (
8 6 melman701
  clk_i,
9
  reset_i,
10
 
11
  //Avalon-MM Slave
12
  address_i,
13
  read_i,
14
  readdata_o,
15
  readdatavalid_o,
16
  write_i,
17
  writedata_i,
18
  waitrequest_o,
19 2 melman701
 
20 6 melman701
  //FT232H
21
  usb_clk_i,
22
  usb_data_io,
23
  usb_rxf_n_i,
24
  usb_txe_n_i,
25
  usb_rd_n_o,
26
  usb_wr_n_o,
27
  usb_oe_n_o
28 2 melman701
);
29
 
30
 
31 6 melman701
parameter TX_FIFO_NUMWORDS  = 512;
32
parameter TX_FIFO_WIDTHU    = 9;
33
parameter RX_FIFO_NUMWORDS  = 512;
34
parameter RX_FIFO_WIDTHU    = 9;
35
parameter FIFOS_DELAYPIPE   = 11;
36 2 melman701
 
37 6 melman701
parameter USB_READ_LATENCY  = 1;
38
parameter USB_WRITE_LATENCY = 1;
39 2 melman701
 
40 6 melman701
parameter AVALON_CMD_LATENCY = 1;
41
parameter AVALON_READ_LATENCY = 1;
42
parameter AVALON_WRITE_LATENCY = 1;
43
 
44
 
45
 
46 5 melman701
input  logic       clk_i;
47
input  logic       reset_i;
48 6 melman701
input  logic [2:0] address_i;
49 5 melman701
input  logic       read_i;
50
output logic [7:0] readdata_o;
51 6 melman701
output logic       readdatavalid_o;
52 5 melman701
input  logic       write_i;
53
input  logic [7:0] writedata_i;
54 6 melman701
output logic       waitrequest_o;
55 2 melman701
 
56 5 melman701
input  logic       usb_clk_i;
57 6 melman701
inout  wire  [7:0] usb_data_io;
58 5 melman701
input  logic       usb_rxf_n_i;
59
input  logic       usb_txe_n_i;
60
output logic       usb_rd_n_o;
61
output logic       usb_wr_n_o;
62
output logic       usb_oe_n_o;
63 2 melman701
 
64
 
65
 
66 5 melman701
logic [7:0]                txf_wrdata;
67
logic                      txf_wrclk;
68
logic                      txf_wrreq;
69
logic                      txf_wrfull;
70
logic [TX_FIFO_WIDTHU-1:0] txf_wrusedw;
71 6 melman701
 
72 5 melman701
logic                      txf_rdclk;
73
logic                      txf_rdreq;
74
logic [7:0]                txf_rddata;
75
logic                      txf_rdempty;
76 2 melman701
 
77 5 melman701
logic [7:0]                rxf_wrdata;
78
logic                      rxf_wrclk;
79
logic                      rxf_wrreq;
80
logic                      rxf_wrfull;
81 6 melman701
 
82 5 melman701
logic [RX_FIFO_WIDTHU-1:0] rxf_rdusedw;
83
logic                      rxf_rdclk;
84
logic                      rxf_rdreq;
85
logic [7:0]                rxf_rddata;
86
logic                      rxf_rdempty;
87
logic                      rxf_rdfull;
88 2 melman701
 
89
 
90
 
91
 
92 6 melman701
ft232h_fifos_interface ffi (
93
  .reset_i        (reset_i),
94
  // FT232H
95
  .usb_clk_i      (usb_clk_i),
96
  .usb_data_io    (usb_data_io),
97
  .usb_rxf_n_i    (usb_rxf_n_i),
98
  .usb_txe_n_i    (usb_txe_n_i),
99
  .usb_rd_n_o     (usb_rd_n_o),
100
  .usb_wr_n_o     (usb_wr_n_o),
101
  .usb_oe_n_o     (usb_oe_n_o),
102
  // RX FIFO
103
  .rxf_wrclk_o    (rxf_wrclk),
104
  .rxf_wrfull_i   (rxf_wrfull),
105
  .rxf_wrreq_o    (rxf_wrreq),
106
  .rxf_wrdata_o   (rxf_wrdata),
107
  // TX FIFO
108
  .txf_rdclk_o    (txf_rdclk),
109
  .txf_rdempty_i  (txf_rdempty),
110
  .txf_rdreq_o    (txf_rdreq),
111
  .txf_rddata_i   (txf_rddata)
112
  );
113
  defparam
114
    ffi.READ_LATENCY = USB_READ_LATENCY,
115
    ffi.WRITE_LATENCY = USB_WRITE_LATENCY;
116 2 melman701
 
117
 
118
 
119 6 melman701
dcfifo  txfifo (
120
        .aclr      ( reset_i ),
121
        .data      ( txf_wrdata ),
122
        .rdclk     ( txf_rdclk ),
123
        .rdreq     ( txf_rdreq ),
124
        .wrclk     ( txf_wrclk ),
125
        .wrreq     ( txf_wrreq ),
126
        .q         ( txf_rddata ),
127
        .rdempty   ( txf_rdempty ),
128
        .wrfull    ( txf_wrfull ),
129
        .wrusedw   ( txf_wrusedw ),
130
        .eccstatus (),
131
        .rdfull    (),
132
        .rdusedw   (),
133
        .wrempty   ());
134
  defparam
135
    txfifo.intended_device_family = "Cyclone IV E",
136
    txfifo.lpm_numwords = TX_FIFO_NUMWORDS,
137
    txfifo.lpm_showahead = "OFF",
138
    txfifo.lpm_type = "dcfifo",
139
    txfifo.lpm_width = 8,
140
    txfifo.lpm_widthu = TX_FIFO_WIDTHU,
141
    txfifo.overflow_checking = "ON",
142
    txfifo.rdsync_delaypipe = FIFOS_DELAYPIPE,
143
    txfifo.read_aclr_synch = "ON",
144
    txfifo.underflow_checking = "ON",
145
    txfifo.use_eab = "ON",
146
    txfifo.write_aclr_synch = "ON",
147
    txfifo.wrsync_delaypipe = FIFOS_DELAYPIPE;
148 5 melman701
 
149 2 melman701
 
150 6 melman701
dcfifo rxfifo (
151
        .aclr      ( reset_i ),
152
        .data      ( rxf_wrdata ),
153
        .rdclk     ( rxf_rdclk ),
154
        .rdreq     ( rxf_rdreq ),
155
        .wrclk     ( rxf_wrclk ),
156
        .wrreq     ( rxf_wrreq ),
157
        .q         ( rxf_rddata ),
158
        .rdempty   ( rxf_rdempty ),
159
        .wrfull    ( rxf_wrfull ),
160
        .wrusedw   (),
161
        .eccstatus (),
162
        .rdfull    ( rxf_rdfull ),
163
        .rdusedw   ( rxf_rdusedw ),
164
        .wrempty   ());
165
  defparam
166
    rxfifo.intended_device_family = "Cyclone IV E",
167
    rxfifo.lpm_numwords = RX_FIFO_NUMWORDS,
168
    rxfifo.lpm_showahead = "OFF",
169
    rxfifo.lpm_type = "dcfifo",
170
    rxfifo.lpm_width = 8,
171
    rxfifo.lpm_widthu = RX_FIFO_WIDTHU,
172
    rxfifo.overflow_checking = "ON",
173
    rxfifo.rdsync_delaypipe = FIFOS_DELAYPIPE,
174
    rxfifo.read_aclr_synch = "ON",
175
    rxfifo.underflow_checking = "ON",
176
    rxfifo.use_eab = "ON",
177
    rxfifo.write_aclr_synch = "ON",
178
    rxfifo.wrsync_delaypipe = FIFOS_DELAYPIPE;
179 5 melman701
 
180 2 melman701
 
181 5 melman701
 
182 6 melman701
usb_fifos_avalon_mm_interface ufai (
183
  .reset_i          (reset_i),
184
  .clk_i            (clk_i),
185
  // Avalon-MM
186
  .address_i        (address_i),
187
  .read_i           (read_i),
188
  .readdata_o       (readdata_o),
189
  .readdatavalid_o  (readdatavalid_o),
190
  .write_i          (write_i),
191
  .writedata_i      (writedata_i),
192
  .waitrequest_o    (waitrequest_o),
193
  // RX FIFO
194
  .rxf_rdclk_o      (rxf_rdclk),
195
  .rxf_rdempty_i    (rxf_rdempty),
196
  .rxf_rdfull_i     (rxf_rdfull),
197
  .rxf_rdreq_o      (rxf_rdreq),
198
  .rxf_rddata_i     (rxf_rddata),
199
  .rxf_rdusedw_i    (rxf_rdusedw),
200
  // TX FIFO
201
  .txf_wrclk_o      (txf_wrclk),
202
  .txf_wrfull_i     (txf_wrfull),
203
  .txf_wrreq_o      (txf_wrreq),
204
  .txf_wrdata_o     (txf_wrdata),
205
  .txf_wrusedw_i    (txf_wrusedw)
206
  );
207
  defparam
208
    ufai.TX_FIFO_WIDTHU = TX_FIFO_WIDTHU,
209
    ufai.RX_FIFO_WIDTHU = RX_FIFO_WIDTHU,
210
    ufai.CMD_LATENCY = AVALON_CMD_LATENCY,
211
    ufai.READ_LATENCY = AVALON_READ_LATENCY,
212
    ufai.WRITE_LATENCY = AVALON_WRITE_LATENCY;
213 2 melman701
 
214 5 melman701
 
215 2 melman701
endmodule

powered by: WebSVN 2.1.0

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