move ucf constraints into .ship files
[fleet.git] / ships / Dvi.ship
1 ship: Video
2
3 == Ports ===========================================================
4 data  in:    inX
5 data  in:    inY
6 data  in:    inData
7
8 percolate up:    dvi_d0      1
9 percolate up:    dvi_d1      1
10 percolate up:    dvi_d2      1
11 percolate up:    dvi_d3      1
12 percolate up:    dvi_d4      1
13 percolate up:    dvi_d5      1
14 percolate up:    dvi_d6      1
15 percolate up:    dvi_d7      1
16 percolate up:    dvi_d8      1
17 percolate up:    dvi_d9      1
18 percolate up:    dvi_d10     1
19 percolate up:    dvi_d11     1
20
21 percolate up:    dvi_h       1
22 percolate up:    dvi_v       1
23 percolate up:    dvi_xclk_n  1
24 percolate up:    dvi_xclk_p  1
25 percolate up:    dvi_de      1
26 percolate up:    dvi_reset_b 1
27
28 percolate up:    gpio_led_c   1
29 percolate up:    gpio_led_e   1
30 percolate up:    gpio_led_n   1
31 percolate up:    gpio_led_s   1
32 percolate up:    gpio_led_w   1
33
34 percolate up:    gpio_led_4   1
35 percolate up:    gpio_led_5   1
36 percolate up:    gpio_led_6   1
37 percolate up:    gpio_led_7   1
38
39 == TeX ==============================================================
40
41 == Fleeterpreter ====================================================
42 //percolate down:  dvi_gpio1   1
43 //percolate up:    dvi_iic_scl 1
44 //percolate inout: dvi_iic_sda 1
45
46   public void service() { }
47
48 == FleetSim ==============================================================
49
50 == FPGA ==============================================================
51
52   assign dvi_de      = 1;
53   assign dvi_reset_b = 1;
54
55   assign dvi_d0      = 1;
56   assign dvi_d1      = 0;
57   assign dvi_d2      = 1;
58   assign dvi_d3      = 0;
59   assign dvi_d4      = 1;
60   assign dvi_d5      = 0;
61   assign dvi_d6      = 1;
62   assign dvi_d7      = 0;
63   assign dvi_d8      = 1;
64   assign dvi_d9      = 0;
65   assign dvi_d10     = 1;
66   assign dvi_d11     = 0;
67
68   assign gpio_led_n = 1;
69   assign gpio_led_s = 0;
70
71 //  assign gpio_led_0 = dvi_gpio1;
72 //  assign gpio_led_1 = 0;
73 //  assign gpio_led_2 = 1;
74 //  assign gpio_led_3 = 0;
75 //  assign gpio_led_4 = 1;
76   assign gpio_led_5 = 0;
77   assign gpio_led_6 = 1;
78   assign gpio_led_7 = 0;
79
80   wire dvi_xclk_p_unbuffered;
81   wire dvi_xclk_n_unbuffered;
82   wire dvi_xclk_fb;
83
84 /*
85   BUFG GBUF_FOR_DVI_CLOCK_N (.I(dvi_xclk_n_unbuffered), .O(dvi_xclk_n));
86   BUFG GBUF_FOR_DVI_CLOCK_P (.I(dvi_xclk_p_unbuffered), .O(dvi_xclk_p));
87   DCM  // 25Mhz VGA clock
88    #(
89       .CLKFX_MULTIPLY(4),
90       .CLKFX_DIVIDE(16),
91       .CLKIN_PERIOD("20 ns")
92     ) vgadcm (
93       .CLKIN    (clk),
94       .CLKFB    (dvi_xclk_fb),
95       .CLKFX    (dvi_xclk_p_unbuffered),
96       .CLKFX180 (dvi_xclk_n_unbuffered),
97       .CLK0     (dvi_xclk_fb)
98     );
99 */
100
101   wire [31:0] vga_pixel_addr_;
102   wire        vga_pixel_r;
103   wire        vga_pixel_a_;
104   reg         vga_pixel_a;
105   assign vga_pixel_a_ = vga_pixel_a;
106   wire [18:0] inAddr;
107
108   reg we;
109   wire [2:0] mem_out;
110   wire  [31:0] vga_pixel_data;
111   assign vga_pixel_data = {
112              8'b0,
113              mem_out[2], 7'b0,
114              mem_out[1], 7'b0,
115              mem_out[0], 7'b0
116   };
117
118   assign inAddr = inX_d + (inY_d * 640);
119
120   vram vram(clk, !rst, we, inAddr[18:0], vga_pixel_addr_[20:2], inData_d, , mem_out);
121
122   wb_vga wb_vga(
123         .wb_clk_i(clk),
124         .wb_rst_i(rst),
125         
126         .fbwb_adr_o(vga_pixel_addr_),
127         .fbwb_stb_o(vga_pixel_r),
128         .fbwb_ack_i(vga_pixel_a_),
129         .fbwb_dat_i(vga_pixel_data),
130
131         /* VGA signals */
132         .vga_clk(dvi_xclk),
133         .vga_psave(vga_psave),
134         .vga_hsync(dvi_h),
135         .vga_vsync(dvi_v),
136         .vga_sync(vga_sync),
137         .vga_blank(vga_blank),
138         .vga_r(vga_r),
139         .vga_g(vga_g),
140         .vga_b(vga_b)
141         // .vga_clkout(vga_clkout)
142   );
143
144   always @(posedge clk) begin
145
146     if (rst) begin
147       `reset
148     end else begin
149       `cleanup
150       vga_pixel_a <= vga_pixel_r;
151
152       if (`inX_full && `inY_full && `inData_full) begin
153          we <= 1;
154          `drain_inX
155          `drain_inY
156          `drain_inData
157       end else begin
158          we <= 0;
159       end
160
161     end
162   end
163
164 == UCF ===============================================================
165 NET  dvi_d0               LOC="AB8";   # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
166 NET  dvi_d1               LOC="AC8";   # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
167 NET  dvi_d2               LOC="AN12";  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
168 NET  dvi_d3               LOC="AP12";  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
169 NET  dvi_d4               LOC="AA9";   # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
170 NET  dvi_d5               LOC="AA8";   # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
171 NET  dvi_d6               LOC="AM13";  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
172 NET  dvi_d7               LOC="AN13";  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
173 NET  dvi_d8               LOC="AA10";  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
174 NET  dvi_d9               LOC="AB10";  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
175 NET  dvi_d10              LOC="AP14";  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
176 NET  dvi_d11              LOC="AN14";  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
177 NET  dvi_de               LOC="AE8";   # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
178 NET  dvi_h                LOC="AM12";  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
179 NET  dvi_reset_b          LOC="AK6";   # Bank 18, Vcco=3.3V, No DCI
180 NET  dvi_v                LOC="AM11";  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
181 NET  dvi_xclk_n           LOC="AL10";  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
182 NET  dvi_xclk_p           LOC="AL11";  # Bank 22, Vcco=3.3V, DCI using 49.9 ohm resistors
183
184 #NET  dvi_gpio1            LOC="N30" | IOSTANDARD="LVCMOS18";   # Bank 15, Vcco=1.8V, DCI using 49.9 ohm resistors
185 #NET  dvi_iic_scl          LOC="U27" | IOSTANDARD="LVCMOS18";   # Bank 15, Vcco=1.8V, DCI using 49.9 ohm resistors
186 #NET  dvi_iic_sda          LOC="T29" | IOSTANDARD="LVCMOS18";   # Bank 15, Vcco=1.8V, DCI using 49.9 ohm resistors
187
188
189 == Constants =========================================================
190
191 == Test ==============================================================
192 #skip
193
194 #ship debug : Debug
195
196 == Contributors =========================================================
197 Adam Megacz <megacz@cs.berkeley.edu>