wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3188|回復: 0
打印 上一主題 下一主題
收起左側

CPLD設計PID控制器

[復制鏈接]
跳轉到指定樓層
樓主
使用Verilog語言,編譯成功


  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. // ##################################################

  97. always @(*)
  98.   case (statq[4:2])
  99.     3'b010 : selscale = iscale[7:4];
  100.     3'b100 : selscale = iscale[3:0];
  101.     default : selscale = iscale[11:8];
  102.   endcase

  103. always @(*)
  104.   case (selscale)                                                                                // A scaler that enlarge PID gains
  105.     4'h8 : delta = {{15{mulcq[30]}} ,mulcq};
  106.     4'h9 : delta = {{14{mulcq[30]}} ,mulcq, 1'h0};
  107.     4'ha : delta = {{13{mulcq[30]}} ,mulcq, 2'h0};
  108.     4'hb : delta = {{12{mulcq[30]}} ,mulcq, 3'h0};
  109.     4'hc : delta = {{11{mulcq[30]}} ,mulcq, 4'h0};
  110.     4'hd : delta = {{10{mulcq[30]}} ,mulcq, 5'h0};
  111.     4'he : delta = {{9{mulcq[30]}} ,mulcq, 6'h0};
  112.     4'hf : delta = {{8{mulcq[30]}} ,mulcq, 7'h0};
  113.     4'h1 : delta = {{6{mulcq[30]}} ,mulcq, 9'h0};
  114.     4'h2 : delta = {{5{mulcq[30]}} ,mulcq, 10'h0};
  115.     4'h3 : delta = {{4{mulcq[30]}} ,mulcq, 11'h0};
  116.     4'h4 : delta = {{3{mulcq[30]}} ,mulcq, 12'h0};
  117.     4'h5 : delta = {{2{mulcq[30]}} ,mulcq, 13'h0};
  118.     4'h6 : delta = {{1{mulcq[30]}} ,mulcq, 14'h0};
  119.     4'h7 : delta = {mulcq, 15'h0};
  120.    default : delta = {{7{mulcq[30]}} ,mulcq, 8'h0};
  121.   endcase

  122. always @(posedge iclk)
  123.   if (irst) deltaq <= 'h0;
  124.   else deltaq <= delta;

  125. //##################################
  126. always @(posedge iclk)
  127.   if (irst) deltasumq <= 'h0;
  128.   else if (statq[0]) deltasumq <= 'h0;
  129.   else if (|statq[5:3]) deltasumq <= deltasumq + {deltaq[45],deltaq[45],deltaq};
  130.   else deltasumq <= deltasumq;

  131. //##################################
  132. assign satdeltasum = deltasumq[47] ? (&deltasumq[47:38] ? deltasumq[38:0] : 39'h40_0000_0001)
  133.                                    : (|deltasumq[47:38] ? 39'h3f_ffff_ffff : deltasumq[38:0]);

  134. assign acc = {accq[38],accq} + {satdeltasum[38],satdeltasum};

  135. always @(*)
  136.   case (acc[39:38])
  137.     2'b10 : satacc = 39'h40_0000_0001;
  138.     2'b01 : satacc = 39'h3f_ffff_ffff;
  139.     default : satacc  = acc[38:0];
  140.   endcase

  141. always @(posedge iclk)
  142.   if (irst) begin
  143.     ordy <= 'h0;
  144.     accq <= {isynvalue,23'h0};        // It is the last output result
  145.     oresult <= isynvalue;
  146.   end else begin
  147.     ordy <= statq[7];
  148.     accq <= statq[7] ? {fixresult,accq[22:0]} : (statq[6] ? satacc : accq);
  149.     oresult <= statq[7] ? fixresult : oresult;
  150.   end

  151. //##########################################

  152. always @(posedge iclk)
  153.   if (irst) begin
  154.     statq <= 'h0;                        // used to record calculation status, it take 6 cycles to do 1 PID iteration
  155.     mulcq <= 'h0;                        // A flip-flop to stored result from multiplier
  156.   end else begin
  157.     statq <= {statq[6:0],iupdate};
  158.     mulcq <= mulc;
  159.   end

  160. assign absresult = accq[38] ? ~accq[38:23] : accq[38:23];
  161. assign chklimit = absresult > ilimit;
  162. assign fixresult = chklimit ? (accq[38] ? ~ilimit : ilimit) : accq[38:23];  

  163. assign oreferr = errq;


  164. endmodule

  165. `ifdef USETESTBENCH
  166. module tb_pidctrl3();

  167. reg clk;
  168. reg rst;
  169. reg [15:0] setpoint;
  170. wire [15:0] feedbackx;
  171. wire [15:0] feedbacky;
  172. reg [4:0] noise;
  173. wire [15:0] resultx;
  174. wire [15:0] resulty;
  175. reg update;

  176. initial begin
  177.   clk = 0;
  178.   forever clk = #5 ~clk;
  179. end

  180. initial begin
  181.   rst = 1;
  182.   setpoint = 0;
  183.   #1000;
  184.   rst = 0;
  185.   setpoint = 16'h100;
  186.   #100000;
  187.   setpoint = 16'h200;
  188.   #100000;
  189.   setpoint = 16'hfe00;
  190.   #100000;
  191.   setpoint = 16'hfd00;
  192.   #100000;
  193.   setpoint = 16'h400;
  194.   #100000;
  195.   setpoint = 16'h7ff;
  196.   #100000;
  197.   setpoint = 16'hf800;
  198.   #100000;
  199.   setpoint = 16'h100;
  200.   #100000;
  201.   setpoint = 16'hf000;
  202.   #100000;
  203.   setpoint = 16'h5000;
  204.   #100000;
  205. end

  206. initial begin
  207.   noise = 0;
  208.   update = 0;
  209.   forever begin
  210.     noise = $random();  
  211.     update = 1;
  212.     #10;
  213.     update = 0;
  214.     #100;
  215.   end
  216. end

  217. assign feedbackx = { {5{resultx[15]}},resultx[15:5]} + {{11{noise[4]}},noise};
  218. assign feedbacky = { {5{resulty[15]}},resulty[15:5]} + {{11{noise[4]}},noise};

  219. pidctrl3 pidctrl3 (
  220. .isetpoint(setpoint),  // desire quater period
  221. .ifeedback(feedbackx),  // quater period measured
  222. .iupdate(update),
  223. .iclk(clk),
  224. .irst(rst),
  225. .ikp(16'h4000),
  226. .iki(16'h3000),
  227. .ikd(16'h2000),
  228. .isynvalue(16'h0),
  229. .iscale(12'heee),
  230. .ilimit(16'h2000),
  231. .ierrlimit(16'hffff),
  232. .oreferr(),
  233. .oresult(resultx),    // oresultput flux/strength
  234. .ordy()
  235. );

  236. pidctrl pidctrl (
  237. .isetpoint(setpoint),  // desire quater period
  238. .ifeedback(feedbacky),  // quater period measured
  239. .iupdate(update),
  240. .iclk(clk),
  241. .irst(rst),
  242. .ikp(16'h4000),
  243. .iki(16'h3000),
  244. .ikd(16'h2000),
  245. .isynvalue(16'h0),
  246. .ilimiter(16'h7fff),
  247. .iscaler(4'he),
  248. .oreferr(),
  249. .oresult(resulty),    // oresultput flux/strength
  250. .ordy()
  251. );

  252. endmodule
  253. `endif
復制代碼

51hei.png (10.91 KB, 下載次數: 195)

51hei.png

TBPID.zip

1.36 MB, 下載次數: 15, 下載積分: 黑幣 -5

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
四虎成人在线观看| 欧美日韩亚洲丝袜制服| 欧美视频久久久| 色综合久久五月| 伊人久久99| 成人福利网站在线观看11| 精品一区二区亚洲| 中文字幕色av一区二区三区| 日本午夜一区二区| 天天做夜夜做人人爱精品| 国产丝袜精品丝袜| 成本人h片动漫网站在线观看| 日韩在线三级| 巨人精品**| 新版中文在线官网| 无码日韩精品一区二区| 丝袜熟女一区二区三区| 国产视频九色蝌蚪| 欧美精品亚洲| 国产精品一区二区在线| 欧美猛交ⅹxxx乱大交视频| 欧美本精品男人aⅴ天堂| 亚洲成人动漫精品| 精品成人免费视频| 亚洲欧美日韩国产成人| 动漫精品一区二区| 91免费版在线| 免费亚洲一区| 欧美aaaa视频| 国产精品午夜av| h1515四虎成人| 97人妻精品一区二区三区软件| 亚洲乱码国产乱码精品精大量| 欧在线一二三四区| av一区二区三区免费观看| 欧亚一区二区| 老司机在线视频二区| 国产美女av| 91超碰在线观看| 欧美 日韩 国产 成人 在线 91| 日本黄色一级视频| 欧美人妻精品一区二区免费看| 在线观看国产三级| 天天操夜夜操很很操| 成人久久久久久久久| 国产精品视频网站在线观看| 少妇精品久久久久久久久久| 亚洲自拍在线观看| 91免费国产网站| 国产精品久久久久久久久久久不卡| 欧美国产激情18| 久久亚洲国产精品| 精品国产一区二区在线| 日韩在线激情视频| 在线国产精品播放| 一个人www欧美| 亚洲视频专区在线| 亚洲片在线资源| 亚洲视频精品在线| 亚洲欧美日韩一区在线| 亚洲欧美在线x视频| 亚洲美女福利视频网站| 日韩久久午夜影院| 亚洲美女av在线播放| 亚洲欧美制服中文字幕| 一本一本久久a久久精品综合小说| 亚洲欧美国产精品久久久久久久 | 欧美娇小性xxxx| 日韩亚洲天堂| 国产欧美日韩精品综合| 高清国语自产拍免费视频国产| 国产精品美女视频免费观看软件| av成人免费网站| 亚洲国产天堂av| 性欧美精品中出| 国产又大又粗又爽的毛片| 中国一级特黄录像播放| 国产精品1000部啪视频| 精品人妻一区二区三区香蕉| 成人免费网站黄| 小嫩苞一区二区三区| 91porn在线视频| 欧美激情亚洲综合| 午夜久久久久久久久久影院| 国产三级三级在线观看| 动漫av网站免费观看| 欧美成人激情在线| 欧美国产日韩精品| 97婷婷涩涩精品一区| 欧美在线视频观看免费网站| 国产欧美日韩高清| 韩国成人av| 久久天天东北熟女毛茸茸| 六月婷婷在线视频| 午夜激情影院在线观看| 黄色正能量网站| 老女人性淫交视频| 中文字幕乱码人妻无码久久| 黑人精品一区二区三区| 欧美日韩看片| 天天草天天爽| 成人精品一区二区三区校园激情| 国产ktv在线视频| 日韩国产在线不卡视频| 不卡中文一二三区| 久久天堂精品| 26uuu亚洲| 日韩欧美在线中文字幕| 亚洲精品国产精品乱码不99按摩| 久久777国产线看观看精品| 国产精品主播视频| 亚洲成人第一| 看看黄色一级片| 永久免费未视频| 午夜激情av在线| 又黄又色的网站| 久久亚洲AV无码| 午夜久久久久久久久久| 免费人成福利播放| 国内三级在线观看| 91国内外精品自在线播放| 日韩欧美黄色| 日精品一区二区三区| 国产亚洲精品中文字幕| 欧美性猛交丰臀xxxxx网站| 亚洲男人天天操| 国产精品久久久久久久电影| 日本最新一区二区三区视频观看| 日本wwww视频| 亚洲色图 激情小说| 91国内精品视频| 任你操视频在线观看| 国产三级视频在线| 99精品国产九九国产精品| 狠狠爱www人成狠狠爱综合网 | 秋霞av鲁丝片一区二区| 妞干网福利视频| 黄色av网站在线看| 成人污版视频| 美女精品在线| 国产精品美女久久久久av爽李琼 | 久久美女高清视频| 欧美日韩亚洲综合| 国内精品一区二区三区四区| 翔田千里亚洲一二三区| 韩国av中国字幕| 最新国产中文字幕| www.狠狠操| 美女av在线免费看| 性xxxx欧美老肥妇牲乱| 久久亚洲影视婷婷| 日韩小视频在线观看专区| 欧美中文字幕在线播放| 黄色录像特级片| 亚洲黄色在线网站| 亚洲精品一区二区三区不卡| 午夜视频99| 免费一级欧美在线大片| 美女爽到高潮91| 欧美在线不卡视频| 欧美一区二区.| 国产午夜大地久久| 久久免费视频播放| 九九夜夜操妹子| 国产ktv在线视频| 欧美日韩免费观看一区=区三区| 国产精品你懂的在线| 一区二区在线视频播放| 日本10禁啪啪无遮挡免费一区二区| wwwxxx色| www.亚洲欧美| 国产中文字幕在线| 久久久综合色| 一区二区三区四区高清精品免费观看 | 亚洲啪啪综合av一区二区三区| 亚洲国产高清自拍| 国产伦精品一区二区三| 星空大象在线观看免费播放| 高清乱码毛片入口| 伊人在线视频| 国产精品99一区二区| 亚洲午夜精品网| 国产91成人在在线播放| 黄色三级视频片| 国产又粗又大又黄| 理论在线观看| 一二三区不卡| 欧美日韩激情视频8区| 日本一区二区在线播放| 亚洲精品20p| 性一交一乱一精一晶| 久久久久精彩视频| 5858p先锋影音资源网| 激情亚洲小说| 成人自拍视频在线观看| 亚洲老头同性xxxxx| 亚洲精品二区| 久久精品国产av一区二区三区| jizz视频播放器| 国产午夜精品一区在线观看| 成人性生交大片免费| 亚洲免费电影一区| 大陆极品少妇内射aaaaaa| 国产精品视频免费播放| 狠狠操在线视频| av中文字幕一区二区| 一区二区三区四区五区视频在线观看| 97视频在线观看免费| 男女视频在线观看网站| 影音先锋在线资源中文字幕| 性爽视频在线| 成人av在线网| 九九热在线精品视频| jizz18女人| 久久精品国产麻豆| 91麻豆精品国产综合久久久| 亚洲国产精华液网站w| 午夜精品一区二区三区在线视频| 中文字幕亚洲影院| 欧美色图自拍| 91成人福利社区| 国产亚洲欧洲一区高清在线观看| 国内精品视频一区| 你懂的在线观看网站| 美女网站免费看| 亚洲大片精品免费| 午夜精品一区二区三区电影天堂| 99国产精品久久久久老师| 国产67194| 台湾av在线二三区观看| 国产色综合网| 亚洲午夜未删减在线观看| 红桃av在线播放| 中国视频免男男gay| 粉嫩av国产一区二区三区| 最新久久zyz资源站| 亚洲综合在线做性| 日本三级黄色大片| 乱人伦中文视频在线| 国产精品亚洲视频| 91精品国产91久久久久| 中文文字幕文字幕高清| 91免费日韩| 国内揄拍国内精品久久| 精品视频久久久久久久| 欧美成人福利在线观看| 狠狠色噜噜狠狠狠狠888奇米| 成人嫩草影院| 欧美一区二区三区视频在线观看| 国产在线视频综合| 亚洲男人天堂影院| 北条麻妃一区二区三区在线观看 | 国产欧美日韩亚洲| 激情视频网站在线观看| 邻家有女韩剧在线观看国语| 亚洲欧美视频一区二区三区| 亚洲欧美日韩中文视频| 亚洲欧美日韩精品一区| 日本jizz中国| 永久91嫩草亚洲精品人人| 亚洲激情成人网| 在线免费av播放| 国产成人亚洲精品播放器下载| 国产欧美日韩影院| 欧美xxxxxxxx| 伊人国产在线视频| www.99av| 日本中文字幕一区二区有限公司| 久久影视免费观看 | 91亚洲一区二区| 一本大道五月香蕉| 99精品视频在线观看播放| 亚洲成年人在线| 中文字幕 欧美日韩| jizzjizz大全| 中文一区在线| 欧美激情啊啊啊| 麻豆明星ai换脸视频| 国产鲁鲁视频在线观看特色| 久久久久国产免费免费 | 久久夜色精品国产亚洲aⅴ| www..com.cn蕾丝视频在线观看免费版 | 久久99精品久久| 91视频观看免费| 国产精品久久波多野结衣| 国产片高清在线观看| 99精品中文字幕在线不卡| 91精品国产色综合久久| 九九精品久久久| 淫视频在线观看| 国产成人午夜99999| 成人在线免费观看一区| 欧洲av在线播放| 久久在线视频免费观看| 久久久成人av| 日本黄色小说视频| 九色porny自拍视频在线播放| 亚洲高清视频中文字幕| 六月丁香激情网| 成年人视频在线网站| 久久成人免费日本黄色| 亚洲伊人成综合成人网| 欧美一级特黄aaa| 天天干天天操av| 精品中文一区| 在线播放国产一区二区三区| 国产亚洲精品熟女国产成人| 成人欧美在线| 五月天久久比比资源色| 簧片在线免费看| 免费理论片在线观看播放老| 亚洲国产激情av| 17c丨国产丨精品视频| 男男互摸gay网站| 99久免费精品视频在线观看| 欧美在线日韩精品| 91av福利| 粉嫩在线一区二区三区视频| 欧美一区激情视频在线观看| 91视频网址免费观看| 精品一区二区三区欧美| 蜜桃av色综合| 欧美日韩一区二区三区四区在线观看| 午夜影院欧美| 日韩视频第一页| 日本熟妇乱子伦xxxx| 欧美经典一区| 一区二区三区天堂av| 538任你躁在线精品视频网站| 国产伊人久久| 亚洲精品久久久久久下一站| 国产欧美综合一区| 天天噜夜夜操| 91麻豆免费视频| 国产免费xxx| 成人频在线观看| 亚洲精品乱码久久久久| 久久6免费视频| 成人女同在线观看| 日韩一级片在线观看| 三级黄色在线观看| a级日韩大片| 第84页国产精品| 午夜激情在线| 欧美日韩亚洲天堂| 亚洲色偷偷色噜噜狠狠99网| 青春草在线视频| 欧美精品亚洲二区| 国产三级精品三级观看| 亚洲五码在线| 欧美日本黄视频| 精品久久久久成人码免费动漫| 一区福利视频| 国产一区免费在线观看| 九九热视频在线| 欧美韩国日本综合| 亚洲精品一区二区三区婷婷月| 1级黄色大片儿| 日韩欧美电影| 成人女保姆的销魂服务| 久久一区二区三区av| 伊人国产视频| 国产美女视频91| 91国在线高清视频| 免费国产在线观看| 91国偷自产一区二区使用方法| 四虎国产成人精品免费一女五男| jazzjazz国产精品久久| 欧美在线中文字幕| 国产精品美女一区二区视频| 久久精品亚洲一区二区三区浴池| 色乱码一区二区三区在线| 欧美少妇网站| 久久精品99久久香蕉国产色戒| 亚洲a视频在线| 国产一区二区91| 欧美三级一级片| 欧美男人天堂| 欧美裸身视频免费观看| 综合国产第二页| 国产色产综合产在线视频| 91蝌蚪视频在线| 亚洲一区二区三区免费| 国产精品美乳一区二区免费| 操女生的网站| 精品久久国产字幕高潮| 57pao国产成永久免费视频| 免费高潮视频95在线观看网站| 国产一区二区三区在线观看视频| 国产精品无码一区二区桃花视频| 久久国产欧美日韩精品| 免费高清在线观看免费| 综合另类专区| 欧美精品videosex性欧美| 国产亚洲精品久久久久久移动网络| 国产麻豆精品95视频| 91看片在线免费观看| 亚洲国产精选| 国产精品天天狠天天看| 美女张开让男人捅|