3 (sys_clk_pin, /* I think this is 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
13 input fpga_0_RS232_Uart_1_ctsN_pin;
14 output fpga_0_RS232_Uart_1_rtsN_pin;
15 input fpga_0_RS232_Uart_1_sin_pin;
16 output fpga_0_RS232_Uart_1_sout_pin;
19 assign clk = sys_clk_pin;
23 reg send_k; initial send_k = 0;
25 assign rst = sys_rst_pin;
27 wire data_to_host_full;
28 wire data_to_host_write_enable;
29 wire [7:0] data_to_host;
31 wire data_to_fleet_empty;
32 wire data_to_fleet_read_enable;
33 wire [7:0] data_to_fleet;
37 reg [7:0] data_to_host_r;
38 assign data_to_host = data_to_host_r;
42 initial ser_rst_r = 0;
43 assign ser_rst = (rst & ser_rst_r);
47 //sasc_brg sasc_brg(clk, ser_rst, 10, 217, sio_ce, sio_ce_x4);
48 sasc_brg sasc_brg(clk, ser_rst, 8, 65, sio_ce, sio_ce_x4);
49 sasc_top sasc_top(clk, ser_rst,
50 fpga_0_RS232_Uart_1_sin_pin,
51 fpga_0_RS232_Uart_1_sout_pin,
52 fpga_0_RS232_Uart_1_ctsN_pin,
53 fpga_0_RS232_Uart_1_rtsN_pin,
58 data_to_fleet_read_enable,
59 data_to_host_write_enable,
65 // break and break_o are _active high_
66 always @(posedge clk) break_last <= break_o;
67 assign break = break_o && !break_last;
68 assign break_done = !break_o && break_last;
70 reg data_to_host_write_enable_reg;
71 reg data_to_fleet_read_enable_reg;
75 reg [7:0] root_in_d_reg;
81 wire [7:0] root_out_d;
84 * There is some very weird timing thing going on here; we need to
85 * hold reset low for more than one clock in order for it to propagate
86 * all the way to the docks.
88 root my_root(clk, rst && !break_o,
89 root_in_r, root_in_a, root_in_d,
90 root_out_r, root_out_a, root_out_d);
92 fifo4 my_root(clk, rst,
93 root_in_r, root_in_a, root_in_d,
94 root_out_r, root_out_a, data_to_host);
96 assign root_out_a = root_out_a_reg;
97 assign root_in_r = root_in_r_reg;
98 assign data_to_fleet_read_enable = data_to_fleet_read_enable_reg;
99 assign data_to_host_write_enable = data_to_host_write_enable_reg;
100 assign root_in_d = root_in_d_reg;
103 always @(posedge clk)
107 data_to_host_write_enable_reg <= 0;
109 end else if (break_done) begin
110 data_to_host_write_enable_reg <= 1;
111 data_to_host_r <= 111;
113 end else if (send_k) begin
114 data_to_host_write_enable_reg <= 1;
115 data_to_host_r <= 107;
119 end else if (root_out_r && !root_out_a_reg && !data_to_host_full) begin
120 data_to_host_write_enable_reg <= 1;
121 data_to_host_r <= root_out_d;
123 end else if (root_out_a_reg && !root_out_r) begin
124 data_to_host_write_enable_reg <= 0;
127 data_to_host_write_enable_reg <= 0;
132 always @(posedge clk)
138 data_to_fleet_read_enable_reg <= 0;
141 if (!data_to_fleet_empty && !root_in_r_reg && !root_in_a) begin
143 root_in_d_reg <= data_to_fleet;
144 data_to_fleet_read_enable_reg <= 1;
146 data_to_fleet_read_enable_reg <= 0;
158 data_to_fleet_read_enable_reg = 0;
159 data_to_host_write_enable_reg = 0;