大家好,我是小小的電子之路,這是我的第9篇原創(chuàng)文章,很高興與大家一起分享~
原文出自微信公眾號(hào)【小小的電子之路】
呼吸燈主要是利用PWM的方式,在固定的頻率下,通過調(diào)整占空比的方式來控制LED燈的亮度的變化,從而實(shí)現(xiàn)由暗漸亮再由亮漸暗的過程。
呼吸燈的整個(gè)FPGA實(shí)現(xiàn)流程主要由四個(gè)模塊組成,分別是計(jì)數(shù)器模塊,調(diào)節(jié)值產(chǎn)生模塊,計(jì)數(shù)方向模塊以及占空比調(diào)節(jié)模塊組成。
1、計(jì)數(shù)器模塊:計(jì)數(shù)器設(shè)置為五進(jìn)制計(jì)數(shù)器,其輸出記為counter;
2、調(diào)節(jié)值產(chǎn)生模塊:為五進(jìn)制加減計(jì)數(shù)器,用以產(chǎn)生占空比調(diào)節(jié)的比較值,其輸出記為compare;
3、計(jì)數(shù)方向模塊:通過高低電平控制調(diào)節(jié)值產(chǎn)生模塊的計(jì)數(shù)方向,其輸出記為flag;
4、占空比調(diào)節(jié)模塊:通過比較counter和compare的值來輸出不同電平控制LED燈。
counter通過與compare相比較來產(chǎn)生不同的電平,為實(shí)現(xiàn)占空比不斷變化,即高電平持續(xù)時(shí)間不斷變化,compare需不斷變化,但是在一個(gè)周期內(nèi),compare需固定不變,因此,每當(dāng)計(jì)數(shù)器模塊溢出一次,compare需隨之改變(加1或減1),其方向由flag控制。
(1)若flag=0,counter=4,compare!=3,則加計(jì)數(shù);
(2)若flag=0,counter=4,compare=3,則flag置1;
(3)若flag=1,counter=4,compare!=1,則減計(jì)數(shù);
(4)若flag=1,counter=4,compare=1,則flag置0。
從最終的實(shí)現(xiàn)結(jié)果可以看出,輸出信號(hào)的占空比在不斷變化,實(shí)現(xiàn)了設(shè)計(jì)要求。需要注意的是,為了使呼吸燈的實(shí)驗(yàn)現(xiàn)象便于觀察,需要適當(dāng)延長計(jì)數(shù)器的計(jì)數(shù)周期。
以上就是本次分享的全部內(nèi)容,謝謝大家!