芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

飞芯科技-芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

芯片破解CPLD设计PID控制器

  1. 芯片破解timescale 1ns/100ps//时间尺度

  2. 芯片破解module pidctrl3 (
  3. isetpoint,  // desire quater period    期望四分之一周期
  4. ifeedback,  // quater period measured  四分之一周期测量
  5. iupdate,
  6. iclk,
  7. irst,
  8. ikp,
  9. iki,
  10. ikd,
  11. isynvalue,
  12. iscale,
  13. ilimit,
  14. ierrlimit,
  15. oreferr,
  16. oresult,    // oresultput flux/strength溢出/强度
  17. ordy
  18. );

  19. 芯片破解input [15:0] isetpoint;
  20. input [15:0] ifeedback;
  21. input iupdate;
  22. input iclk;
  23. input irst;         
  24. input [15:0] ikp;       
  25. input [15:0] iki;   
  26. input [15:0] ikd;   
  27. input [15:0] isynvalue;
  28. input [11:0] iscale;
  29. input [15:0] ilimit;
  30. input [15:0] ierrlimit;
  31. output [15:0] oreferr;
  32. output [15:0] oresult;
  33. output ordy;

  34. reg [15:0] mula;
  35. reg [15:0] mulb;
  36. wire [30:0] mulc;
  37. reg [30:0] mulcq;
  38. reg [38:0] accq;
  39. wire [39:0] acc;
  40. reg [27:0] integralq;
  41. reg ordy;
  42. reg [7:0] statq;
  43. reg [15:0] errq;
  44. wire [16:0] tmperr;
  45. wire [16:0] tmperrabs;
  46. reg [15:0] derivq;
  47. wire chklimit;
  48. reg [45:0] delta;
  49. reg [45:0] deltaq;
  50. reg [47:0] deltasumq;
  51. wire [38:0] satdeltasum;
  52. wire [15:0] saterr;
  53. reg [15:0] saterrq;
  54. wire [15:0] effectiveerr;
  55. reg [38:0] satacc;
  56. reg [3:0] selscale;
  57. wire [15:0] fixresult;
  58. wire [15:0] absresult;
  59. reg [15:0] oresult;
  60. wire oversat;


  61. assign tmperr = {isetpoint[15],isetpoint} - {ifeedback[15],ifeedback};
  62. assign tmperrabs = tmperr[16] ? ~tmperr : tmperr;
  63. assign oversat = tmperrabs > {ierrlimit[15],ierrlimit};
  64. assign saterr = tmperr[16] ? (oversat ? ~ierrlimit : tmperr[15:0]) :
  65.                              (oversat ?  ierrlimit : tmperr[15:0]);

  66. // always @(*)
  67. //   case (err[16:15])
  68. //     2'b01 : saterr = 16'h7fff;
  69. //     2'b10 : saterr = 16'h8001;
  70. //     default : saterr = err[15:0];
  71. //   endcase

  72. always @(posedge iclk)
  73.   if (irst) saterrq <= 'h0;
  74.   else saterrq <= iupdate ? saterr : saterrq;

  75. //##################################################################

  76. always @(posedge iclk)
  77.   if (irst) begin
  78.     errq <= 'h0;                        // it records errors between feedbacks and targets
  79.     derivq <= 'h0;                        // it records the changes of errq
  80.   end else begin
  81.     errq <= statq[0] ? saterrq : errq;
  82.     derivq <= statq[0] ? saterrq - errq : derivq;
  83.   end

  84. //##################################################################

  85. always @(*)                                        // To save the number mulipliers, one single multiplier is time-multiplexed
  86.    case (statq[3:1])
  87.      3'b001 : begin mula = errq; mulb = ikp; end                                // perform PID, proportional calculation
  88.      3'b010 : begin mula = integralq[27:12]; mulb = iki; end        // perform PID, integral calculation
  89.      3'b100 : begin mula = derivq; mulb = ikd; end                                // perform PID, derivative calculation
  90.     default : begin mula = 'h0; mulb = 'h0; end
  91.    endcase

  92. assign mulc = {{15{mula[15]}},mula} * {{15{mulb[15]}},mulb};

  93. always @(posedge iclk)
  94.   if (irst) integralq <= 'h0;                // it records the sum of recent errq
  95.   else integralq <= statq[1] ? integralq + {{12{errq[15]}},errq} - {{12{integralq[27]}},integralq[27:12]} : integralq;  

  96. // ##################################################



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.feixindz.com
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信