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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3153|回復: 0
收起左側

CPLD設計PID控制器

[復制鏈接]
ID:682837 發表于 2021-5-27 10:17 | 顯示全部樓層 |閱讀模式
使用Verilog語言,編譯成功
dce2f98ce79a3af7edbd2ba00f1c7050.png

  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

TBPID.zip

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

評分

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

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
久久成人国产精品入口| jvid福利写真一区二区三区| 中日韩男男gay无套| 麻豆国产欧美一区二区三区| 粉嫩av一区二区三区在线播放 | 99中文字幕在线观看| 男人透女人免费视频| 国产精品日日摸夜夜爽| 538任你躁在线精品视频网站| 国产日韩在线免费观看| 亚洲最大最好的私人影剧院| 污黄视频在线观看| 中出在线观看| 欧美精品日日操| 日韩精品福利一区二区三区| 夜夜嗨av一区二区三区网站四季av| 国产成人久久精品77777最新版本| 成人欧美一区二区三区白人| 欧美三级三级三级| 亚洲最大中文字幕| 国产精品久久久久久久久男| 日韩精品欧美在线| 向日葵污视频在线观看| 少妇被躁爽到高潮无码文| 国产精品久久久久久久久久久久久久久久久久 | 自拍偷拍色综合| www.四虎.com| 香蕉视频在线观看网站| 日韩电影网站| 久久国产成人精品| 日本精品不卡| 国产午夜一区| 国产乱子轮精品视频| 亚洲综合视频在线| 日韩精品在线播放| 国产精品免费观看在线| 青青视频免费在线观看| 中国黄色a级片| 91女人18毛片水多国产| 黄色片免费大全| yellow91字幕网在线| 欧美自拍视频| 国产尤物一区二区| 日韩欧美一区二区三区| 日韩视频在线一区| 欧美日韩一区在线观看视频| 国产黄色一区二区三区| 天堂网视频在线| 最新天堂网www| av毛片在线免费看| 日韩成人三级| 久久精品免费在线观看| 日韩一区二区高清| 国产精品va在线播放| 浮妇高潮喷白浆视频| 深夜福利影院在线观看| 精品a在线观看| 免费人成在线观看播放视频| 综合亚洲自拍| 91啪九色porn原创视频在线观看| 欧美成人精品1314www| 国产在线观看不卡| 黄色永久免费网站| 亚洲无码精品在线播放| 蜜桃视频免费网站| 亚洲一区 二区| 懂色av一区二区夜夜嗨| 欧美成人国产一区二区| 国产v亚洲v天堂无码| 日本少妇xxxx软件| 人妻中文字幕一区| 在线看av的网址| 亚洲综合自拍| 亚洲成a人在线观看| 2019中文字幕全在线观看| 亚洲中文字幕无码专区| 国产99免费视频| av三级在线播放| 午夜免费性福利| av成人在线网站| 国产一区二区美女诱惑| 日韩一二三四区| 国产伦精品一区二区三区免 | 亚洲黄色小视频| 久久99久久亚洲国产| 妺妺窝人体色777777| 久久精品视频国产| 高清hd写真福利在线播放| 日韩三级久久| www久久精品| 亚洲欧美中文在线视频| 四虎永久国产精品| 免费精品在线视频| 国产精品亚洲综合久久小说 | 性色av一区二区怡红| 性做久久久久久| 午夜精品久久久久久99热软件| a级片一区二区| 国产亚洲成人av| 丁香视频五月| 宅男深夜国产| 青青草综合网| 亚洲三级理论片| 色综合老司机第九色激情| 日本a在线天堂| 你懂的国产视频| 色成人亚洲网| 欧美激情精品| 国产99久久久久久免费看农村| 亚洲人成五月天| 一区视频二区视频| 伊人365影院| 激情视频网址| 一呦二呦三呦国产精品| 国产精品国产a| 午夜免费日韩视频| 国产真人无码作爱视频免费| 中字幕一区二区三区乱码| 灌醉mj刚成年的大学平面模特| 97人人做人人爽香蕉精品| 国内一区二区视频| 日韩久久精品电影| 亚洲欧美一二三| 日韩 欧美 综合| 一不卡在线视频| 欧美日韩视频免费观看| 久久午夜免费电影| 欧美日韩第一页| 亚洲成熟丰满熟妇高潮xxxxx| 国产又大又黑又粗| 免费网站成人| 青娱乐精品视频在线| 亚洲精品在线电影| 7799精品视频| 影音先锋亚洲视频| 欧美日韩精品区| 一级视频在线观看视频在线啦啦| 色偷偷综合网| 精品色蜜蜜精品视频在线观看| 日本精品一区二区三区在线播放视频| 国产aⅴ爽av久久久久| 亚洲av毛片成人精品| 国产无遮挡裸体视频在线观看| 国内精品第一页| 国产午夜精品免费一区二区三区| 日产精品久久久久久久蜜臀| 波多野结衣爱爱| 性xxxfreexxxx性欧美| 免费在线观看精品| 一本色道久久88综合日韩精品| 国产精品国产亚洲精品看不卡| 999久久久久久| av在线视屏| 成人av在线播放网址| 欧美在线精品免播放器视频| 中文字幕在线视频播放| 免费黄色小视频| 欧美三级午夜理伦三级在线观看| 亚洲影视资源网| 国产一区二区在线免费| 日本人亚洲人jjzzjjz| a级毛片免费高清视频| 欧美成人中文| 精品久久久久久久久久久久久久久 | 成人网6969conwww| 深夜视频一区二区| 国产精品色眯眯| 国产日韩在线视频| 日本污视频网站| 免费黄网站在线观看| 母乳一区在线观看| 最新国产成人av网站网址麻豆| 久久人人爽av| 偷拍国模大尺度视频在线播放| 成人在线tv视频| 欧美高清你懂得| 又大又硬又爽免费视频| 亚洲一区免费在线| 成人自拍在线| 欧美性生交xxxxx久久久| 视频一区免费观看| 蜜臀av在线观看| 成人97精品毛片免费看| 极品少妇一区二区三区| 欧美日韩国产系列| 国产成人永久免费视频| 亚洲天堂在线视频观看| 2020国产精品极品色在线观看| 欧美主播一区二区三区| 欧美视频在线第一页| 男人用机机桶女人| 日韩av网址大全| 欧美一区二区三区小说| 能在线观看的av| 国产一级影视| 在线欧美日韩| 日韩网站免费观看高清| 3d动漫精品啪啪一区二区下载| 欧美激情图区| 国产麻豆午夜三级精品| 国产aⅴ夜夜欢一区二区三区 | 亚洲成av人电影| 精品999在线播放| 天美一区二区三区| 男裸体无遮挡网站| 久久国产毛片| 欧美激情第一页xxx| 三级av在线免费观看| 二区三区四区高清视频在线观看| 成人av中文字幕| 91在线精品播放| 国产无遮挡又黄又爽又色视频| 日本在线精品| 色欧美乱欧美15图片| 青青草成人免费在线视频| 国产男女无套在线播放| 欧美伊人久久| 中文字幕日韩专区| av黄色在线免费观看| 91网页在线观看| 国产人妖乱国产精品人妖| 四虎永久在线精品免费一区二区| 顶级嫩模一区二区三区| 欧美一区二区麻豆红桃视频| 亚洲免费视频网站| 女人被狂躁c到高潮| 95在线视频| 国产精品欧美综合在线| 日韩精品一区二区免费| 一个色在线视频| 乱人伦精品视频在线观看| 97视频色精品| 亚洲黄色免费观看| 日韩第二十一页| 亚洲精品一区二区三区蜜桃下载| 国产精品99精品无码视亚| 免费在线毛片| 美女av一区| 亚洲国产精彩中文乱码av| 欧美一区二区免费在线观看| 国产毛片av在线| 国产精品网站在线| 在线视频不卡一区二区三区| www.91| 日韩精品91亚洲二区在线观看| 国产成人精品免费久久久久| 国产又大又黄又粗| 视频一区欧美| 久久精品中文字幕电影| 精品无码人妻一区二区三区| 久久久成人av毛片免费观看| 9191精品国产综合久久久久久| 182午夜在线观看| 天天综合视频在线观看| 一区二区不卡在线播放 | 国产伦精品一区二区三区高清版禁 | 精品久久国产一区| 亚洲第一视频在线观看| 亚洲色图欧美色| 亚洲欧美电影| 欧美精品tushy高清| 日韩黄色中文字幕| av亚洲一区二区三区| 欧美一级在线免费| 日本二区在线观看| 怡红院成人在线| 欧美日本一区二区| 四虎影视一区二区| 黑人一区二区三区| 亚洲韩国欧洲国产日产av| 欧美福利在线视频| 成人国产精选| 欧美日韩一本到| www.xx日本| 国产不卡精品| 在线中文字幕日韩| 一级做a爰片久久毛片| 丝袜av一区| 久久精品在线视频| 人妻视频一区二区三区| aa亚洲婷婷| 狠狠色伊人亚洲综合网站色| www.国产自拍| 风间由美一区二区三区在线观看| 国产爆乳无码一区二区麻豆| h动漫在线视频| 亚洲精品日韩一| 手机精品视频在线| 大桥未久在线播放| 欧美一区二区三区白人| 日本一区二区三区免费看| 岛国爱情动作片在线| 91丝袜高跟美女视频| 男人添女人下面高潮视频| 日本中文字幕一区二区有码在线 | 欧美人与性动交α欧美精品济南到| 欧亚洲嫩模精品一区三区| 黄色免费视频网站| 欧美日韩五区| 中文字幕视频在线免费欧美日韩综合在线看 | 最新中文字幕av专区| 亚洲日本在线a| www.51色.com| 一区二区电影免费观看| 亚洲欧美在线看| 国产一级特黄毛片| 亚洲欧美一级二级三级| 99re国产| 国内一级毛片| 国产精品久久久久久亚洲伦| 久久黄色片网站| 中文在线а√在线8| 国产亚洲精品一区二555| 中文字幕日韩经典| 亚洲在线电影| 亚洲一一在线| 欧美白嫩的18sex少妇| 欧美一区三区二区| 久久一二三四区| 久久久久久久久久久妇女| 成人在线视频网址| 99爱免费视频| 亚洲精品ww久久久久久p站 | 能在线观看的av| 国模雨婷捆绑高清在线| 亚洲乱码av中文一区二区| 中文字幕在线网站| 久久久久.com| 免费国产成人看片在线| 国产精品秘入口| 精品久久人人做人人爰| 中文在线字幕av| 国产欧美日韩亚洲一区二区三区| 欧美日韩在线一区二区三区| 日日噜噜噜夜夜爽爽狠狠| 4438成人网| 亚洲黄网在线观看| 日韩激情视频在线观看| 欧美亚洲黄色片| av成人 com a| 97在线免费观看| 高清国语自产拍免费视频国产| 国产精品视频观看| 中文字幕乱码在线| 成人资源在线播放| 久久久精品动漫| 视频一区二区三区在线看免费看| 日韩午夜av电影| 亚洲一区二区天堂| 蜜桃在线一区二区三区| 日本不卡一区在线| 久久久久久亚洲精品美女| 欧美日韩一二三四五区| 在线免费看污网站| 成人精品毛片| 成人一区二区在线| 二区在线视频| 久久视频精品在线| 国产麻豆视频网站| 亚洲国产精品精华液网站| 欧美黄色一级网站| 99久久这里只有精品| 欧美黑人在线观看| 91精品xxx在线观看| 国产成人精品综合久久久| heisi视频网在线观看| 欧美一级片在线| 丰满岳乱妇国产精品一区| 久久亚洲精品国产精品紫薇| 波多野吉衣中文字幕| 伊人激情综合| 国产成人精品视频免费看| 欧美高清你懂的| 亚洲r级在线观看| 最近最新mv在线观看免费高清| 亚洲精品视频中文字幕| 中文字幕国产欧美| 亚洲风情在线资源站| 在线观看中文字幕视频| 久久精品99国产精品日本| www.亚洲自拍| 国产a久久精品一区二区三区| 亚洲成人午夜在线| 亚洲精品88| 国产日韩一区二区| 国内精品久久久久国产| 久久全国免费视频| 黄色网免费看| 亚洲人成电影在线| 国产极品嫩模在线视频一区| 色天天综合久久久久综合片| 在线免费观看av片| 国产iv一区二区三区| 精品无码久久久久成人漫画| 日韩av午夜在线观看| 三级网站免费看| 亚洲欧美一级二级三级| 杨幂一区二区国产精品| 91精品亚洲| 日本三区在线观看|