FreeCalypso > hg > fc-sim-sniff
diff fpga/sniffer-pps/sniff_rx.v @ 31:ab37fcb71744
fpga/sniffer-pps: add actual F/D control
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 29 Aug 2023 21:22:37 +0000 |
parents | 0f74428c177c |
children |
line wrap: on
line diff
--- a/fpga/sniffer-pps/sniff_rx.v Tue Aug 29 20:36:34 2023 +0000 +++ b/fpga/sniffer-pps/sniff_rx.v Tue Aug 29 21:22:37 2023 +0000 @@ -3,24 +3,61 @@ */ module sniff_rx (IntClk, SIM_RST_sync, SIM_CLK_sync, SIM_IO_sync, - Rx_strobe, Rx_error, Rx_char, Rx_start_bit, Rx_parity_bit); + Rx_strobe, Rx_error, Rx_char, Rx_start_bit, Rx_parity_bit, + speed_enh_mode, speed_enh_mult); input IntClk; input SIM_RST_sync, SIM_CLK_sync, SIM_IO_sync; output Rx_strobe, Rx_error; output [7:0] Rx_char; output Rx_start_bit, Rx_parity_bit; +input speed_enh_mode; +input [1:0] speed_enh_mult; wire SIM_CLK_edge; clk_edge clk_edge (IntClk, SIM_CLK_sync, SIM_CLK_edge); -wire [9:0] etu_0p5, etu_1p0, etu_1p5; +reg [9:0] etu_0p5, etu_1p0, etu_1p5; /* combinational */ -/* Fi/Di=372 only for now */ -assign etu_0p5 = 10'd185; -assign etu_1p0 = 10'd371; -assign etu_1p5 = 10'd557; +always @* + casez ({speed_enh_mode,speed_enh_mult}) + 3'b0??: + begin + /* F/D = 372 */ + etu_0p5 = 10'd185; + etu_1p0 = 10'd371; + etu_1p5 = 10'd557; + end + 3'b100: + begin + /* F/D = 64 */ + etu_0p5 = 10'd31; + etu_1p0 = 10'd63; + etu_1p5 = 10'd95; + end + 3'b101: + begin + /* F/D = 32 */ + etu_0p5 = 10'd15; + etu_1p0 = 10'd31; + etu_1p5 = 10'd47; + end + 3'b110: + begin + /* F/D = 16 */ + etu_0p5 = 10'd7; + etu_1p0 = 10'd15; + etu_1p5 = 10'd23; + end + 3'b111: + begin + /* F/D = 8 */ + etu_0p5 = 10'd3; + etu_1p0 = 10'd7; + etu_1p5 = 10'd11; + end + endcase reg rx_active; reg [9:0] clk_count;