找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4021|回復(fù): 0
收起左側(cè)

DDS的AM調(diào)幅信號(hào)實(shí)現(xiàn) 語言為verilog

[復(fù)制鏈接]
ID:366331 發(fā)表于 2018-7-6 15:20 | 顯示全部樓層 |閱讀模式
詳情見附件,所用語言為verilog。
源碼
  1. module AM_Sine
  2. (
  3. input clk,
  4. input [15:0]Usine_1k,
  5. input [15:0]Sine_Range,
  6. input [15:0] M,                              //調(diào)制度0.1~1,設(shè)為0~65536,最后除以65536 用位移來操作2^16次方
  7. output [15:0]AM_OUT,
  8. output [15:0]AM_Tiaozhi,
  9. output [15:0]Reg_Zai
  10. );
  11. wire [15:0]Sine_sign=Sine_Range+16'h8000;//有符號(hào)數(shù)

  12. wire [15:0]Zaibo;
  13. reg [2:0]zero=0;
  14. //assign Zaibo[15:0]=zero[0]+Sine_Range[14:0];

  15. assign Zaibo=Sine_Range>>1;

  16. reg [15:0]Reg_Zaibo=0;
  17. always @(clk)
  18. begin
  19.         if(Sine_Range[15])begin
  20.         Reg_Zaibo=Zaibo;   
  21.         end
  22.         else begin
  23.         Reg_Zaibo=32768-Zaibo; //最高位為0時(shí)是正數(shù)
  24.         end
  25. end
  26. assign Reg_Zai=Reg_Zaibo;

  27. wire [15:0]Sine_1k;
  28. assign Sine_1k=Usine_1k>>1;
  29. wire [31:0]Ma_Tiaozhi;
  30. wire [15:0]TiaoZhi;
  31. wire [15:0]M_1=65535-M;
  32. wire [15:0]constant=32768;
  33. wire [31:0]result1;
  34. wire [31:0]result2;
  35. wire [31:0]RMa_Tiaozhi;
  36. assign Ma_Tiaozhi=result1+result2;
  37. assign RMa_Tiaozhi=Ma_Tiaozhi>>16;
  38. //assign TiaoZhi[15:0]=RMa_Tiaozhi[15:0];
  39. assign TiaoZhi[15:0]=Ma_Tiaozhi[31:16];//加一個(gè)偏移



  40. assign AM_Tiaozhi=TiaoZhi;


  41. wire [31:0]AM_OUT32;
  42. wire [31:0]AM_OUT16;
  43. assign AM_OUT16=AM_OUT32>>16;
  44. wire [15:0]UAM_OUT;
  45. assign {UAM_OUT[15:0]}=Sine_Range[15]+AM_OUT16[14:0];
  46. //assign {UAM_OUT[15:0]}=AM_OUT32[31:16];
  47. //assign AM_OUT=UAM_OUT+16'h8000;
  48. //assign AM_OUT=UAM_OUT;



  49. //always @(clk)begin
  50. //RMa_Tiaozhi=Ma_Tiaozhi>>16;
  51. //end
  52. Mult16_16_clk        Mult1 (
  53.         .clock ( clk),
  54.         .dataa ( Usine_1k),       //Usine_1k--->Sine_1k
  55.         .datab ( M),
  56.         .result ( result1 )
  57.         );
  58. Mult16_16_clk        Mult2 (
  59.         .clock ( clk ),
  60.         .dataa ( constant),
  61.         .datab ( M_1 ),
  62.         .result ( result12)
  63.         );
  64. Mult16_16_clk        Mult3 (
  65.         .clock ( clk ),
  66.         .dataa ( Reg_Zaibo),  //Zaibo->Reg_Zaibo
  67.         .datab ( TiaoZhi),//Tiaozhi->Usine_1k
  68.         .result ( AM_OUT32)
  69.         );
  70. Mult_Sign        Mult4 (
  71.         .clock ( clk ),
  72.         .dataa ( test ),
  73.         .datab ( Sine_sign ),   
  74.         .result ( result_sig )
  75.         );
  76. wire [16:0]Tiaozhi_17=RMa_Tiaozhi[16:0];  
  77. //assign Tiaozhi_17=RMa_Tiaozhi[;        
  78. wire [32:0]result_sig;
  79. wire [32:0]result_sign;
  80. assign result_sign=result_sig-33'h100000000;
  81. assign {AM_OUT[15:0]}=result_sign[32:17];

  82. wire [31:0]tiao=((Usine_1k*M)+(16'h8000*M_1))>>16;
  83. wire [16:0]test=tiao[16:0];

  84. endmodule
復(fù)制代碼


AM_Sine.rar

927 Bytes, 下載次數(shù): 22, 下載積分: 黑幣 -5

產(chǎn)生調(diào)幅信號(hào)

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表