FreeCalypso > hg > fc-pcm-if
view fpga/mcsi-rx/top.v @ 11:e93a11f44e6f
fc-mcsi-rxtx: implement basic Tx
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 28 Oct 2024 06:34:42 +0000 |
parents | b3190839cce3 |
children |
line wrap: on
line source
/* * Top level Verilog module for MCSI Rx-only FPGA. */ module top (CLK12, LED1, LED2, LED3, LED4, LED5, UART_TxD, UART_RxD, UART_RTS, UART_CTS, UART_DTR, UART_DSR, UART_DCD, MCSI_CLK, MCSI_FSYNCH, MCSI_TXD, MCSI_RXD); input CLK12; output LED1, LED2, LED3, LED4, LED5; input UART_TxD, UART_RTS, UART_DTR; output UART_RxD, UART_CTS, UART_DSR, UART_DCD; input MCSI_CLK, MCSI_FSYNCH, MCSI_TXD; output MCSI_RXD; /* input synchronizers */ wire MCSI_CLK_sync, MCSI_FS_sync, MCSI_Din_sync; sync_inputs sync (CLK12, MCSI_CLK, MCSI_CLK_sync, MCSI_FSYNCH, MCSI_FS_sync, MCSI_TXD, MCSI_Din_sync); /* running clock detector */ wire MCSI_CLK_running; clk_check clk_check (CLK12, MCSI_CLK_sync, MCSI_CLK_running); /* MCSI_CLK edge detector */ wire MCSI_CLK_negedge; clk_edge clk_edge (CLK12, MCSI_CLK_sync, MCSI_CLK_negedge); /* MCSI Rx logic */ wire [15:0] PCM_sample_out; wire PCM_sample_strobe; wire FS_lost, clk_fs_good; mcsi_rx mcsi_rx (CLK12, MCSI_FS_sync, MCSI_Din_sync, MCSI_CLK_negedge, PCM_sample_out, PCM_sample_strobe, FS_lost); assign clk_fs_good = MCSI_CLK_running && !FS_lost; /* output to the host */ uart_tx uart_tx (CLK12, PCM_sample_strobe, PCM_sample_out, UART_RxD); /* UART modem control outputs: unused */ assign UART_CTS = 1'b1; assign UART_DSR = 1'b0; assign UART_DCD = 1'b0; /* board LEDs */ assign LED1 = 1'b0; assign LED2 = 1'b1; assign LED3 = 1'b0; assign LED4 = 1'b1; assign LED5 = clk_fs_good; /* No MCSI output in this version */ assign MCSI_RXD = 1'b0; endmodule