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;
138 //assign clk = sys_clk_pin;
141 initial clk_unbuffered = 0;
143 always @(posedge sys_clk_pin) begin
144 clk_unbuffered = ~clk_unbuffered;
147 assign clk_unbuffered = sys_clk_pin;
149 BUFG GBUF_FOR_MUX_CLOCK (.I(clk_unbuffered), .O(clk));
155 .CLKIN_PERIOD("10 ns")
157 .CLKIN (sys_clk_pin),
159 .CLKFX (clk_unbuffered),
163 BUFG GBUF_FOR_VGA_CLOCK (.I(vga_clk_unbuffered), .O(vga_clk));
164 DCM // 25Mhz VGA clock
168 .CLKIN_PERIOD("20 ns")
170 .CLKIN (clk_unbuffered),
172 .CLKFX (vga_clk_unbuffered),
180 reg send_k; initial send_k = 0;
182 assign rst = sys_rst_pin;
184 wire data_to_host_full;
185 wire data_to_host_write_enable;
186 wire [7:0] data_to_host;
188 wire data_to_fleet_empty;
189 wire data_to_fleet_read_enable;
190 wire [7:0] data_to_fleet;
194 reg [7:0] data_to_host_r;
195 assign data_to_host = data_to_host_r;
199 initial ser_rst_r = 0;
200 assign ser_rst = (rst & ser_rst_r);
204 //sasc_brg sasc_brg(clk, ser_rst, 8, 65, sio_ce, sio_ce_x4);
205 // sasc_brg sasc_brg(clk, ser_rst, 3, 65, sio_ce, sio_ce_x4);
206 sasc_brg sasc_brg(sys_clk_pin, ser_rst, 8, 65, sio_ce, sio_ce_x4);
207 sasc_top sasc_top(clk, ser_rst,
208 fpga_0_RS232_Uart_1_sin_pin,
209 fpga_0_RS232_Uart_1_sout_pin,
210 fpga_0_RS232_Uart_1_ctsN_pin,
211 fpga_0_RS232_Uart_1_rtsN_pin,
216 data_to_fleet_read_enable,
217 data_to_host_write_enable,
223 // break and break_o are _active high_
224 always @(posedge clk) break_last <= break_o;
225 assign break = break_o && !break_last;
226 assign break_done = !break_o && break_last;
228 reg data_to_host_write_enable_reg;
229 reg data_to_fleet_read_enable_reg;
233 reg [7:0] root_in_d_reg;
238 wire [7:0] root_in_d;
239 wire [7:0] root_out_d;
242 * There is some very weird timing thing going on here; we need to
243 * hold reset low for more than one clock in order for it to propagate
244 * all the way to the docks.
246 root my_root(clk, rst && !break_o,
247 root_in_r, root_in_a, root_in_d,
248 root_out_r, root_out_a, root_out_d,
254 dram_write_data_push,
255 dram_write_data_full,
258 dram_read_data_empty,
259 dram_read_data_latency,
272 fifo4 my_root(clk, rst,
273 root_in_r, root_in_a, root_in_d,
274 root_out_r, root_out_a, data_to_host);
276 assign root_out_a = root_out_a_reg;
277 assign root_in_r = root_in_r_reg;
278 assign data_to_fleet_read_enable = data_to_fleet_read_enable_reg;
279 assign data_to_host_write_enable = data_to_host_write_enable_reg;
280 assign root_in_d = root_in_d_reg;
283 always @(posedge clk)
287 data_to_host_write_enable_reg <= 0;
289 end else if (break_done) begin
290 data_to_host_write_enable_reg <= 1;
291 data_to_host_r <= 111;
293 end else if (send_k) begin
294 data_to_host_write_enable_reg <= 1;
295 data_to_host_r <= 107;
299 end else if (root_out_r && !root_out_a_reg && !data_to_host_full) begin
300 data_to_host_write_enable_reg <= 1;
301 data_to_host_r <= root_out_d;
303 end else if (root_out_a_reg && !root_out_r) begin
304 data_to_host_write_enable_reg <= 0;
307 data_to_host_write_enable_reg <= 0;
312 always @(posedge clk)
318 data_to_fleet_read_enable_reg <= 0;
321 if (!data_to_fleet_empty && !root_in_r_reg && !root_in_a) begin
323 root_in_d_reg <= data_to_fleet;
324 data_to_fleet_read_enable_reg <= 1;
326 data_to_fleet_read_enable_reg <= 0;
338 data_to_fleet_read_enable_reg = 0;
339 data_to_host_write_enable_reg = 0;
344 .clk_freq( 50000000 ),
350 .ddr_a( ddr1_Addr_pin ),
351 .ddr_clk( ddr1_Clk_pin ),
352 .ddr_clk_n( ddr1_Clk_n_pin ),
353 .ddr_ba( ddr1_BankAddr_pin ),
355 .ddr_dm( ddr1_DM_pin ),
356 .ddr_dqs( ddr1_DQS ),
357 .ddr_cs_n( ddr1_CS_n_pin ),
358 .ddr_ras_n( ddr1_RAS_n_pin ),
359 .ddr_cas_n( ddr1_CAS_n_pin ),
360 .ddr_we_n( ddr1_WE_n_pin ),
361 .ddr_cke( ddr1_CE_pin ),
367 .fml_wr(!dram_isread && dram_addr_r),
368 .fml_done(dram_addr_a),
369 .fml_rd( dram_isread && dram_addr_r),
371 .fml_din(dram_write_data),
372 .fml_dout(dram_read_data),
373 // .fml_msk(16'hffff)
380 // fabtech : integer := virtex4;
381 // memtech : integer := 0;
382 // rskew : integer := 0;
383 // hindex : integer := 0;
384 // haddr : integer := 0;
385 // hmask : integer := 16#f00#;
386 // ioaddr : integer := 16#000#;
387 // iomask : integer := 16#fff#;
391 // col : integer := 9;
392 // Mbyte : integer := 16;
393 // rstdel : integer := 200;
395 //oepol : integer := 0;
398 //readdly : integer := 1; -- 1 added read latency cycle
399 //ddelayb0 : integer := 0; -- Data delay value (0 - 63)
400 //ddelayb1 : integer := 0; -- Data delay value (0 - 63)
401 //ddelayb2 : integer := 0; -- Data delay value (0 - 63)
402 //ddelayb3 : integer := 0; -- Data delay value (0 - 63)
403 //ddelayb4 : integer := 0; -- Data delay value (0 - 63)
404 //ddelayb5 : integer := 0; -- Data delay value (0 - 63)
405 //ddelayb6 : integer := 0; -- Data delay value (0 - 63)
406 //ddelayb7 : integer := 0; -- Data delay value (0 - 63)
407 //numidelctrl : integer := 4;
409 //odten : integer := 0
411 .rst_ddr(sys_rst_pin),
413 .clk_ddr(sys_clk_pin),
415 //clkref200 : in std_logic;
416 //lock : out std_ulogic; -- DCM locked
417 .clkddro(ddr2_clock),
418 .clkddri(ddr2_clock),
419 //ahbsi : in ahb_slv_in_type;
420 //ahbso : out ahb_slv_out_type;
421 .ddr_clk(ddr2_Clk_pin),
422 .ddr_clkb(ddr2_Clk_n_pin),
423 .ddr_cke(ddr2_CE_pin),
424 .ddr_csb(ddr2_CS_n_pin),
425 .ddr_web(ddr2_WE_n_pin),
426 .ddr_rasb(ddr2_RAS_n_pin),
427 .ddr_casb(ddr2_CAS_n_pin),
428 .ddr_dm(ddr2_DM_pin),
430 .ddr_dqsn(ddr2_DQS_n),
431 .ddr_ad(ddr2_Addr_pin),
432 .ddr_ba(ddr2_BankAddr_pin),
434 .ddr_odt(ddr2_ODT_pin)