SPI_Test/rtl/awg/modout_mux.v

66 lines
2.8 KiB
Coq
Raw Normal View History

2024-06-25 16:41:01 +08:00
//+FHDR--------------------------------------------------------------------------------------------------------
// Company:
//-----------------------------------------------------------------------------------------------------------------
// File Name : modout_mux.v
// Department :
// Author : PWY
// Author's Tel :
//-----------------------------------------------------------------------------------------------------------------
// Relese History
// Version Date Author Description
// 0.1 2024-05-13 PWY debug top-level
//-----------------------------------------------------------------------------------------------------------------
// Keywords :
//
//-----------------------------------------------------------------------------------------------------------------
// Parameter
//
//-----------------------------------------------------------------------------------------------------------------
// Purpose :
//
//-----------------------------------------------------------------------------------------------------------------
// Target Device:
// Tool versions:
//-----------------------------------------------------------------------------------------------------------------
// Reuse Issues
// Reset Strategy:
// Clock Domains:
// Critical Timing:
// Asynchronous I/F:
// Synthesizable (y/n):
// Other:
//-FHDR--------------------------------------------------------------------------------------------------------
module modout_mux (
//system port
input clk // System Main Clock
,input rst_n // Spi Reset active low
//---------------from ctrl regfile------------------------------------
,input sel // 1'b0 --> mod modem data; 1'b1 --> mod nco data
//mod nco data
,input [15:0] sin
,input [15:0] cos
//mod modem data
,input [15:0] mod_data_i
,input [15:0] mod_data_q
,input mod_data_vld
//mux out data
,output [15:0] mux_data_i
,output [15:0] mux_data_q
,output mux_data_vld
);
wire [15:0] mux_data_i_w = sel ? sin : mod_data_i;
wire [15:0] mux_data_q_w = sel ? cos : mod_data_q;
wire mux_data_vld_w = sel ? 1'b1 : mod_data_vld;
`ifdef MODDOUT_MUX_REG
sirv_gnrl_dffr #(16) mux_data_i_dffr (mux_data_i_w , mux_data_i , clk, rst_n);
sirv_gnrl_dffr #(16) mux_data_q_dffr (mux_data_q_w , mux_data_q , clk, rst_n);
sirv_gnrl_dffr #(1 ) mux_data_vld_dffr (mux_data_vld_w, mux_data_vld, clk, rst_n);
`else
assign mux_data_i = mux_data_i_w ;
assign mux_data_q = mux_data_q_w ;
assign mux_data_vld = mux_data_vld_w ;
`endif
endmodule