本(běn)文(wén)的(de)文(wén)檔編号(hào):000800000015
需要(yào)看(kàn)对(duì)應(yìng)的(de)視頻,請點(diǎn)擊視頻編号(hào):00800000165
1.至(zhì)簡原理與(yǔ)應(yìng)用(yòng)配套(tào)的(de)案(àn)例
2.实現(xiàn)控制LED燈(dēng)亮(liàng)度(dù)的(de)功能(néng),具體(tǐ)为(wèi):上(shàng)電(diàn)後(hòu),LED燈(dēng)在(zài)前(qián)10秒(miǎo)时(shí)間(jiān)內(nèi),每隔2秒(miǎo)逐漸變(biàn)亮(liàng)。在(zài)下(xià)一(yī)个(gè)10秒(miǎo)时(shí)間(jiān)內(nèi),每隔2秒(miǎo),亮(liàng)度(dù)逐漸變(biàn)暗(àn),如(rú)此(cǐ)循环(huán)
3. 这(zhè)是(shì)ALTERA入(rù)門(mén)学習案(àn)例文(wén)檔
第(dì)三(sān)篇(piān) FPGA至(zhì)簡設計(jì)項目实踐
第(dì)三(sān)章(zhāng) PWM呼吸燈(dēng)
第(dì)1节(jié) 項目背景
随着照明(míng)領域需求的(de)不(bù)斷擴大,LED技術(shù)也(yě)在(zài)迅速發(fà)展(zhǎn),其控制方(fāng)式也(yě)越来(lái)越多(duō)樣(yàng)化(huà),可(kě)以(yǐ)産生(shēng)多(duō)樣(yàng)的(de)視覺效果(guǒ)。相較于(yú)只(zhī)具備“開(kāi)”“關(guān)”功能(néng)的(de)傳統LED照明(míng),能(néng)够实現(xiàn)從0到(dào)100%燈(dēng)光(guāng)亮(liàng)度(dù)調节(jié)的(de)LED燈(dēng)在(zài)家(jiā)裝(zhuāng)燈(dēng)飾、舞(wǔ)美燈(dēng)光(guāng)等領域的(de)需求更(gèng)为(wèi)突出(chū)。
这(zhè)種(zhǒng)燈(dēng)的(de)燈(dēng)光(guāng)亮(liàng)度(dù)可(kě)以(yǐ)通(tòng)过(guò)調节(jié)控制由(yóu)高(gāo)到(dào)低的(de)逐漸變(biàn)化(huà),像是(shì)人(rén)在(zài)呼吸一(yī)般,因(yīn)而(ér)被(bèi)稱作呼吸燈(dēng)。呼吸分(fēn)为(wèi)两(liǎng)个(gè)过(guò)程,一(yī)个(gè)是(shì)“呼”,一(yī)个(gè)是(shì)“吸”。而(ér)所(suǒ)謂的(de)“呼吸燈(dēng)”就(jiù)是(shì)将人(rén)的(de)呼吸頻率通(tòng)过(guò)光(guāng)的(de)強(qiáng)弱(ruò)表(biǎo)現(xiàn)出(chū)来(lái),其被(bèi)廣泛應(yìng)用(yòng)于(yú)手(shǒu)機(jī)上(shàng),并成(chéng)为(wèi)各(gè)大品牌(pái)手(shǒu)機(jī)的(de)賣(mài)點(diǎn)之一(yī)。當手(shǒu)機(jī)里(lǐ)有(yǒu)未处理的(de)通(tòng)知,比如(rú)未接来(lái)電(diàn)或(huò)未查收(shōu)的(de)短(duǎn)信(xìn)时(shí),呼吸燈(dēng)就(jiù)会(huì)像呼吸一(yī)樣(yàng)有(yǒu)节(jié)奏的(de)由(yóu)暗(àn)到(dào)亮(liàng)不(bù)斷變(biàn)化(huà),從而(ér)起到(dào)通(tòng)知提(tí)醒的(de)作用(yòng)。
呼吸燈(dēng)的(de)設計(jì)方(fāng)法有(yǒu)很多(duō),例如(rú)采用(yòng)555定(dìng)时(shí)器的(de)設計(jì)方(fāng)案(àn),電(diàn)路(lù)利用(yòng)電(diàn)容充放(fàng)電(diàn)的(de)原理較为(wèi)簡單,也(yě)可(kě)以(yǐ)用(yòng)單片(piàn)機(jī)産生(shēng)脈沖宽(kuān)度(dù)調制来(lái)驅動(dòng)LED。本(běn)案(àn)例中(zhōng)采用(yòng)PWM驅動(dòng)LED燈(dēng)的(de)方(fāng)法来(lái)進(jìn)行設計(jì)。
脈沖宽(kuān)度(dù)調制技術(shù)(Pulse WidthModelation,PWM)是(shì)利用(yòng)微处理器/FPGA的(de)數字(zì)輸出(chū)对(duì)模拟電(diàn)路(lù)進(jìn)行控制的(de)一(yī)種(zhǒng)有(yǒu)效技術(shù),其廣泛應(yìng)用(yòng)于(yú)测量(liàng)、通(tòng)信(xìn)、功率控制與(yǔ)變(biàn)換等衆多(duō)領域。PWM數字(zì)信(xìn)号(hào)從处理器到(dào)被(bèi)控系(xì)統都采用(yòng)數字(zì)形式,无需進(jìn)行數模轉(zhuǎn)換。航模中(zhōng)的(de)控制信(xìn)号(hào)大多(duō)是(shì)PWM信(xìn)号(hào),比如(rú)FUTABA、JR等舵機(jī)的(de)控制都采用(yòng)PWM方(fāng)式,發(fà)射機(jī)給(gěi)接收(shōu)機(jī)輸送脈沖後(hòu)接收(shōu)機(jī)会(huì)控制舵機(jī)進(jìn)行旋轉(zhuǎn)。舉个(gè)例子,假定(dìng)基礎脈宽(kuān)是(shì)100ms,當發(fà)射機(jī)的(de)脈宽(kuān)增大(如(rú)增加到(dào)150ms)时(shí)接收(shōu)機(jī)控制舵機(jī)進(jìn)行正(zhèng)向(xiàng)旋轉(zhuǎn);反(fǎn)之發(fà)射機(jī)的(de)脈宽(kuān)減小(如(rú)減小到(dào)50ms)时(shí),接收(shōu)機(jī)控制舵機(jī)進(jìn)行逆向(xiàng)旋轉(zhuǎn)。
PWM是(shì)一(yī)種(zhǒng)对(duì)模拟信(xìn)号(hào)電(diàn)平進(jìn)行數字(zì)編碼的(de)方(fāng)法。通(tòng)过(guò)使用(yòng)高(gāo)分(fēn)辨率計(jì)數器对(duì)方(fāng)波(bō)的(de)占空比進(jìn)行調制,從而(ér)对(duì)一(yī)个(gè)具體(tǐ)模拟信(xìn)号(hào)的(de)電(diàn)平進(jìn)行編碼。由(yóu)于(yú)在(zài)給(gěi)定(dìng)的(de)任何时(shí)刻,滿幅值的(de)直(zhí)流供電(diàn)只(zhī)存在(zài)有(yǒu)(ON)和(hé)无(OFF)两(liǎng)種(zhǒng)狀态,因(yīn)此(cǐ)PWM信(xìn)号(hào)仍然是(shì)數字(zì)信(xìn)号(hào)。電(diàn)壓或(huò)電(diàn)流源是(shì)以(yǐ)一(yī)種(zhǒng)通(tòng)(ON)或(huò)斷(OFF)的(de)重(zhòng)複脈沖序列被(bèi)加到(dào)模拟負载上(shàng)去(qù)的(de)。直(zhí)流供電(diàn)被(bèi)加到(dào)負载上(shàng)的(de)时(shí)候为(wèi)“通(tòng)”,負载供電(diàn)被(bèi)斷開(kāi)的(de)时(shí)候为(wèi)“斷”。只(zhī)要(yào)有(yǒu)足够的(de)带(dài)宽(kuān),任何模拟值都可(kě)以(yǐ)使用(yòng)PWM進(jìn)行編碼。
通(tòng)俗来(lái)说(shuō),PWM是(shì)連(lián)續的(de)、具有(yǒu)一(yī)定(dìng)比例占空比的(de)脈沖信(xìn)号(hào),可(kě)以(yǐ)通(tòng)过(guò)控制占空比来(lái)对(duì)其進(jìn)行改變(biàn)。簡單来(lái)说(shuō),可(kě)以(yǐ)認为(wèi)PWM就(jiù)是(shì)一(yī)種(zhǒng)方(fāng)波(bō),如(rú)图(tú)3.3-1所(suǒ)示。

图(tú)3.3-1PWM波(bō)形图(tú)
了(le)解(jiě)PWM之後(hòu),下(xià)面(miàn)来(lái)学習一(yī)下(xià)PWM实現(xiàn)呼吸燈(dēng)的(de)原理。
信(xìn)号(hào)的(de)高(gāo)低電(diàn)平變(biàn)化(huà)可(kě)以(yǐ)控制LED燈(dēng)的(de)明(míng)滅狀态。當輸出(chū)信(xìn)号(hào)为(wèi)低電(diàn)平时(shí)LED燈(dēng)亮(liàng),反(fǎn)之,當輸出(chū)信(xìn)号(hào)为(wèi)高(gāo)電(diàn)平时(shí)LED燈(dēng)滅。當輸出(chū)電(diàn)平持(chí)續为(wèi)低,則燈(dēng)一(yī)直(zhí)保持(chí)亮(liàng)的(de)狀态;而(ér)當輸出(chū)電(diàn)平持(chí)續为(wèi)高(gāo),則燈(dēng)一(yī)直(zhí)保持(chí)滅的(de)狀态。如(rú)果(guǒ)輸出(chū)信(xìn)号(hào)50%为(wèi)低電(diàn)平,50%为(wèi)高(gāo)電(diàn)平,在(zài)PWM适宜的(de)周期(qī)下(xià)LED燈(dēng)光(guāng)会(huì)變(biàn)暗(àn),这(zhè)也(yě)说(shuō)明(míng)占空比对(duì)LED燈(dēng)的(de)明(míng)暗(àn)程度(dù)会(huì)産生(shēng)影響。
另(lìng)一(yī)个(gè)影響LED亮(liàng)度(dù)的(de)因(yīn)素則是(shì)PWM波(bō)形的(de)周期(qī)。試想(xiǎng)一(yī)下(xià),如(rú)果(guǒ)PWM的(de)周期(qī)是(shì)2秒(miǎo),占空比为(wèi)50%,此(cǐ)时(shí)观察到(dào)LED的(de)狀态是(shì)暗(àn)1秒(miǎo)、亮(liàng)1秒(miǎo),而(ér)不(bù)是(shì)半亮(liàng)的(de)狀态。只(zhī)有(yǒu)縮短(duǎn)PWM的(de)周期(qī),才能(néng)看(kàn)到(dào)LED半亮(liàng)的(de)狀态。根(gēn)據(jù)經(jīng)验(yàn)可(kě)知,如(rú)果(guǒ)要(yào)达(dá)到(dào)改變(biàn)亮(liàng)度(dù)的(de)效果(guǒ),PWM的(de)周期(qī)以(yǐ)10毫(háo)秒(miǎo)为(wèi)宜。
綜上(shàng)所(suǒ)述,通(tòng)过(guò)控制高(gāo)低電(diàn)平的(de)时(shí)間(jiān),即占空比(高(gāo)電(diàn)平占周期(qī)的(de)百(bǎi)分(fēn)比),以(yǐ)及(jí)控制PWM的(de)周期(qī),就(jiù)可(kě)以(yǐ)改變(biàn)燈(dēng)的(de)明(míng)暗(àn)程度(dù)。
了(le)解(jiě)PWM呼吸燈(dēng)的(de)運行原理後(hòu)来(lái)明(míng)确本(běn)次(cì)設計(jì)的(de)功能(néng)目标(biāo)。确定(dìng)功能(néng)目标(biāo)是(shì)本(běn)書(shū)以(yǐ)及(jí)至(zhì)簡設計(jì)法的(de)特(tè)别之处,只(zhī)有(yǒu)对(duì)設計(jì)的(de)功能(néng)目标(biāo)有(yǒu)一(yī)定(dìng)的(de)理解(jiě)和(hé)預期(qī),才能(néng)更(gèng)好(hǎo)地(dì)進(jìn)一(yī)步讨論如(rú)何逐步進(jìn)行代(dài)碼設計(jì)和(hé)实現(xiàn)。後(hòu)續設計(jì)中(zhōng)的(de)每一(yī)个(gè)步驟都是(shì)圍繞着設計(jì)目标(biāo)的(de)实現(xiàn)来(lái)針(zhēn)对(duì)性(xìng)的(de)展(zhǎn)開(kāi),如(rú)果(guǒ)对(duì)于(yú)設計(jì)目标(biāo)一(yī)知半解(jiě),那(nà)麼(me)在(zài)後(hòu)續的(de)設計(jì)思(sī)路(lù)中(zhōng)可(kě)能(néng)難以(yǐ)形成(chéng)體(tǐ)系(xì)化(huà)的(de)思(sī)考模式,只(zhī)能(néng)碎片(piàn)式的(de)接收(shōu)知識。設計(jì)目标(biāo)就(jiù)像大樓的(de)設計(jì)图(tú),如(rú)果(guǒ)連(lián)最(zuì)終(zhōng)想(xiǎng)要(yào)实現(xiàn)的(de)目标(biāo)都无法确定(dìng),那(nà)麼(me)後(hòu)續的(de)讨論就(jiù)沒(méi)有(yǒu)任何意(yì)義。因(yīn)此(cǐ)在(zài)学習完整設計(jì)案(àn)例的(de)过(guò)程中(zhōng),静(jìng)下(xià)心(xīn)来(lái)從明(míng)确設計(jì)目标(biāo)開(kāi)始,一(yī)步步细(xì)细(xì)咀嚼,逐步掌握,才可(kě)以(yǐ)起到(dào)事(shì)半功倍的(de)效果(guǒ)。
本(běn)工程旨在(zài)实現(xiàn)控制LED燈(dēng)亮(liàng)度(dù)的(de)功能(néng),具體(tǐ)要(yào)求为(wèi):上(shàng)電(diàn)後(hòu),LED燈(dēng)顯示接近(jìn)于(yú)滅,随後(hòu)每隔2秒(miǎo)亮(liàng)度(dù)發(fà)生(shēng)一(yī)次(cì)變(biàn)化(huà),在(zài)前(qián)10秒(miǎo)时(shí)間(jiān)內(nèi),每隔2秒(miǎo)逐漸變(biàn)亮(liàng)。在(zài)下(xià)一(yī)个(gè)10秒(miǎo)时(shí)間(jiān)內(nèi),每隔2秒(miǎo),亮(liàng)度(dù)逐漸變(biàn)暗(àn)。簡單来(lái)说(shuō)即是(shì)以(yǐ)20秒(miǎo)为(wèi)一(yī)次(cì)循环(huán),每隔2秒(miǎo)變(biàn)化(huà)一(yī)次(cì),前(qián)10秒(miǎo)亮(liàng)度(dù)逐漸增大,後(hòu)10秒(miǎo)亮(liàng)度(dù)逐漸減小。
選用(yòng)開(kāi)發(fà)板的(de)硬(yìng)件(jiàn)原理图(tú)如(rú)下(xià)图(tú)所(suǒ)示。

图(tú)3.3-2開(kāi)發(fà)板LED原理图(tú)
本(běn)設計(jì)的(de)上(shàng)板效果(guǒ)如(rú)图(tú)3.3-3所(suǒ)示。

图(tú)3.3-3PWM呼吸燈(dēng)效果(guǒ)图(tú)
如(rú)果(guǒ)想(xiǎng)要(yào)观看(kàn)上(shàng)板後(hòu)的(de)演示視頻,可(kě)以(yǐ)登录(lù)至(zhì)簡設計(jì)法官方(fāng)网(wǎng)站進(jìn)行观看(kàn):old.mdy-edu.com/xxxx。
3.1 頂层信(xìn)号(hào)
新建目录(lù):D:mdy_bookpwmled,并在(zài)此(cǐ)目录(lù)中(zhōng)新建一(yī)个(gè)名为(wèi)pwmled.v的(de)文(wén)件(jiàn)。用(yòng)GVIM打(dǎ)開(kāi)該文(wén)件(jiàn)後(hòu)開(kāi)始編写代(dài)碼。在(zài)这(zhè)里(lǐ)再次(cì)強(qiáng)調,初学者(zhě)按照本(běn)書(shū)提(tí)供的(de)路(lù)徑名和(hé)文(wén)件(jiàn)名創建文(wén)件(jiàn),不(bù)要(yào)对(duì)路(lù)徑名或(huò)文(wén)件(jiàn)名進(jìn)行任何更(gèng)改。因(yīn)为(wèi)对(duì)于(yú)初学者(zhě)来(lái)说(shuō),如(rú)果(guǒ)貿然按照自(zì)己的(de)意(yì)願更(gèng)名,後(hòu)續操作中(zhōng)可(kě)能(néng)会(huì)出(chū)現(xiàn)中(zhōng)文(wén)路(lù)徑、空格路(lù)徑等非(fēi)法路(lù)徑的(de)問(wèn)題(tí),或(huò)者(zhě)有(yǒu)些文(wén)件(jiàn)名更(gèng)改後(hòu)会(huì)出(chū)現(xiàn)報錯的(de)現(xiàn)象(xiàng)。因(yīn)此(cǐ)建議先(xiān)按照要(yào)求更(gèng)名保存,在(zài)多(duō)次(cì)進(jìn)行工程練習熟悉了(le)各(gè)个(gè)步驟後(hòu)再進(jìn)行自(zì)主(zhǔ)更(gèng)名操作。在(zài)操作中(zhōng)不(bù)要(yào)想(xiǎng)當然,细(xì)心(xīn)操作以(yǐ)避免不(bù)必要(yào)的(de)錯誤。
首先(xiān)对(duì)板子上(shàng)的(de)LED燈(dēng)進(jìn)行分(fēn)析,每个(gè)LED燈(dēng)都與(yǔ)一(yī)个(gè)信(xìn)号(hào)相連(lián)。这(zhè)个(gè)信(xìn)号(hào)一(yī)端連(lián)接LED,另(lìng)一(yī)端連(lián)接FPGA。FPGA通(tòng)过(guò)控制这(zhè)一(yī)信(xìn)号(hào)的(de)輸出(chū)就(jiù)可(kě)以(yǐ)控制LED燈(dēng)的(de)亮(liàng)、滅以(yǐ)及(jí)亮(liàng)度(dù)。當FPGA輸出(chū)信(xìn)号(hào)为(wèi)0时(shí),LED燈(dēng)點(diǎn)亮(liàng),反(fǎn)之,當FPGA輸出(chū)信(xìn)号(hào)为(wèi)1时(shí),LED燈(dēng)熄滅。通(tòng)过(guò)輸出(chū)PWM波(bō)形并控制其占空比,FPGA可(kě)以(yǐ)实現(xiàn)对(duì)LED燈(dēng)的(de)亮(liàng)度(dù)進(jìn)行控制。
硬(yìng)件(jiàn)電(diàn)路(lù)图(tú)的(de)連(lián)接關(guān)系(xì)如(rú)下(xià)表(biǎo)所(suǒ)示。本(běn)工程中(zhōng)LED1燈(dēng)連(lián)接的(de)FPGA管(guǎn)脚为(wèi)AA4,对(duì)應(yìng)FPGA工程信(xìn)号(hào)为(wèi)led;工程的(de)时(shí)鐘(zhōng)管(guǎn)脚为(wèi)G1,对(duì)應(yìng)FPGA工程信(xìn)号(hào)为(wèi)clk;複位管(guǎn)脚为(wèi)G1,对(duì)應(yìng)FPGA工程信(xìn)号(hào)为(wèi)rst_n。
表(biǎo)3.3- 1信(xìn)号(hào)和(hé)管(guǎn)脚關(guān)系(xì)
綜上(shàng)所(suǒ)述,本(běn)工程一(yī)共(gòng)需要(yào)三(sān)个(gè)信(xìn)号(hào),时(shí)鐘(zhōng)clk,複位rst_n和(hé)輸出(chū)信(xìn)号(hào)led。将module的(de)名稱定(dìng)義为(wèi)pwmled,在(zài)頂层信(xìn)号(hào)代(dài)碼中(zhōng)需要(yào)将與(yǔ)外(wài)部(bù)相連(lián)接的(de)輸入(rù)/輸出(chū)信(xìn)号(hào)列出(chū),從而(ér)实現(xiàn)信(xìn)号(hào)與(yǔ)管(guǎn)脚的(de)連(lián)接,其具體(tǐ)代(dài)碼如(rú)下(xià):
随後(hòu)对(duì)信(xìn)号(hào)的(de)輸入(rù)輸出(chū)屬性(xìng)進(jìn)行聲明(míng),指出(chū)对(duì)于(yú)FPGA来(lái)说(shuō)这(zhè)一(yī)信(xìn)号(hào)屬于(yú)輸入(rù)還(huán)是(shì)輸出(chū),若为(wèi)輸入(rù)聲明(míng)則为(wèi)input,若为(wèi)輸出(chū)聲明(míng)則为(wèi)output。在(zài)本(běn)設計(jì)中(zhōng),由(yóu)于(yú)clk是(shì)外(wài)部(bù)晶振輸送給(gěi)FPGA的(de),因(yīn)此(cǐ)在(zài)FPGA中(zhōng)clk为(wèi)輸入(rù)信(xìn)号(hào)input;同(tóng)樣(yàng)地(dì),rst_n是(shì)外(wài)部(bù)按鍵給(gěi)FPGA的(de),在(zài)FPGA中(zhōng)rst_n也(yě)为(wèi)輸入(rù)信(xìn)号(hào)input;同(tóng)时(shí)可(kě)知led是(shì)FPGA輸出(chū)控制LED1顯示狀态的(de),因(yīn)此(cǐ)led为(wèi)輸出(chū)信(xìn)号(hào)output。根(gēn)據(jù)三(sān)个(gè)信(xìn)号(hào)的(de)屬性(xìng)将輸入(rù)輸出(chū)端口(kǒu)定(dìng)義補充完整,其代(dài)碼如(rú)下(xià):
在(zài)進(jìn)行信(xìn)号(hào)設計(jì)之前(qián)先(xiān)按照至(zhì)簡設計(jì)法的(de)思(sī)路(lù)来(lái)進(jìn)行架構設計(jì)。回(huí)顧一(yī)下(xià)設計(jì)需求:通(tòng)電(diàn)後(hòu),LED燈(dēng)顯示接近(jìn)于(yú)滅,在(zài)之後(hòu)的(de)10秒(miǎo)內(nèi),每隔2秒(miǎo)鐘(zhōng)亮(liàng)度(dù)變(biàn)化(huà)一(yī)次(cì),逐漸變(biàn)亮(liàng);在(zài)下(xià)一(yī)个(gè)10秒(miǎo)內(nèi),依旧(jiù)是(shì)每隔2秒(miǎo)亮(liàng)度(dù)變(biàn)化(huà)一(yī)次(cì),但是(shì)会(huì)逐漸變(biàn)暗(àn)。可(kě)以(yǐ)将其總(zǒng)結为(wèi):本(běn)設計(jì)以(yǐ)20秒(miǎo)为(wèi)一(yī)次(cì)循环(huán),每隔2秒(miǎo)變(biàn)化(huà)一(yī)次(cì),前(qián)10秒(miǎo)亮(liàng)度(dù)逐漸增大,後(hòu)10秒(miǎo)亮(liàng)度(dù)逐漸減小。
前(qián)文(wén)中(zhōng)詳细(xì)的(de)介紹过(guò)PWM的(de)原理,可(kě)以(yǐ)得知通(tòng)过(guò)控制PWM的(de)占空比可(kě)以(yǐ)实現(xiàn)LED燈(dēng)的(de)亮(liàng)度(dù)控制。PWM占空比越大(高(gāo)電(diàn)平时(shí)間(jiān)越长,低電(diàn)平时(shí)間(jiān)越低),燈(dēng)的(de)亮(liàng)度(dù)越暗(àn)。可(kě)以(yǐ)这(zhè)樣(yàng)理解(jiě):FPGA控制led信(xìn)号(hào)的(de)輸出(chū),可(kě)以(yǐ)輸出(chū)为(wèi)PWM波(bō)形并通(tòng)过(guò)調整占比来(lái)达(dá)到(dào)改變(biàn)LED燈(dēng)亮(liàng)度(dù)的(de)效果(guǒ)。根(gēn)據(jù)設計(jì)目标(biāo)可(kě)以(yǐ)得出(chū)設計(jì)方(fāng)案(àn):每20秒(miǎo)一(yī)次(cì)循环(huán),每隔2秒(miǎo)改變(biàn)一(yī)次(cì)led的(de)占空比,前(qián)10秒(miǎo)占空比逐漸變(biàn)大,LED燈(dēng)逐漸變(biàn)亮(liàng),後(hòu)10秒(miǎo)占空比逐漸變(biàn)小,LED燈(dēng)也(yě)随之逐漸變(biàn)暗(àn)。
由(yóu)于(yú)設計(jì)目标(biāo)只(zhī)对(duì)亮(liàng)度(dù)改變(biàn)進(jìn)行要(yào)求,并沒(méi)有(yǒu)说(shuō)明(míng)具體(tǐ)的(de)占空比是(shì)多(duō)少(shǎo),因(yīn)此(cǐ)本(běn)書(shū)自(zì)行設定(dìng)占空比。可(kě)以(yǐ)在(zài)上(shàng)板时(shí)根(gēn)據(jù)观察到(dào)的(de)視覺效果(guǒ),調整占空比的(de)大小。本(běn)書(shū)設定(dìng)占空比如(rú)下(xià):
第(dì)1个(gè)2秒(miǎo)內(nèi),占空比为(wèi)95%;
第(dì)2个(gè)2秒(miǎo)內(nèi),占空比为(wèi)85%;
第(dì)3个(gè)2秒(miǎo)內(nèi),占空比为(wèi)70%;
第(dì)4个(gè)2秒(miǎo)內(nèi),占空比为(wèi)50%;
第(dì)5个(gè)2秒(miǎo)內(nèi),占空比为(wèi)20%;
第(dì)6个(gè)2秒(miǎo)內(nèi),占空比为(wèi)20%;
第(dì)7个(gè)2秒(miǎo)內(nèi),占空比为(wèi)50%;
第(dì)8个(gè)2秒(miǎo)內(nèi),占空比为(wèi)70%;
第(dì)9个(gè)2秒(miǎo)內(nèi),占空比为(wèi)85%;
第(dì)10个(gè)2秒(miǎo)內(nèi),占空比为(wèi)95%。
之後(hòu)以(yǐ)此(cǐ)为(wèi)規律循环(huán)往複。
經(jīng)过(guò)多(duō)次(cì)的(de)实验(yàn)和(hé)测試後(hòu)發(fà)現(xiàn):PWM每10毫(háo)秒(miǎo)刷新一(yī)次(cì),LED燈(dēng)顯示的(de)亮(liàng)度(dù)效果(guǒ)是(shì)最(zuì)好(hǎo)的(de)。因(yīn)此(cǐ)根(gēn)據(jù)經(jīng)验(yàn)值,本(běn)書(shū)将PWM波(bō)周期(qī)設为(wèi)10毫(háo)秒(miǎo)。建議初学者(zhě)按照書(shū)中(zhōng)提(tí)供經(jīng)验(yàn)值来(lái)進(jìn)行操作,在(zài)完全(quán)掌握了(le)設計(jì)原理可(kě)以(yǐ)独立完成(chéng)設計(jì)後(hòu),可(kě)以(yǐ)再進(jìn)行不(bù)同(tóng)波(bō)型以(yǐ)及(jí)不(bù)同(tóng)占空比的(de)嘗試。
根(gēn)據(jù)前(qián)文(wén)分(fēn)析,得到(dào)led信(xìn)号(hào)的(de)變(biàn)化(huà)波(bō)形图(tú)如(rú)下(xià)图(tú)所(suǒ)示。

图(tú)3.3-4PWM呼吸燈(dēng)波(bō)形图(tú)
第(dì)1次(cì)持(chí)續时(shí)間(jiān)2秒(miǎo),每10毫(háo)秒(miǎo)輸出(chū)一(yī)个(gè)PWM波(bō)(9.5毫(háo)秒(miǎo)时(shí)變(biàn)低);
第(dì)2次(cì)持(chí)續时(shí)間(jiān)2秒(miǎo),每10毫(háo)秒(miǎo)輸出(chū)一(yī)个(gè)PWM波(bō)(8.5毫(háo)秒(miǎo)时(shí)變(biàn)低);
第(dì)3次(cì)持(chí)續时(shí)間(jiān)2秒(miǎo),每10毫(háo)秒(miǎo)輸出(chū)一(yī)个(gè)PWM波(bō)(7.0毫(háo)秒(miǎo)时(shí)變(biàn)低);
第(dì)4次(cì)持(chí)續时(shí)間(jiān)2秒(miǎo),每10毫(háo)秒(miǎo)輸出(chū)一(yī)个(gè)PWM波(bō)(5.0毫(háo)秒(miǎo)时(shí)變(biàn)低);
第(dì)5次(cì)持(chí)續时(shí)間(jiān)2秒(miǎo),每10毫(háo)秒(miǎo)輸出(chū)一(yī)个(gè)PWM波(bō)(2.0毫(háo)秒(miǎo)时(shí)變(biàn)低);
第(dì)6次(cì)持(chí)續时(shí)間(jiān)2秒(miǎo),每10毫(háo)秒(miǎo)輸出(chū)一(yī)个(gè)PWM波(bō)(2.0毫(háo)秒(miǎo)时(shí)變(biàn)低);
第(dì)7次(cì)持(chí)續时(shí)間(jiān)2秒(miǎo),每10毫(háo)秒(miǎo)輸出(chū)一(yī)个(gè)PWM波(bō)(5.0毫(háo)秒(miǎo)时(shí)變(biàn)低);
第(dì)8次(cì)持(chí)續时(shí)間(jiān)2秒(miǎo),每10毫(háo)秒(miǎo)輸出(chū)一(yī)个(gè)PWM波(bō)(7.0毫(háo)秒(miǎo)时(shí)變(biàn)低);
第(dì)9次(cì)持(chí)續时(shí)間(jiān)2秒(miǎo),每10毫(háo)秒(miǎo)輸出(chū)一(yī)个(gè)PWM波(bō)(8.5毫(háo)秒(miǎo)时(shí)變(biàn)低);
第(dì)10次(cì)持(chí)續时(shí)間(jiān)2秒(miǎo),每10毫(háo)秒(miǎo)輸出(chū)一(yī)个(gè)PWM波(bō)(9.5毫(háo)秒(miǎo)时(shí)變(biàn)低);
此(cǐ)处PWM波(bō)變(biàn)低的(de)时(shí)間(jiān)是(shì)根(gēn)據(jù)10毫(háo)秒(miǎo)PWM波(bō)的(de)占空比算出(chū)来(lái)的(de),例如(rú)占空比为(wèi)95%时(shí)可(kě)以(yǐ)得出(chū)10ms×95%=9.5ms,以(yǐ)此(cǐ)類(lèi)推,可(kě)以(yǐ)得出(chū)所(suǒ)有(yǒu)PWM波(bō)的(de)變(biàn)化(huà)值。
根(gēn)據(jù)至(zhì)簡設計(jì)法原理,總(zǒng)結需求可(kě)知,这(zhè)次(cì)設計(jì)需要(yào)以(yǐ)下(xià)三(sān)个(gè)計(jì)數器:計(jì)算輸出(chū)10毫(háo)秒(miǎo)PWM波(bō)的(de)計(jì)數器;計(jì)算每一(yī)个(gè)持(chí)續2秒(miǎo)时(shí)間(jiān)的(de)計(jì)數器;計(jì)算次(cì)數(1-10次(cì))的(de)計(jì)數器。
来(lái)思(sī)考一(yī)下(xià):既然設計(jì)目标(biāo)为(wèi)2秒(miǎo)改變(biàn)一(yī)次(cì)狀态,那(nà)麼(me)为(wèi)什麼(me)除了(le)計(jì)算2秒(miǎo)的(de)計(jì)數器之外(wài)還(huán)要(yào)增加次(cì)數的(de)計(jì)數器,这(zhè)樣(yàng)豈不(bù)是(shì)更(gèng)麻(má)煩吗?实際上(shàng)增加計(jì)數器的(de)操作正(zhèng)是(shì)采用(yòng)了(le)至(zhì)簡設計(jì)法的(de)設計(jì)思(sī)路(lù),讓信(xìn)号(hào)代(dài)碼更(gèng)加有(yǒu)条(tiáo)理并便于(yú)設計(jì)师(shī)确定(dìng)位置。
舉个(gè)生(shēng)活中(zhōng)常見(jiàn)的(de)例子,如(rú)下(xià)图(tú)所(suǒ)示,可(kě)以(yǐ)把每一(yī)次(cì)20秒(miǎo)的(de)循环(huán)看(kàn)做樓层,把每2秒(miǎo)一(yī)次(cì)的(de)狀态改變(biàn)看(kàn)做門(mén)牌(pái)号(hào),循环(huán)中(zhōng)的(de)2秒(miǎo)、4秒(miǎo)、6秒(miǎo)时(shí)間(jiān)即在(zài)对(duì)應(yìng)門(mén)牌(pái)1号(hào)2号(hào)3号(hào),以(yǐ)此(cǐ)類(lèi)推。如(rú)果(guǒ)只(zhī)用(yòng)一(yī)个(gè)計(jì)數器的(de)話(huà),那(nà)麼(me)一(yī)樓門(mén)牌(pái)号(hào)为(wèi)1、2、3、4、5、6、7、8,二(èr)樓門(mén)牌(pái)号(hào)为(wèi)9、10、11、12、13、14、15、16、17、18,三(sān)樓以(yǐ)此(cǐ)類(lèi)推。随着樓层的(de)變(biàn)高(gāo),这(zhè)種(zhǒng)計(jì)數方(fāng)式的(de)弊端就(jiù)会(huì)顯露(lù)出(chū)来(lái)。比如(rú)在(zài)这(zhè)種(zhǒng)情(qíng)況下(xià)想(xiǎng)要(yào)尋找(zhǎo)76号(hào),就(jiù)可(kě)能(néng)需要(yào)很久才能(néng)找(zhǎo)到(dào)。

图(tú)3.3-5單一(yī)門(mén)牌(pái)号(hào)計(jì)數模式
如(rú)果(guǒ)在(zài)一(yī)个(gè)計(jì)數單位的(de)基礎上(shàng)再加一(yī)个(gè)計(jì)數單位,即采用(yòng)两(liǎng)種(zhǒng)技術(shù)模式,一(yī)个(gè)記(jì)樓层,一(yī)个(gè)記(jì)門(mén)牌(pái)号(hào),如(rú)下(xià)图(tú)所(suǒ)示。在(zài)同(tóng)樣(yàng)的(de)門(mén)牌(pái)号(hào)計(jì)數中(zhōng),可(kě)以(yǐ)記(jì)为(wèi)一(yī)樓的(de)1、2、3、4、5、6、7、8号(hào),二(èr)樓的(de)1、2、3、4、5、6、7、8、9、10号(hào),以(yǐ)此(cǐ)類(lèi)推,每一(yī)层都有(yǒu)对(duì)應(yìng)的(de)房(fáng)間(jiān)号(hào)。在(zài)这(zhè)種(zhǒng)計(jì)數模式下(xià),如(rú)果(guǒ)想(xiǎng)要(yào)找(zhǎo)到(dào)七(qī)层的(de)6号(hào)房(fáng)間(jiān),不(bù)需要(yào)多(duō)做思(sī)考就(jiù)可(kě)以(yǐ)一(yī)下(xià)定(dìng)位到(dào)正(zhèng)确位置。

图(tú)3.3-6两(liǎng)種(zhǒng)門(mén)牌(pái)号(hào)複合計(jì)數模式
此(cǐ)外(wài),如(rú)果(guǒ)想(xiǎng)要(yào)定(dìng)位到(dào)每一(yī)层固定(dìng)位置的(de)房(fáng)間(jiān),同(tóng)樣(yàng)可(kě)以(yǐ)使用(yòng)两(liǎng)種(zhǒng)計(jì)數單位複合的(de)模式:用(yòng)cnt0来(lái)表(biǎo)示房(fáng)間(jiān)号(hào),其範圍是(shì)0-9,用(yòng)cnt1来(lái)表(biǎo)示樓层号(hào),其範圍是(shì)0-1,通(tòng)过(guò)cnt0和(hé)cnt1两(liǎng)个(gè)計(jì)數器可(kě)以(yǐ)找(zhǎo)到(dào)任何一(yī)个(gè)房(fáng)間(jiān)。如(rú)果(guǒ)想(xiǎng)找(zhǎo)同(tóng)一(yī)个(gè)位置的(de)房(fáng)間(jiān),也(yě)可(kě)以(yǐ)直(zhí)接用(yòng)cnt0来(lái)表(biǎo)示。例如(rú)cnt0==4可(kě)以(yǐ)統一(yī)表(biǎo)示每层樓的(de)四(sì)号(hào)房(fáng)間(jiān)。但如(rú)果(guǒ)只(zhī)有(yǒu)房(fáng)間(jiān)号(hào)这(zhè)一(yī)計(jì)數模式而(ér)沒(méi)有(yǒu)樓层的(de)話(huà),想(xiǎng)表(biǎo)示每层樓的(de)四(sì)号(hào)房(fáng)間(jiān),則表(biǎo)示方(fāng)式为(wèi)“cnt0==4”、“cnt0=12”,更(gèng)高(gāo)樓层以(yǐ)此(cǐ)類(lèi)推。两(liǎng)種(zhǒng)表(biǎo)現(xiàn)形式的(de)難易程度(dù)顯而(ér)易見(jiàn)。
通(tòng)过(guò)案(àn)例分(fēn)析可(kě)以(yǐ)發(fà)現(xiàn)複合計(jì)數并不(bù)是(shì)多(duō)此(cǐ)一(yī)舉,反(fǎn)而(ér)是(shì)最(zuì)簡單的(de)計(jì)數方(fāng)式。因(yīn)此(cǐ),除計(jì)算輸出(chū)10毫(háo)秒(miǎo)PWM波(bō)的(de)計(jì)數器外(wài),本(běn)設計(jì)会(huì)使用(yòng)一(yī)个(gè)計(jì)數2秒(miǎo)的(de)計(jì)數器和(hé)一(yī)个(gè)表(biǎo)示次(cì)數的(de)計(jì)數器。这(zhè)是(shì)最(zuì)适合本(běn)設計(jì)的(de)計(jì)數器方(fāng)案(àn),在(zài)後(hòu)續遇到(dào)問(wèn)題(tí)时(shí)可(kě)以(yǐ)快(kuài)速的(de)定(dìng)位到(dào)相應(yìng)位置,從而(ér)避免很多(duō)麻(má)煩。
不(bù)論是(shì)簡單設計(jì)還(huán)是(shì)複雜設計(jì),至(zhì)簡設計(jì)法都会(huì)全(quán)面(miàn)的(de)考慮設計(jì)需求,在(zài)每一(yī)个(gè)环(huán)节(jié)采用(yòng)最(zuì)适合的(de)設計(jì)方(fāng)案(àn),盡量(liàng)为(wèi)後(hòu)續的(de)步驟減少(shǎo)不(bù)必要(yào)的(de)麻(má)煩。
确定(dìng)了(le)三(sān)个(gè)計(jì)數器後(hòu)来(lái)讨論一(yī)下(xià)每个(gè)計(jì)數器的(de)实現(xiàn)。至(zhì)簡設計(jì)法的(de)設計(jì)規則中(zhōng)有(yǒu)講过(guò),計(jì)數器的(de)設計(jì)只(zhī)考慮两(liǎng)个(gè)因(yīn)素:加1条(tiáo)件(jiàn)和(hé)計(jì)數數量(liàng)。只(zhī)要(yào)确定(dìng)好(hǎo)相應(yìng)邏輯,就(jiù)能(néng)完成(chéng)計(jì)數器代(dài)碼設計(jì)。
首先(xiān)来(lái)讨論計(jì)數10毫(háo)秒(miǎo)PWM波(bō)的(de)計(jì)數器cnt0,由(yóu)于(yú)cnt0始終(zhōng)不(bù)停地(dì)進(jìn)行計(jì)數,因(yīn)此(cǐ)可(kě)以(yǐ)認为(wèi)其加1条(tiáo)件(jiàn)是(shì)一(yī)直(zhí)有(yǒu)效的(de),可(kě)写成(chéng):assign add_cnt0==1。
可(kě)能(néng)会(huì)有(yǒu)同(tóng)学提(tí)出(chū)疑問(wèn):加1条(tiáo)件(jiàn)的(de)概念是(shì)什麼(me)?这(zhè)里(lǐ)以(yǐ)停車位来(lái)進(jìn)行比喻,一(yī)般情(qíng)況下(xià)对(duì)每个(gè)停車位置会(huì)進(jìn)行对(duì)應(yìng)編号(hào),但是(shì)如(rú)果(guǒ)某个(gè)位置上(shàng)放(fàng)置了(le)一(yī)块(kuài)石(dàn)头(tóu)无法作为(wèi)停車位时(shí),該位置就(jiù)不(bù)能(néng)獲得对(duì)應(yìng)的(de)編号(hào)。反(fǎn)之則可(kě)以(yǐ)認为(wèi)停車位編号(hào)的(de)加1条(tiáo)件(jiàn)就(jiù)是(shì):对(duì)應(yìng)位置上(shàng)沒(méi)有(yǒu)石(dàn)头(tóu),其可(kě)以(yǐ)繼續的(de)進(jìn)行編号(hào),即assign add_cnt0 = “沒(méi)有(yǒu)石(dàn)头(tóu)”。因(yīn)此(cǐ)如(rú)果(guǒ)在(zài)設計(jì)中(zhōng)計(jì)數器一(yī)直(zhí)沒(méi)有(yǒu)阻礙地(dì)進(jìn)行計(jì)數工作,則可(kě)以(yǐ)認为(wèi)加1条(tiáo)件(jiàn)是(shì)一(yī)直(zhí)有(yǒu)效的(de)。
接着讨論計(jì)數器cnt0的(de)計(jì)數數量(liàng):本(běn)工程的(de)工作时(shí)鐘(zhōng)是(shì)50MHz,即周期(qī)为(wèi)20ns,當計(jì)數器計(jì)數到(dào)第(dì)10_000_000/20=500_000个(gè)时(shí),就(jiù)代(dài)表(biǎo)10毫(háo)秒(miǎo)时(shí)間(jiān)到(dào)了(le),因(yīn)此(cǐ)cnt0的(de)計(jì)數數量(liàng)为(wèi)500_000。
确定(dìng)好(hǎo)cnt0的(de)加1条(tiáo)件(jiàn)和(hé)計(jì)數數量(liàng)後(hòu)開(kāi)始進(jìn)行代(dài)碼編写,以(yǐ)往都是(shì)一(yī)行行的(de)輸入(rù)相應(yìng)代(dài)碼。但是(shì)至(zhì)簡設計(jì)法有(yǒu)一(yī)个(gè)小技巧,可(kě)以(yǐ)节(jié)省(shěng)代(dài)碼編写时(shí)間(jiān)的(de)同(tóng)时(shí)在(zài)一(yī)定(dìng)程度(dù)上(shàng)降低了(le)代(dài)碼的(de)出(chū)錯率。至(zhì)簡設計(jì)法将日(rì)常代(dài)碼中(zhōng)常用(yòng)到(dào)的(de)固定(dìng)部(bù)分(fēn)制作成(chéng)模板,進(jìn)行代(dài)碼編程时(shí)可(kě)以(yǐ)調用(yòng)相應(yìng)模板後(hòu)根(gēn)據(jù)邏輯輸入(rù)对(duì)應(yìng)設計(jì)的(de)變(biàn)量(liàng)将代(dài)碼補充完整。这(zhè)处就(jiù)可(kě)以(yǐ)用(yòng)模板編写計(jì)數器代(dài)碼,感(gǎn)受一(yī)下(xià)这(zhè)个(gè)炫酷的(de)功能(néng)。
打(dǎ)開(kāi)GVIM工具,在(zài)命令模式下(xià)輸入(rù)“:Mdyjsq”後(hòu)點(diǎn)擊回(huí)車就(jiù)調出(chū)了(le)对(duì)應(yìng)模板,如(rú)下(xià)图(tú)所(suǒ)示。之後(hòu)再将本(běn)案(àn)例中(zhōng)的(de)變(biàn)量(liàng)填到(dào)模板里(lǐ)面(miàn),就(jiù)可(kě)以(yǐ)得到(dào)完整正(zhèng)确的(de)計(jì)數器代(dài)碼。

图(tú)3.3-7至(zhì)簡設計(jì)法調用(yòng)計(jì)數器代(dài)碼模板
按照上(shàng)文(wén)方(fāng)法,得出(chū)計(jì)數器cnt0的(de)代(dài)碼設計(jì)如(rú)下(xià):
下(xià)面(miàn)来(lái)設計(jì)記(jì)录(lù)2秒(miǎo)时(shí)間(jiān)的(de)計(jì)數器cnt1。本(běn)工程的(de)工作时(shí)鐘(zhōng)是(shì)50MHz,即周期(qī)为(wèi)20ns,因(yīn)此(cǐ)當計(jì)數器計(jì)數到(dào)第(dì)2_000_000_000/20=100_000_000个(gè)时(shí),就(jiù)代(dài)表(biǎo)2秒(miǎo)时(shí)間(jiān)計(jì)时(shí)結束(shù)。这(zhè)是(shì)第(dì)一(yī)種(zhǒng)設計(jì)思(sī)路(lù),至(zhì)簡設計(jì)法在(zài)这(zhè)里(lǐ)也(yě)提(tí)供另(lìng)外(wài)一(yī)種(zhǒng)設計(jì)思(sī)路(lù):與(yǔ)cnt0複合使用(yòng),以(yǐ)10毫(háo)秒(miǎo)为(wèi)小周期(qī),通(tòng)过(guò)數2_000_000_000/10_000_000=200个(gè)10毫(háo)秒(miǎo)时(shí)間(jiān),就(jiù)能(néng)确定(dìng)2秒(miǎo)时(shí)間(jiān)計(jì)时(shí)結束(shù)。在(zài)这(zhè)種(zhǒng)思(sī)路(lù)下(xià)可(kě)以(yǐ)得出(chū)計(jì)數器cnt1的(de)加1条(tiáo)件(jiàn)是(shì)end_cnt0,計(jì)數數量(liàng)为(wèi)200。此(cǐ)时(shí)繼續調用(yòng)至(zhì)簡設計(jì)法模板,在(zài)GVIM命令模式下(xià)輸入(rù)“:Mdyjsq”,點(diǎn)擊回(huí)車後(hòu)調出(chū)对(duì)應(yìng)模板,将“add_cnt1”和(hé)“end_cnt1”補充完整,得到(dào)計(jì)數器cnt1的(de)代(dài)碼如(rú)下(xià):
最(zuì)後(hòu)是(shì)次(cì)數計(jì)數器cnt2的(de)設計(jì)。根(gēn)據(jù)設計(jì)目标(biāo)可(kě)知,每隔2秒(miǎo)为(wèi)1次(cì)改變(biàn),計(jì)數器的(de)值應(yìng)加1,即cnt2的(de)加1条(tiáo)件(jiàn)为(wèi)end_cnt1;每个(gè)周期(qī)該計(jì)數器應(yìng)計(jì)數10次(cì),即cnt2的(de)計(jì)數數量(liàng)为(wèi)10。繼續調用(yòng)至(zhì)簡設計(jì)法模板,在(zài)命令模式下(xià)輸入(rù)“:Mdyjsq”,點(diǎn)擊回(huí)車,調出(chū)对(duì)應(yìng)模板後(hòu)将“add_cnt1”和(hé)“end_cnt1”補充完整,得到(dào)計(jì)數器cnt2的(de)代(dài)碼如(rú)下(xià):
确定(dìng)好(hǎo)三(sān)个(gè)計(jì)數器的(de)代(dài)碼後(hòu)来(lái)思(sī)考一(yī)下(xià)輸出(chū)信(xìn)号(hào)led的(de)變(biàn)化(huà)。回(huí)想(xiǎng)設計(jì)目标(biāo)可(kě)知led有(yǒu)两(liǎng)个(gè)變(biàn)化(huà)點(diǎn):變(biàn)0和(hé)變(biàn)1。當10毫(háo)秒(miǎo)計(jì)數器計(jì)數到(dào)一(yī)定(dìng)个(gè)數时(shí)led信(xìn)号(hào)值變(biàn)为(wèi)0,但由(yóu)于(yú)占空比不(bù)斷進(jìn)行變(biàn)化(huà),該計(jì)數值也(yě)会(huì)發(fà)生(shēng)變(biàn)化(huà)。可(kě)以(yǐ)假設該值为(wèi)x,也(yě)就(jiù)是(shì)當計(jì)數器數到(dào)第(dì)x个(gè)时(shí),led的(de)值變(biàn)0。led值變(biàn)为(wèi)1則是(shì)由(yóu)于(yú)10毫(háo)秒(miǎo)計(jì)數时(shí)間(jiān)到(dào)了(le),也(yě)就(jiù)是(shì)當end_cnt0时(shí),led的(de)值變(biàn)1 。依旧(jiù)調用(yòng)至(zhì)簡設計(jì)法模板,在(zài)編輯模式下(xià)輸入(rù)“Shixu2”回(huí)車,調出(chū)模板并将代(dài)碼補充完整,得出(chū)led信(xìn)号(hào)的(de)代(dài)碼如(rú)下(xià):
最(zuì)後(hòu)再来(lái)思(sī)考一(yī)下(xià)變(biàn)量(liàng)x。x代(dài)表(biǎo)led信(xìn)号(hào)值變(biàn)为(wèi)0的(de)条(tiáo)件(jiàn),即PWM波(bō)變(biàn)低的(de)时(shí)刻。由(yóu)于(yú)不(bù)同(tóng)次(cì)數中(zhōng)PWM波(bō)的(de)占空比是(shì)不(bù)斷變(biàn)化(huà)的(de),其对(duì)應(yìng)的(de)x值会(huì)有(yǒu)所(suǒ)變(biàn)化(huà)。也(yě)就(jiù)是(shì)说(shuō)x的(de)值與(yǔ)閃爍次(cì)數有(yǒu)關(guān),即與(yǔ)計(jì)數器cnt2有(yǒu)關(guān)。在(zài)第(dì)1次(cì)閃爍(cnt2=0)时(shí),led信(xìn)号(hào)在(zài)9.5毫(háo)秒(miǎo)时(shí)刻變(biàn)为(wèi)0,即在(zài)第(dì)一(yī)次(cì)閃爍中(zhōng),當cnt0數到(dào)第(dì)9_500_000/20=475_000个(gè)时(shí)led信(xìn)号(hào)變(biàn)为(wèi)0。因(yīn)此(cǐ)當cnt2=0时(shí),x的(de)值为(wèi)475_000。同(tóng)樣(yàng)的(de),第(dì)2次(cì)閃爍(cnt2=1)时(shí),led信(xìn)号(hào)在(zài)8.5毫(háo)秒(miǎo)时(shí)刻變(biàn)为(wèi)0。8_500_000/20=425_000,因(yīn)此(cǐ)cnt2=1时(shí),x=425_000。同(tóng)理可(kě)得第(dì)三(sān)次(cì)x=350_000,第(dì)四(sì)次(cì)x=250_000,第(dì)五(wǔ)次(cì)x=100_000,第(dì)六(liù)次(cì)x=100_000,第(dì)七(qī)次(cì)x=250_000,第(dì)八(bā)次(cì)x=350_000,第(dì)九次(cì)x=425_000,第(dì)十(shí)次(cì)x=475_000。
綜上(shàng)所(suǒ)述,可(kě)得x的(de)代(dài)碼如(rú)下(xià):
至(zhì)此(cǐ),主(zhǔ)體(tǐ)程序已經(jīng)完成(chéng)。回(huí)顧一(yī)下(xià)思(sī)考过(guò)程会(huì)發(fà)現(xiàn)設計(jì)的(de)每一(yī)步都要(yào)按照設計(jì)目标(biāo)逐步展(zhǎn)開(kāi),看(kàn)似在(zài)讨論一(yī)个(gè)个(gè)小問(wèn)題(tí),但实際上(shàng)每个(gè)問(wèn)題(tí)都是(shì)圍繞設計(jì)目标(biāo)来(lái)進(jìn)行讨論的(de),这(zhè)也(yě)是(shì)本(běn)書(shū)最(zuì)開(kāi)始強(qiáng)調制定(dìng)和(hé)理解(jiě)設計(jì)目标(biāo)的(de)重(zhòng)要(yào)性(xìng)的(de)原因(yīn)。
下(xià)来(lái)将module補充完整,首先(xiān)来(lái)定(dìng)義信(xìn)号(hào)類(lèi)型。对(duì)類(lèi)型reg和(hé)wire的(de)判斷總(zǒng)会(huì)有(yǒu)多(duō)餘的(de)聯想(xiǎng),比如(rú)認为(wèi)reg是(shì)寄存器,wire是(shì)線(xiàn);或(huò)者(zhě)認为(wèi)reg類(lèi)型会(huì)綜合成(chéng)寄存器,wire類(lèi)型不(bù)会(huì)綜合成(chéng)寄存器。但是(shì)这(zhè)些其实和(hé)reg型還(huán)是(shì)wire型都并无關(guān)系(xì)。实際上(shàng)对(duì)信(xìn)号(hào)類(lèi)型的(de)判斷不(bù)需要(yào)做任何的(de)聯想(xiǎng),只(zhī)要(yào)記(jì)住一(yī)个(gè)規則“用(yòng)always实現(xiàn)的(de)是(shì)reg型,其他(tā)都是(shì)wire型”就(jiù)可(kě)以(yǐ)了(le)。
cnt0是(shì)用(yòng)always産生(shēng)的(de)信(xìn)号(hào),因(yīn)此(cǐ)類(lèi)型为(wèi)reg。cnt0計(jì)數的(de)最(zuì)大值为(wèi)500_000,需要(yào)用(yòng)19根(gēn)線(xiàn)表(biǎo)示,即位宽(kuān)是(shì)19位。
關(guān)于(yú)信(xìn)号(hào)位宽(kuān)的(de)獲取(qǔ),至(zhì)簡設計(jì)法在(zài)此(cǐ)分(fēn)享一(yī)个(gè)非(fēi)常实用(yòng)的(de)技巧:打(dǎ)開(kāi)計(jì)算器,點(diǎn)擊“查看(kàn)”,選擇“程序員”模式,在(zài)“十(shí)進(jìn)制”下(xià)将信(xìn)号(hào)值輸入(rù),就(jiù)会(huì)獲得对(duì)應(yìng)的(de)信(xìn)号(hào)位宽(kuān)。如(rú)下(xià)图(tú)所(suǒ)示,将cnt0的(de)值500_000輸入(rù),可(kě)以(yǐ)看(kàn)出(chū)其位宽(kuān)为(wèi)19。

图(tú)3.3-8通(tòng)过(guò)計(jì)算器獲取(qǔ)信(xìn)号(hào)位宽(kuān)
綜上(shàng)所(suǒ)述,cnt0的(de)信(xìn)号(hào)定(dìng)義代(dài)碼如(rú)下(xià):
cnt1也(yě)是(shì)用(yòng)always産生(shēng)的(de)信(xìn)号(hào),因(yīn)此(cǐ)類(lèi)型为(wèi)reg。cnt1計(jì)數的(de)最(zuì)大值为(wèi)200,需要(yào)用(yòng)8根(gēn)線(xiàn)表(biǎo)示,即位宽(kuān)是(shì)8位。編輯模式下(xià)輸入(rù)“Reg8”調用(yòng)模板,得到(dào)代(dài)碼表(biǎo)示如(rú)下(xià):
同(tóng)理,cnt2信(xìn)号(hào)也(yě)由(yóu)always産生(shēng),其類(lèi)型为(wèi)reg。cnt2計(jì)數的(de)最(zuì)大值为(wèi)9,需要(yào)用(yòng)4根(gēn)線(xiàn)表(biǎo)示,即位宽(kuān)是(shì)4位。編輯模式下(xià)輸入(rù)“Reg4”調用(yòng)模板,得到(dào)代(dài)碼表(biǎo)示如(rú)下(xià):
add_cnt0和(hé)end_cnt0都是(shì)用(yòng)assign方(fāng)式設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire。其值是(shì)0或(huò)者(zhě)1,用(yòng)1根(gēn)線(xiàn)表(biǎo)示即可(kě),位宽(kuān)为(wèi)1。編輯模式下(xià)輸入(rù)“Wire1”調用(yòng)模板,得到(dào)代(dài)碼表(biǎo)示如(rú)下(xià):
add_cnt1和(hé)end_cnt1也(yě)是(shì)用(yòng)assign方(fāng)式設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire。其值是(shì)0或(huò)者(zhě)1,用(yòng)1根(gēn)線(xiàn)表(biǎo)示即可(kě),位宽(kuān)为(wèi)1。編輯模式下(xià)輸入(rù)“Wire1”調用(yòng)模板,得到(dào)代(dài)碼表(biǎo)示如(rú)下(xià):
同(tóng)樣(yàng),add_cnt2和(hé)end_cnt2是(shì)用(yòng)assign方(fāng)式設計(jì),類(lèi)型为(wèi)wire。其值是(shì)0或(huò)者(zhě)1,用(yòng)1根(gēn)線(xiàn)表(biǎo)示即可(kě),位宽(kuān)为(wèi)1。編輯模式下(xià)輸入(rù)“Wire1”調用(yòng)模板,得到(dào)代(dài)碼表(biǎo)示如(rú)下(xià):
led信(xìn)号(hào)是(shì)用(yòng)always方(fāng)式設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)reg。其值是(shì)0或(huò)者(zhě)1,用(yòng)1根(gēn)線(xiàn)表(biǎo)示即可(kě),位宽(kuān)为(wèi)1。編輯模式下(xià)輸入(rù)“Reg1”調用(yòng)模板,得到(dào)代(dài)碼表(biǎo)示如(rú)下(xià):
x是(shì)用(yòng)always方(fāng)式設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)reg。其值是(shì)最(zuì)大是(shì)475_000,需要(yào)19根(gēn)線(xiàn)表(biǎo)示,即位宽(kuān)为(wèi)19,其代(dài)碼表(biǎo)示如(rú)下(xià):
至(zhì)此(cǐ),整个(gè)代(dài)碼的(de)設計(jì)工作已經(jīng)完成(chéng)。完整版的(de)工程代(dài)碼如(rú)下(xià):
4.1 新建工程
打(dǎ)開(kāi)软(ruǎn)件(jiàn)“Quartus Ⅱ”,點(diǎn)擊File下(xià)拉列表(biǎo)中(zhōng)的(de)New Project Wzard...新建工程選項,如(rú)下(xià)图(tú)所(suǒ)示。

图(tú)3.3-9Quartus新建工程
随後(hòu)会(huì)出(chū)現(xiàn)Quartus新建工程介紹,如(rú)下(xià)图(tú)所(suǒ)示,直(zhí)接點(diǎn)擊“Next”。

图(tú)3.3-10Quartus新建工程介紹
此(cǐ)时(shí)会(huì)出(chū)現(xiàn)工程文(wén)件(jiàn)夾、工程名、頂层模块(kuài)名設置界面(miàn),如(rú)图(tú)3.3- 11所(suǒ)示。設置目录(lù)为(wèi):D:/mdy_book/pwmled,工程名和(hé)頂层名为(wèi)pwmled。这(zhè)里(lǐ)再次(cì)進(jìn)行強(qiáng)調,为(wèi)了(le)避免初学者(zhě)使用(yòng)过(guò)程中(zhōng)出(chū)現(xiàn)報錯情(qíng)況,強(qiáng)烈建議按照本(běn)書(shū)的(de)工程名和(hé)文(wén)件(jiàn)名進(jìn)行設置,設置完成(chéng)後(hòu)點(diǎn)擊“Next”。

图(tú)3.3-11QUARTUS新建工程設置名稱
新建工程類(lèi)型設置選擇“Empty project”,如(rú)下(xià)图(tú)所(suǒ)示,然後(hòu)點(diǎn)擊“Next”。

图(tú)3.3-12QUARTUS新建工程類(lèi)型
文(wén)件(jiàn)添加界面(miàn)如(rú)图(tú)3.3- 13所(suǒ)示,點(diǎn)擊右(yòu)側的(de)“Add”按鈕,添加之前(qián)写好(hǎo)的(de)“pwmled.v”文(wén)件(jiàn),可(kě)以(yǐ)看(kàn)到(dào)界面(miàn)下(xià)方(fāng)会(huì)顯示出(chū)文(wén)件(jiàn),随後(hòu)點(diǎn)擊“Next”。

图(tú)3.3-13QUARTUS添加文(wén)件(jiàn)
芯片(piàn)型号(hào)選擇界面(miàn)如(rú)图(tú)3.3- 14所(suǒ)示,“Device Family”選擇“Cyclone ⅣE”,在(zài)芯片(piàn)型号(hào)選擇处選擇“EP4CE15F23C8”,之後(hòu)點(diǎn)擊“Next”。

图(tú)3.3-14QUARTUS選擇芯片(piàn)型号(hào)
图(tú)3.3- 15为(wèi)QUARTUS設置工具界面(miàn),不(bù)必做任何修改,直(zhí)接點(diǎn)擊“Next”即可(kě)。

图(tú)3.3-15QUARTUS設置工具界面(miàn)
新建工程的(de)彙總(zǒng)情(qíng)況如(rú)下(xià)图(tú)所(suǒ)示,點(diǎn)擊“Finish”,完成(chéng)新建工程。

图(tú)3.3-16QUARTUS新建工程彙總(zǒng)界面(miàn)
新建工程步驟完成(chéng)後(hòu),会(huì)出(chū)現(xiàn)如(rú)下(xià)所(suǒ)示的(de)QUARTUS界面(miàn)。

图(tú)3.3-17QUARTUS新建工程後(hòu)界面(miàn)
點(diǎn)擊編譯按鈕可(kě)以(yǐ)对(duì)整个(gè)工程進(jìn)行編譯。編譯成(chéng)功的(de)界面(miàn)如(rú)图(tú)3.3- 18所(suǒ)示。

图(tú)3.3-18QUARTUS編譯後(hòu)界面(miàn)
下(xià)面(miàn)需要(yào)对(duì)相應(yìng)管(guǎn)脚進(jìn)行配置。如(rú)下(xià)图(tú)所(suǒ)示,在(zài)菜單欄中(zhōng)選中(zhōng)“Assignments”,然後(hòu)選擇“Pin Planner”,随後(hòu)会(huì)弹出(chū)配置管(guǎn)脚的(de)窗(chuāng)口(kǒu)。

图(tú)3.3-19QUARTUS配置管(guǎn)脚選項
在(zài)配置窗(chuāng)口(kǒu)最(zuì)下(xià)方(fāng)中(zhōng)的(de)“location”一(yī)列,參考信(xìn)号(hào)和(hé)管(guǎn)脚的(de)關(guān)系(xì),按照表(biǎo)3.3-1中(zhōng)最(zuì)右(yòu)两(liǎng)列配置好(hǎo)FPGA管(guǎn)脚,最(zuì)終(zhōng)配置結果(guǒ)如(rú)图(tú)3.3- 20。配置完成(chéng)後(hòu),關(guān)閉“PinPlanner”,软(ruǎn)件(jiàn)自(zì)動(dòng)会(huì)保存管(guǎn)脚配置信(xìn)息。
表(biǎo)3.3- 1 信(xìn)号(hào)和(hé)管(guǎn)脚關(guān)系(xì)

图(tú)3.3-20QUARTUS配置管(guǎn)脚
再次(cì)打(dǎ)開(kāi)“QUARTUS”软(ruǎn)件(jiàn),在(zài)菜單欄中(zhōng)選中(zhōng)“Processing”,然後(hòu)選擇“StartCompilation”,再次(cì)对(duì)整个(gè)工程進(jìn)行編譯和(hé)綜合,如(rú)下(xià)图(tú)所(suǒ)示。

图(tú)3.3-21QUARTUS編譯選項
當出(chū)現(xiàn)如(rú)下(xià)所(suǒ)示的(de)編譯成(chéng)功标(biāo)志时(shí),说(shuō)明(míng)已經(jīng)成(chéng)功完成(chéng)編譯綜合。

图(tú)3.3-22QUARTUS編譯成(chéng)功标(biāo)志
完成(chéng)編譯後(hòu)開(kāi)始進(jìn)行上(shàng)板調試操作,按照下(xià)图(tú)的(de)方(fāng)式,将下(xià)载器接入(rù)電(diàn)腦USB接口(kǒu),接上(shàng)開(kāi)發(fà)板電(diàn)源後(hòu)按下(xià)開(kāi)發(fà)板下(xià)方(fāng)藍(lán)色(sè)開(kāi)關(guān),硬(yìng)件(jiàn)連(lián)接完畢。

图(tú)3.3-23開(kāi)發(fà)板連(lián)接图(tú)
4.6 上(shàng)板
打(dǎ)開(kāi)QUARTUS界面(miàn),双(shuāng)擊“Tasks”一(yī)欄中(zhōng)的(de)”Program Device”。

图(tú)3.3-24QUARTUS界面(miàn)
出(chū)現(xiàn)下(xià)载程序界面(miàn)後(hòu)點(diǎn)擊“add file”添加“.sof”文(wén)件(jiàn),點(diǎn)擊“Start”,会(huì)在(zài)上(shàng)方(fāng)的(de)“Progress”处顯示進(jìn)度(dù),當進(jìn)度(dù)条(tiáo)到(dào)100%时(shí)提(tí)示成(chéng)功,此(cǐ)时(shí)即可(kě)在(zài)開(kāi)發(fà)板上(shàng)观察相應(yìng)現(xiàn)象(xiàng)。

图(tú)3.3-25配置程序界面(miàn)
如(rú)果(guǒ)操作步驟正(zhèng)确,此(cǐ)时(shí)可(kě)以(yǐ)在(zài)板子上(shàng)看(kàn)到(dào)LED燈(dēng)在(zài)十(shí)秒(miǎo)內(nèi)逐漸變(biàn)亮(liàng),接下(xià)来(lái)的(de)十(shí)秒(miǎo)又逐漸變(biàn)暗(àn),随後(hòu)繼續變(biàn)亮(liàng),不(bù)斷循环(huán)。如(rú)果(guǒ)观察到(dào)这(zhè)一(yī)現(xiàn)象(xiàng),可(kě)以(yǐ)判斷此(cǐ)次(cì)設計(jì)成(chéng)功。反(fǎn)之,如(rú)果(guǒ)LED燈(dēng)沒(méi)有(yǒu)正(zhèng)常顯示或(huò)者(zhě)按照設計(jì)目标(biāo)的(de)規律變(biàn)暗(àn)變(biàn)亮(liàng),就(jiù)需要(yào)從头(tóu)開(kāi)始進(jìn)行錯誤排查。如(rú)果(guǒ)无法自(zì)己完成(chéng)錯誤排查的(de)話(huà),可(kě)以(yǐ)重(zhòng)新按照步驟操作一(yī)遍(biàn),相信(xìn)一(yī)定(dìng)可(kě)以(yǐ)达(dá)到(dào)想(xiǎng)要(yào)的(de)效果(guǒ)。
同(tóng)樣(yàng)这(zhè)里(lǐ)也(yě)会(huì)分(fēn)享簡化(huà)版的(de)步驟,方(fāng)便複習以(yǐ)及(jí)反(fǎn)複实操。
5.1.1 頂层信(xìn)号(hào)
新建目录(lù):D:mdy_bookpwmled。在(zài)該目录(lù)中(zhōng)新建一(yī)个(gè)名为(wèi)pwmled.v的(de)文(wén)件(jiàn),并用(yòng)GVIM打(dǎ)開(kāi),開(kāi)始編写代(dài)碼。
确定(dìng)頂层信(xìn)号(hào)。工程信(xìn)号(hào)和(hé)管(guǎn)脚關(guān)系(xì)如(rú)下(xià)图(tú):
表(biǎo) 3.3 -1信(xìn)号(hào)和(hé)管(guǎn)脚關(guān)系(xì)
写出(chū)頂层信(xìn)号(hào)代(dài)碼
聲明(míng)輸入(rù)輸出(chū)屬性(xìng)。
首先(xiān)進(jìn)行架構設計(jì),分(fēn)析設計(jì)目标(biāo)得到(dào)如(rú)下(xià)所(suǒ)示的(de)波(bō)形图(tú)。

图(tú) 3.3 -4 PWM呼吸燈(dēng)波(bō)形图(tú)
設計(jì)計(jì)數器架構,表(biǎo)示10毫(háo)秒(miǎo)的(de)計(jì)數器代(dài)碼cnt0如(rú)下(xià):
記(jì)录(lù)2秒(miǎo)时(shí)間(jiān)的(de)計(jì)數器代(dài)碼cnt1如(rú)下(xià):
表(biǎo)示次(cì)數計(jì)數(1~10次(cì))的(de)計(jì)數器cnt2代(dài)碼如(rú)下(xià):
設計(jì)led信(xìn)号(hào)的(de)代(dài)碼如(rú)下(xià):
設計(jì)表(biǎo)示led信(xìn)号(hào)值變(biàn)0条(tiáo)件(jiàn)的(de)變(biàn)量(liàng)x,其具體(tǐ)代(dài)碼如(rú)下(xià):
至(zhì)此(cǐ),主(zhǔ)體(tǐ)程序完成(chéng),下(xià)面(miàn)将module補充完整。
对(duì)信(xìn)号(hào)進(jìn)行類(lèi)型定(dìng)義,其中(zhōng)cnt0 的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
add_cnt0和(hé)end_cnt0的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
cnt1的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
add_cnt1和(hé)end_cnt1的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
cnt2的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
add_cnt2和(hé)end_cnt2的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
led的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
變(biàn)量(liàng)x的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
至(zhì)此(cǐ),整个(gè)代(dài)碼的(de)設計(jì)工作已經(jīng)完成(chéng),後(hòu)續應(yìng)对(duì)代(dài)碼進(jìn)行編譯綜合以(yǐ)及(jí)上(shàng)板查看(kàn)現(xiàn)象(xiàng)。
5.2.1 新建工程
打(dǎ)開(kāi)软(ruǎn)件(jiàn)“Quartus Ⅱ”,點(diǎn)擊File下(xià)拉列表(biǎo)中(zhōng)的(de)New Project Wzard...新建工程選項。

图(tú)3.3-9Quartus新建工程
直(zhí)接點(diǎn)擊“Next”。

图(tú)3.3-10Quartus新建工程介紹
此(cǐ)时(shí)会(huì)出(chū)現(xiàn)工程文(wén)件(jiàn)夾、工程名、頂层模块(kuài)名設置界面(miàn),設置目录(lù)为(wèi):“D:/mdy_book/pwmled”,工程名和(hé)頂层名为(wèi)“pwmled”,完成(chéng)設置後(hòu)點(diǎn)擊“Next”。

图(tú)3.3-11QUARTUS新建工程設置名稱
選擇“Empty project”後(hòu)點(diǎn)擊“Next”。

图(tú)3.3-12QUARTUS新建工程類(lèi)型
點(diǎn)擊“Add”按鈕後(hòu)添加“pwmled.v”文(wén)件(jiàn),點(diǎn)擊“Next”。

图(tú)3.3-13QUARTUS添加文(wén)件(jiàn)
对(duì)芯片(piàn)型号(hào)進(jìn)行選擇:“Device Family”選擇“Cyclone ⅣE”,“Available devices”選項下(xià)選擇“EP4CE15F23C8”,随後(hòu)點(diǎn)擊“Next”。

图(tú)3.3-14QUARTUS選擇芯片(piàn)型号(hào)
直(zhí)接點(diǎn)擊“Next”。

图(tú)3.3-15QUARTUS設置工具界面(miàn)
點(diǎn)擊“Finish”,完成(chéng)新建工程。

图(tú)3.3-16QUARTUS新建工程彙總(zǒng)界面(miàn)
新建工程後(hòu)界面(miàn)如(rú)下(xià)图(tú)所(suǒ)示,點(diǎn)擊“編譯”按鈕。

图(tú)3.3-17QUARTUS新建工程後(hòu)界面(miàn)
編譯成(chéng)功界面(miàn)如(rú)下(xià)图(tú)。

图(tú)3.3-18QUARTUS編譯後(hòu)界面(miàn)
在(zài)菜單欄點(diǎn)擊“Assignments”後(hòu)點(diǎn)擊“Pin Planner”,随後(hòu)会(huì)弹出(chū)配置管(guǎn)脚的(de)窗(chuāng)口(kǒu)。

图(tú)3.3-19QUARTUS配置管(guǎn)脚選項
在(zài)配置窗(chuāng)口(kǒu)“location”根(gēn)據(jù)信(xìn)号(hào)和(hé)管(guǎn)脚關(guān)系(xì)配置管(guǎn)脚,配置完成(chéng)關(guān)閉“Pin Planner”即可(kě)自(zì)動(dòng)保存配置信(xìn)息。

图(tú)3.3-20QUARTUS配置管(guǎn)脚
表(biǎo) 3.3 - 1信(xìn)号(hào)和(hé)管(guǎn)脚關(guān)系(xì)
打(dǎ)開(kāi)“QUARTUS”软(ruǎn)件(jiàn),在(zài)菜單欄中(zhōng)選擇“Processing”,點(diǎn)擊“StartCompilation”再次(cì)進(jìn)行綜合。

图(tú)3.3-21QUARTUS編譯選項
出(chū)現(xiàn) QUARTUS 編譯成(chéng)功标(biāo)志,表(biǎo)示此(cǐ)次(cì)編譯成(chéng)功。

图(tú)3.3-22QUARTUS編譯成(chéng)功标(biāo)志
下(xià)载器接入(rù)電(diàn)腦 USB 接口(kǒu),開(kāi)發(fà)板接上(shàng)電(diàn)源後(hòu)按下(xià)藍(lán)色(sè)開(kāi)關(guān)。

图(tú)3.3-23開(kāi)發(fà)板連(lián)接图(tú)
打(dǎ)開(kāi)QUARTUS界面(miàn),双(shuāng)擊“Tasks”一(yī)欄中(zhōng)的(de)“Program Device”。

图(tú)3.3-24QUARTUS界面(miàn)
點(diǎn)擊“add file”,添加.sof文(wén)件(jiàn),随後(hòu)點(diǎn)擊“Start”。“Progress”会(huì)顯示進(jìn)度(dù),當進(jìn)度(dù)条(tiáo)顯示“100%”时(shí)代(dài)表(biǎo)添加成(chéng)功,可(kě)在(zài)開(kāi)發(fà)板上(shàng)观察此(cǐ)时(shí)現(xiàn)象(xiàng)。

图(tú)3.3-25配置程序界面(miàn)
至(zhì)此(cǐ)整个(gè)PWM呼吸燈(dēng)設計(jì)就(jiù)分(fēn)享完畢了(le)。在(zài)学会(huì)整个(gè)設計(jì)之後(hòu)可(kě)以(yǐ)展(zhǎn)開(kāi)思(sī)考,嘗試改變(biàn)燈(dēng)亮(liàng)與(yǔ)暗(àn)狀态的(de)維持(chí)时(shí)間(jiān)以(yǐ)及(jí)改變(biàn)燈(dēng)的(de)亮(liàng)度(dù)。在(zài)基于(yú)原理不(bù)變(biàn)的(de)情(qíng)況下(xià)多(duō)做一(yī)些嘗試,这(zhè)樣(yàng)可(kě)以(yǐ)更(gèng)深刻的(de)掌握案(àn)例,也(yě)欢迎有(yǒu)更(gèng)好(hǎo)思(sī)路(lù)和(hé)想(xiǎng)法的(de)同(tóng)学前(qián)往至(zhì)簡設計(jì)法論壇進(jìn)行讨論。








