usb_xcvr.v
3.67 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
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
//**************************************************************************************
//
// Model Name : usb_xcvr.v
// Revision : $Revision: 1.6 $
// Date : $Date: 2003/02/13 02:49:12 $
// Author : Bill Saperstein
// Description : USB high speed tranceiver
//
//**************************************************************************************
//**************************************************************************************
// Module Definition
//**************************************************************************************
`timescale 1ps / 1ps
module usb_xcvr
(
// Inputs
usb_dpo , // positive input to differential driver
usbxr_ose , // force single sided zero
usbxr_oen , // driver output enable
usbxr_ien , // driver input enable
usbxr_fl , // speed select
usb_vbus_vld , // B session valid - VBUS valid
// Outputs
usbxr_y1 , // usb receive data
usb_dp , // gated version of D+
usb_dm , // gated version of D-
// Bi-directionals
dp_o , // D+ data
dm_o // D- data
) ;
//**************************************************************************************
// Define Parameters (optional)
//**************************************************************************************
// Not Applicable
//**************************************************************************************
// Port Declarations
//**************************************************************************************
input
usb_dpo, usbxr_ose,
usbxr_oen, usbxr_ien, usbxr_fl, usb_vbus_vld ;
output
usbxr_y1, usb_dp, usb_dm;
inout
dp_o, dm_o ;
//**************************************************************************************
// Net Assignments and Declarations
//**************************************************************************************
wire rfv, ben ;
wire usb_dp_p, usb_dm_p ;
wire usb_vbus_vld_l ;
wire usb_dpo_in ;
assign usb_vbus_vld_l = ~usb_vbus_vld ;
assign usb_dp = usb_vbus_vld & usb_dp_p ;
assign usb_dm = usb_vbus_vld & usb_dm_p ;
assign usb_dpo_in = usbxr_fl ^ usb_dpo ;
//**************************************************************************************
// Pre-Defined Module Instantiations
//**************************************************************************************
TDBIAUSBNNFPOC plus_buf
(
.N01(dp_o) ,
.N02(usbxr_y1) ,
.N03() ,
.N04(usb_dp_p) ,
.N05(usb_dm_p) ,
.H01(usb_dpo_in) ,
.H02(usbxr_oen) ,
.H03(usbxr_ose) ,
.H04(usbxr_fl) ,
.H05(rfv) ,
.H06(usbxr_ien) ,
.H07(usb_vbus_vld_l) ,
.H08(ben)
);
TDBIAUSBNNFMOC minus_buf
(
.N01(dm_o) ,
.N02(rfv) ,
.H01(usb_dpo_in) ,
.H02(usbxr_oen) ,
.H03(usbxr_ose) ,
.H04(usbxr_fl) ,
.H05(ben)
) ;
TDVSAUSBN bias
(
.H01(usbxr_fl) ,
.N01(ben)
) ;
//**************************************************************************************
// Gate and Structural Declarations
//**************************************************************************************
// Not Applicable
//**************************************************************************************
// Procedural Assignments
//**************************************************************************************
// Not Applicable
//**************************************************************************************
// Task and Function Definitions
//**************************************************************************************
// Not Applicable
//**************************************************************************************
// End of Model
//**************************************************************************************
endmodule // usb_xcvr