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,
10 fpga_0_DDR_SDRAM_DDR_Clk_pin,
11 fpga_0_DDR_SDRAM_DDR_Clk_n_pin,
12 fpga_0_DDR_SDRAM_DDR_Addr_pin,
13 fpga_0_DDR_SDRAM_DDR_BankAddr_pin,
14 fpga_0_DDR_SDRAM_DDR_CAS_n_pin,
15 fpga_0_DDR_SDRAM_DDR_CE_pin,
16 fpga_0_DDR_SDRAM_DDR_CS_n_pin,
17 fpga_0_DDR_SDRAM_DDR_RAS_n_pin,
18 fpga_0_DDR_SDRAM_DDR_WE_n_pin,
19 fpga_0_DDR_SDRAM_DDR_DM_pin,
20 fpga_0_DDR_SDRAM_DDR_DQS,
21 fpga_0_DDR_SDRAM_DDR_DQ,
33 fpga_0_LEDs_8Bit_GPIO_IO_pin
38 input fpga_0_RS232_Uart_1_ctsN_pin;
39 output fpga_0_RS232_Uart_1_rtsN_pin;
40 input fpga_0_RS232_Uart_1_sin_pin;
41 output fpga_0_RS232_Uart_1_sout_pin;
43 output fpga_0_DDR_SDRAM_DDR_Clk_pin;
44 output fpga_0_DDR_SDRAM_DDR_Clk_n_pin;
45 output [12:0] fpga_0_DDR_SDRAM_DDR_Addr_pin;
46 output [1:0] fpga_0_DDR_SDRAM_DDR_BankAddr_pin;
47 output fpga_0_DDR_SDRAM_DDR_CAS_n_pin;
48 output fpga_0_DDR_SDRAM_DDR_CE_pin;
49 output fpga_0_DDR_SDRAM_DDR_CS_n_pin;
50 output fpga_0_DDR_SDRAM_DDR_RAS_n_pin;
51 output fpga_0_DDR_SDRAM_DDR_WE_n_pin;
52 output [3:0] fpga_0_DDR_SDRAM_DDR_DM_pin;
53 inout [3:0] fpga_0_DDR_SDRAM_DDR_DQS;
54 inout [31:0] fpga_0_DDR_SDRAM_DDR_DQ;
56 wire [31:0] dram_addr;
60 wire [63:0] dram_write_data;
61 wire dram_write_data_push;
62 wire dram_write_data_full;
63 wire [63:0] dram_read_data;
64 wire dram_read_data_pop;
65 wire dram_read_data_empty;
66 wire [1:0] dram_read_data_latency;
85 wire vga_clk_unbuffered;
87 output [7:0] fpga_0_LEDs_8Bit_GPIO_IO_pin;
89 assign fpga_0_LEDs_8Bit_GPIO_IO_pin = ~leds;
91 assign leds[5:0] = dram_read_data[5:0];
92 assign leds[6] = dram_addr_r;
93 assign leds[7] = dram_addr_a;
96 //assign clk = sys_clk_pin;
99 initial clk_unbuffered = 0;
101 always @(posedge sys_clk_pin) begin
102 clk_unbuffered = ~clk_unbuffered;
105 assign clk_unbuffered = sys_clk_pin;
107 BUFG GBUF_FOR_MUX_CLOCK (.I(clk_unbuffered), .O(clk));
113 .CLKIN_PERIOD("10 ns")
115 .CLKIN (sys_clk_pin),
117 .CLKFX (clk_unbuffered),
121 BUFG GBUF_FOR_VGA_CLOCK (.I(vga_clk_unbuffered), .O(vga_clk));
122 DCM // 25Mhz VGA clock
126 .CLKIN_PERIOD("20 ns")
128 .CLKIN (clk_unbuffered),
130 .CLKFX (vga_clk_unbuffered),
138 reg send_k; initial send_k = 0;
140 assign rst = sys_rst_pin;
142 wire data_to_host_full;
143 wire data_to_host_write_enable;
144 wire [7:0] data_to_host;
146 wire data_to_fleet_empty;
147 wire data_to_fleet_read_enable;
148 wire [7:0] data_to_fleet;
152 reg [7:0] data_to_host_r;
153 assign data_to_host = data_to_host_r;
157 initial ser_rst_r = 0;
158 assign ser_rst = (rst & ser_rst_r);
162 //sasc_brg sasc_brg(clk, ser_rst, 8, 65, sio_ce, sio_ce_x4);
163 // sasc_brg sasc_brg(clk, ser_rst, 3, 65, sio_ce, sio_ce_x4);
164 sasc_brg sasc_brg(sys_clk_pin, ser_rst, 8, 65, sio_ce, sio_ce_x4);
165 sasc_top sasc_top(clk, ser_rst,
166 fpga_0_RS232_Uart_1_sin_pin,
167 fpga_0_RS232_Uart_1_sout_pin,
168 fpga_0_RS232_Uart_1_ctsN_pin,
169 fpga_0_RS232_Uart_1_rtsN_pin,
174 data_to_fleet_read_enable,
175 data_to_host_write_enable,
181 // break and break_o are _active high_
182 always @(posedge clk) break_last <= break_o;
183 assign break = break_o && !break_last;
184 assign break_done = !break_o && break_last;
186 reg data_to_host_write_enable_reg;
187 reg data_to_fleet_read_enable_reg;
191 reg [7:0] root_in_d_reg;
196 wire [7:0] root_in_d;
197 wire [7:0] root_out_d;
200 * There is some very weird timing thing going on here; we need to
201 * hold reset low for more than one clock in order for it to propagate
202 * all the way to the docks.
204 root my_root(clk, rst && !break_o,
205 root_in_r, root_in_a, root_in_d,
206 root_out_r, root_out_a, root_out_d,
212 dram_write_data_push,
213 dram_write_data_full,
216 dram_read_data_empty,
217 dram_read_data_latency,
230 fifo4 my_root(clk, rst,
231 root_in_r, root_in_a, root_in_d,
232 root_out_r, root_out_a, data_to_host);
234 assign root_out_a = root_out_a_reg;
235 assign root_in_r = root_in_r_reg;
236 assign data_to_fleet_read_enable = data_to_fleet_read_enable_reg;
237 assign data_to_host_write_enable = data_to_host_write_enable_reg;
238 assign root_in_d = root_in_d_reg;
241 always @(posedge clk)
245 data_to_host_write_enable_reg <= 0;
247 end else if (break_done) begin
248 data_to_host_write_enable_reg <= 1;
249 data_to_host_r <= 111;
251 end else if (send_k) begin
252 data_to_host_write_enable_reg <= 1;
253 data_to_host_r <= 107;
257 end else if (root_out_r && !root_out_a_reg && !data_to_host_full) begin
258 data_to_host_write_enable_reg <= 1;
259 data_to_host_r <= root_out_d;
261 end else if (root_out_a_reg && !root_out_r) begin
262 data_to_host_write_enable_reg <= 0;
265 data_to_host_write_enable_reg <= 0;
270 always @(posedge clk)
276 data_to_fleet_read_enable_reg <= 0;
279 if (!data_to_fleet_empty && !root_in_r_reg && !root_in_a) begin
281 root_in_d_reg <= data_to_fleet;
282 data_to_fleet_read_enable_reg <= 1;
284 data_to_fleet_read_enable_reg <= 0;
296 data_to_fleet_read_enable_reg = 0;
297 data_to_host_write_enable_reg = 0;
302 .clk_freq( 50000000 ),
308 .ddr_a( fpga_0_DDR_SDRAM_DDR_Addr_pin ),
309 .ddr_clk( fpga_0_DDR_SDRAM_DDR_Clk_pin ),
310 .ddr_clk_n( fpga_0_DDR_SDRAM_DDR_Clk_n_pin ),
311 .ddr_ba( fpga_0_DDR_SDRAM_DDR_BankAddr_pin ),
312 .ddr_dq( fpga_0_DDR_SDRAM_DDR_DQ ),
313 .ddr_dm( fpga_0_DDR_SDRAM_DDR_DM_pin ),
314 .ddr_dqs( fpga_0_DDR_SDRAM_DDR_DQS ),
315 .ddr_cs_n( fpga_0_DDR_SDRAM_DDR_CS_n_pin ),
316 .ddr_ras_n( fpga_0_DDR_SDRAM_DDR_RAS_n_pin ),
317 .ddr_cas_n( fpga_0_DDR_SDRAM_DDR_CAS_n_pin ),
318 .ddr_we_n( fpga_0_DDR_SDRAM_DDR_WE_n_pin ),
319 .ddr_cke( fpga_0_DDR_SDRAM_DDR_CE_pin ),
325 .fml_wr(!dram_isread && dram_addr_r),
326 .fml_done(dram_addr_a),
327 .fml_rd( dram_isread && dram_addr_r),
329 .fml_din(dram_write_data),
330 .fml_dout(dram_read_data),
331 // .fml_msk(16'hffff)