chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

基于FPGA的呼吸燈設(shè)計(附源工程)

FPGA技術(shù)江湖 ? 來源:FPGA技術(shù)江湖 ? 2025-01-16 10:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

設(shè)計背景

呼吸燈廣泛應(yīng)用于手機之上,并成為各大品牌新款手機的賣點之一。如果手機里面有未處理的通知,比如說未接來電,未查收的短信等等,呼吸燈就會在控制之下完成由亮到暗的逐漸變化,感覺好像是人在呼吸,起到一個通知提醒的作用。

設(shè)計原理

關(guān)于呼吸燈設(shè)計實現(xiàn)的理論主要是PWM有關(guān)知識。PWM(Pluse Width Modulation)脈沖寬度調(diào)制,是一種對模擬信號電平進行數(shù)字編碼的方法。通過高分辨率計數(shù)器的使用,方波的占空比被調(diào)制用來對一個具體模擬信號的電平進行編碼。并廣泛應(yīng)用在從測量、通信、功率控制與變換及LED照明等許多領(lǐng)域中。顧名思義,就是占空比可調(diào)的信號,那么什么是占空比呢?

占空比(Duty Cycle or Duty Ratio),可以解釋為,在一脈沖序列中(方波),正脈沖序列的持續(xù)時間與脈沖總周期的比值。也可理解為,電路釋放能量的有效時間與總釋放時間的比值。

PWM是怎樣實現(xiàn)調(diào)光呢?想要調(diào)節(jié)LED的亮度變化,實則是調(diào)節(jié)控制流經(jīng)LED的電流。電流增大則LED亮度增強,反之減弱。但由于電流為模擬信號,所以這時就用到了PWM。正如下圖所示:

e46d969a-d2db-11ef-9310-92fbcf53809c.png

使用一系列等幅不等寬的脈沖來代替一個正弦波,脈沖的寬度根據(jù)正弦波a的幅度變化,幅度高,則脈沖寬,反之。

多數(shù)負(fù)載需要的PWM調(diào)制頻率都高于10Hz,要想實現(xiàn)呼吸燈的效果,必須提高調(diào)制頻率,通常調(diào)制頻率為1Khz~200Khz之間。在LED控制中PWM作用于電源部分,脈寬調(diào)制的脈沖頻率通常大于100Hz,人眼就不會感到閃爍。這里我們?nèi)WM調(diào)制頻率為1KHz,PWM周期為1ms。

脈沖頻率一定時,輸出脈沖的占空比越大,相當(dāng)于輸出的有效電平越大,隨著占空比的不同,LED的亮度也將不同。如占空比為0時,則LED不亮,為100%時,則LED最亮,我們讓占空比從0~100%變化,再從100%~0不斷變化,則就可實現(xiàn)呼吸燈效果。

本設(shè)計呼吸燈的一個周期為2s,分為占空比增“吸”和占空比減“呼”兩種模式,每個為1s,一個PWM周期為2ms,所以每個模式包含1000個PWM周期,將每個PWM周期分為1000份,即每個時間段2us。

設(shè)計框架

設(shè)計框架圖: 50M時鐘

e48b8a6a-d2db-11ef-9310-92fbcf53809c.png

設(shè)計代碼

設(shè)計模塊huxi_led_state代碼:

module huxi_led_state(clk,led,rst_n);
  input clk;
  input rst_n;
  
  output reg led;
  
  parameter T = 100_000;
  
  localparam s0 = 1'b0;
  localparam s1 = 1'b1;
  
  reg [25:0] lw;
  reg [25:0] hw;
  
  reg [16:0] count;
  
  // 產(chǎn)生2MS的脈沖
  always @(posedge clk or negedge rst_n)
    if(!rst_n)
      begin
        count <= 1'b0;
      end
    else
      begin
        if(count == T - 1)
          begin
            count <= 1'b0;
          end
        else
          begin
            count <= count + 1'b1;
          end
      end
      
  wire flag;
  assign flag =(count == T - 1) ? 1'b1:1'b0;
  
  reg state;
  
  // 通過在一個周期中加減高低電平的時間來產(chǎn)生PWM波
  always @(posedge clk or negedge rst_n)
    if(!rst_n)
      begin
        lw <= T - 100;
        hw <= 100;
        state <= 1'b0;
      end
    else
      begin
        case (state)
          s0:begin
              if(flag && (lw > 100))   //判斷低電平的時間
                begin
                  lw <= lw - 100;
                  hw <= hw + 100;
                  state <= s0;
                end
              else if(flag && (lw == 100))
                begin
                  hw <= hw - 100;
                  lw <= lw + 100;
                  state <= s1;
                end
              else
                begin
                  hw <= hw;
                  lw <= lw;
                  state <= s0;
                end
            end
          s1:begin
              if(flag && (hw > 100))   //判斷高電平的時間
                begin
                  hw <= hw - 100;
                  lw <= lw + 100;
                  state <= s1;
                end
              else if(flag && (hw ==100))
                begin
                  hw <= hw + 100;
                  lw <= lw - 100;
                  state <= s0;
                end
              else
                begin
                  hw <= hw;
                  lw <= lw;
                  state <= s1;
                end
            end
        default : state <= s0;
        endcase
      end
      
  reg [25:0] cnt;
  reg sum;  
  always @(posedge clk or negedge rst_n)
    if(!rst_n)
      begin
        sum <= 1'b0;
        led <= 1'b1;
        cnt <= 1'b0; 
      end
    else
        case (sum)
          s0:begin
              if(cnt < hw -1 )
                begin
                  led <= 1'b0;
                  cnt <= cnt + 1'b1;
                end
              else
                begin
                  cnt <= 1'b0;
                  sum <= s1;
                end
            end
          s1:begin
              if(cnt < lw -1)
                begin
                  led <= 1'b1;
                  cnt <= cnt + 1'b1;
                end
              else
                begin
                  cnt <= 1'b0;
                  sum <= s0;
                end
            end
          default:sum <= s0;
        endcase
  
endmodule 
仿真測試

測試模塊代碼:

`timescale 1ns/1ps 
  module huxi_led_state_tb();
  reg clk;
  reg rst_n;
  
  wire led;
  
  parameter T = 100_000;
  
  initial begin
      clk = 1'b1;
      rst_n = 1'b0;
      
      #200.1 rst_n = 1'b1;
      
      
    end
    
    always #10 clk = ~ clk; 
  
  
  
  huxi_led_state  huxi_led_state_date(
          .clk(clk),
          .led(led),
          .rst_n(rst_n)
          );
  endmodule 
仿真圖:

e4ce0f02-d2db-11ef-9310-92fbcf53809c.png

仿真中可以看到點亮led等高電平在不停的增高,然后會降低,通過驗證我們的設(shè)計是正確的。

END

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

    關(guān)注

    1650

    文章

    22204

    瀏覽量

    626667
  • 脈沖
    +關(guān)注

    關(guān)注

    20

    文章

    904

    瀏覽量

    98445
  • 呼吸燈
    +關(guān)注

    關(guān)注

    10

    文章

    115

    瀏覽量

    43654

原文標(biāo)題:源碼系列:基于FPGA的呼吸燈設(shè)計(附源工程)

文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    【應(yīng)用方案】“會呼吸”的空調(diào):艾為燈語?讓空調(diào)將成為家庭“情緒調(diào)節(jié)師”

    圖1會呼吸的空調(diào)場景展示“會呼吸”的空調(diào)使用場景炎炎夏日,空調(diào)不再只是送風(fēng)機器,當(dāng)它點亮呼吸效,客廳瞬間擁有如同藝術(shù)裝置般的氛圍感,讓空調(diào)成為家中“有設(shè)計感的存在”。帶給你的不止是溫
    的頭像 發(fā)表于 09-16 19:03 ?213次閱讀
    【應(yīng)用方案】“會<b class='flag-5'>呼吸</b>”的空調(diào):艾為燈語?讓空調(diào)將成為家庭“情緒調(diào)節(jié)師”

    【沁恒CH585開發(fā)板免費試用體驗】+PWM呼吸

    /下降沿/雙邊沿 4路26位PWM輸出 8路8位PWM輸出或前6路16位PWM輸出 今天在上期的點燈例程上,修改出兩路PWM輸出,讓開發(fā)板上的LED0、LED1實現(xiàn)呼吸的效果。 根據(jù)SDK中提
    發(fā)表于 07-03 19:02

    用于呼吸流量及呼吸率的檢測測壓力傳感器

    前言利用微壓差傳感器實現(xiàn)呼吸流量及呼吸率的檢測。針對呼吸產(chǎn)生的氣體流速較小的特點,我們選擇了靈敏度較高的差壓傳感器。在實際應(yīng)用中,微壓差傳感器的準(zhǔn)確性和穩(wěn)定性至關(guān)重要。通過對呼吸流量和
    的頭像 發(fā)表于 05-19 13:20 ?638次閱讀
    用于<b class='flag-5'>呼吸</b>流量及<b class='flag-5'>呼吸</b>率的檢測測壓力傳感器

    便攜式呼吸機的硬件電路設(shè)計

    一、便攜式呼吸機壓力檢測原理便攜式呼吸機按照不同的通氣模式可以將呼吸機分為CPAP持續(xù)正壓通氣、AutoCPAP自動正壓呼吸機、BiPAP雙氣道壓力
    的頭像 發(fā)表于 05-19 13:19 ?740次閱讀
    便攜式<b class='flag-5'>呼吸</b>機的硬件電路設(shè)計

    使用單片機驅(qū)動多組LED實現(xiàn)呼吸效果電路

    各位大佬,請教下,當(dāng)前我需要使用單片機驅(qū)動控制20路并聯(lián)LED,需要PWM驅(qū)動實現(xiàn)呼吸的效果,目前我是直接使用三極管驅(qū)動,這種電路會有什么問題?跟有些使用三極管控制MOS來驅(qū)動LED
    發(fā)表于 04-11 14:24

    【瑞薩RA2L1入門學(xué)習(xí)】01. PWM 呼吸

    占空比的調(diào)節(jié)就是實現(xiàn)呼吸效果的關(guān)鍵。通過控制PWM信號的占空比,可以實現(xiàn)對LED亮度的連續(xù)調(diào)節(jié)。在遞增占空比階段,LED亮度逐漸增加;在遞減占空比階段,LED亮度逐漸降低。使用循環(huán)來控制的方式來實現(xiàn)
    發(fā)表于 03-07 11:43

    ADS1298R外部呼吸模式和內(nèi)部呼吸模式的區(qū)別?

    請問下大家ADS1298R中關(guān)于呼吸的模式,是怎么選擇,表示沒有看懂DATASHEET上寫的,弄不清楚外部呼吸模式和內(nèi)部呼吸模式的區(qū)別?
    發(fā)表于 01-22 06:16

    基于FPGA的VGA驅(qū)動設(shè)計(工程)

    ? 設(shè)計背景 VGA (Video Graphics Array) 即視頻圖形陣列,是IBM于1987年隨PS/2機(PersonalSystem 2)一起推出的使用模擬信號的一種視頻傳輸標(biāo)準(zhǔn)。這個標(biāo)準(zhǔn)對于現(xiàn)今的個人電腦市場已經(jīng)十分過時。但在當(dāng)時具有分辨率高、顯示速率快、顏色豐富等優(yōu)點,在彩色顯示器領(lǐng)域取得了廣泛的應(yīng)用,是眾多制造商所共同支持的一個低標(biāo)準(zhǔn)。 ? 設(shè)計原理 VGA的實體圖與接口示意圖,如下圖所示,它有15個針孔: 在本次設(shè)計使用的開發(fā)板中,VGA的電路原理圖如下圖所示: 通過原理
    的頭像 發(fā)表于 01-14 11:31 ?1468次閱讀
    基于<b class='flag-5'>FPGA</b>的VGA驅(qū)動設(shè)計(<b class='flag-5'>附</b><b class='flag-5'>源</b><b class='flag-5'>工程</b>)

    ADS1292R的呼吸阻抗檢測功能在運動模式下是否有辦法能提取出準(zhǔn)確的呼吸信號?

    最近在用ADS1292R做心電及呼吸檢測,目前情況是采用演示板的心電及呼吸采集電路。靜止?fàn)顟B(tài)下呼吸檢測波形較好,對呼吸的識別相對比較容易,但是運動模式下(測量時憋氣,反復(fù)抬手臂的狀態(tài)
    發(fā)表于 12-30 06:18

    ADS1191如何測呼吸?

    看手冊說可以應(yīng)用體育和建身(心率,呼吸和ECG),我想問一下這款芯片如何測呼吸
    發(fā)表于 12-24 07:08

    ADS1292R采集呼吸波采樣率越高,采樣得到的呼吸波幅度越低,為什么?

    ADS1292R采樣呼吸波,使用250HZ采樣頻率得到的呼吸波幅度比使用1KHZ采樣頻率得到的呼吸波幅度大2-3倍左右。正常來說不是采用頻率越高,采樣的波形更準(zhǔn)確嗎?有人知道是什么原因嗎?求解,我
    發(fā)表于 12-06 07:32

    多平臺FPGA工程快速移植與構(gòu)建

    作為一名FPGA工程師,經(jīng)常需要在多個FPGA設(shè)備之間移植項目,核心的問題是IP的管理和移植,今天通過安裝和使用 FuseSoC 在多個 AMD FPGA 之間移植一個簡單的項目。從
    的頭像 發(fā)表于 11-20 16:12 ?2322次閱讀
    多平臺<b class='flag-5'>FPGA</b><b class='flag-5'>工程</b>快速移植與構(gòu)建

    4G模組PWM調(diào)光入門:打造個性化呼吸

    一直有朋友問我怎么打造個性化呼吸,本文我將以合宙低功耗4G模組經(jīng)典型號——Air780E為例,展示PWM輸出呼吸的實現(xiàn)方法,幫助大家深入理解如何在項目中應(yīng)用PWM技術(shù)。
    的頭像 發(fā)表于 11-17 09:56 ?1013次閱讀
    4G模組PWM調(diào)光入門:打造個性化<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>

    呼吸的概念和實現(xiàn)原理

    呼吸在日常生活中經(jīng)常見到,如電子時鐘,小夜燈等等,本文我們介紹下通過PWM波來控制LED,實現(xiàn)呼吸功能。
    的頭像 發(fā)表于 10-24 14:50 ?7404次閱讀
    <b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>的概念和實現(xiàn)原理