84 lines
2.7 KiB
Coq
84 lines
2.7 KiB
Coq
|
|
//+FHDR--------------------------------------------------------------------------------------------------------
|
||
|
|
// Company:
|
||
|
|
//-----------------------------------------------------------------------------------------------------------------
|
||
|
|
// File Name : dacif.v
|
||
|
|
// Department :
|
||
|
|
// Author : PWY
|
||
|
|
// Author's Tel :
|
||
|
|
//-----------------------------------------------------------------------------------------------------------------
|
||
|
|
// Relese History
|
||
|
|
// Version Date Author Description
|
||
|
|
// 0.4 2024-03-12 PWY
|
||
|
|
// 0.9 2024-06-19 PWY Add 2x, 4x, and 8x interpolation modes to EZQ2.0S.
|
||
|
|
//-----------------------------------------------------------------------------------------------------------------
|
||
|
|
// Keywords :
|
||
|
|
//
|
||
|
|
//-----------------------------------------------------------------------------------------------------------------
|
||
|
|
// Parameter
|
||
|
|
//
|
||
|
|
//-----------------------------------------------------------------------------------------------------------------
|
||
|
|
// Purpose :
|
||
|
|
//
|
||
|
|
//-----------------------------------------------------------------------------------------------------------------
|
||
|
|
// Target Device:
|
||
|
|
// Tool versions:
|
||
|
|
//-----------------------------------------------------------------------------------------------------------------
|
||
|
|
// Reuse Issues
|
||
|
|
// Reset Strategy:
|
||
|
|
// Clock Domains:
|
||
|
|
// Critical Timing:
|
||
|
|
// Asynchronous I/F:
|
||
|
|
// Synthesizable (y/n):
|
||
|
|
// Other:
|
||
|
|
//-FHDR--------------------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
module dacif (
|
||
|
|
input clk
|
||
|
|
,input rstn
|
||
|
|
,input din_vld
|
||
|
|
,output dout_vld
|
||
|
|
//mixer data input
|
||
|
|
,input [7:0] din [63:0]
|
||
|
|
//data output
|
||
|
|
,output [7:0] dout[63:0]
|
||
|
|
);
|
||
|
|
|
||
|
|
wire[1 :0] dacif_vld_dly;
|
||
|
|
sirv_gnrl_dffr #(2) dacif_vld_dffr ({dacif_vld_dly[0], din_vld}, dacif_vld_dly, clk, rstn);
|
||
|
|
|
||
|
|
////////////////////////////////////////////////////
|
||
|
|
// regs
|
||
|
|
////////////////////////////////////////////////////
|
||
|
|
|
||
|
|
wire[7:0] mux_p [63:0];
|
||
|
|
|
||
|
|
wire[7:0] dout_w [63:0];
|
||
|
|
|
||
|
|
genvar k;
|
||
|
|
generate
|
||
|
|
|
||
|
|
for(k = 0; k < 64; k = k + 1) begin
|
||
|
|
|
||
|
|
sirv_gnrl_dfflr #(8) mux_dfflr (1'b1, {~din[k][7], din[k][6:0]}, mux_p[k], clk, rstn);
|
||
|
|
|
||
|
|
end
|
||
|
|
endgenerate
|
||
|
|
|
||
|
|
|
||
|
|
genvar m;
|
||
|
|
generate
|
||
|
|
////////////////////////////////////////////////////
|
||
|
|
// mode select
|
||
|
|
////////////////////////////////////////////////////
|
||
|
|
for(m = 0; m < 64; m = m + 1) begin
|
||
|
|
|
||
|
|
assign dout_w[m] = mux_p [m] ;
|
||
|
|
sirv_gnrl_dfflrd #(8) dout_dfflrd (8'h80, 1'b1, dout_w[m], dout[m], clk, rstn);
|
||
|
|
|
||
|
|
end
|
||
|
|
endgenerate
|
||
|
|
|
||
|
|
assign dout_vld = dacif_vld_dly[1];
|
||
|
|
|
||
|
|
endmodule
|