MultModule.v 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. `timescale 1ns / 1ps
  2. //////////////////////////////////////////////////////////////////////////////////
  3. // Company:
  4. // Engineer:
  5. //
  6. // Create Date: 10:02:35 04/20/2020
  7. // Design Name:
  8. // Module Name: mult_module
  9. // Project Name:
  10. // Target Devices:
  11. // Tool versions:
  12. // Description:
  13. //
  14. // Dependencies:
  15. //
  16. // Revision:
  17. // Revision 0.01 - File Created
  18. // Additional Comments:
  19. //
  20. //////////////////////////////////////////////////////////////////////////////////
  21. module MultModule
  22. #(
  23. parameter AdcDataWidth = 14,
  24. parameter IfNcoOutWidth = 18,
  25. parameter MultDataWidth = 36
  26. )
  27. (
  28. input Rst_i,
  29. input Clk_i,
  30. input signed [AdcDataWidth-1:0] AdcData_i,
  31. input signed [IfNcoOutWidth-1:0] Sin_i,
  32. input signed [IfNcoOutWidth-1:0] Cos_i,
  33. output signed [MultDataWidth-1:0] AdcSin_o,
  34. output signed [MultDataWidth-1:0] AdcCos_o
  35. );
  36. //================================================================================
  37. // LOCALPARAM
  38. //================================================================================
  39. // REG/WIRE
  40. wire signed [IfNcoOutWidth-1:0] adcDataCompl = {AdcData_i,4'b0};
  41. reg [MultDataWidth-1:0] AdcSinReg;
  42. reg [MultDataWidth-1:0] AdcCosReg;
  43. //================================================================================
  44. // ASSIGNMENTS
  45. assign AdcSin_o = AdcSinReg;
  46. assign AdcCos_o = AdcCosReg;
  47. //================================================================================
  48. // CODING
  49. always @(posedge Clk_i) begin
  50. if (!Rst_i) begin
  51. AdcSinReg <= adcDataCompl*Sin_i;
  52. AdcCosReg <= adcDataCompl*Cos_i;
  53. end else begin
  54. AdcSinReg <= {MultDataWidth{1'b0}};
  55. AdcCosReg <= {MultDataWidth{1'b0}};
  56. end
  57. end
  58. endmodule