DIY及创意
直播中

卢新硕

5年用户 39经验值
擅长:可编程逻辑 接口/总线/驱动 EDA/IC设计
私信 关注

FPGA设计与应用之基于AD9833芯片的信号发生器设计

话不多数,直接上代码吧,注释的十分详细了
  1. /****************************************************/
  2. /****************************************************/
  3.                 /*  made by Jerry            */
  4. /****************************************************/
  5. /****************************************************/
  6. `timescale 1ns/1ns
  7. module happy(
  8. Clk,
  9. Rst_n,
  10. SCLK,
  11. DIN,
  12. FSY
  13. );
  14. //黄正
  15. input Clk;      //系统输入时钟
  16. input Rst_n;    //复位信号

  17. output reg DIN;  //AD9833输入数据
  18. output reg FSY;  //数据输入控制信号
  19. output reg SCLK; //串行通信时钟
  20. /*
  21. 串行通信:采用三线SPI(Serial串行 Peripheral外设 Interface接口)形式
  22. 几个重要的串行接口说明
  23.   SCLK:串行时钟输入,数据在时钟下降沿输入AD9833
  24.   DIN:串行数据输入接口,输入数据位数为16bit
  25.   FSYNC:低有效控制输入Active Low Control Input. This is the frame synchronization signal for the input data. When FSYNC is taken low, the internal logic is informed that a new word is
  26. being loaded into the device.输入的帧同步信号数据,当FSYNC变低时,会通知内部逻辑一个字节输入完毕。数据只有在FSYNC为低电平时才可以向芯片输入
  27. 在第16个SCLK下降沿之后FSYNC拉高,
  28. */
  29. wire trans_done;  //2 byte 数据传输完成标志信号

  30. reg[3:0]cishu;  //字通信次数寄存器,用于控制传输进程

  31. reg[3:0]DIV_CNT; //分频计数器,用于序列机控制

  32. reg SCLK2X;   //2倍SCLK的采样时钟

  33. reg [8:0]SCLK_GEN_CNT;//SCLK生成暨序列机计数器

  34. reg en;//转换使能信号

  35. parameter DIV_PARAM=2;

  36. parameter
  37.       DAC_data0=16'h2100,  //0010_0001_0000_0000  DB13=1表示即将两次写入完整频率控制字,同时将寄存器复位
  38.                 DAC_data1=16'h69f1,  //6886   //0110_1001_1111_0001: 低14bit是输入的频率数据,DB15:DB14=01表示选择频率寄存器FEG0
  39.                 DAC_data2=16'h4000,  // 0100_0000_0000_0000 高14bit=0
  40.                
  41.                 DAC_data3=16'hc000, //1100_0000_0000_0000:选择相位寄存器0,data=0
  42.                 DAC_data4=16'h0100,  // 0000_0001_0000_0000
  43.                
  44.                 DAC_data5=16'h2100,  //选择数据一次写入,DB13&Rest=1
  45.                 DAC_data6=16'h2000,  //设置相位寄存器0作为相位累加器
  46.                 DAC_data7=16'h2000;  //选择正弦波

  47.   //数据传输使能控制模块
  48.   always@(posedge Clk or negedge Rst_n)
  49.         if(!Rst_n)
  50.                 en  <=#1 1'b1;
  51.         else if(trans_done)
  52.                 en  <=#1 1'b0;
  53.         else
  54.                 en  <=en;
  55.                
  56. //完整数据传输完成标志信号
  57. assign trans_done = (cishu ==4'd8 ) && SCLK2X;

  58. //生成2倍SCLK使时钟计数器   
  59.         always@(posedge Clk or negedge Rst_n)
  60.         if(!Rst_n)
  61.                 DIV_CNT  <= #1  4'd0;
  62.         else if(en)begin
  63.                 if(DIV_CNT == (DIV_PARAM - 1'b1))
  64.                         DIV_CNT  <= #1  4'd0;
  65.                 else
  66.                         DIV_CNT  <= #1  DIV_CNT + 1'b1;
  67.         end else        
  68.                 DIV_CNT  <= #1  4'd0;
  69.   //生成2倍SCLK时钟计数器  结果是使sclk周期为40ns完美
  70.         always@(posedge Clk or negedge Rst_n)
  71.         if(!Rst_n)
  72.                 SCLK2X  <= #1  1'b0;
  73.         else if(en && (DIV_CNT == (DIV_PARAM - 1'b1)))
  74.                 SCLK2X  <= #1  1'b1;
  75.         else
  76.                 SCLK2X  <= #1  1'b0;

  77.   //生成序列计数器
  78.         always@(posedge Clk or negedge Rst_n)
  79.         if(!Rst_n)
  80.                 SCLK_GEN_CNT  <= #1  9'd0;
  81.         else if(SCLK2X && en)
  82.         begin
  83.          if(SCLK_GEN_CNT == 9'd271)
  84.                 SCLK_GEN_CNT  <= #1  9'd271;
  85.          else
  86.                 SCLK_GEN_CNT  <= #1  SCLK_GEN_CNT + 1'b1;
  87.         end
  88.         else
  89.                 SCLK_GEN_CNT  <= #1  SCLK_GEN_CNT;        
  90.    /*
  91. *******************依次将数据移出到芯片********************
  92.         */
  93. always@(posedge Clk or negedge Rst_n)
  94. if(!Rst_n)
  95.   begin
  96.    DIN  <=#0  1'b1;
  97.    SCLK  <=#1  1'b1;
  98.    FSY <=1'b1;
  99.    cishu<=4'd0;
  100.   end  
  101.   else if((!trans_done)&&SCLK2X)
  102.   begin
  103.    case(SCLK_GEN_CNT)
  104.         /******************************************************/  
  105.                              /*传输 DAC_data0*/
  106.   /******************************************************/
  107.         0:
  108.         begin
  109.          DIN  <= #1 DAC_data0[15];
  110.          FSY<=1'b0;
  111.          SCLK  <= #5  1'b0;
  112.         end
  113.         1,3,5,7,9,11,13,15,17,19,21,23,25,27,29:
  114.          begin
  115.           SCLK  <= #1  1'b1;
  116.          end         
  117.          
  118.         31:
  119.          begin
  120.           SCLK  <= #1  1'b1;
  121.            FSY<= 1'b1;
  122.          end         
  123.          
  124.          2:  begin DIN  <= #1 DAC_data0[14]; SCLK  <= #1 1'b0; end
  125.          4:  begin DIN  <= #1 DAC_data0[13]; SCLK  <= #1 1'b0; end
  126.          6:  begin DIN  <= #1 DAC_data0[12]; SCLK  <= #1 1'b0; end
  127.          8:  begin DIN  <= #1 DAC_data0[11]; SCLK  <= #1 1'b0; end                        
  128.          10: begin DIN  <= #1 DAC_data0[10]; SCLK  <= #1 1'b0; end
  129.          12: begin DIN  <= #1 DAC_data0[9];  SCLK  <= #1 1'b0; end
  130.     14: begin DIN  <= #1 DAC_data0[8];  SCLK  <= #1 1'b0; end
  131.          16: begin DIN  <= #1 DAC_data0[7];  SCLK  <= #1 1'b0; end        
  132.          18: begin DIN  <= #1 DAC_data0[6];  SCLK  <= #1 1'b0; end
  133.          20: begin DIN  <= #1 DAC_data0[5];  SCLK  <= #1 1'b0; end                                
  134.          22: begin DIN  <= #1 DAC_data0[4];  SCLK  <= #1 1'b0; end
  135.          24: begin DIN  <= #1 DAC_data0[3];  SCLK  <= #1 1'b0; end
  136.          26: begin DIN  <= #1 DAC_data0[2];  SCLK  <= #1 1'b0; end
  137.          28: begin DIN  <= #1 DAC_data0[1];  SCLK  <= #1 1'b0; end                        
  138.          30: begin DIN  <= #1 DAC_data0[0];  SCLK  <= #1 1'b0; end
  139.     32:
  140.          begin
  141.          SCLK  <= #1 1'b0;
  142.          end
  143.     33:
  144.           begin
  145.           SCLK<=1'b1;
  146.           cishu<=4'd1;
  147.           end   
  148.         /********************************************************/  
  149.                              /*传输 DAC_data1*/
  150.   /********************************************************/
  151.          34:
  152.          begin
  153.           DIN  <= #1 DAC_data1[15];
  154.           FSY<=1'b0;
  155.           SCLK  <= #5  1'b0;
  156.          end
  157.    35,37,39,41,43,45,47,49,51,53,55,57,59,61,63:
  158.           begin
  159.                         SCLK  <= #1  1'b1;
  160.                 end
  161.         65:
  162.                 begin
  163.                         SCLK  <= #1  1'b1;
  164.                         FSY<=#1 1'b1;
  165.                 end
  166.                    36: begin DIN  <= #1 DAC_data1[14]; SCLK  <= #1 1'b0; end
  167.                         38: begin DIN  <= #1 DAC_data1[13]; SCLK  <= #1 1'b0; end
  168.                         40: begin DIN  <= #1 DAC_data1[12]; SCLK  <= #1 1'b0; end
  169.                         42: begin DIN  <= #1 DAC_data1[11]; SCLK  <= #1 1'b0; end                        
  170.                         44: begin DIN  <= #1 DAC_data1[10]; SCLK  <= #1 1'b0; end
  171.                         46: begin DIN  <= #1 DAC_data1[9];  SCLK  <= #1 1'b0; end
  172.                         48: begin DIN  <= #1 DAC_data1[8];  SCLK  <= #1 1'b0; end
  173.                         50: begin DIN  <= #1 DAC_data1[7];  SCLK  <= #1 1'b0; end        
  174.                         52: begin DIN  <= #1 DAC_data1[6];  SCLK  <= #1 1'b0; end
  175.                         54: begin DIN  <= #1 DAC_data1[5];  SCLK  <= #1 1'b0; end                                
  176.                         56: begin DIN  <= #1 DAC_data1[4];  SCLK  <= #1 1'b0; end
  177.                         58: begin DIN  <= #1 DAC_data1[3];  SCLK  <= #1 1'b0; end
  178.                         60: begin DIN  <= #1 DAC_data1[2];  SCLK  <= #1 1'b0; end
  179.                         62: begin DIN  <= #1 DAC_data1[1];  SCLK  <= #1 1'b0; end                        
  180.                         64: begin DIN  <= #1 DAC_data1[0];  SCLK  <= #1 1'b0; end
  181.                 66:
  182.            begin
  183.            SCLK  <= #1 1'b0;
  184.    //   FSY<=#1 1'b1;
  185.            end         
  186.                 67:
  187.                 begin
  188.             SCLK<=1'b1;
  189.          
  190.             cishu<=4'd2;
  191.            end
  192. /***********************************************************/  
  193.                              /*传输 DAC_data2*/
  194.   /*******************************************************/
  195.           68:
  196.           begin
  197.                                         DIN  <= #1 DAC_data2[15];
  198.                                         FSY<=1'b0;
  199.                                         SCLK  <= #5  1'b0;
  200.                 end
  201.                 69,71,73,75,77,79,81,83,85,87,89,91,93,95,97:
  202.                 begin
  203.                         SCLK  <= #1  1'b1;
  204.                 end
  205.                 99:
  206.                 begin
  207.                         SCLK  <= #1  1'b1;
  208.                         FSY<=#1 1'b1;
  209.                 end
  210.                    70: begin DIN  <= #1 DAC_data2[14]; SCLK  <= #1 1'b0; end
  211.                         72: begin DIN  <= #1 DAC_data2[13]; SCLK  <= #1 1'b0; end
  212.                         74: begin DIN  <= #1 DAC_data2[12]; SCLK  <= #1 1'b0; end
  213.                         76: begin DIN  <= #1 DAC_data2[11]; SCLK  <= #1 1'b0; end                        
  214.                         78: begin DIN  <= #1 DAC_data2[10]; SCLK  <= #1 1'b0; end
  215.                         80: begin DIN  <= #1 DAC_data2[9];  SCLK  <= #1 1'b0; end
  216.                         82: begin DIN  <= #1 DAC_data2[8];  SCLK  <= #1 1'b0; end
  217.                         84: begin DIN  <= #1 DAC_data2[7];  SCLK  <= #1 1'b0; end        
  218.                         86: begin DIN  <= #1 DAC_data2[6];  SCLK  <= #1 1'b0; end
  219.                         88: begin DIN  <= #1 DAC_data2[5];  SCLK  <= #1 1'b0; end                                
  220.                         90: begin DIN  <= #1 DAC_data2[4];  SCLK  <= #1 1'b0; end
  221.                         92: begin DIN  <= #1 DAC_data2[3];  SCLK  <= #1 1'b0; end
  222.                         94: begin DIN  <= #1 DAC_data2[2];  SCLK  <= #1 1'b0; end
  223.                         96: begin DIN  <= #1 DAC_data2[1];  SCLK  <= #1 1'b0; end                        
  224.                         98: begin DIN  <= #1 DAC_data2[0];  SCLK  <= #1 1'b0; end
  225.                 100:
  226.                 begin
  227.             SCLK  <= #1 1'b0;
  228.     //   FSY<=#1 1'b1;
  229.            end
  230.                 101:
  231.            begin
  232.             SCLK<=1'b1;
  233.            // FSY<=#2 1'b1;
  234.             cishu<=4'd3;
  235.            end         
  236.         /************************************************************************/  
  237.                              /*传输 DAC_data3 */
  238.   /************************************************************************/
  239.   102:
  240.     begin
  241.                 DIN  <= #1 DAC_data3[15];
  242.                 FSY<=1'b0;
  243.                 SCLK  <= #5  1'b0;
  244.          end
  245. 103,105,107,109,111,113,115,117,119,121,123,125,127,129,131:
  246.    begin
  247.                 SCLK  <= #1  1'b1;
  248.         end
  249. 133:
  250.         begin
  251.                 SCLK  <= #1  1'b1;
  252.            FSY<=#1 1'b1;
  253.         end
  254.            104: begin DIN  <= #1 DAC_data3[14]; SCLK  <= #1 1'b0; end
  255.                 106: begin DIN  <= #1 DAC_data3[13]; SCLK  <= #1 1'b0; end
  256.                 108: begin DIN  <= #1 DAC_data3[12]; SCLK  <= #1 1'b0; end
  257.                 110: begin DIN  <= #1 DAC_data3[11]; SCLK  <= #1 1'b0; end                        
  258.                 112: begin DIN  <= #1 DAC_data3[10]; SCLK  <= #1 1'b0; end
  259.                 114: begin DIN  <= #1 DAC_data3[9];  SCLK  <= #1 1'b0; end
  260.                 116: begin DIN  <= #1 DAC_data3[8];  SCLK  <= #1 1'b0; end
  261.                 118: begin DIN  <= #1 DAC_data3[7];  SCLK  <= #1 1'b0; end        
  262.                 120: begin DIN  <= #1 DAC_data3[6];  SCLK  <= #1 1'b0; end
  263.                 122: begin DIN  <= #1 DAC_data3[5];  SCLK  <= #1 1'b0; end                                
  264.                 124: begin DIN  <= #1 DAC_data3[4];  SCLK  <= #1 1'b0; end
  265.                 126: begin DIN  <= #1 DAC_data3[3];  SCLK  <= #1 1'b0; end
  266.                 128: begin DIN  <= #1 DAC_data3[2];  SCLK  <= #1 1'b0; end
  267.                 130: begin DIN  <= #1 DAC_data3[1];  SCLK  <= #1 1'b0; end                        
  268.                 132: begin DIN  <= #1 DAC_data3[0];  SCLK  <= #1 1'b0; end
  269.         134:
  270.         begin
  271.          SCLK  <= #1 1'b0;
  272.    // FSY<=#1 1'b1;
  273.          end
  274.         135:
  275.          begin
  276.           SCLK<=1'b1;
  277.           cishu<=4'd4;
  278.     end         
  279. /************************************************************************/  
  280.                              /*传输 DAC_data4*/
  281. /************************************************************************/
  282.   136:
  283.   begin
  284.                                 DIN  <= #1 DAC_data4[15];
  285.                                 FSY<=1'b0;
  286.                                 SCLK  <= #5  1'b0;
  287.         end
  288.         137,139,141,143,145,147,149,151,153,155,157,159,161,163,165:
  289.           begin
  290.                 SCLK  <= #1  1'b1;
  291.         end
  292.         167:
  293.         begin
  294.                 SCLK  <= #1  1'b1;
  295.            FSY<=#1 1'b1;
  296.         end
  297.            138: begin DIN  <= #1 DAC_data4[14]; SCLK  <= #1 1'b0; end
  298.                 140: begin DIN  <= #1 DAC_data4[13]; SCLK  <= #1 1'b0; end
  299.                 142: begin DIN  <= #1 DAC_data4[12]; SCLK  <= #1 1'b0; end
  300.                 144: begin DIN  <= #1 DAC_data4[11]; SCLK  <= #1 1'b0; end                        
  301.                 146: begin DIN  <= #1 DAC_data4[10]; SCLK  <= #1 1'b0; end
  302.                 148: begin DIN  <= #1 DAC_data4[9];  SCLK  <= #1 1'b0; end
  303.                 150: begin DIN  <= #1 DAC_data4[8];  SCLK  <= #1 1'b0; end
  304.                 152: begin DIN  <= #1 DAC_data4[7];  SCLK  <= #1 1'b0; end        
  305.                 154: begin DIN  <= #1 DAC_data4[6];  SCLK  <= #1 1'b0; end
  306.                 156: begin DIN  <= #1 DAC_data4[5];  SCLK  <= #1 1'b0; end                                
  307.                 158: begin DIN  <= #1 DAC_data4[4];  SCLK  <= #1 1'b0; end
  308.                 160: begin DIN  <= #1 DAC_data4[3];  SCLK  <= #1 1'b0; end
  309.                 162: begin DIN  <= #1 DAC_data4[2];  SCLK  <= #1 1'b0; end
  310.                 164: begin DIN  <= #1 DAC_data4[1];  SCLK  <= #1 1'b0; end                        
  311.                 166: begin DIN  <= #1 DAC_data4[0];  SCLK  <= #1 1'b0; end
  312.         168:
  313.         begin
  314.          SCLK  <= #1 1'b0;
  315.    
  316.          end
  317.         169:                 
  318.          begin
  319.           SCLK<=1'b1;
  320.          // FSY<=#2 1'b1;
  321.           cishu<=4'd5;
  322.     end         
  323. /************************************************************************/  
  324.                              /*传输 DAC_data5*/
  325. /************************************************************************/
  326.   170:
  327.   begin
  328.                                 DIN  <= #1 DAC_data5[15];
  329.                                 FSY<=1'b0;
  330.                                 SCLK  <= #5  1'b0;
  331.         end
  332.         171,173,175,177,179,181,183,185,187,189,191,193,195,197,199:
  333.         begin
  334.                 SCLK  <= #1  1'b1;
  335.         end
  336.         201:
  337.         begin
  338.                 SCLK  <= #1  1'b1;
  339.            FSY<=#1 1'b1;
  340.         end
  341.            172: begin DIN  <= #1 DAC_data5[14]; SCLK  <= #1 1'b0; end
  342.                 174: begin DIN  <= #1 DAC_data5[13]; SCLK  <= #1 1'b0; end
  343.                 176: begin DIN  <= #1 DAC_data5[12]; SCLK  <= #1 1'b0; end
  344.                 178: begin DIN  <= #1 DAC_data5[11]; SCLK  <= #1 1'b0; end                        
  345.                 180: begin DIN  <= #1 DAC_data5[10]; SCLK  <= #1 1'b0; end
  346.                 182: begin DIN  <= #1 DAC_data5[9];  SCLK  <= #1 1'b0; end
  347.                 184: begin DIN  <= #1 DAC_data5[8];  SCLK  <= #1 1'b0; end
  348.                 186: begin DIN  <= #1 DAC_data5[7];  SCLK  <= #1 1'b0; end        
  349.                 188: begin DIN  <= #1 DAC_data5[6];  SCLK  <= #1 1'b0; end
  350.                 190: begin DIN  <= #1 DAC_data5[5];  SCLK  <= #1 1'b0; end                                
  351.                 192: begin DIN  <= #1 DAC_data5[4];  SCLK  <= #1 1'b0; end
  352.                 194: begin DIN  <= #1 DAC_data5[3];  SCLK  <= #1 1'b0; end
  353.                 196: begin DIN  <= #1 DAC_data5[2];  SCLK  <= #1 1'b0; end
  354.                 198: begin DIN  <= #1 DAC_data5[1];  SCLK  <= #1 1'b0; end                        
  355.                 200: begin DIN  <= #1 DAC_data5[0];  SCLK  <= #1 1'b0; end
  356.         202:
  357.         begin
  358.          SCLK  <= #1 1'b0;
  359.    
  360.          end
  361.         203:
  362.          begin
  363.           SCLK<=1'b1;
  364.          // FSY<=#2 1'b1;
  365.           cishu<=4'd6;
  366.     end         
  367. /************************************************************************/  
  368.                              /*传输 DAC_data6*/
  369.   /************************************************************************/
  370.           204:
  371.           begin
  372.                                         DIN  <= #1 DAC_data6[15];
  373.                                         FSY<=1'b0;
  374.                                         SCLK  <= #5 1'b0;
  375.                 end
  376.                 205,207,209,211,213,215,217,219,221,223,225,227,229,231,233:
  377.                 begin
  378.                         SCLK  <= #1  1'b1;
  379.                 end
  380.                 235:
  381.                 begin
  382.                         SCLK  <= #1  1'b1;
  383.                         FSY<=#1 1'b1;
  384.                 end
  385.                    206: begin DIN  <= #1 DAC_data6[14]; SCLK  <= #1 1'b0; end
  386.                         208: begin DIN  <= #1 DAC_data6[13]; SCLK  <= #1 1'b0; end
  387.                         210: begin DIN  <= #1 DAC_data6[12]; SCLK  <= #1 1'b0; end
  388.                         212: begin DIN  <= #1 DAC_data6[11]; SCLK  <= #1 1'b0; end                        
  389.                         214: begin DIN  <= #1 DAC_data6[10]; SCLK  <= #1 1'b0; end
  390.                         216: begin DIN  <= #1 DAC_data6[9];  SCLK  <= #1 1'b0; end
  391.                         218: begin DIN  <= #1 DAC_data6[8];  SCLK  <= #1 1'b0; end
  392.                         220: begin DIN  <= #1 DAC_data6[7];  SCLK  <= #1 1'b0; end        
  393.                         222: begin DIN  <= #1 DAC_data6[6];  SCLK  <= #1 1'b0; end
  394.                         224: begin DIN  <= #1 DAC_data6[5];  SCLK  <= #1 1'b0; end                                
  395.                         226: begin DIN  <= #1 DAC_data6[4];  SCLK  <= #1 1'b0; end
  396.                         228: begin DIN  <= #1 DAC_data6[3];  SCLK  <= #1 1'b0; end
  397.                         230: begin DIN  <= #1 DAC_data6[2];  SCLK  <= #1 1'b0; end
  398.                         232: begin DIN  <= #1 DAC_data6[1];  SCLK  <= #1 1'b0; end                        
  399.                         234: begin DIN  <= #1 DAC_data6[0];  SCLK  <= #1 1'b0; end
  400.                 236:
  401.                 begin
  402.            SCLK  <= #1 1'b0;
  403.    //  FSY<=#1 1'b1;
  404.            end
  405.                 237:
  406.                 begin
  407.            SCLK<=1'b1;
  408.            cishu<=4'd7;
  409.       end         
  410. /************************************************************************/  
  411.                              /*传输 DAC_data7*/
  412.   /************************************************************************/
  413.           238:
  414.           begin
  415.                                         DIN  <= #1 DAC_data7[15];
  416.                                         SCLK  <= #5  1'b0;
  417.                                         FSY<=1'b0;
  418.                 end
  419.                 239,241,243,245,247,249,251,253,255,257,259,261,263,265,267:
  420.                 begin
  421.                         SCLK  <= #1  1'b1;
  422.                 end
  423.                 269:
  424.                 begin
  425.                         SCLK  <= #1  1'b1;
  426.                         FSY<=#1 1'b1;
  427.                 end
  428.                    240: begin DIN  <= #1 DAC_data7[14]; SCLK  <= #1 1'b0; end
  429.                         242: begin DIN  <= #1 DAC_data7[13]; SCLK  <= #1 1'b0; end
  430.                         244: begin DIN  <= #1 DAC_data7[12]; SCLK  <= #1 1'b0; end
  431.                         246: begin DIN  <= #1 DAC_data7[11]; SCLK  <= #1 1'b0; end                        
  432.                         248: begin DIN  <= #1 DAC_data7[10]; SCLK  <= #1 1'b0; end
  433.                         250: begin DIN  <= #1 DAC_data7[9];  SCLK  <= #1 1'b0; end
  434.                         252: begin DIN  <= #1 DAC_data7[8];  SCLK  <= #1 1'b0; end
  435.                         254: begin DIN  <= #1 DAC_data7[7];  SCLK  <= #1 1'b0; end        
  436.                         256: begin DIN  <= #1 DAC_data7[6];  SCLK  <= #1 1'b0; end
  437.                         258: begin DIN  <= #1 DAC_data7[5];  SCLK  <= #1 1'b0; end                                
  438.                         260: begin DIN  <= #1 DAC_data7[4];  SCLK  <= #1 1'b0; end
  439.                         262: begin DIN  <= #1 DAC_data7[3];  SCLK  <= #1 1'b0; end
  440.                         264: begin DIN  <= #1 DAC_data7[2];  SCLK  <= #1 1'b0; end
  441.                         266: begin DIN  <= #1 DAC_data7[1];  SCLK  <= #1 1'b0; end                        
  442.                         268: begin DIN  <= #1 DAC_data7[0];  SCLK  <= #1 1'b0; end
  443.                 270:
  444.            begin
  445.            SCLK  <= #1 1'b0;
  446.      // FSY<=#1 1'b1;
  447.            end         
  448.                 271:         
  449.            begin
  450.            SCLK<=1'b1;
  451.            cishu<=4'd8;
  452.       end
  453.                 default:;        
  454.         endcase
  455. end
  456. endmodule
我写了一个tb文件进行模拟仿真测试,测试代码:
  1. /****************************************************/
  2. /****************************************************/
  3.                 /*  made by Jerry            */
  4. /****************************************************/
  5. /****************************************************/
  6. `timescale 1ns/1ns
  7. `define clock_period 20
  8. module happy_tb;
  9. reg Clk;
  10. reg Rst_n;

  11. wire DIN;  //传输bit
  12. wire FSY;  //数据输入标志信号
  13. wire SCLK; //通信时钟
  14. // wire [3:0]cishu;
  15. //wire en;

  16. happy happy(
  17.     .Clk(Clk),
  18.     .Rst_n(Rst_n),
  19.     .SCLK(SCLK),
  20.     .DIN(DIN),
  21.     .FSY(FSY)
  22.         // .cishu(cishu)
  23. );

  24. initial Clk = 1;
  25. always#(`clock_period/2) Clk=~Clk;

  26. initial begin
  27.   #200;
  28.   Rst_n=1'b0;
  29.   #200;
  30.   Rst_n=1'b1;
  31.   #200000;
  32.   #200;
  33.   Rst_n=1'b0;
  34.   #200;
  35.   Rst_n=1'b1;
  36.   #200000;
  37.   #200;
  38.   Rst_n=1'b0;
  39.   #200;
  40.   Rst_n=1'b1;
  41.   #200000;
  42.   #200;
  43.   Rst_n=1'b0;
  44.   #200;
  45.   Rst_n=1'b1;
  46.   #200000;
  47.   #200000;
  48.   #200;
  49.   Rst_n=1'b0;
  50.   #200;
  51.   Rst_n=1'b1;
  52.   #200000;
  53. $stop;
  54. end
  55. endmodule
  • 仿真.png
  • 波形1.jpg

更多回帖

发帖
×
20
完善资料,
赚取积分