3 == Ports ===========================================================
8 percolate up: vga_psave 1
9 percolate up: vga_hsync 1
10 percolate up: vga_vsync 1
11 percolate up: vga_sync 1
12 percolate up: vga_blank 1
16 percolate up: vga_clkout 1
18 == TeX ==============================================================
20 == Fleeterpreter ====================================================
22 private java.awt.Frame frame = null;
23 public void service() {
24 if (box_inX.dataReadyForShip() &&
25 box_inY.dataReadyForShip() &&
26 box_inData.dataReadyForShip()
28 long x = box_inX.removeDataForShip();
29 long y = box_inY.removeDataForShip();
30 long d = box_inData.removeDataForShip();
33 frame = new java.awt.Frame();
34 java.awt.Dimension dim = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
35 frame.setSize((int)dim.getWidth(),(int)dim.getHeight());
37 frame.setBackground(new java.awt.Color(0,0,0));
39 java.awt.Color c = new java.awt.Color(
40 ((d & (1L<<2))!=0) ? 0xff : 0x00,
41 ((d & (1L<<1))!=0) ? 0xff : 0x00,
42 ((d & (1L<<0))!=0) ? 0xff : 0x00
44 java.awt.Graphics2D g = (java.awt.Graphics2D)frame.getGraphics();
45 g.transform(java.awt.geom.AffineTransform.getScaleInstance(((double)frame.getWidth())/640, ((double)frame.getHeight())/480));
47 g.fillRect((int)x,(int)y,1,1);
52 == FleetSim ==============================================================
54 == FPGA ==============================================================
56 wire vga_clk_unbuffered; // synthesis attribute period of vga_clk_unbuffered is "40 ns";
61 BUFG GBUF_FOR_VGA_CLOCK (.I(vga_clk_unbuffered), .O(vga_clk));
62 DCM // 25Mhz VGA clock
66 .CLKIN_PERIOD("20 ns")
70 .CLKFX (vga_clk_unbuffered),
75 wire [31:0] vga_pixel_addr_;
79 assign vga_pixel_a_ = vga_pixel_a;
84 wire [31:0] vga_pixel_data;
85 assign vga_pixel_data = {
92 assign inAddr = inX_d + (inY_d * 640);
94 vram vram(clk, !rst, we, inAddr[18:0], vga_pixel_addr_[20:2], inData_d, , mem_out);
100 .fbwb_adr_o(vga_pixel_addr_),
101 .fbwb_stb_o(vga_pixel_r),
102 .fbwb_ack_i(vga_pixel_a_),
103 .fbwb_dat_i(vga_pixel_data),
107 .vga_psave(vga_psave),
108 .vga_hsync(vga_hsync),
109 .vga_vsync(vga_vsync),
111 .vga_blank(vga_blank),
115 .vga_clkout(vga_clkout)
118 always @(posedge clk) begin
124 vga_pixel_a <= vga_pixel_r;
126 if (`inX_full && `inY_full && `inData_full) begin
138 == UCF ===============================================================
140 ## VGA ##############################################################################
142 #net "vga_hsync" loc = f9;
143 #net "vga_hsync" slew = slow;
144 #net "vga_hsync" drive = 2;
146 #net "vga_vsync" loc = h10;
147 #net "vga_vsync" slew = slow;
148 #net "vga_vsync" drive = 2;
150 #net "vga_clkout" loc ="c12";
151 #net "vga_clkout" slew = fast;
152 #net "vga_clkout" drive = 8;
154 #net "vga_r<7>" loc ="h8";
155 #net "vga_r<6>" loc ="c5";
156 #net "vga_r<5>" loc ="h9";
157 #net "vga_r<4>" loc ="g12";
158 #net "vga_r<3>" loc ="g11";
159 #net "vga_r<2>" loc ="g10";
160 #net "vga_r<1>" loc ="f11";
161 #net "vga_r<0>" loc ="f10";
162 #net "vga_r<*>" slew = slow;
163 #net "vga_r<*>" drive = 2;
165 #net "vga_g<7>" loc ="d5";
166 #net "vga_g<6>" loc ="d4";
167 #net "vga_g<5>" loc ="f8";
168 #net "vga_g<4>" loc ="e13";
169 #net "vga_g<3>" loc ="e12";
170 #net "vga_g<2>" loc ="e11";
171 #net "vga_g<1>" loc ="e9";
172 #net "vga_g<0>" loc ="e8";
173 #net "vga_g<*>" slew = slow;
174 #net "vga_g<*>" drive = 2;
176 #net "vga_b<7>" loc ="c4";
177 #net "vga_b<6>" loc ="c3";
178 #net "vga_b<5>" loc ="d12";
179 #net "vga_b<4>" loc ="d11";
180 #net "vga_b<3>" loc ="d10";
181 #net "vga_b<2>" loc ="d9";
182 #net "vga_b<1>" loc ="c13";
183 #net "vga_b<0>" loc ="g8";
184 #net "vga_b<*>" slew = slow;
185 #net "vga_b<*>" drive = 2;
187 #net "vga_*" iostandard = lvcmos33;
191 == Constants ========================================================
193 == Test ==============================================================
196 // can't test much here; just make sure it accepts values
208 send token to debug.in;
212 send token to debug.in;
216 send token to debug.in;
224 == Contributors =========================================================
225 Adam Megacz <megacz@cs.berkeley.edu>