1 | ////////////////////////////////////////////////////////// |
---|
2 | // Copyright (c) 2006 Rice University // |
---|
3 | // All Rights Reserved // |
---|
4 | // This code is covered by the Rice-WARP license // |
---|
5 | // See http://warp.rice.edu/license/ for details // |
---|
6 | ////////////////////////////////////////////////////////// |
---|
7 | |
---|
8 | module analog_bridge |
---|
9 | ( |
---|
10 | clock_in, |
---|
11 | clock_out, |
---|
12 | |
---|
13 | user_DAC1_A, |
---|
14 | user_DAC1_B, |
---|
15 | user_DAC2_A, |
---|
16 | user_DAC2_B, |
---|
17 | user_DAC1_sleep, |
---|
18 | user_DAC2_sleep, |
---|
19 | user_ADC_A, |
---|
20 | user_ADC_B, |
---|
21 | user_ADC_DFS, |
---|
22 | user_ADC_DCS, |
---|
23 | user_ADC_pdwnA, |
---|
24 | user_ADC_pdwnB, |
---|
25 | user_ADC_otrA, |
---|
26 | user_ADC_otrB, |
---|
27 | user_LED, |
---|
28 | |
---|
29 | analog_DAC1_A, |
---|
30 | analog_DAC1_B, |
---|
31 | analog_DAC2_A, |
---|
32 | analog_DAC2_B, |
---|
33 | analog_DAC1_sleep, |
---|
34 | analog_DAC2_sleep, |
---|
35 | analog_ADC_A, |
---|
36 | analog_ADC_B, |
---|
37 | analog_ADC_DFS, |
---|
38 | analog_ADC_DCS, |
---|
39 | analog_ADC_pdwnA, |
---|
40 | analog_ADC_pdwnB, |
---|
41 | analog_ADC_otrA, |
---|
42 | analog_ADC_otrB, |
---|
43 | analog_LED |
---|
44 | ); |
---|
45 | |
---|
46 | /**********************/ |
---|
47 | /* Clock & Data Ports */ |
---|
48 | /**********************/ |
---|
49 | input clock_in; |
---|
50 | output clock_out; |
---|
51 | |
---|
52 | input [0:13] user_DAC1_A; |
---|
53 | input [0:13] user_DAC1_B; |
---|
54 | input [0:13] user_DAC2_A; |
---|
55 | input [0:13] user_DAC2_B; |
---|
56 | input user_DAC1_sleep; |
---|
57 | input user_DAC2_sleep; |
---|
58 | |
---|
59 | output [0:13] user_ADC_A; |
---|
60 | output [0:13] user_ADC_B; |
---|
61 | reg [0:13] user_ADC_A; |
---|
62 | reg [0:13] user_ADC_B; |
---|
63 | |
---|
64 | input user_ADC_DFS; |
---|
65 | input user_ADC_DCS; |
---|
66 | input user_ADC_pdwnA; |
---|
67 | input user_ADC_pdwnB; |
---|
68 | output user_ADC_otrA; |
---|
69 | output user_ADC_otrB; |
---|
70 | input [0:2] user_LED; |
---|
71 | |
---|
72 | |
---|
73 | output [0:13] analog_DAC1_A; |
---|
74 | output [0:13] analog_DAC1_B; |
---|
75 | output [0:13] analog_DAC2_A; |
---|
76 | output [0:13] analog_DAC2_B; |
---|
77 | reg [0:13] analog_DAC1_A; |
---|
78 | reg [0:13] analog_DAC1_B; |
---|
79 | reg [0:13] analog_DAC2_A; |
---|
80 | reg [0:13] analog_DAC2_B; |
---|
81 | |
---|
82 | output analog_DAC1_sleep; |
---|
83 | output analog_DAC2_sleep; |
---|
84 | reg analog_DAC1_sleep; |
---|
85 | reg analog_DAC2_sleep; |
---|
86 | |
---|
87 | input [0:13] analog_ADC_A; |
---|
88 | input [0:13] analog_ADC_B; |
---|
89 | |
---|
90 | output analog_ADC_DFS; |
---|
91 | output analog_ADC_DCS; |
---|
92 | output analog_ADC_pdwnA; |
---|
93 | output analog_ADC_pdwnB; |
---|
94 | input analog_ADC_otrA; |
---|
95 | input analog_ADC_otrB; |
---|
96 | output [0:2] analog_LED; |
---|
97 | |
---|
98 | |
---|
99 | wire [0:13] temp_analog_DAC1_A; |
---|
100 | wire [0:13] temp_analog_DAC1_B; |
---|
101 | wire [0:13] temp_analog_DAC2_A; |
---|
102 | wire [0:13] temp_analog_DAC2_B; |
---|
103 | |
---|
104 | /**********************************/ |
---|
105 | /* Clocks and analog data signals */ |
---|
106 | /**********************************/ |
---|
107 | assign clock_out = clock_in; |
---|
108 | |
---|
109 | |
---|
110 | assign temp_analog_DAC1_A = user_DAC1_A[0:13]; |
---|
111 | assign temp_analog_DAC1_B = user_DAC1_B[0:13]; |
---|
112 | assign temp_analog_DAC2_A = user_DAC2_A[0:13]; |
---|
113 | assign temp_analog_DAC2_B = user_DAC2_B[0:13]; |
---|
114 | |
---|
115 | assign analog_ADC_DFS = user_ADC_DFS; |
---|
116 | assign analog_ADC_DCS = user_ADC_DCS; |
---|
117 | assign analog_ADC_pdwnA = user_ADC_pdwnA; |
---|
118 | assign analog_ADC_pdwnB = user_ADC_pdwnB; |
---|
119 | assign user_ADC_otrA = analog_ADC_otrA; |
---|
120 | assign user_ADC_otrB = analog_ADC_otrB; |
---|
121 | assign analog_LED = user_LED; |
---|
122 | |
---|
123 | |
---|
124 | // synthesis attribute iob of analog_DAC1_A is true; |
---|
125 | // synthesis attribute iob of analog_DAC1_B is true; |
---|
126 | // synthesis attribute iob of analog_DAC2_A is true; |
---|
127 | // synthesis attribute iob of analog_DAC2_B is true; |
---|
128 | always @(posedge clock_in) |
---|
129 | begin |
---|
130 | analog_DAC1_A <= {temp_analog_DAC1_A[0], ~temp_analog_DAC1_A[1:13]}; |
---|
131 | analog_DAC1_B <= {temp_analog_DAC1_B[0], ~temp_analog_DAC1_B[1:13]}; |
---|
132 | analog_DAC2_A <= {temp_analog_DAC2_A[0], ~temp_analog_DAC2_A[1:13]}; |
---|
133 | analog_DAC2_B <= {temp_analog_DAC2_B[0], ~temp_analog_DAC2_B[1:13]}; |
---|
134 | analog_DAC1_sleep <= user_DAC1_sleep; |
---|
135 | analog_DAC2_sleep <= user_DAC2_sleep; |
---|
136 | user_ADC_A <= analog_ADC_A; |
---|
137 | user_ADC_B <= analog_ADC_B; |
---|
138 | end |
---|
139 | |
---|
140 | endmodule |
---|