一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于FPGA實(shí)現(xiàn)FOC算法之PWM模塊設(shè)計

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

掃碼添加小助手

加入工程師交流群

一.簡介

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

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

二. PWM模塊設(shè)計

我們知道有些驅(qū)動芯片是需要輸入互補(bǔ)的PWM,例如FD6288,而有些驅(qū)動芯片則只需要輸入PWM,芯片內(nèi)部會自動將其轉(zhuǎn)為互補(bǔ)的PWM進(jìn)行工作,例如DRV8313和MP6540。單路FOC開發(fā)板使用的是MP6540,多路電機(jī)驅(qū)動板使用的是FD6288,因此設(shè)計的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   
);

首先給大家介紹一下端口參數(shù)

DEFAULT_ARR: 默認(rèn)的定時器計數(shù)周期。

DEFAULT_CCR: 默認(rèn)的定時器比較輸出值。

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

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

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

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

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

然后就是端口信號

sys_clk_i,sys_rst_n_i: 100Mhz系統(tǒng)時鐘和系統(tǒng)復(fù)位

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

timer_trig_o: 中斷信號輸出

timer_pwm_o,timer_pwm_n_o: PWM信號輸出

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

2. 設(shè)計細(xì)節(jié)

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

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

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.互補(bǔ)PWM輸出死區(qū)控制:死區(qū)控制的目的是為了防止短時間內(nèi)兩路PWM輸出同時為高的情況發(fā)生,從而導(dǎo)致上下臂同時導(dǎo)通,了解了這個之后,就只需要將互補(bǔ)PWM輸出信號中,輸出為高電平的那個信號提前拉低即可,在實(shí)現(xiàn)的過程中要結(jié)合配置的定時器模式進(jìn)行輸出,會涉及到多重判斷的情況,如下圖所示,大家可以通過多級判斷,去優(yōu)化這部分時序。

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

最后給大家展示一下仿真結(jié)果

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

來源:本文轉(zhuǎn)載自FPGA之旅公眾號

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1645

    文章

    22049

    瀏覽量

    618407
  • PWM
    PWM
    +關(guān)注

    關(guān)注

    116

    文章

    5511

    瀏覽量

    219390
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4710

    瀏覽量

    95378
  • 驅(qū)動芯片
    +關(guān)注

    關(guān)注

    13

    文章

    1411

    瀏覽量

    56411

原文標(biāo)題:FPGA從零到一實(shí)現(xiàn)FOC(一)之PWM模塊設(shè)計

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    FOC 算法實(shí)現(xiàn)永磁同步電機(jī)調(diào)整指南

    本文檔介紹了使用 FOC 算法實(shí)現(xiàn)永磁同步電機(jī) (Permanent Magnet SynchronousMotor,PMSM)調(diào)整所需的步驟和設(shè)置,該算法如 AN1078《PMSM
    發(fā)表于 03-03 01:53

    FOC算法原理!

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

    FPGA設(shè)計浮點(diǎn)DSP算法實(shí)現(xiàn)【賽靈思工程師作品】

    FPGA設(shè)計浮點(diǎn)DSP算法實(shí)現(xiàn),DSP算法是很多工程師在設(shè)計過程中都會遇到的問題,本文將從FPGA
    發(fā)表于 03-01 15:23

    有感FOC算法學(xué)習(xí)與實(shí)現(xiàn)總結(jié)

    原文:https://blog.csdn.net/u010632165/article/details/103656254文章目錄基于STM32的有感FOC算法學(xué)習(xí)與實(shí)現(xiàn)總結(jié)1 前言2 FOC
    發(fā)表于 07-05 06:45

    STM32 Foc開源算法是什么

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

    如何對電機(jī)控制算法FOC進(jìn)行調(diào)試

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

    采用FPGA實(shí)現(xiàn)SVPWM調(diào)制算法

    1. 為什么要使用FPGA實(shí)現(xiàn)在全控型電力電子開關(guān)器件出現(xiàn)以后,為了改善交流電動機(jī)變壓變頻調(diào)速系統(tǒng)的性能,科技工作者在20世紀(jì)80年代開發(fā)出了應(yīng)用脈寬調(diào)制(PWM)技術(shù)的變壓變頻器,由于它的優(yōu)良
    發(fā)表于 01-20 09:34

    如何實(shí)現(xiàn)FOC算法

    如何實(shí)現(xiàn)FOC算法?
    發(fā)表于 02-23 07:47

    基于FPGA 的指紋識別算法硬件實(shí)現(xiàn)

    提出用FPGA實(shí)現(xiàn)指紋識別算法, 代替了PC 機(jī)、通用MCU 或者DSP。算法由硬件來實(shí)現(xiàn), 提高了運(yùn)算速度。同時具體說明了指紋識別系統(tǒng)
    發(fā)表于 07-22 15:17 ?0次下載

    基于FPGA的空間矢量PWM實(shí)現(xiàn)

    本文詳述了空間矢量SV PWM算法, 并提出用FPGA 實(shí)現(xiàn)SV PWM 的方法, 最后分析了使用FP2GA 的優(yōu)點(diǎn)
    發(fā)表于 10-19 16:11 ?30次下載

    基于FPGA的橫向LMS算法實(shí)現(xiàn)

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

    ECT圖像重建算法FPGA實(shí)現(xiàn)

    ECT圖像重建算法FPGA實(shí)現(xiàn) ECT圖像重建算法FPGA實(shí)現(xiàn)
    發(fā)表于 11-19 14:59 ?2次下載

    foc控制算法FOC_stm32主控pmsm源碼

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

    FPGA實(shí)現(xiàn)PID控制算法

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

    foc電機(jī)控制需要幾個pwm foc控制算法介紹

    一般PWM用于控制電機(jī)的直流母線電壓,其輸出頻率一般為幾千赫茲,可以有效地抑制電機(jī)的噪聲和震動。通過PWM的占空比來調(diào)節(jié)直流電壓,從而實(shí)現(xiàn)對電機(jī)的調(diào)速和調(diào)轉(zhuǎn)矩。一般PWM一般由開發(fā)板或
    的頭像 發(fā)表于 06-10 07:40 ?4996次閱讀