| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- `timescale 1ns / 1ps
- //////////////////////////////////////////////////////////////////////////////////
- // Company:
- // Engineer:
- //
- // Create Date: 10:02:35 04/20/2020
- // Design Name:
- // Module Name: mult_module
- // Project Name:
- // Target Devices:
- // Tool versions:
- // Description:
- //
- // Dependencies:
- //
- // Revision:
- // Revision 0.01 - File Created
- // Additional Comments:
- //
- //////////////////////////////////////////////////////////////////////////////////
- module MultModule
- #(
- parameter AdcDataWidth = 14,
- parameter IfNcoOutWidth = 18,
- parameter MultDataWidth = 36
- )
- (
- input Rst_i,
- input Clk_i,
- input signed [AdcDataWidth-1:0] AdcData_i,
- input signed [IfNcoOutWidth-1:0] Sin_i,
- input signed [IfNcoOutWidth-1:0] Cos_i,
- output signed [MultDataWidth-1:0] AdcSin_o,
- output signed [MultDataWidth-1:0] AdcCos_o
- );
- //================================================================================
- // LOCALPARAM
- //================================================================================
- // REG/WIRE
- reg signed [IfNcoOutWidth-1:0] adcDataCompl;
- reg signed [IfNcoOutWidth-1:0] sinReg;
- reg signed [IfNcoOutWidth-1:0] cosReg;
-
- reg signed [MultDataWidth-1:0] AdcSinReg;
- reg signed [MultDataWidth-1:0] AdcCosReg;
- //================================================================================
- // ASSIGNMENTS
- assign AdcSin_o = AdcSinReg;
- assign AdcCos_o = AdcCosReg;
- //================================================================================
- // CODING
- always @(posedge Clk_i) begin
- if (!Rst_i) begin
- adcDataCompl <= {AdcData_i,4'b0};
- sinReg <= Sin_i;
- cosReg <= Cos_i;
- end else begin
- adcDataCompl <= 0;
- sinReg <= 0;
- cosReg <= 0;
- end
- end
-
- always @(posedge Clk_i) begin
- if (!Rst_i) begin
- AdcSinReg <= adcDataCompl*sinReg;
- AdcCosReg <= adcDataCompl*cosReg;
- end else begin
- AdcSinReg <= {MultDataWidth{1'b0}};
- AdcCosReg <= {MultDataWidth{1'b0}};
- end
- end
-
- endmodule
|