国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

【ZYNQ Ultrascale+ MPSOC FPGA教程】第十章PWM呼吸燈實驗

FPGA技術專欄 ? 來源:芯驛電子科技 ? 作者:芯驛電子科技 ? 2021-01-23 11:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

原創聲明:

本原創教程由芯驛電子科技(上海)有限公司(ALINX)創作,版權歸本公司所有,如需轉載,需授權并注明出處。

適用于板卡型號:

AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG

實驗Vivado工程為“pwm_led”。

本文主要講解使用PWM控制LED,實現呼吸燈的效果。

1.實驗原理

如下圖所示,用一個N比特的計數器,最大值可以表示為2的N次方,最小值0,計數器以“period”為步進值累加,加到最大值后會溢出,進入下一個累加周期。當計數器值大于“duty”時,脈沖輸出高,否則輸出低,這樣就可以完成圖中紅色線所示的脈沖占空比可調的脈沖輸出,同時“period”可以調節脈沖頻率,可以理解為計數器的步進值。

pIYBAGAKLtSAOU6CAAANXx_V_tQ811.jpgPWM脈寬調制示意圖

不同的脈沖占空比的方波輸出后加在LED上,LED燈就會顯示不同的亮度,通過不斷地調節方波的占空比,從而實現LED燈亮度的調節。

2. 實驗設計

PWM模塊設計非常簡單,在上面的原理中已經講到,這里不再說原理。

信號名稱 方向 說明
clk in 時鐘輸入
rst in 異步復位輸入,高復位
period in PWM脈寬周期(頻率)控制。period = PWM輸出頻率 * (2 的N次方) / 系統時鐘頻率。顯然N越大,頻率精度越高。
duty in 占空比控制,占空比 = duty / (2的N次方)* 100%

PWM模塊(ax_pwm)端口

`timescale1ns/1psmoduleax_pwm#(
	parameterN=16//pwmbitwidth
)(inputclk,inputrst,input[N-1:0]period,	//pwmstepvalueinput[N-1:0]duty,		//dutyvalueoutputpwm_out	//pwmoutput);reg[N-1:0]period_r;		//periodregisterreg[N-1:0]duty_r;		//dutyregisterreg[N-1:0]period_cnt;	//periodcounterregpwm_r;assignpwm_out=pwm_r;always@(posedgeclkorposedgerst)beginif(rst==1)begin
period_r<={?N?{1'b0}};
????????duty_r?<={?N?{1'b0}};endelsebegin
????????period_r?<=?period;
????????duty_r???<=?duty;endend//period?counter,?step?is?period?valuealways@(posedge?clk?orposedge?rst)beginif(rst==1)
????????period_cnt?<={?N?{1'b0}};else
????????period_cnt?<=?period_cnt?+?period_r;endalways@(posedge?clk?orposedge?rst)beginif(rst==1)begin
????????pwm_r?<=1'b0;endelsebeginif(period_cnt?>=duty_r)	//ifperiodcounterisbiggerorequalstodutyvalue,thensetpwmvaluetohighpwm_r<=1'b1;else
????????????pwm_r?<=1'b0;endend

那么如何實現呼吸燈的效果呢?我們知道呼吸燈效果是由暗不斷的變亮,再由亮不斷的變暗的過程,而亮暗效果是由占空比來調節的,因此我們主要來控制占空比,也就是控制duty的值。

在下面的測試代碼中,通過設置period的值,設定PWM的頻率為200Hz,PWM_PLUS狀態即是增加duty值,如果增加到最大值,將pwm_flag置1,并開始將duty值減少,待減少到最小的值,則開始增加duty值,不斷循環。其中PWM_GAP狀態為調整間隔,時間為100us。

`timescale1ns/1psmodulepwm_test(input		clk,		//25MHzinput		rst_n,		//lowactive	output	led			//high-off,low-on);
					localparamCLK_FREQ=25;				//25MHzlocalparamUS_COUNT=CLK_FREQ;		//1uscounterlocalparamMS_COUNT=CLK_FREQ*1000;	//1mscounterlocalparamDUTY_STEP	=32'd100000;	//dutysteplocalparamDUTY_MIN_VALUE=32'h6fffffff;	//dutyminimumvaluelocalparamDUTY_MAX_VALUE=32'hffffffff;	//dutymaximumvalue					localparamIDLE		=0;	//IDLEstatelocalparamPWM_PLUS	=1;//PWMdutyplusstatelocalparamPWM_MINUS	=2;//PWMdutyminusstatelocalparamPWM_GAP	=3;//PWMdutyadjustmentgapwire		pwm_out;	//pwmoutputreg[31:0]	period;		//pwmstepvaluereg[31:0]	duty;		//dutyvaluereg			pwm_flag;	//dutyvalueplusandminusflag,0:plus;1:minusreg[3:0]	state;reg[31:0]	timer;		//dutyadjustmentcounterassignled=~pwm_out;//ledlowactivealways@(posedgeclkornegedgerst_n)begin
	if(rst_n==1'b0)
	begin
		period		<=32'd0;
		timer?		<=32'd0;
		duty?		<=32'd0;
		pwm_flag?	<=1'b0;
		state?		<=?IDLE;
	end
	else
		case(state)
			IDLE:
			begin
				period?		<=32'd17179;//The?pwm?step?value,?pwm?200Hz(period?=?200*2^32/50000000)				state??		<=?PWM_PLUS;
				duty???		<=?DUTY_MIN_VALUE;				
			end
			PWM_PLUS?:
			begin
				if(duty?>DUTY_MAX_VALUE-DUTY_STEP)	//ifdutyisbiggerthanDUTYMAXVALUEminusDUTY_STEP,begintominusdutyvalue				begin
					pwm_flag	<=1'b1;
					duty???		<=?duty?-?DUTY_STEP?;
				end
				else
				begin
					pwm_flag?	<=1'b0;					
					duty???		<=?duty?+?DUTY_STEP?;	
				end
				
				state??		<=?PWM_GAP?;
			end
			PWM_MINUS?:
			begin
				if(duty?=US_COUNT*100)//adjustmentgapis100us				begin
					if(pwm_flag)
						state<=?PWM_MINUS?;
					else
						state?<=?PWM_PLUS?;
						
					timer?<=32'd0;
				end
				else
				begin
					timer?<=?timer?+32'd1;
				end
			end
			default:
			begin
				state?<=?IDLE;		
			end			
		endcaseend//Instantiate?pwm?moduleax_pwm#(.N(32))ax_pwm_m0(.clk??????(clk),.rst??????(~rst_n),.period???(period),.duty?????(duty),.pwm_out??(pwm_out));
	endmodule

3. 下載驗證

生成bitstream,并下載bit文件,可以看到PL LED1燈產生呼吸燈效果。PWM是比較常用的模塊,比如風扇轉速控制,電機轉速控制等等。

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

    關注

    1660

    文章

    22411

    瀏覽量

    636260
  • PWM
    PWM
    +關注

    關注

    116

    文章

    5869

    瀏覽量

    225606
  • Zynq
    +關注

    關注

    10

    文章

    630

    瀏覽量

    49448
  • MPSoC
    +關注

    關注

    0

    文章

    203

    瀏覽量

    25173
  • 呼吸燈
    +關注

    關注

    10

    文章

    117

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    使用Aurora 6466b協議實現AMD UltraScale+ FPGA與AMD Versal自適應SoC的對接

    在本博客中,我們將介紹使用 Aurora 6466b 協議實現 AMD UltraScale+ FPGA 與 AMD Versal 自適應 SoC 的對接。我們還將涵蓋有關 IP 配置、FPGA 之間的連接、時鐘設置以及復位拓撲
    的頭像 發表于 01-13 14:04 ?3403次閱讀
    使用Aurora 6466b協議實現AMD <b class='flag-5'>UltraScale+</b> <b class='flag-5'>FPGA</b>與AMD Versal自適應SoC的對接

    如何在Zynq UltraScale+ MPSoC平臺上通過JTAG啟動嵌入式Linux鏡像

    流程教程)。本文則進一步講解如何在 Zynq UltraScale+ MPSoC 平臺上通過 JTAG 逐步啟動 Linux,并提供了完整的過程與關鍵命令。只要按步驟操作,即使是復雜的 Linux 鏡像也能成功通過 JTAG 啟
    的頭像 發表于 01-13 11:45 ?4380次閱讀

    PWM經典應用:LED亮度控制及呼吸實戰

    信號生成: 加熱控制: 本文特別分享PWM相關基礎知識,并以Air8000核心板為例,演示LuatOS開發中如何使用PWM功能實現LED亮度控制及呼吸效果,幫助開發者快速上手。 一、
    的頭像 發表于 01-05 20:50 ?247次閱讀
    <b class='flag-5'>PWM</b>經典應用:LED亮度控制及<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>實戰

    如何在ZYNQ本地部署DeepSeek模型

    一個將最小號 DeepSeek 模型部署到 AMD Zynq UltraScale+ MPSoC 處理系統的項目。
    的頭像 發表于 12-19 15:43 ?7574次閱讀
    如何在<b class='flag-5'>ZYNQ</b>本地部署DeepSeek模型

    AMD UltraScale架構:高性能FPGA與SoC的技術剖析

    AMD UltraScale架構:高性能FPGA與SoC的技術剖析 在當今的電子設計領域,高性能FPGAMPSoC/RFSoC的需求日益增長。AMD的
    的頭像 發表于 12-15 14:35 ?555次閱讀

    基于PWM的LED調光技術與呼吸實現方法!

    利用PWM技術控制LED亮度,不僅效率高、響應快,還能實現細膩的視覺過渡。系統介紹PWM的工作機制,結合具體硬件平臺,展示如何編程實現LED的漸亮漸滅,最終完成一個完整的呼吸項目。
    的頭像 發表于 12-15 13:03 ?431次閱讀
    基于<b class='flag-5'>PWM</b>的LED調光技術與<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>實現方法!

    現已上市:AMD Spartan UltraScale+ FPGA SCU35 評估套件——面向所有開發人員的經濟實惠平臺

    AMD Spartan UltraScale+ FPGA SCU35 評估套件現已開放訂購。 該平臺由 AMD 構建,為客戶提供了一條利用 Spartan UltraScale+ FPGA
    的頭像 發表于 11-27 10:52 ?445次閱讀

    Zynq MPSoC PS側PCIe高速DMA互連解決方案

    在涉及Xilinx Zynq UltraScale+ MPSoC的項目中,實現設備間高速、低延遲的數據傳輸往往是核心需求之一。PCIe(尤其PS側)結合DMA(直接內存訪問)正是滿足這類需求的理想技術方案。
    的頭像 發表于 10-22 13:53 ?3851次閱讀
    雙<b class='flag-5'>Zynq</b> <b class='flag-5'>MPSoC</b> PS側PCIe高速DMA互連解決方案

    AMD Spartan UltraScale+ FPGA的優勢和亮點

    AMD Spartan UltraScale+ FPGA 集小型封裝、先進的 I/O 功能與低功耗等優勢于一體。該系列 FPGA 配備高速 16.3 Gb/s 收發器、內置的外部內存控制器以及
    的頭像 發表于 10-17 10:16 ?785次閱讀
    AMD Spartan <b class='flag-5'>UltraScale+</b> <b class='flag-5'>FPGA</b>的優勢和亮點

    AMD Vivado IP integrator的基本功能特性

    我們還將帶您了解在 AMD Zynq UltraScale+ MPSoC 開發板與 AMD Versal 自適應 SoC 開發板上使用 IP integrator 時,兩種設計流程之間存在的差異。
    的頭像 發表于 10-07 13:02 ?2129次閱讀
    AMD Vivado IP integrator的基本功能特性

    璞致電子 UltraScale+ RFSoC 架構下的軟件無線電旗艦開發平臺

    璞致電子 PZ-ZU49DR-KFB 開發板基于 Xilinx ZYNQ UltraScale+ RFSoC XCZU49DR 主控制器,以 "ARM+FPGA 異構架構" 為
    的頭像 發表于 08-06 10:08 ?1146次閱讀
    璞致電子 <b class='flag-5'>UltraScale+</b> RFSoC 架構下的軟件無線電旗艦開發平臺

    第十章 W55MH32 SNTP示例

    本文講解了如何在W55MH32芯片上實現SNTP授時功能,通過實例詳細展示了從SNTP服務器同步時間的實現流程,包括時間請求、響應解析和本地時間校準等核心步驟。文章還對SNTP的應用場景進行了分析,幫助讀者理解其在時間同步中的實際應用價值。
    的頭像 發表于 07-24 09:43 ?1258次閱讀
    <b class='flag-5'>第十章</b> W55MH32 SNTP示例

    AMD Spartan UltraScale+ FPGA 開始量產出貨

    邊緣應用而設計,為業經驗證的 UltraScale+ FPGA 和自適應 SoC 產品組合帶來了現代化的連接、后量子密碼等功能。 三款最低
    的頭像 發表于 06-18 10:32 ?2317次閱讀
    AMD Spartan <b class='flag-5'>UltraScale+</b> <b class='flag-5'>FPGA</b> 開始量產出貨

    Xilinx Ultrascale系列FPGA的時鐘資源與架構解析

    Ultrascale是賽靈思開發的支持包含步進功能的增強型FPGA架構,相比7系列的28nm工藝,Ultrascale采用20nm的工藝,主要有2個系列:Kintex和Virtex
    的頭像 發表于 04-24 11:29 ?2604次閱讀
    Xilinx <b class='flag-5'>Ultrascale</b>系列<b class='flag-5'>FPGA</b>的時鐘資源與架構解析

    【瑞薩RA2L1入門學習】01. PWM 呼吸

    占空比的調節就是實現呼吸效果的關鍵。通過控制PWM信號的占空比,可以實現對LED亮度的連續調節。在遞增占空比階段,LED亮度逐漸增加;在遞減占空比階段,LED亮度逐漸降低。使用循環
    發表于 03-07 11:43