/**
|
/**
|
* Demonstrates the functionality of the UART observer. Shows the 64 bits of
|
* Demonstrates the functionality of the UART observer. Reads 64 bits from the terminal keyboard.
|
* binary data that, in this demo, are derived from push buttons and dip switches on FPGA board.
|
|
*/
|
*/
|
module uart_observer_demonstrator (
|
module uart_observer_demonstrator (
|
input USB_UART_TX_FPGA_RX_LS,
|
input USB_UART_TX_FPGA_RX_LS,
|
input USB_UART_CTS_I_B_LS,
|
input USB_UART_CTS_I_B_LS,
|
input CLK_I,
|
input CLK_I,
|
|
|
input GPIO_SW_E,
|
input GPIO_SW_E,
|
input GPIO_SW_W,
|
input GPIO_SW_W,
|
input GPIO_SW_S,
|
input GPIO_SW_S,
|
input GPIO_SW_N,
|
input GPIO_SW_N,
|
input GPIO_SW_C,
|
input GPIO_SW_C,
|
|
|
input GPIO_DIP_SW0,
|
input GPIO_DIP_SW0,
|
input GPIO_DIP_SW1,
|
input GPIO_DIP_SW1,
|
input GPIO_DIP_SW2,
|
input GPIO_DIP_SW2,
|
input GPIO_DIP_SW3,
|
input GPIO_DIP_SW3,
|
|
|
output GPIO_LED_0,
|
output GPIO_LED_0,
|
output GPIO_LED_1,
|
output GPIO_LED_1,
|
output GPIO_LED_2,
|
output GPIO_LED_2,
|
output GPIO_LED_3,
|
output GPIO_LED_3,
|
output GPIO_LED_4,
|
output GPIO_LED_4,
|
output GPIO_LED_5,
|
output GPIO_LED_5,
|
output GPIO_LED_6,
|
output GPIO_LED_6,
|
output GPIO_LED_7,
|
output GPIO_LED_7,
|
|
|
output USB_UART_RX_FPGA_TX_LS,
|
output USB_UART_RX_FPGA_TX_LS,
|
output USB_UART_RTS_O_B_LS
|
output USB_UART_RTS_O_B_LS
|
);
|
);
|
|
|
// 64 bits we observe.
|
// 32 bits we observe.
|
wire [63:0] observables;
|
wire [31:0] observables;
|
|
|
// Observe the switches as example
|
uart_receiver #(.CLOCK_FREQ (90_000_000), .BAUDS(921600), .BITS(32) )
|
// First byte
|
UR(
|
|
// Clock
|
assign observables[0] = GPIO_SW_E;
|
.CLK_I(CLK_I),
|
assign observables[1] = GPIO_SW_W;
|
|
assign observables[2] = GPIO_SW_S;
|
|
assign observables[3] = GPIO_SW_N;
|
|
|
|
assign observables[4] = GPIO_SW_E;
|
|
assign observables[5] = GPIO_SW_W;
|
|
assign observables[6] = GPIO_SW_S;
|
|
assign observables[7] = GPIO_SW_N;
|
|
|
|
// Second
|
|
|
|
assign observables[8] = GPIO_SW_E;
|
|
assign observables[9] = GPIO_SW_W;
|
|
assign observables[10] = GPIO_SW_S;
|
|
assign observables[11] = GPIO_SW_N;
|
|
|
|
assign observables[12] = GPIO_SW_E;
|
|
assign observables[13] = GPIO_SW_W;
|
|
assign observables[14] = GPIO_SW_S;
|
|
assign observables[15] = GPIO_SW_N;
|
|
|
|
// Third
|
|
|
|
assign observables[16] = GPIO_DIP_SW0;
|
|
assign observables[17] = GPIO_DIP_SW1;
|
|
assign observables[18] = GPIO_DIP_SW2;
|
|
assign observables[19] = GPIO_DIP_SW3;
|
|
|
|
assign observables[20] = GPIO_DIP_SW3;
|
|
assign observables[21] = GPIO_DIP_SW2;
|
|
assign observables[22] = GPIO_DIP_SW1;
|
|
assign observables[23] = GPIO_DIP_SW0;
|
|
|
|
// Forth
|
|
|
|
assign observables[24] = GPIO_SW_E;
|
|
assign observables[25] = GPIO_SW_W;
|
|
assign observables[26] = GPIO_SW_S;
|
|
assign observables[27] = GPIO_SW_N;
|
|
|
|
assign observables[28] = GPIO_SW_E;
|
// Values to observer
|
assign observables[29] = GPIO_SW_W;
|
.DAT_O(observables),
|
assign observables[30] = GPIO_SW_S;
|
|
assign observables[31] = GPIO_SW_N;
|
|
|
|
assign observables[63] = GPIO_SW_C;
|
// UART
|
|
.RXD(USB_UART_TX_FPGA_RX_LS), // data
|
|
.CTR(USB_UART_CTS_I_B_LS) // clear to receive
|
|
);
|
|
|
uart_observer #(.CLOCK_FREQ (90_000_000), .BAUDS(921600), .BITS(64) )
|
uart_observer #(.CLOCK_FREQ (90_000_000), .BAUDS(921600), .BITS(32) )
|
U0(
|
U0(
|
// Clock
|
// Clock
|
.CLK_I(CLK_I),
|
.CLK_I(CLK_I),
|
|
|
// Values to observer
|
// Values to observer
|
.DAT_I(observables),
|
.DAT_I(observables),
|
|
|
// UART
|
// UART
|
.TXD(USB_UART_RX_FPGA_TX_LS), // data
|
.TXD(USB_UART_RX_FPGA_TX_LS), // data
|
.RTS(USB_UART_RTS_O_B_LS), // request to send
|
.RTS(USB_UART_RTS_O_B_LS), // request to send
|
.CTS(USB_UART_CTS_I_B_LS) // clear to send
|
.CTS(USB_UART_CTS_I_B_LS) // clear to send
|
|
|
);
|
);
|
|
|
assign GPIO_LED_0 = observables[0];
|
assign GPIO_LED_0 = observables[0];
|
assign GPIO_LED_1 = observables[1];
|
assign GPIO_LED_1 = observables[1];
|
assign GPIO_LED_2 = observables[2];
|
assign GPIO_LED_2 = observables[2];
|
assign GPIO_LED_3 = observables[3];
|
assign GPIO_LED_3 = observables[3];
|
assign GPIO_LED_4 = observables[4];
|
assign GPIO_LED_4 = observables[4];
|
|
|
|
|
endmodule
|
endmodule
|
|
|