add ZBT SRAM to Dvi for framebuffer
[fleet.git] / ships / Dvi.ship
1 ship: Dvi
2
3 == Ports ===========================================================
4 data  in:    inX
5 data  in:    inY
6 data  in:    inData
7
8 data  in:    inAddrRead
9 data  in:    inAddrWrite
10 data  in:    inDataWrite
11
12 data  out:   out
13
14 percolate up:    dvi_d0      1
15 percolate up:    dvi_d1      1
16 percolate up:    dvi_d2      1
17 percolate up:    dvi_d3      1
18 percolate up:    dvi_d4      1
19 percolate up:    dvi_d5      1
20 percolate up:    dvi_d6      1
21 percolate up:    dvi_d7      1
22 percolate up:    dvi_d8      1
23 percolate up:    dvi_d9      1
24 percolate up:    dvi_d10     1
25 percolate up:    dvi_d11     1
26
27 percolate up:    dvi_h       1
28 percolate up:    dvi_v       1
29 percolate up:    dvi_xclk_n  1
30 percolate up:    dvi_xclk_p  1
31 percolate up:    dvi_de      1
32 percolate up:    dvi_reset_b 1
33
34 percolate down:  gpio_sw_c    1
35
36 percolate up:    gpio_led_c   1
37 percolate up:    gpio_led_e   1
38 percolate up:    gpio_led_n   1
39 percolate up:    gpio_led_s   1
40 percolate up:    gpio_led_w   1
41
42 percolate up:    gpio_led_4   1
43 percolate up:    gpio_led_5   1
44 percolate up:    gpio_led_6   1
45 percolate up:    gpio_led_7   1
46
47 percolate up:    dvi_iic_scl 1
48 percolate inout: dvi_iic_sda 1
49
50 percolate up:    gpio_led_0   1
51 percolate up:    gpio_led_1   1
52 percolate up:    gpio_led_2   1
53 percolate up:    gpio_led_3   1
54
55 percolate up:      sram_adv_ld_b 1
56 percolate up:      sram_bw0 1
57 percolate up:      sram_bw1 1
58 percolate up:      sram_bw2 1
59 percolate up:      sram_bw3 1
60 percolate up:      sram_clk 1
61 percolate up:      sram_cs_b 1
62 percolate up:      sram_flash_a0 1
63 percolate up:      sram_flash_a1 1
64 percolate up:      sram_flash_a2 1
65 percolate up:      sram_flash_a3 1
66 percolate up:      sram_flash_a4 1
67 percolate up:      sram_flash_a5 1
68 percolate up:      sram_flash_a6 1
69 percolate up:      sram_flash_a7 1
70 percolate up:      sram_flash_a8 1
71 percolate up:      sram_flash_a9 1
72 percolate up:      sram_flash_a10 1
73 percolate up:      sram_flash_a11 1
74 percolate up:      sram_flash_a12 1
75 percolate up:      sram_flash_a13 1
76 percolate up:      sram_flash_a14 1
77 percolate up:      sram_flash_a15 1
78 percolate up:      sram_flash_a16 1
79 percolate up:      sram_flash_a17 1
80 percolate up:      sram_flash_a18 1
81 percolate up:      sram_flash_a19 1
82 percolate up:      sram_flash_a20 1
83 percolate up:      sram_flash_a21 1
84 percolate up:      sram_flash_we_b 1
85 percolate up:      sram_mode 1
86 percolate up:      sram_oe_b 1
87
88 percolate inout:    sram_dqp0 1
89 percolate inout:    sram_dqp1 1
90 percolate inout:    sram_dqp2 1
91 percolate inout:    sram_dqp3 1
92
93 percolate inout:    sram_flash_d0 1
94 percolate inout:    sram_flash_d1 1
95 percolate inout:    sram_flash_d2 1
96 percolate inout:    sram_flash_d3 1
97 percolate inout:    sram_flash_d4 1
98 percolate inout:    sram_flash_d5 1
99 percolate inout:    sram_flash_d6 1
100 percolate inout:    sram_flash_d7 1
101 percolate inout:    sram_flash_d8 1
102 percolate inout:    sram_flash_d9 1
103 percolate inout:    sram_flash_d10 1
104 percolate inout:    sram_flash_d11 1
105 percolate inout:    sram_flash_d12 1
106 percolate inout:    sram_flash_d13 1
107 percolate inout:    sram_flash_d14 1
108 percolate inout:    sram_flash_d15 1
109 percolate inout:    sram_d16 1
110 percolate inout:    sram_d17 1
111 percolate inout:    sram_d18 1
112 percolate inout:    sram_d19 1
113 percolate inout:    sram_d20 1
114 percolate inout:    sram_d21 1
115 percolate inout:    sram_d22 1
116 percolate inout:    sram_d23 1
117 percolate inout:    sram_d24 1
118 percolate inout:    sram_d25 1
119 percolate inout:    sram_d26 1
120 percolate inout:    sram_d27 1
121 percolate inout:    sram_d28 1
122 percolate inout:    sram_d29 1
123 percolate inout:    sram_d30 1
124 percolate inout:    sram_d31 1
125
126 == FPGA ==============================================================
127
128 wire [9:0] x_coord;
129 wire [9:0] y_coord;
130 wire data_valid_ext;
131 wire clk_fb;
132 wire pix_clk;
133 wire[7:0] dvi_green;
134 wire[7:0] dvi_red;
135 wire[7:0] dvi_blue;
136
137 assign dvi_reset_b = 1;
138 assign dvi_de = data_valid_ext;
139
140 vga_timing_generator 
141  #(
142      .WIDTH(640),
143      .H_FP(16),
144      .H_SYNC(96),
145      .H_BP(48),
146      .HEIGHT(480),
147      .V_FP(12),
148      .V_SYNC(2),
149      .V_BP(31),
150      .HEIGHT_BITS(10),
151      .WIDTH_BITS(10),
152      .DATA_DELAY(0)
153   ) my_vga_timing_generator (
154      .rst(rst),
155      .clk(pix_clk),
156      .hsync(dvi_h),
157      .vsync(dvi_v),
158      .X_COORD(x_coord),
159      .Y_COORD(y_coord),
160      .DATA_VALID(),
161      .DATA_VALID_EXT(data_valid_ext),
162      .PIXEL_COUNT()
163   );
164
165   ODDR #(
166       .DDR_CLK_EDGE("OPPOSITE_EDGE"),    // "OPPOSITE_EDGE" or "SAME_EDGE" 
167       .INIT(1'b0),                          // Initial value for Q port ('1' or '0')
168       .SRTYPE("SYNC")                    // Reset Type ("ASYNC" or "SYNC")
169   ) ODDR_xclk_p (
170       .Q(dvi_xclk_p),       // 1-bit DDR output
171       .C(pix_clk),          // 1-bit clock input
172       .CE(1),              // 1-bit clock enable input
173       .D1(1),              // 1-bit data input (positive edge)
174       .D2(0),              // 1-bit data input (negative edge)
175       .R(0),              // 1-bit reset input
176       .S(0)               // 1-bit set input
177       );
178   ODDR #(
179       .DDR_CLK_EDGE("OPPOSITE_EDGE"),    // "OPPOSITE_EDGE" or "SAME_EDGE" 
180       .INIT(1'b0),                          // Initial value for Q port ('1' or '0')
181       .SRTYPE("SYNC")                    // Reset Type ("ASYNC" or "SYNC")
182   ) ODDR_xclk_n (
183       .Q(dvi_xclk_n),       // 1-bit DDR output
184       .C(pix_clk),          // 1-bit clock input
185       .CE(1),              // 1-bit clock enable input
186       .D1(0),              // 1-bit data input (positive edge)
187       .D2(1),              // 1-bit data input (negative edge)
188       .R(0),              // 1-bit reset input
189       .S(0)               // 1-bit set input
190       );
191
192   i2c_video_programmer my_i2c_video_programmer_i (
193       .CLK200Mhz(clk),
194       .RST(rst),
195       .I2C_SDA(dvi_iic_sda),
196       .I2C_SCL(dvi_iic_scl));
197
198   DCM_BASE #(
199       .CLKDV_DIVIDE(4.0),     // Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
200       .CLKFX_DIVIDE(16),      // Can be any interger from 1 to 32
201       .CLKFX_MULTIPLY(2),       // Can be any integer from 2 to 32
202       .CLKIN_DIVIDE_BY_2("FALSE"),   // TRUE/FALSE to enable CLKIN divide by two feature
203       .CLKIN_PERIOD(10.0),     // Specify period of input clock in ns from 1.25 to 1000.00
204       .CLKOUT_PHASE_SHIFT("NONE"),  // Specify phase shift mode of NONE or FIXED
205       .CLK_FEEDBACK("1X"),    // Specify clock feedback of NONE or 1X
206       .DCM_AUTOCALIBRATION("TRUE"),    // DCM calibrartion circuitry TRUE/FALSE
207       .DCM_PERFORMANCE_MODE("MAX_SPEED"),  // Can be MAX_SPEED or MAX_RANGE
208       .DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"),  // SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or
209       .DFS_FREQUENCY_MODE("HIGH"),  // LOW or HIGH frequency mode for frequency synthesis
210       .DLL_FREQUENCY_MODE("LOW"),  // LOW, HIGH, or HIGH_SER frequency mode for DLL
211       .DUTY_CYCLE_CORRECTION("TRUE"),    // Duty cycle correction, TRUE or FALSE
212       .FACTORY_JF(16'hF0F0),  // FACTORY JF Values Suggested to be set to X"F0F0" 
213       .PHASE_SHIFT(0),       // Amount of fixed phase shift from -255 to 1023
214       .STARTUP_WAIT("FALSE")   // Delay configuration DONE until DCM LOCK, TRUE/FALSE
215   ) DCM_BASE_dvi (
216       .CLK0(clk_fb),
217       .CLKDV(pix_clk),
218       .CLKFB(clk_fb),
219       .CLKIN(clk),
220       .RST(rst)
221       );
222
223   ODDR ODDR_dvi_d0  (dvi_d0,  pix_clk, 1, dvi_green[4], dvi_blue[0],  ~data_valid_ext, 0);
224   ODDR ODDR_dvi_d1  (dvi_d1,  pix_clk, 1, dvi_green[5], dvi_blue[1],  ~data_valid_ext, 0);
225   ODDR ODDR_dvi_d2  (dvi_d2,  pix_clk, 1, dvi_green[6], dvi_blue[2],  ~data_valid_ext, 0);
226   ODDR ODDR_dvi_d3  (dvi_d3,  pix_clk, 1, dvi_green[7], dvi_blue[3],  ~data_valid_ext, 0);
227   ODDR ODDR_dvi_d4  (dvi_d4,  pix_clk, 1, dvi_red[0],   dvi_blue[4],  ~data_valid_ext, 0);
228   ODDR ODDR_dvi_d5  (dvi_d5,  pix_clk, 1, dvi_red[1],   dvi_blue[5],  ~data_valid_ext, 0);
229   ODDR ODDR_dvi_d6  (dvi_d6,  pix_clk, 1, dvi_red[2],   dvi_blue[6],  ~data_valid_ext, 0);
230   ODDR ODDR_dvi_d7  (dvi_d7,  pix_clk, 1, dvi_red[3],   dvi_blue[7],  ~data_valid_ext, 0);
231   ODDR ODDR_dvi_d8  (dvi_d8,  pix_clk, 1, dvi_red[4],   dvi_green[0], ~data_valid_ext, 0);
232   ODDR ODDR_dvi_d9  (dvi_d9,  pix_clk, 1, dvi_red[5],   dvi_green[1], ~data_valid_ext, 0);
233   ODDR ODDR_dvi_d10 (dvi_d10, pix_clk, 1, dvi_red[6],   dvi_green[2], ~data_valid_ext, 0);
234   ODDR ODDR_dvi_d11 (dvi_d11, pix_clk, 1, dvi_red[7],   dvi_green[3], ~data_valid_ext, 0);
235
236
237   reg we;
238   reg  [31:0] mem_out;
239   wire [18:0] inAddr;
240   wire [18:0] vga_pixel_addr_;
241   reg  [18:0] vga_pixel_addr;
242   reg  [18:0] last_vga_pixel_addr;
243
244 reg write_enable;
245 reg oe;
246 reg [2:0] wait_cycles;
247 reg was_write;
248 reg was_video;
249 reg [37:0] addr;
250 wire [31:0] data_out;
251 reg [37:0] out_d;
252
253 assign out_d_ = out_d;
254
255 assign sram_flash_a0 = addr[0];
256 assign sram_flash_a1 = addr[1];
257 assign sram_flash_a2 = addr[2];
258 assign sram_flash_a3 = addr[3];
259 assign sram_flash_a4 = addr[4];
260 assign sram_flash_a5 = addr[5];
261 assign sram_flash_a6 = addr[6];
262 assign sram_flash_a7 = addr[7];
263 assign sram_flash_a8 = addr[8];
264 assign sram_flash_a9 = addr[9];
265 assign sram_flash_a10 = addr[10];
266 assign sram_flash_a11 = addr[11];
267 assign sram_flash_a12 = addr[12];
268 assign sram_flash_a13 = addr[13];
269 assign sram_flash_a14 = addr[14];
270 assign sram_flash_a15 = addr[15];
271 assign sram_flash_a16 = addr[16];
272 assign sram_flash_a17 = addr[17];
273 assign sram_flash_a18 = addr[18];
274 assign sram_flash_a19 = addr[19];
275 assign sram_flash_a20 = addr[20];
276 assign sram_flash_a21 = addr[21];
277
278 assign data_out[0]  = sram_flash_d0;   assign sram_flash_d0 = oe ? 1'bz : inDataWrite_d[0];
279 assign data_out[1]  = sram_flash_d1;   assign sram_flash_d1 = oe ? 1'bz : inDataWrite_d[1];
280 assign data_out[2]  = sram_flash_d2;   assign sram_flash_d2 = oe ? 1'bz : inDataWrite_d[2];
281 assign data_out[3]  = sram_flash_d3;   assign sram_flash_d3 = oe ? 1'bz : inDataWrite_d[3];
282 assign data_out[4]  = sram_flash_d4;   assign sram_flash_d4 = oe ? 1'bz : inDataWrite_d[4];
283 assign data_out[5]  = sram_flash_d5;   assign sram_flash_d5 = oe ? 1'bz : inDataWrite_d[5];
284 assign data_out[6]  = sram_flash_d6;   assign sram_flash_d6 = oe ? 1'bz : inDataWrite_d[6];
285 assign data_out[7]  = sram_flash_d7;   assign sram_flash_d7 = oe ? 1'bz : inDataWrite_d[7];
286 assign data_out[8]  = sram_flash_d8;   assign sram_flash_d8 = oe ? 1'bz : inDataWrite_d[8];
287 assign data_out[9]  = sram_flash_d9;   assign sram_flash_d9 = oe ? 1'bz : inDataWrite_d[9];
288 assign data_out[10] = sram_flash_d10;  assign sram_flash_d10 = oe ? 1'bz : inDataWrite_d[10];
289 assign data_out[11] = sram_flash_d11;  assign sram_flash_d11 = oe ? 1'bz : inDataWrite_d[11];
290 assign data_out[12] = sram_flash_d12;  assign sram_flash_d12 = oe ? 1'bz : inDataWrite_d[12];
291 assign data_out[13] = sram_flash_d13;  assign sram_flash_d13 = oe ? 1'bz : inDataWrite_d[13];
292 assign data_out[14] = sram_flash_d14;  assign sram_flash_d14 = oe ? 1'bz : inDataWrite_d[14];
293 assign data_out[15] = sram_flash_d15;  assign sram_flash_d15 = oe ? 1'bz : inDataWrite_d[15];
294 assign data_out[16] = sram_d16;        assign sram_d16 = oe ? 1'bz : inDataWrite_d[16];
295 assign data_out[17] = sram_d17;        assign sram_d17 = oe ? 1'bz : inDataWrite_d[17];
296 assign data_out[18] = sram_d18;        assign sram_d18 = oe ? 1'bz : inDataWrite_d[18];
297 assign data_out[19] = sram_d19;        assign sram_d19 = oe ? 1'bz : inDataWrite_d[19];
298 assign data_out[20] = sram_d20;        assign sram_d20 = oe ? 1'bz : inDataWrite_d[20];
299 assign data_out[21] = sram_d21;        assign sram_d21 = oe ? 1'bz : inDataWrite_d[21];
300 assign data_out[22] = sram_d22;        assign sram_d22 = oe ? 1'bz : inDataWrite_d[22];
301 assign data_out[23] = sram_d23;        assign sram_d23 = oe ? 1'bz : inDataWrite_d[23];
302 assign data_out[24] = sram_d24;        assign sram_d24 = oe ? 1'bz : inDataWrite_d[24];
303 assign data_out[25] = sram_d25;        assign sram_d25 = oe ? 1'bz : inDataWrite_d[25];
304 assign data_out[26] = sram_d26;        assign sram_d26 = oe ? 1'bz : inDataWrite_d[26];
305 assign data_out[27] = sram_d27;        assign sram_d27 = oe ? 1'bz : inDataWrite_d[27];
306 assign data_out[28] = sram_d28;        assign sram_d28 = oe ? 1'bz : inDataWrite_d[28];
307 assign data_out[29] = sram_d29;        assign sram_d29 = oe ? 1'bz : inDataWrite_d[29];
308 assign data_out[30] = sram_d30;        assign sram_d30 = oe ? 1'bz : inDataWrite_d[30];
309 assign data_out[31] = sram_d31;        assign sram_d31 = oe ? 1'bz : inDataWrite_d[31];
310
311 assign sram_mode       = 0;
312 assign sram_clk        = clk;
313 assign sram_bw0        = ~write_enable;
314 assign sram_bw1        = ~write_enable;
315 assign sram_bw2        = ~write_enable;
316 assign sram_bw3        = ~write_enable;
317 assign sram_flash_we_b = ~write_enable;
318 assign sram_adv_ld_b   = 0;
319 assign sram_cs_b       = 0;
320 assign sram_oe_b       = ~oe;
321
322   assign inAddr          = inX_d   + {   inY_d[8:0], 7'b0000000 } + {   inY_d[8:0], 10'b0000000000 };
323   assign vga_pixel_addr_ = x_coord + { y_coord[8:0], 7'b0000000 } + { y_coord[8:0], 10'b0000000000 };
324   assign dvi_red   = mem_out[23:16];
325   assign dvi_green = mem_out[15:8];
326   assign dvi_blue  = mem_out[7:0];
327
328   wire [2:0] mem_out_old;
329   vram vram(clk, ~rst, we,
330             inAddr[18:0],
331             vga_pixel_addr,
332             inData_d, ,
333             mem_out_old);
334
335   always @(posedge pix_clk) begin
336       vga_pixel_addr <= vga_pixel_addr_;
337   end
338
339 always @(posedge clk) begin
340   if (rst) begin
341     `reset
342     wait_cycles <= 0;
343
344   end else begin
345     `cleanup
346
347     write_enable <= 0;
348     oe <= 1;
349     if (wait_cycles == 1) begin
350       if (was_video) begin
351         mem_out <= data_out;
352       end else if (was_write) begin
353         out_d <= { 1'b1, 37'b0 };
354         `fill_out
355         `drain_inDataWrite
356         `drain_inAddrWrite
357         oe <= 0;
358       end else begin
359         out_d <= { 1'b0, data_out };
360         `fill_out
361         `drain_inAddrRead
362       end
363       wait_cycles <= 0;
364
365     end else if (wait_cycles != 0) begin
366       wait_cycles <= wait_cycles-1;
367
368     end else if (`inAddrWrite_full && `inDataWrite_full) begin
369       write_enable   <= 1;
370       was_write      <= 1;
371       was_video      <= 0;
372       wait_cycles    <= 1;
373       addr           <= { inAddrWrite_d, 1'b0 };
374
375     end else if (`inAddrRead_full) begin
376       write_enable   <= 0;
377       was_write      <= 0;
378       was_video      <= 0;
379       wait_cycles    <= 3;
380       addr           <= { inAddrRead_d, 1'b0 };
381
382     end else if (last_vga_pixel_addr != vga_pixel_addr) begin
383       write_enable        <= 0;
384       was_write           <= 0;
385       was_video           <= 1;
386       wait_cycles         <= 3;
387       addr                <= { vga_pixel_addr, 1'b0 };
388       last_vga_pixel_addr <= vga_pixel_addr;
389     end
390
391     if (`inX_full && `inY_full && `inData_full) begin
392        we <= 1;
393        `drain_inX
394        `drain_inY
395        `drain_inData
396     end else begin
397        we <= 0;
398     end
399
400   end
401 end
402
403
404 == UCF ===============================================================
405
406 #Net "dvi_0/dvi_xclk_p_unbuffered" PERIOD =  5 ns HIGH 50%;
407
408 NET  dvi_d0               LOC="AB8"   | IOSTANDARD="LVDCI_33";   # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
409 NET  dvi_d1               LOC="AC8"   | IOSTANDARD="LVDCI_33";   # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
410 NET  dvi_d2               LOC="AN12"  | IOSTANDARD="LVDCI_33";  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
411 NET  dvi_d3               LOC="AP12"  | IOSTANDARD="LVDCI_33";  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
412 NET  dvi_d4               LOC="AA9"   | IOSTANDARD="LVDCI_33";   # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
413 NET  dvi_d5               LOC="AA8"   | IOSTANDARD="LVDCI_33";   # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
414 NET  dvi_d6               LOC="AM13"  | IOSTANDARD="LVDCI_33";  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
415 NET  dvi_d7               LOC="AN13"  | IOSTANDARD="LVDCI_33";  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
416 NET  dvi_d8               LOC="AA10"  | IOSTANDARD="LVDCI_33";  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
417 NET  dvi_d9               LOC="AB10"  | IOSTANDARD="LVDCI_33";  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
418 NET  dvi_d10              LOC="AP14"  | IOSTANDARD="LVDCI_33";  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
419 NET  dvi_d11              LOC="AN14"  | IOSTANDARD="LVDCI_33";  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
420 NET  dvi_de               LOC="AE8"   | IOSTANDARD="LVDCI_33" | SLEW=FAST;   # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
421 NET  dvi_reset_b          LOC="AK6"   | IOSTANDARD="LVCMOS33";   # Bank 18, Vcco=3.3V, No DCI
422 NET  dvi_h                LOC="AM12"  | IOSTANDARD="LVDCI_33" | SLEW=FAST;  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
423 NET  dvi_v                LOC="AM11"  | IOSTANDARD="LVDCI_33" | SLEW=FAST;  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
424 NET  dvi_xclk_n           LOC="AL10"  | IOSTANDARD="LVCMOS33" | DRIVE=24 | SLEW=FAST;  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
425 NET  dvi_xclk_p           LOC="AL11"  | IOSTANDARD="LVCMOS33" | DRIVE=24 | SLEW=FAST;  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
426
427 NET  dvi_gpio1            LOC="N30" | IOSTANDARD="LVCMOS18";   # Bank 15, Vcco=1.8V, DCI using 49.9 ohm resistors
428 NET  dvi_iic_scl          LOC="U27" | PULLUP | IOSTANDARD="LVCMOS18";   # Bank 15, Vcco=1.8V, DCI using 49.9 ohm resistors
429 NET  dvi_iic_sda          LOC="T29" | PULLUP | IOSTANDARD="LVCMOS18";   # Bank 15, Vcco=1.8V, DCI using 49.9 ohm resistors
430
431 NET  gpio_sw_c            LOC="AJ6" | IOSTANDARD="LVCMOS33";   # Bank 18, Vcco=3.3V, No DCI
432
433 NET  gpio_led_c           LOC="E8";    # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors
434 NET  gpio_led_e           LOC="AG23";  # Bank 2, Vcco=3.3V
435 NET  gpio_led_n           LOC="AF13";  # Bank 2, Vcco=3.3V
436 NET  gpio_led_s           LOC="AG12";  # Bank 2, Vcco=3.3V
437 NET  gpio_led_w           LOC="AF23";  # Bank 2, Vcco=3.3V
438
439 NET  gpio_led_0           LOC="H18";   # Bank 3, Vcco=2.5V, No DCI
440 NET  gpio_led_1           LOC="L18";   # Bank 3, Vcco=2.5V, No DCI
441 NET  gpio_led_2           LOC="G15";   # Bank 3, Vcco=2.5V, No DCI
442 NET  gpio_led_3           LOC="AD26" | IOSTANDARD="LVCMOS18";  # Bank 21, Vcco=1.8V, DCI using 49.9 ohm resistors
443 NET  gpio_led_4           LOC="G16";   # Bank 3, Vcco=2.5V, No DCI
444 NET  gpio_led_5           LOC="AD25" | IOSTANDARD="LVCMOS18";  # Bank 21, Vcco=1.8V, DCI using 49.9 ohm resistors
445 NET  gpio_led_6           LOC="AD24" | IOSTANDARD="LVCMOS18";  # Bank 21, Vcco=1.8V, DCI using 49.9 ohm resistors
446 NET  gpio_led_7           LOC="AE24" | IOSTANDARD="LVCMOS18";  # Bank 21, Vcco=1.8V, DCI using 49.9 ohm resistors
447
448 ######
449
450 NET  sram_adv_ld_b        LOC="H8";    # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors      
451 NET  sram_bw0             LOC="D10";   # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors      
452 NET  sram_bw1             LOC="D11";   # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors      
453 NET  sram_bw2             LOC="J11";   # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors      
454 NET  sram_bw3             LOC="K11";   # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors      
455 NET  sram_clk             LOC="AG21";  # Bank 4, Vcco=3.3V, No DCI      
456 NET  sram_clk             LOC="G8";    # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors      
457 NET  sram_cs_b            LOC="J10";   # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors      
458 NET  sram_d16             LOC="N10";   # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors      
459 NET  sram_d17             LOC="E13";   # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors      
460 NET  sram_d18             LOC="E12";   # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors      
461 NET  sram_d19             LOC="L9";    # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors      
462 NET  sram_d20             LOC="M10";   # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors      
463 NET  sram_d21             LOC="E11";   # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors
464 NET  sram_d22             LOC="F11";   # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors
465 NET  sram_d23             LOC="L8";    # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors
466 NET  sram_d24             LOC="M8";    # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors
467 NET  sram_d25             LOC="G12";   # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors
468 NET  sram_d26             LOC="G11";   # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors
469 NET  sram_d27             LOC="C13";   # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors
470 NET  sram_d28             LOC="B13";   # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors
471 NET  sram_d29             LOC="K9";    # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors
472 NET  sram_d30             LOC="K8";    # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors
473 NET  sram_d31             LOC="J9";    # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors
474 NET  sram_dqp0            LOC="D12";   # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors
475 NET  sram_dqp1            LOC="C12";   # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors
476 NET  sram_dqp2            LOC="H10";   # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors
477 NET  sram_dqp3            LOC="H9";    # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors
478 NET  sram_flash_a0        LOC="K12";   # Bank 1, Vcco=3.3V
479 NET  sram_flash_a1        LOC="K13";   # Bank 1, Vcco=3.3V
480 NET  sram_flash_a2        LOC="H23";   # Bank 1, Vcco=3.3V
481 NET  sram_flash_a3        LOC="G23";   # Bank 1, Vcco=3.3V
482 NET  sram_flash_a4        LOC="H12";   # Bank 1, Vcco=3.3V
483 NET  sram_flash_a5        LOC="J12";   # Bank 1, Vcco=3.3V
484 NET  sram_flash_a6        LOC="K22";   # Bank 1, Vcco=3.3V
485 NET  sram_flash_a7        LOC="K23";   # Bank 1, Vcco=3.3V
486 NET  sram_flash_a8        LOC="K14";   # Bank 1, Vcco=3.3V
487 NET  sram_flash_a9        LOC="L14";   # Bank 1, Vcco=3.3V
488 NET  sram_flash_a10       LOC="H22";   # Bank 1, Vcco=3.3V
489 NET  sram_flash_a11       LOC="G22";   # Bank 1, Vcco=3.3V
490 NET  sram_flash_a12       LOC="J15";   # Bank 1, Vcco=3.3V
491 NET  sram_flash_a13       LOC="K16";   # Bank 1, Vcco=3.3V
492 NET  sram_flash_a14       LOC="K21";   # Bank 1, Vcco=3.3V
493 NET  sram_flash_a15       LOC="J22";   # Bank 1, Vcco=3.3V
494 NET  sram_flash_a16       LOC="L16";   # Bank 1, Vcco=3.3V
495 NET  sram_flash_a17       LOC="L15";   # Bank 1, Vcco=3.3V
496 NET  sram_flash_a18       LOC="L20";   # Bank 1, Vcco=3.3V
497 NET  sram_flash_a19       LOC="L21";   # Bank 1, Vcco=3.3V
498 NET  sram_flash_a20       LOC="AE23";  # Bank 2, Vcco=3.3V
499 NET  sram_flash_a21       LOC="AE22";  # Bank 2, Vcco=3.3V
500 NET  sram_flash_d0        LOC="AD19";  # Bank 2, Vcco=3.3V
501 NET  sram_flash_d1        LOC="AE19";  # Bank 2, Vcco=3.3V
502 NET  sram_flash_d2        LOC="AE17";  # Bank 2, Vcco=3.3V
503 NET  sram_flash_d3        LOC="AF16";  # Bank 2, Vcco=3.3V
504 NET  sram_flash_d4        LOC="AD20";  # Bank 2, Vcco=3.3V
505 NET  sram_flash_d5        LOC="AE21";  # Bank 2, Vcco=3.3V
506 NET  sram_flash_d6        LOC="AE16";  # Bank 2, Vcco=3.3V
507 NET  sram_flash_d7        LOC="AF15";  # Bank 2, Vcco=3.3V
508 NET  sram_flash_d8        LOC="AH13";  # Bank 4, Vcco=3.3V, No DCI
509 NET  sram_flash_d9        LOC="AH14";  # Bank 4, Vcco=3.3V, No DCI
510 NET  sram_flash_d10       LOC="AH19";  # Bank 4, Vcco=3.3V, No DCI
511 NET  sram_flash_d11       LOC="AH20";  # Bank 4, Vcco=3.3V, No DCI
512 NET  sram_flash_d12       LOC="AG13";  # Bank 4, Vcco=3.3V, No DCI
513 NET  sram_flash_d13       LOC="AH12";  # Bank 4, Vcco=3.3V, No DCI
514 NET  sram_flash_d14       LOC="AH22";  # Bank 4, Vcco=3.3V, No DCI
515 NET  sram_flash_d15       LOC="AG22";  # Bank 4, Vcco=3.3V, No DCI
516 NET  sram_flash_we_b      LOC="AF20";  # Bank 2, Vcco=3.3V
517 NET  sram_mode            LOC="A13";   # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors
518 NET  sram_oe_b            LOC="B12";   # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors
519
520
521
522 == TeX ==============================================================
523
524 == Fleeterpreter ====================================================
525
526   public void service() { }
527
528 == FleetSim ==============================================================
529
530 == Constants =========================================================
531
532 == Test ==============================================================
533
534 #expect 0
535 #expect 0
536 #expect 0
537
538 #ship debug : Debug
539 #ship video : Dvi
540
541 video.inX:
542   set word=0;
543   deliver;
544   send token to debug.in;
545 video.inY:
546   set word=0;
547   deliver;
548   send token to debug.in;
549 video.inData:
550   set word=0;
551   deliver;
552   send token to debug.in;
553
554 debug.in:
555   set word=0;
556   set ilc=*;
557   recv token, deliver;
558
559
560 == Contributors =========================================================
561 Adam Megacz <megacz@cs.berkeley.edu>