3 (sys_clk_pin, /* 100Mhz */
5 fpga_0_RS232_Uart_1_ctsN_pin,
6 fpga_0_RS232_Uart_1_rtsN_pin,
7 fpga_0_RS232_Uart_1_sin_pin,
8 fpga_0_RS232_Uart_1_sout_pin,
48 fpga_0_LEDs_8Bit_GPIO_IO_pin
53 input fpga_0_RS232_Uart_1_ctsN_pin;
54 output fpga_0_RS232_Uart_1_rtsN_pin;
55 input fpga_0_RS232_Uart_1_sin_pin;
56 output fpga_0_RS232_Uart_1_sout_pin;
59 output ddr1_Clk_n_pin;
60 output [12:0] ddr1_Addr_pin;
61 output [1:0] ddr1_BankAddr_pin;
62 output ddr1_CAS_n_pin;
65 output ddr1_RAS_n_pin;
67 output [3:0] ddr1_DM_pin;
73 output ddr2_Clk_n_pin;
74 output [12:0] ddr2_Addr_pin;
75 output [1:0] ddr2_BankAddr_pin;
76 output ddr2_CAS_n_pin;
79 output ddr2_RAS_n_pin;
81 output [7:0] ddr2_DM_pin;
83 inout [7:0] ddr2_DQS_n;
86 wire [31:0] dram_addr;
90 wire [63:0] dram_write_data;
91 wire dram_write_data_push;
92 wire dram_write_data_full;
93 wire [63:0] dram_read_data;
94 wire dram_read_data_pop;
95 wire dram_read_data_empty;
96 wire [1:0] dram_read_data_latency;
98 wire [31:0] ddr2_addr;
102 wire [63:0] ddr2_write_data;
103 wire ddr2_write_data_push;
104 wire ddr2_write_data_full;
105 wire [63:0] ddr2_read_data;
106 wire ddr2_read_data_pop;
107 wire ddr2_read_data_empty;
108 wire [1:0] ddr2_read_data_latency;
127 wire vga_clk_unbuffered;
129 output [7:0] fpga_0_LEDs_8Bit_GPIO_IO_pin;
131 assign fpga_0_LEDs_8Bit_GPIO_IO_pin = ~leds;
133 assign leds[5:0] = dram_read_data[5:0];
134 assign leds[6] = dram_addr_r;
135 assign leds[7] = dram_addr_a;
137 BUFG GBUF_FOR_MUX_CLOCK (.I(clk_unbuffered), .O(clk));
143 .CLKIN_PERIOD("10 ns")
145 .CLKIN (sys_clk_pin),
147 .CLKFX (clk_unbuffered),
151 BUFG GBUF_FOR_VGA_CLOCK (.I(vga_clk_unbuffered), .O(vga_clk));
152 DCM // 25Mhz VGA clock
156 .CLKIN_PERIOD("20 ns")
158 .CLKIN (clk_unbuffered),
160 .CLKFX (vga_clk_unbuffered),
168 reg send_k; initial send_k = 0;
170 assign rst = sys_rst_pin;
172 wire data_to_host_full;
173 wire data_to_host_write_enable;
174 wire [7:0] data_to_host;
176 wire data_to_fleet_empty;
177 wire data_to_fleet_read_enable;
178 wire [7:0] data_to_fleet;
182 reg [7:0] data_to_host_r;
183 assign data_to_host = data_to_host_r;
187 initial ser_rst_r = 0;
188 assign ser_rst = (rst & ser_rst_r);
193 sasc_brg sasc_brg(sys_clk_pin, ser_rst, 8, 65, sio_ce, sio_ce_x4);
194 sasc_top sasc_top(clk, ser_rst,
195 fpga_0_RS232_Uart_1_sin_pin,
196 fpga_0_RS232_Uart_1_sout_pin,
197 fpga_0_RS232_Uart_1_ctsN_pin,
198 fpga_0_RS232_Uart_1_rtsN_pin,
203 data_to_fleet_read_enable,
204 data_to_host_write_enable,
210 // break and break_o are _active high_
211 always @(posedge clk) break_last <= break_o;
212 assign break = break_o && !break_last;
213 assign break_done = !break_o && break_last;
215 reg data_to_host_write_enable_reg;
216 reg data_to_fleet_read_enable_reg;
220 reg [7:0] root_in_d_reg;
225 wire [7:0] root_in_d;
226 wire [7:0] root_out_d;
229 * There is some very weird timing thing going on here; we need to
230 * hold reset low for more than one clock in order for it to propagate
231 * all the way to the docks.
233 root my_root(clk, rst && !break_o,
234 root_in_r, root_in_a, root_in_d,
235 root_out_r, root_out_a, root_out_d,
241 dram_write_data_push,
242 dram_write_data_full,
245 dram_read_data_empty,
246 dram_read_data_latency,
259 fifo4 my_root(clk, rst,
260 root_in_r, root_in_a, root_in_d,
261 root_out_r, root_out_a, data_to_host);
263 assign root_out_a = root_out_a_reg;
264 assign root_in_r = root_in_r_reg;
265 assign data_to_fleet_read_enable = data_to_fleet_read_enable_reg;
266 assign data_to_host_write_enable = data_to_host_write_enable_reg;
267 assign root_in_d = root_in_d_reg;
270 always @(posedge clk)
274 data_to_host_write_enable_reg <= 0;
276 end else if (break_done) begin
277 data_to_host_write_enable_reg <= 1;
278 data_to_host_r <= 111;
280 end else if (send_k) begin
281 data_to_host_write_enable_reg <= 1;
282 data_to_host_r <= 107;
286 end else if (root_out_r && !root_out_a_reg && !data_to_host_full) begin
287 data_to_host_write_enable_reg <= 1;
288 data_to_host_r <= root_out_d;
290 end else if (root_out_a_reg && !root_out_r) begin
291 data_to_host_write_enable_reg <= 0;
294 data_to_host_write_enable_reg <= 0;
299 always @(posedge clk)
305 data_to_fleet_read_enable_reg <= 0;
308 if (!data_to_fleet_empty && !root_in_r_reg && !root_in_a) begin
310 root_in_d_reg <= data_to_fleet;
311 data_to_fleet_read_enable_reg <= 1;
313 data_to_fleet_read_enable_reg <= 0;
325 data_to_fleet_read_enable_reg = 0;
326 data_to_host_write_enable_reg = 0;
331 .clk_freq( 50000000 ),
337 .ddr_a( ddr1_Addr_pin ),
338 .ddr_clk( ddr1_Clk_pin ),
339 .ddr_clk_n( ddr1_Clk_n_pin ),
340 .ddr_ba( ddr1_BankAddr_pin ),
342 .ddr_dm( ddr1_DM_pin ),
343 .ddr_dqs( ddr1_DQS ),
344 .ddr_cs_n( ddr1_CS_n_pin ),
345 .ddr_ras_n( ddr1_RAS_n_pin ),
346 .ddr_cas_n( ddr1_CAS_n_pin ),
347 .ddr_we_n( ddr1_WE_n_pin ),
348 .ddr_cke( ddr1_CE_pin ),
354 .fml_wr(!dram_isread && dram_addr_r),
355 .fml_done(dram_addr_a),
356 .fml_rd( dram_isread && dram_addr_r),
358 .fml_din(dram_write_data),
359 .fml_dout(dram_read_data),