女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于FPGA實現FOC算法之PWM模塊設計

FPGA研究院 ? 來源:FPGA之旅 ? 2025-07-17 15:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一.簡介

哈嘍,大家好,從今天開始正式帶領大家從零到一,在FPGA平臺上實現FOC算法,整個算法的框架如下圖所示,如果大家對算法的原理不是特別清楚的話,可以先去百度上學習一下,本教程著重介紹實現過程,弱化原理的介紹。那么本文將從PWM模塊開始進入FOC算法中去。

6faaa3e0-5c54-11f0-baa5-92fbcf53809c.png

二. PWM模塊設計

我們知道有些驅動芯片是需要輸入互補的PWM,例如FD6288,而有些驅動芯片則只需要輸入PWM,芯片內部會自動將其轉為互補的PWM進行工作,例如DRV8313和MP6540。單路FOC開發板使用的是MP6540,多路電機驅動板使用的是FD6288,因此設計的PWM模塊需要兼容這兩種模式。

1. 模塊端口信號

模塊端口信號如下所示,命名和工作模式借鑒了STM32定時器的工作方式。

moduletimer_top #(
 parameter   DEFAULT_ARR  =16'd1500 , //5000
  parameter    DEFAULT_CCR   = 16'd750  , //2500
 parameter   COUNT_MODE   ="UP"   , //UP DOWN CENTRE
 parameter   TRIG_ENABLE  ="ENABLE" , //ENABLE DISABLE
 parameter   PWM_OUT    ="NONE"  , //NONEP PN
 parameter   PWM_OUT_MODE  ="MODE1"  , //MODE1 MODE2
 parameter   PWM_DEATH_TIME =3'd0     // 0 ~ 10 sys_clk
)(
  input      sys_clk_i      , 
  input      sys_rst_n_i     ,


  input      pwm_clk_200M_i   ,


  input      timer_wr_type_i   ,
  input      timer_write_en_i  ,
  input[15:0]   timer_write_data_i ,
  input      timer_read_en_i   ,
  output[15:0]  timer_read_data_o  ,


  output     timer_trig_o    ,
  output     timer_pwm_o     ,
  output reg   timer_pwm_n_o   
);

首先給大家介紹一下端口參數

DEFAULT_ARR: 默認的定時器計數周期。

DEFAULT_CCR: 默認的定時器比較輸出值。

COUNT_MODE: 定時器工作模式,分為向上計數、向下計數和中心計數三種模式,這是和STM32的三種模式保持一致。

TRIG_ENABLE:中斷輸出是否使能,當計數器計數到CCR寄存器值的時候,是否輸出一個中斷信號。

PWM_OUT: PWM輸出,分為三種模式,其一是不輸出,其二是只輸出一路PWM,其三是輸出互補兩路PWM。

PWM_OUT_MODEL: PWM輸出的模式,也就是但計數器小于CCR的時候,是輸出高電平,還是輸出低電平。

PWM_DEATH_TIME: 死區時間,最大為10個時鐘周期,也就是50ns,加上芯片內部基本上都內置了死區補償,這個時間是夠用了的。

然后就是端口信號

sys_clk_i,sys_rst_n_i: 100Mhz系統時鐘和系統復位

pwm_clk_200M_i: PWM輸出的參考時鐘,為200Mhz,這個時鐘頻率越高,PWM的分辨率也就越高。

timer_trig_o: 中斷信號輸出

timer_pwm_o,timer_pwm_n_o: PWM信號輸出

其他:動態調整定時器的計數周期ARR和比較值CCR,從而可以調整PWM的頻率和占空比,實際使用的過程中,只會調整占空比。

2. 設計細節

PWM模塊設計原理比較簡單,其中有兩點需要注意一下,這兩點中好了 ,設計起來就毫無壓力~。

1. 跨時鐘同步: 定時器時鐘頻率為200Mhz,而系統時鐘頻率為100Mhz,模塊只會涉及到中斷信號的同步,定時器時鐘域同步到系統時鐘域下,快時鐘域同步到慢時鐘域下,也是同步場景中最為常見的一種,這里直接將脈沖信號作為使能信號,對另外一個信號進行取反,然后檢查其邊沿即可實現同步。

always@( posedge pwm_clk_200M_i or negedge sys_rst_n_i )begin
 if( sys_rst_n_i ==1'b0 )
    timer_trig_pluse <= 1'b0;
? ??elseif( TRIG_ENABLE ==?"ENABLE"?&& CNT == CCR_SHADOW )
? ? ? ? timer_trig_pluse <= ~timer_trig_pluse;
? ??else
? ? ? ? timer_trig_pluse <= timer_trig_pluse;
end
always@( posedge sys_clk_i or negedge sys_rst_n_i )?begin
? ??if( sys_rst_n_i ==?1'b0 ) begin
? ? ? ? timer_trig_pluse_d0 <= 1'b0;
? ? ? ? timer_trig_pluse_d1 <=?1'b0;
? ? end
? ? else begin
? ? ? ? timer_trig_pluse_d0 <= timer_trig_pluse;
? ? ? ? timer_trig_pluse_d1 <= timer_trig_pluse_d0;
? ? end
end

1.互補PWM輸出死區控制:死區控制的目的是為了防止短時間內兩路PWM輸出同時為高的情況發生,從而導致上下臂同時導通,了解了這個之后,就只需要將互補PWM輸出信號中,輸出為高電平的那個信號提前拉低即可,在實現的過程中要結合配置的定時器模式進行輸出,會涉及到多重判斷的情況,如下圖所示,大家可以通過多級判斷,去優化這部分時序。

6fc04088-5c54-11f0-baa5-92fbcf53809c.png

最后給大家展示一下仿真結果

6fd2aa7a-5c54-11f0-baa5-92fbcf53809c.png

來源:本文轉載自FPGA之旅公眾號

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1645

    文章

    22049

    瀏覽量

    618368
  • PWM
    PWM
    +關注

    關注

    116

    文章

    5511

    瀏覽量

    219376
  • 算法
    +關注

    關注

    23

    文章

    4710

    瀏覽量

    95375
  • 驅動芯片
    +關注

    關注

    13

    文章

    1411

    瀏覽量

    56409

原文標題:FPGA從零到一實現FOC(一)之PWM模塊設計

文章出處:【微信號:FPGA研究院,微信公眾號:FPGA研究院】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    FOC 算法實現永磁同步電機調整指南

    本文檔介紹了使用 FOC 算法實現永磁同步電機 (Permanent Magnet SynchronousMotor,PMSM)調整所需的步驟和設置,該算法如 AN1078《PMSM
    發表于 03-03 01:53

    FOC算法原理!

    FOCFOC算法
    YS YYDS
    發布于 :2023年04月17日 18:12:34

    FPGA設計浮點DSP算法實現【賽靈思工程師作品】

    FPGA設計浮點DSP算法實現,DSP算法是很多工程師在設計過程中都會遇到的問題,本文將從FPGA
    發表于 03-01 15:23

    有感FOC算法學習與實現總結

    原文:https://blog.csdn.net/u010632165/article/details/103656254文章目錄基于STM32的有感FOC算法學習與實現總結1 前言2 FOC
    發表于 07-05 06:45

    STM32 Foc開源算法是什么

    STM32 Foc開源算法,包括觀測器和Foc method STM32F0系列FOC 源代碼,有單電阻采樣和三電阻采樣兩種代碼。都是ST很經典算法
    發表于 09-06 08:09

    如何對電機控制算法FOC進行調試

    什么是FOCFOC算法的原理是什么?FOC算法模塊是由哪些部分組成的?如何對
    發表于 09-18 09:16

    采用FPGA實現SVPWM調制算法

    1. 為什么要使用FPGA實現在全控型電力電子開關器件出現以后,為了改善交流電動機變壓變頻調速系統的性能,科技工作者在20世紀80年代開發出了應用脈寬調制(PWM)技術的變壓變頻器,由于它的優良
    發表于 01-20 09:34

    如何實現FOC算法

    如何實現FOC算法
    發表于 02-23 07:47

    基于FPGA 的指紋識別算法硬件實現

    提出用FPGA實現指紋識別算法, 代替了PC 機、通用MCU 或者DSP。算法由硬件來實現, 提高了運算速度。同時具體說明了指紋識別系統
    發表于 07-22 15:17 ?0次下載

    基于FPGA的空間矢量PWM實現

    本文詳述了空間矢量SV PWM算法, 并提出用FPGA 實現SV PWM 的方法, 最后分析了使用FP2GA 的優點
    發表于 10-19 16:11 ?30次下載

    基于FPGA的橫向LMS算法實現

       橫向LMS算法實現自適應數字波束形成的基本方法之一。提出了一種用Matab/Simulink中DSP Builder模塊庫設計算法模型,然后應用
    發表于 12-07 14:03 ?23次下載

    ECT圖像重建算法FPGA實現

    ECT圖像重建算法FPGA實現 ECT圖像重建算法FPGA實現
    發表于 11-19 14:59 ?2次下載

    foc控制算法FOC_stm32主控pmsm源碼

    foc控制算法FOC_stm32主控pmsm源碼
    發表于 12-20 22:55 ?168次下載

    FPGA實現PID控制算法

    相信大家對于PID控制算法,都不感到陌生了,平衡車就是靠它平衡起來的,還有飛控的平衡算法也是它,以及FOC中的閉環控制中也是用的它,它不僅簡單,而且易于理解。那么本篇文章將簡要介紹一下算法
    的頭像 發表于 05-19 16:40 ?2104次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>實現</b>PID控制<b class='flag-5'>算法</b>

    foc電機控制需要幾個pwm foc控制算法介紹

    一般PWM用于控制電機的直流母線電壓,其輸出頻率一般為幾千赫茲,可以有效地抑制電機的噪聲和震動。通過PWM的占空比來調節直流電壓,從而實現對電機的調速和調轉矩。一般PWM一般由開發板或
    的頭像 發表于 06-10 07:40 ?4994次閱讀