本(běn)文(wén)的(de)文(wén)檔編号(hào):001600000019
需要(yào)看(kàn)对(duì)應(yìng)的(de)視頻,請點(diǎn)擊視頻編号(hào):001600000101
1.至(zhì)簡原理與(yǔ)應(yìng)用(yòng)配套(tào)的(de)案(àn)例文(wén)檔
2.使用(yòng)6个(gè)數碼管(guǎn)实現(xiàn)數字(zì)时(shí)鐘(zhōng)功能(néng),與(yǔ)數字(zì)时(shí)鐘(zhōng)相同(tóng),該功能(néng)可(kě)以(yǐ)顯示00:00:00到(dào)23:59:59範圍的(de)时(shí)間(jiān)。
3. ALTERA入(rù)門(mén)学習案(àn)例文(wén)檔
第(dì)三(sān)篇(piān) FPGA至(zhì)簡設計(jì)項目实踐
第(dì)七(qī)章(zhāng) 數字(zì)时(shí)鐘(zhōng)
第(dì)1节(jié) 項目背景
數字(zì)时(shí)鐘(zhōng)是(shì)采用(yòng)數字(zì)電(diàn)路(lù)技術(shù)实現(xiàn)时(shí)、分(fēn)、秒(miǎo)計(jì)时(shí)顯示的(de)裝(zhuāng)置,可(kě)以(yǐ)用(yòng)數字(zì)同(tóng)时(shí)顯示时(shí),分(fēn),秒(miǎo)的(de)精确时(shí)間(jiān)并实現(xiàn)準确校(xiào)时(shí),具備體(tǐ)積小、重(zhòng)量(liàng)輕(qīng)、抗干(gàn)擾能(néng)力強(qiáng)、对(duì)环(huán)境要(yào)求高(gāo)、高(gāo)精确性(xìng)、容易開(kāi)發(fà)等特(tè)性(xìng)。與(yǔ)傳統表(biǎo)盤式機(jī)械时(shí)鐘(zhōng)相比,數字(zì)时(shí)鐘(zhōng)具有(yǒu)更(gèng)高(gāo)的(de)準确性(xìng)和(hé)直(zhí)观性(xìng),由(yóu)于(yú)沒(méi)有(yǒu)機(jī)械裝(zhuāng)置,其使用(yòng)壽命更(gèng)长。本(běn)設計(jì)基于(yú)FPGA開(kāi)發(fà)板的(de)數碼管(guǎn)功能(néng)進(jìn)行數字(zì)时(shí)鐘(zhōng)的(de)設計(jì),在(zài)前(qián)面(miàn)章(zhāng)节(jié)中(zhōng)已經(jīng)詳细(xì)講解(jiě)了(le)數碼管(guǎn)的(de)工作原理,这(zhè)里(lǐ)就(jiù)不(bù)再進(jìn)行贅述,有(yǒu)需要(yào)詳细(xì)学習可(kě)以(yǐ)回(huí)到(dào)前(qián)面(miàn)章(zhāng)节(jié)進(jìn)行学習。本(běn)案(àn)例将詳细(xì)介紹用(yòng)至(zhì)簡設計(jì)法实現(xiàn)數字(zì)时(shí)鐘(zhōng)功能(néng)的(de)設計(jì)。
按照至(zhì)簡設計(jì)法的(de)設計(jì)特(tè)色(sè),在(zài)正(zhèng)式学習本(běn)設計(jì)之前(qián)首先(xiān)應(yìng)明(míng)确設計(jì)目标(biāo)。設計(jì)目标(biāo)是(shì)整个(gè)設計(jì)的(de)核心(xīn)靈魂,後(hòu)續的(de)每个(gè)步驟與(yǔ)操作都是(shì)圍繞設計(jì)目标(biāo)進(jìn)行展(zhǎn)開(kāi)。至(zhì)簡設計(jì)法的(de)中(zhōng)心(xīn)思(sī)想(xiǎng)很簡單,就(jiù)是(shì)用(yòng)最(zuì)直(zhí)接簡潔的(de)方(fāng)法来(lái)進(jìn)行工程設計(jì)。而(ér)明(míng)确設計(jì)目标(biāo)則是(shì)为(wèi)了(le)讓後(hòu)續的(de)每个(gè)階(jiē)段(duàn)都有(yǒu)意(yì)義,避免進(jìn)行不(bù)必要(yào)的(de)工程工程,少(shǎo)走(zǒu)彎路(lù)。对(duì)于(yú)初学者(zhě)来(lái)说(shuō),更(gèng)應(yìng)該在(zài)学習的(de)过(guò)程中(zhōng)養成(chéng)好(hǎo)習慣,才能(néng)在(zài)職業生(shēng)涯中(zhōng)受益。所(suǒ)以(yǐ)再次(cì)強(qiáng)調在(zài)開(kāi)始設計(jì)前(qián)一(yī)定(dìng)要(yào)将設計(jì)目标(biāo)分(fēn)析透徹,認真(zhēn)思(sī)考本(běn)次(cì)設計(jì)的(de)最(zuì)終(zhōng)目的(de)和(hé)实現(xiàn)效果(guǒ),然後(hòu)再圍繞目标(biāo)展(zhǎn)開(kāi)設計(jì)。
本(běn)工程使用(yòng)6个(gè)數碼管(guǎn)实現(xiàn)數字(zì)时(shí)鐘(zhōng)功能(néng)。與(yǔ)數字(zì)时(shí)鐘(zhōng)相同(tóng),其可(kě)以(yǐ)顯示00:00:00到(dào)23:59:59範圍的(de)时(shí)間(jiān)。
數字(zì)时(shí)鐘(zhōng)的(de)上(shàng)板效果(guǒ)如(rú)下(xià)图(tú)所(suǒ)示,想(xiǎng)要(yào)观看(kàn)上(shàng)板演示視頻效果(guǒ)的(de)读(dú)者(zhě)朋友可(kě)以(yǐ)登陸至(zhì)簡設計(jì)法官方(fāng)网(wǎng)站学習:old.mdy-edu.com/xxxx。


图(tú)3.7-1數字(zì)时(shí)鐘(zhōng)效果(guǒ)图(tú)
第(dì)3节(jié) 設計(jì)实現(xiàn)
接下(xià)来(lái)進(jìn)入(rù)設計(jì)的(de)实現(xiàn)階(jiē)段(duàn),本(běn)書(shū)会(huì)按照步驟和(hé)原理分(fēn)析分(fēn)享案(àn)例的(de)具體(tǐ)实現(xiàn)方(fāng)法,考慮到(dào)初学者(zhě)的(de)需要(yào),該部(bù)分(fēn)的(de)內(nèi)容会(huì)比較詳细(xì)。如(rú)果(guǒ)基礎知識掌握得比較牢靠,只(zhī)想(xiǎng)学習此(cǐ)設計(jì)步驟,也(yě)可(kě)以(yǐ)跳过(guò)此(cǐ)部(bù)分(fēn),直(zhí)接進(jìn)入(rù)第(dì)五(wǔ)节(jié)的(de)簡化(huà)版步驟分(fēn)享。但建議初学者(zhě)一(yī)定(dìng)按照詳细(xì)分(fēn)析的(de)內(nèi)容進(jìn)行学習,不(bù)要(yào)選擇捷徑,只(zhī)有(yǒu)打(dǎ)好(hǎo)基礎,掌握基礎知識,才可(kě)以(yǐ)從容的(de)独立完成(chéng)項目設計(jì)。
新建目录(lù):D:mdy_bookmy_shizhong,并在(zài)該目录(lù)中(zhōng),新建一(yī)个(gè)名为(wèi)my_shizong.v的(de)文(wén)件(jiàn)。用(yòng)GVIM打(dǎ)開(kāi)後(hòu)開(kāi)始編写代(dài)碼。这(zhè)里(lǐ)建議初学者(zhě)按照本(běn)書(shū)中(zhōng)提(tí)供的(de)文(wén)件(jiàn)路(lù)徑以(yǐ)及(jí)文(wén)件(jiàn)名進(jìn)行設置,避免後(hòu)續出(chū)現(xiàn)未知錯誤。
第(dì)一(yī)步應(yìng)确定(dìng)頂层信(xìn)号(hào)。開(kāi)發(fà)板上(shàng)共(gòng)8个(gè)數碼管(guǎn),分(fēn)析設計(jì)目标(biāo)可(kě)知,本(běn)次(cì)設計(jì)的(de)功能(néng)是(shì)控制其使其中(zhōng)2个(gè)數碼管(guǎn)常滅,其餘6个(gè)數碼顯示不(bù)同(tóng)的(de)數字(zì)。FPGA通(tòng)过(guò)控制位選信(xìn)号(hào)来(lái)控制8个(gè)數碼管(guǎn),即應(yìng)輸出(chū)一(yī)个(gè)8位的(de)位選信(xìn)号(hào),将其設定(dìng)为(wèi)seg_sel。其中(zhōng)seg_sel[0]对(duì)應(yìng)數碼管(guǎn)0,seg_sel[1]对(duì)應(yìng)數碼管(guǎn)1,以(yǐ)次(cì)類(lèi)推,seg_sel[7]对(duì)應(yìng)數碼管(guǎn)7。同(tóng)樣(yàng)地(dì),數碼管(guǎn)控制方(fāng)法中(zhōng)講解(jiě)过(guò):只(zhī)要(yào)控制每个(gè)數碼管(guǎn)上(shàng)的(de)7个(gè)子段(duàn)就(jiù)可(kě)以(yǐ)实現(xiàn)數碼管(guǎn)上(shàng)不(bù)同(tóng)數字(zì)的(de)顯示,即控制段(duàn)選信(xìn)号(hào)实現(xiàn)數碼管(guǎn)的(de)數字(zì)顯示。本(běn)設計(jì)中(zhōng)不(bù)需要(yào)用(yòng)到(dào)h子段(duàn),共(gòng)需要(yào)7个(gè)子段(duàn),因(yīn)此(cǐ)FPGA需要(yào)輸出(chū)一(yī)个(gè)7位的(de)段(duàn)選信(xìn)号(hào),将其設定(dìng)为(wèi)seg_ment,seg_ment[6]~segm_ment[0]分(fēn)别对(duì)應(yìng)數碼管(guǎn)的(de)abcdefg(注意(yì)对(duì)應(yìng)順序)。當然,除位選信(xìn)号(hào)和(hé)段(duàn)選信(xìn)号(hào)外(wài),設計(jì)中(zhōng)進(jìn)行工程控制的(de)时(shí)鐘(zhōng)信(xìn)号(hào)和(hé)複位信(xìn)号(hào)也(yě)同(tóng)樣(yàng)必不(bù)可(kě)少(shǎo)。
綜上(shàng)所(suǒ)述,本(běn)設計(jì)一(yī)共(gòng)需要(yào)4个(gè)信(xìn)号(hào):时(shí)鐘(zhōng)信(xìn)号(hào)clk,複位信(xìn)号(hào)rst_n,輸出(chū)的(de)位選信(xìn)号(hào)seg_sel和(hé)輸出(chū)的(de)段(duàn)選信(xìn)号(hào)seg_ment。信(xìn)号(hào)和(hé)硬(yìng)件(jiàn)的(de)对(duì)應(yìng)關(guān)系(xì)如(rú)下(xià)表(biǎo)所(suǒ)示。
表(biǎo)3.7 - 1信(xìn)号(hào)和(hé)管(guǎn)脚關(guān)系(xì)
将module的(de)名稱定(dìng)義为(wèi)my_shizhong,已知該模块(kuài)有(yǒu)4个(gè)信(xìn)号(hào):clk、rst_n、seg_sel和(hé)seg_ment,在(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)聲明(míng)信(xìn)号(hào)的(de)輸入(rù)輸出(chū)屬性(xìng),在(zài)模块(kuài)中(zhōng)需要(yào)聲明(míng)这(zhè)一(yī)信(xìn)号(hào)对(duì)于(yú)FPGA来(lái)说(shuō)屬于(yú)輸入(rù)信(xìn)号(hào)還(huán)是(shì)輸出(chū)信(xìn)号(hào)。信(xìn)号(hào)若为(wèi)輸入(rù)的(de)話(huà)則聲明(míng)其为(wèi)input,若为(wèi)輸出(chū)聲明(míng)則聲明(míng)其为(wèi)output。在(zài)本(běn)設計(jì)中(zhōng),由(yóu)于(yú)clk是(shì)外(wài)部(bù)的(de)晶振輸入(rù)給(gěi)FPGA的(de),因(yīn)此(cǐ)在(zài)FPGA中(zhōng)clk为(wèi)1位的(de)輸入(rù)信(xìn)号(hào)input;同(tóng)樣(yàng)地(dì),rst_n是(shì)外(wài)部(bù)按鍵給(gěi)FPGA的(de),因(yīn)此(cǐ)在(zài)FPGA中(zhōng)rst_n也(yě)为(wèi)1位的(de)輸入(rù)信(xìn)号(hào)input;seg_sel是(shì)FPGA控制數碼管(guǎn)亮(liàng)滅的(de)信(xìn)号(hào),因(yīn)此(cǐ)seg_sel是(shì)8位的(de)輸出(chū)信(xìn)号(hào)output;seg_ment是(shì)FPGA控制數碼管(guǎn)顯示數字(zì)內(nèi)容的(de)信(xìn)号(hào),因(yīn)此(cǐ)seg_ment是(shì)7位的(de)輸出(chū)信(xìn)号(hào)output。按照以(yǐ)上(shàng)分(fēn)析将輸入(rù)輸出(chū)端口(kǒu)定(dìng)義補充完整,其具體(tǐ)代(dài)碼如(rú)下(xià):
3.2 信(xìn)号(hào)設計(jì)
在(zài)設計(jì)信(xìn)号(hào)之前(qián),先(xiān)按照至(zhì)簡設計(jì)法的(de)思(sī)路(lù)来(lái)進(jìn)行架構設計(jì)。根(gēn)據(jù)設計(jì)目标(biāo)先(xiān)来(lái)分(fēn)析要(yào)实現(xiàn)的(de)功能(néng),8个(gè)數碼管(guǎn)中(zhōng)有(yǒu)6个(gè)一(yī)直(zhí)处于(yú)亮(liàng)的(de)狀态,其餘2个(gè)为(wèi)滅的(de)狀态。在(zài)不(bù)同(tóng)的(de)时(shí)刻时(shí),相應(yìng)位數的(de)數碼管(guǎn)会(huì)一(yī)直(zhí)變(biàn)化(huà),比如(rú)每一(yī)秒(miǎo)时(shí)間(jiān)过(guò)後(hòu),表(biǎo)示秒(miǎo)鐘(zhōng)个(gè)位的(de)數字(zì)發(fà)生(shēng)變(biàn)化(huà)。每十(shí)秒(miǎo)之後(hòu),表(biǎo)示秒(miǎo)鐘(zhōng)十(shí)位的(de)數字(zì)会(huì)發(fà)生(shēng)變(biàn)化(huà)。每60秒(miǎo)之後(hòu),表(biǎo)示分(fēn)鐘(zhōng)个(gè)位的(de)數字(zì)發(fà)生(shēng)變(biàn)化(huà),以(yǐ)此(cǐ)類(lèi)推。随着时(shí)間(jiān)的(de)變(biàn)化(huà)这(zhè)些數字(zì)按照既定(dìng)規律進(jìn)行變(biàn)化(huà),從而(ér)达(dá)到(dào)顯示正(zhèng)确时(shí)間(jiān)的(de)效果(guǒ)。
從分(fēn)析中(zhōng)可(kě)以(yǐ)看(kàn)出(chū)每个(gè)數字(zì)的(de)變(biàn)化(huà)条(tiáo)件(jiàn)是(shì)不(bù)同(tóng)的(de),有(yǒu)的(de)數字(zì)是(shì)每秒(miǎo)都在(zài)變(biàn)化(huà),有(yǒu)的(de)數字(zì)則一(yī)小时(shí)才變(biàn)化(huà)一(yī)次(cì)。对(duì)于(yú)初学者(zhě)来(lái)说(shuō)这(zhè)項設計(jì)可(kě)能(néng)实現(xiàn)起来(lái)比較複雜,但只(zhī)要(yào)遵循至(zhì)簡設計(jì)法的(de)思(sī)想(xiǎng)就(jiù)可(kě)以(yǐ)簡化(huà)成(chéng)最(zuì)直(zhí)接最(zuì)簡單的(de)思(sī)路(lù)。下(xià)面(miàn)請各(gè)位将时(shí)鐘(zhōng)的(de)概念抛開(kāi),将每个(gè)數碼管(guǎn)單独看(kàn)作是(shì)不(bù)同(tóng)时(shí)間(jiān)不(bù)同(tóng)位置顯示的(de)數碼管(guǎn),比如(rú)數碼管(guǎn)0顯示秒(miǎo)鐘(zhōng)个(gè)位,數碼管(guǎn)1顯示秒(miǎo)鐘(zhōng)十(shí)位,數碼管(guǎn)2顯示分(fēn)鐘(zhōng)个(gè)位。在(zài)不(bù)同(tóng)的(de)时(shí)刻,數碼管(guǎn)顯示的(de)數字(zì)不(bù)同(tóng),这(zhè)樣(yàng)一(yī)来(lái)就(jiù)很好(hǎo)理解(jiě)了(le)。
本(běn)設計(jì)用(yòng)m_g,m_s,f_g,f_s,s_g,s_s分(fēn)别表(biǎo)示秒(miǎo)鐘(zhōng)个(gè)位、秒(miǎo)鐘(zhōng)十(shí)位、分(fēn)鐘(zhōng)个(gè)位、分(fēn)鐘(zhōng)十(shí)位、小时(shí)个(gè)位和(hé)小时(shí)十(shí)位所(suǒ)表(biǎo)示的(de)數字(zì)值,m_g_s,m_s_s,f_g_s,f_s_s,s_g_s,s_s_s分(fēn)别表(biǎo)示秒(miǎo)鐘(zhōng)个(gè)位、秒(miǎo)鐘(zhōng)十(shí)位、分(fēn)鐘(zhōng)个(gè)位、分(fēn)鐘(zhōng)十(shí)位、小时(shí)个(gè)位和(hé)小时(shí)十(shí)位所(suǒ)表(biǎo)示數碼管(guǎn)的(de)段(duàn)選值。
數碼管(guǎn)0顯示的(de)是(shì)秒(miǎo)鐘(zhōng)个(gè)位值,翻譯成(chéng)信(xìn)号(hào)即seg_sel的(de)值为(wèi)8’b1111_1110,seg_ment的(de)值为(wèi):m_g_s。數碼管(guǎn)1顯示秒(miǎo)鐘(zhōng)十(shí)位,即seg_sel的(de)值为(wèi)8’b1111_1101,seg_ment的(de)值为(wèi)m_s_s。以(yǐ)此(cǐ)類(lèi)推,數碼管(guǎn)5顯示小时(shí)十(shí)位,即seg_sel的(de)值为(wèi)8’b1101_1111,seg_ment的(de)值为(wèi)s_s_s。輸出(chū)信(xìn)号(hào)的(de)时(shí)序波(bō)形图(tú)如(rú)下(xià)所(suǒ)示。

图(tú)3.7-2輸出(chū)信(xìn)号(hào)时(shí)序
從波(bō)形图(tú)中(zhōng)可(kě)以(yǐ)看(kàn)出(chū)在(zài)不(bù)同(tóng)时(shí)刻下(xià),seg_ment和(hé)seg_sel的(de)值会(huì)發(fà)生(shēng)變(biàn)化(huà)。那(nà)麼(me)多(duō)久会(huì)變(biàn)化(huà)一(yī)次(cì)呢?这(zhè)里(lǐ)需要(yào)学習一(yī)个(gè)新知識,即數碼管(guǎn)動(dòng)态掃描原理。
數碼管(guǎn)動(dòng)态顯示接口(kǒu)是(shì)應(yìng)用(yòng)最(zuì)为(wèi)廣泛的(de)顯示方(fāng)式之一(yī)。動(dòng)态驅動(dòng)是(shì)将數碼管(guǎn)的(de)8个(gè)顯示笔(bǐ)劃(huà)"a,b,c,d,e,f,g,h"的(de)同(tóng)名端連(lián)在(zài)一(yī)起,每个(gè)數碼管(guǎn)的(de)公共(gòng)极(jí)COM需增加由(yóu)各(gè)自(zì)独立I/O線(xiàn)控制的(de)位選通(tòng)控制電(diàn)路(lù)。當要(yào)輸出(chū)某一(yī)字(zì)形碼时(shí),所(suǒ)有(yǒu)數碼管(guǎn)都会(huì)接收(shōu)到(dào)相同(tóng)的(de)字(zì)形碼,但究竟是(shì)哪个(gè)數碼管(guǎn)会(huì)顯示出(chū)字(zì)形取(qǔ)決于(yú)單片(piàn)機(jī)对(duì)位選通(tòng)COM端電(diàn)路(lù)的(de)控制。只(zhī)需将顯示數碼管(guǎn)的(de)選通(tòng)控制打(dǎ)開(kāi),該位就(jiù)会(huì)顯示出(chū)字(zì)形,而(ér)沒(méi)有(yǒu)選通(tòng)的(de)數碼管(guǎn)并不(bù)会(huì)點(diǎn)亮(liàng)。綜上(shàng)所(suǒ)述,動(dòng)态驅動(dòng)是(shì)通(tòng)过(guò)分(fēn)时(shí)轮流控制各(gè)數碼管(guǎn)的(de)COM端,使各(gè)个(gè)數碼管(guǎn)轮流受控顯示。
通(tòng)俗来(lái)講就(jiù)是(shì)将8个(gè)數碼管(guǎn)一(yī)樣(yàng)的(de)端口(kǒu)連(lián)在(zài)一(yī)起,通(tòng)过(guò)一(yī)个(gè)信(xìn)号(hào)進(jìn)行控制。即若傳輸一(yī)个(gè)控制數碼管(guǎn)a段(duàn)點(diǎn)亮(liàng)的(de)信(xìn)号(hào),8个(gè)數碼管(guǎn)也(yě)都会(huì)收(shōu)到(dào)这(zhè)一(yī)信(xìn)号(hào)。發(fà)送信(xìn)号(hào)时(shí)令需要(yào)點(diǎn)亮(liàng)的(de)數碼管(guǎn)顯出(chū)字(zì)形,不(bù)需要(yào)的(de)數碼管(guǎn)不(bù)顯示字(zì)形。例如(rú)需要(yào)數碼管(guǎn)0顯示數字(zì)“5”,就(jiù)應(yìng)發(fà)出(chū)顯示數字(zì)“5“对(duì)應(yìng)的(de)段(duàn)選信(xìn)号(hào),这(zhè)时(shí)8个(gè)數碼管(guǎn)都会(huì)收(shōu)到(dào)數字(zì)“5”的(de)段(duàn)選信(xìn)号(hào),此(cǐ)时(shí)只(zhī)将數碼管(guǎn)0的(de)選通(tòng)控制打(dǎ)開(kāi),就(jiù)只(zhī)有(yǒu)數碼管(guǎn)0顯示了(le)數字(zì)“5”,其餘的(de)數碼管(guǎn)沒(méi)有(yǒu)選通(tòng)就(jiù)不(bù)会(huì)亮(liàng)。在(zài)不(bù)同(tóng)时(shí)刻轮流控制各(gè)數碼管(guǎn),就(jiù)可(kě)以(yǐ)达(dá)到(dào)數碼管(guǎn)轮流受控顯示的(de)效果(guǒ),这(zhè)也(yě)就(jiù)是(shì)數碼管(guǎn)動(dòng)态掃描的(de)原理。
那(nà)麼(me)这(zhè)種(zhǒng)轮流顯示的(de)模式下(xià)如(rú)何实現(xiàn)6个(gè)數碼管(guǎn)的(de)同(tóng)时(shí)顯示呢?在(zài)轮流顯示的(de)过(guò)程中(zhōng),每位數碼管(guǎn)的(de)點(diǎn)亮(liàng)时(shí)間(jiān)为(wèi)1~2ms。由(yóu)于(yú)人(rén)的(de)視覺暫留現(xiàn)象(xiàng)及(jí)發(fà)光(guāng)二(èr)极(jí)管(guǎn)的(de)餘輝效應(yìng),盡管(guǎn)各(gè)數碼管(guǎn)并非(fēi)同(tóng)时(shí)點(diǎn)亮(liàng),但只(zhī)要(yào)掃描的(de)速度(dù)足够快(kuài),人(rén)们(men)观察到(dào)的(de)就(jiù)是(shì)一(yī)組稳定(dìng)的(de)顯示數據(jù),而(ér)不(bù)会(huì)有(yǒu)閃爍感(gǎn)。在(zài)設計(jì)中(zhōng)将數碼管(guǎn)點(diǎn)亮(liàng)时(shí)間(jiān)設置为(wèi)1~2ms,就(jiù)可(kě)以(yǐ)达(dá)到(dào)動(dòng)态顯示和(hé)静(jìng)态顯示相同(tóng)的(de)效果(guǒ),但動(dòng)态顯示不(bù)僅能(néng)够节(jié)省(shěng)大量(liàng)的(de)I/O端口(kǒu),而(ér)且功耗更(gèng)低。
綜上(shàng)所(suǒ)述,本(běn)設計(jì)中(zhōng)将數碼管(guǎn)的(de)刷新时(shí)間(jiān)定(dìng)为(wèi)2ms,定(dìng)義时(shí)間(jiān)後(hòu)的(de)輸出(chū)时(shí)序波(bō)形图(tú)如(rú)下(xià)所(suǒ)示:

图(tú)3.7-3带(dài)时(shí)間(jiān)信(xìn)息的(de)輸出(chū)时(shí)序
根(gēn)據(jù)波(bō)形图(tú)分(fēn)析可(kě)以(yǐ)得到(dào)本(běn)設計(jì)的(de)計(jì)數器架構:本(běn)設計(jì)一(yī)共(gòng)需要(yào)两(liǎng)个(gè)計(jì)數器,一(yī)个(gè)計(jì)时(shí)器用(yòng)来(lái)計(jì)算2ms时(shí)間(jiān),另(lìng)一(yī)个(gè)計(jì)數器用(yòng)来(lái)計(jì)算顯示次(cì)數。
先(xiān)来(lái)讨論計(jì)算2ms时(shí)間(jiān)的(de)計(jì)數器cnt0。至(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)相應(yìng)邏輯,就(jiù)能(néng)完成(chéng)計(jì)數器代(dài)碼設計(jì)。
首先(xiān)确定(dìng)計(jì)數器cnt0的(de)加1条(tiáo)件(jiàn):由(yóu)于(yú)該計(jì)數器在(zài)不(bù)停地(dì)計(jì)數,永不(bù)停止,因(yīn)此(cǐ)可(kě)以(yǐ)認为(wèi)其加1条(tiáo)件(jiàn)一(yī)直(zhí)有(yǒu)效,可(kě)写成(chéng):assignadd_cnt0==1。
此(cǐ)处可(kě)能(néng)有(yǒu)同(tóng)学存在(zài)疑惑加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ì)數工作,就(jiù)可(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ì)2_000_000/20=100_000个(gè)时(shí)就(jiù)代(dài)表(biǎo)2毫(háo)秒(miǎo)时(shí)間(jiān)到(dào)了(le)。
确定(dìng)好(hǎo)了(le)加1条(tiáo)件(jiàn)和(hé)計(jì)數數量(liàng)後(hòu)開(kāi)始進(jìn)行代(dài)碼編写。相信(xìn)各(gè)位往常都是(shì)一(yī)行行輸入(rù)代(dài)碼,但是(shì)至(zhì)簡設計(jì)法有(yǒu)一(yī)个(gè)小技巧,可(kě)以(yǐ)节(jié)省(shěng)編写代(dài)碼的(de)时(shí)間(jiān),并且一(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)了(le)模板,進(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è)里(lǐ)就(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”,點(diǎn)擊回(huí)車後(hòu)調出(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)了(le)完整正(zhèng)确的(de)代(dài)碼。

图(tú)3.7-4至(zhì)簡設計(jì)法調用(yòng)計(jì)數器代(dài)碼模板
補充完整後(hòu)得到(dào)計(jì)數器cnt0的(de)代(dài)碼如(rú)下(xià)所(suǒ)示。
接着讨論表(biǎo)示顯示次(cì)數的(de)計(jì)數器cnt1,根(gēn)據(jù)波(bō)形图(tú)可(kě)以(yǐ)發(fà)現(xiàn),完成(chéng)2毫(háo)秒(miǎo)計(jì)數就(jiù)進(jìn)行下(xià)一(yī)次(cì)顯示,因(yīn)此(cǐ)該計(jì)數器的(de)加1条(tiáo)件(jiàn)为(wèi)end_cnt0。每次(cì)循环(huán)中(zhōng),6个(gè)段(duàn)選信(xìn)号(hào)m_g_s、m_s_s、f_g_s、f_s_s、s_g_s和(hé)s_s_s依次(cì)顯示,再進(jìn)入(rù)下(xià)一(yī)个(gè)循环(huán),因(yīn)此(cǐ)該計(jì)數器要(yào)數6次(cì)。繼續調用(yòng)至(zhì)簡設計(jì)法模板,在(zài)命令模式下(xià)輸入(rù)“:Mdyjsq”,點(diǎn)擊回(huí)車就(jiù)調出(chū)了(le)对(duì)應(yìng)模板,将“add_cnt1”和(hé)“end_cnt1”補充完整,得到(dào)該計(jì)數器的(de)代(dài)碼如(rú)下(xià):
确定(dìng)两(liǎng)个(gè)計(jì)數器後(hòu)来(lái)思(sī)考一(yī)下(xià)輸出(chū)信(xìn)号(hào)seg_sel的(de)變(biàn)化(huà)。根(gēn)據(jù)設計(jì)目标(biāo)可(kě)知,在(zài)第(dì)1次(cì)顯示时(shí),FPGA輸出(chū)值为(wèi)8’hfe;第(dì)2次(cì)顯示时(shí),FPGA輸出(chū)值为(wèi)8’hfd;以(yǐ)此(cǐ)類(lèi)推,在(zài)第(dì)6次(cì)顯示时(shí),FPGA輸出(chū)值为(wèi)8’hdf。本(běn)設計(jì)中(zhōng)用(yòng)信(xìn)号(hào)cnt1来(lái)代(dài)替第(dì)幾(jǐ)次(cì)顯示,即當cnt1==0的(de)时(shí)候,輸出(chū)值为(wèi)8’hfe;當cnt1==1的(de)时(shí)候輸出(chū)值为(wèi)8’hfd;以(yǐ)此(cǐ)類(lèi)推,當cnt1==5的(de)时(shí)候輸出(chū)值为(wèi)8’hdf。根(gēn)據(jù)分(fēn)析将其翻譯成(chéng)代(dài)碼,可(kě)以(yǐ)調用(yòng)至(zhì)簡設計(jì)法模板,在(zài)編輯模式下(xià)輸入(rù)“Shixu2”後(hòu)将其補充完整,得到(dào)信(xìn)号(hào)seg_sel的(de)代(dài)碼如(rú)下(xià):
以(yǐ)上(shàng)代(dài)碼可(kě)以(yǐ)正(zhèng)确实現(xiàn)seg_sel的(de)信(xìn)号(hào)功能(néng),不(bù)論是(shì)從实現(xiàn)角(jiǎo)度(dù)還(huán)是(shì)資源角(jiǎo)度(dù)来(lái)说(shuō)都可(kě)以(yǐ)滿足設計(jì)要(yào)求。然而(ér),在(zài)这(zhè)里(lǐ)可(kě)以(yǐ)将其進(jìn)行進(jìn)一(yī)步的(de)概括,得到(dào)化(huà)簡版的(de)代(dài)碼。
根(gēn)據(jù)設計(jì)目标(biāo)可(kě)知,第(dì)1个(gè)數碼管(guǎn)0亮(liàng)时(shí)seg_sel輸出(chū)为(wèi)b8’b1111_1110;第(dì)2个(gè)數碼管(guǎn)1亮(liàng)时(shí)seg_sel輸出(chū)为(wèi)b8’b1111_1101;第(dì)3个(gè)數碼管(guǎn)2亮(liàng)时(shí)seg_sel輸出(chū)为(wèi)b8’b1111_1011;第(dì)4个(gè)數碼管(guǎn)3亮(liàng)时(shí)seg_sel輸出(chū)为(wèi)b8’b1111_0111;第(dì)5个(gè)數碼管(guǎn)4亮(liàng)时(shí)seg_sel輸出(chū)为(wèi)b8’b1110_1111;第(dì)6个(gè)數碼管(guǎn)5亮(liàng)时(shí)seg_sel輸出(chū)为(wèi)b8’b1101_1111;根(gēn)據(jù)規律可(kě)以(yǐ)發(fà)現(xiàn)每一(yī)个(gè)數碼管(guǎn)點(diǎn)亮(liàng)信(xìn)号(hào)对(duì)應(yìng)的(de)數字(zì)“0”都比前(qián)一(yī)个(gè)信(xìn)号(hào)向(xiàng)左(zuǒ)移1位。在(zài)此(cǐ)可(kě)統一(yī)設为(wèi)将8’b1向(xiàng)左(zuǒ)移位後(hòu)再取(qǔ)反(fǎn)的(de)值,将該值賦給(gěi)seg_sel。通(tòng)过(guò)观察可(kě)以(yǐ)看(kàn)出(chū)每次(cì)的(de)左(zuǒ)移位數與(yǔ)cnt1的(de)值相等,因(yīn)此(cǐ)可(kě)以(yǐ)得到(dào)以(yǐ)下(xià)代(dài)碼,其中(zhōng)第(dì)6行即表(biǎo)示将8’b1向(xiàng)左(zuǒ)移位後(hòu)再取(qǔ)反(fǎn)的(de)值賦給(gěi)seg_sel。
读(dú)者(zhě)朋友也(yě)可(kě)以(yǐ)代(dài)入(rù)數值計(jì)算一(yī)下(xià),假如(rú)此(cǐ)刻cnt1等于(yú)0,那(nà)麼(me)8’b1<<0的(de)結果(guǒ)是(shì)8’b0000_0001,取(qǔ)反(fǎn)的(de)值为(wèi)8’hfe即b8’b1111_1110;假如(rú)cnt1等于(yú)3,那(nà)麼(me)8’b1<<3的(de)結果(guǒ)为(wèi)8’b000_1000,取(qǔ)反(fǎn)後(hòu)的(de)結果(guǒ)为(wèi)8’hf7即8’b1111_0111。該設計(jì)方(fāng)法與(yǔ)第(dì)一(yī)種(zhǒng)設計(jì)得出(chū)的(de)結果(guǒ)相同(tóng),但代(dài)碼經(jīng)过(guò)了(le)簡化(huà)更(gèng)加清(qīng)晰。这(zhè)里(lǐ)同(tóng)樣(yàng)可(kě)以(yǐ)在(zài)編輯模式下(xià)輸入(rù)“Shixu2”,調出(chū)至(zhì)簡設計(jì)法模板,補充完整後(hòu)得到(dào)代(dài)碼如(rú)下(xià):
下(xià)面(miàn)来(lái)讨論一(yī)下(xià)輸出(chū)信(xìn)号(hào)seg_ment的(de)變(biàn)化(huà)。seg_ment的(de)值是(shì)m_g、m_s、f_g、f_s、s_g和(hé)s_s等數值分(fēn)别譯碼成(chéng)數碼管(guǎn)顯示的(de)信(xìn)号(hào)m_g_s、m_s_s、f_g_s、f_s_s、s_g_s和(hé)s_s_s。需要(yào)根(gēn)據(jù)不(bù)同(tóng)的(de)顯示次(cì)數選擇相應(yìng)的(de)數碼管(guǎn)信(xìn)号(hào),可(kě)以(yǐ)采用(yòng)两(liǎng)種(zhǒng)設計(jì)方(fāng)法实現(xiàn)这(zhè)一(yī)功能(néng)。
第(dì)一(yī)種(zhǒng)方(fāng)法是(shì)将各(gè)數值均轉(zhuǎn)換成(chéng)譯碼信(xìn)号(hào),再根(gēn)據(jù)cnt1選擇相應(yìng)的(de)信(xìn)号(hào)賦值給(gěi)seg_ment,其原理图(tú)如(rú)下(xià)图(tú)所(suǒ)示。可(kě)以(yǐ)看(kàn)到(dào)設計(jì)中(zhōng)先(xiān)将m_g、m_s、f_g、f_s、s_g和(hé)s_s全(quán)都譯碼成(chéng)对(duì)應(yìng)的(de)數碼管(guǎn)顯示信(xìn)号(hào)m_g_s、m_s_s、f_g_s、f_s_s、s_g_s和(hé)s_s_s,随後(hòu)再根(gēn)據(jù)对(duì)應(yìng)的(de)cnt1進(jìn)行選擇,确定(dìng)所(suǒ)需的(de)seg_ment值。

图(tú)3.7-5譯碼電(diàn)路(lù)实現(xiàn)方(fāng)法一(yī)
譯碼電(diàn)路(lù)实現(xiàn)的(de)另(lìng)一(yī)種(zhǒng)方(fāng)法是(shì)在(zài)譯碼之前(qián)先(xiān)選擇需要(yào)的(de)數據(jù),只(zhī)对(duì)需要(yào)的(de)數據(jù)進(jìn)行譯碼從而(ér)得到(dào)seg_ment值,其原理图(tú)如(rú)下(xià)图(tú)所(suǒ)示。先(xiān)用(yòng)cnt1進(jìn)行選擇,只(zhī)将選擇出(chū)的(de)信(xìn)号(hào)譯碼成(chéng)數碼管(guǎn)信(xìn)号(hào)。

图(tú)3.7-6譯碼電(diàn)路(lù)实現(xiàn)方(fāng)法二(èr)
对(duì)比上(shàng)面(miàn)两(liǎng)種(zhǒng)方(fāng)法的(de)原理图(tú)可(kě)以(yǐ)發(fà)現(xiàn):虽然两(liǎng)種(zhǒng)可(kě)以(yǐ)实現(xiàn)同(tóng)樣(yàng)的(de)功能(néng),但是(shì)第(dì)二(èr)種(zhǒng)方(fāng)法比第(dì)一(yī)種(zhǒng)少(shǎo)了(le)5个(gè)譯碼電(diàn)路(lù)。由(yóu)此(cǐ)也(yě)可(kě)以(yǐ)看(kàn)出(chū),在(zài)設計(jì)中(zhōng)想(xiǎng)要(yào)实現(xiàn)一(yī)个(gè)功能(néng)可(kě)以(yǐ)使用(yòng)很多(duō)方(fāng)法。但設計(jì)师(shī)需要(yào)做的(de),就(jiù)是(shì)使用(yòng)最(zuì)少(shǎo)的(de)資源、較快(kuài)的(de)速度(dù)来(lái)实現(xiàn)同(tóng)樣(yàng)的(de)功能(néng),这(zhè)也(yě)是(shì)至(zhì)簡設計(jì)法基本(běn)的(de)設計(jì)理念,同(tóng)樣(yàng)是(shì)FPGA設計(jì)的(de)魅力所(suǒ)在(zài)。
經(jīng)过(guò)思(sī)考分(fēn)析,本(běn)設計(jì)選擇第(dì)二(èr)種(zhǒng)設計(jì)方(fāng)案(àn),那(nà)麼(me)就(jiù)需要(yào)設計(jì)一(yī)个(gè)信(xìn)号(hào)sel_data来(lái)表(biǎo)示從6个(gè)數據(jù)中(zhōng)選擇進(jìn)行譯碼的(de)信(xìn)号(hào)。将sel_data信(xìn)息補充後(hòu)的(de)波(bō)形图(tú)如(rú)下(xià)所(suǒ)示。

图(tú)3.7-7補充sel_data信(xìn)号(hào)时(shí)序图(tú)
sel_data的(de)值有(yǒu)可(kě)能(néng)为(wèi)0~9中(zhōng)的(de)任意(yì)數字(zì),这(zhè)些數字(zì)都要(yào)轉(zhuǎn)成(chéng)數碼管(guǎn)的(de)段(duàn)選信(xìn)号(hào)。前(qián)面(miàn)章(zhāng)节(jié)有(yǒu)講过(guò)顯示數字(zì)对(duì)應(yìng)的(de)段(duàn)選信(xìn)号(hào)值,如(rú)下(xià)表(biǎo)所(suǒ)示。
表(biǎo)3.7- 20~9对(duì)應(yìng)的(de)數碼管(guǎn)段(duàn)選信(xìn)号(hào)值
至(zhì)簡設計(jì)法開(kāi)發(fà)板使用(yòng)的(de)是(shì)共(gòng)陽數碼管(guǎn)。根(gēn)據(jù)上(shàng)表(biǎo)可(kě)写出(chū)如(rú)下(xià)代(dài)碼。
當然这(zhè)一(yī)代(dài)碼也(yě)可(kě)以(yǐ)写为(wèi)case的(de)形式,其具體(tǐ)代(dài)碼如(rú)下(xià):
根(gēn)據(jù)波(bō)形图(tú)可(kě)以(yǐ)分(fēn)析出(chū)sel_data從m_g、m_s、f_g、f_s、s_g和(hé)s_s中(zhōng)選取(qǔ)。當cnt1=0,即數碼管(guǎn)0顯示时(shí),sel_data的(de)值为(wèi)m_g;當cnt1=1,即數碼管(guǎn)1顯示时(shí),sel_data的(de)值为(wèi)m_s;當cnt1=2,即數碼管(guǎn)2顯示时(shí),sel_data的(de)值为(wèi)f_g;當cnt1=3,即數碼管(guǎn)3顯示时(shí),sel_data的(de)值为(wèi)f_s;當cnt1=4,即數碼管(guǎn)4顯示时(shí),sel_data的(de)值为(wèi)s_g;當cnt1=5,即數碼管(guǎn)5顯示时(shí),sel_data的(de)值为(wèi)s_s。綜上(shàng)所(suǒ)述,sel_data的(de)代(dài)碼为(wèi):
接下(xià)来(lái)設計(jì)m_g、m_s、f_g、f_s、s_g和(hé)s_s信(xìn)号(hào),根(gēn)據(jù)常識可(kě)知代(dài)表(biǎo)秒(miǎo)鐘(zhōng)个(gè)位的(de)m_g信(xìn)号(hào)值每过(guò)一(yī)秒(miǎo)会(huì)加1,其值在(zài)數字(zì)0~9中(zhōng)進(jìn)行循环(huán),具體(tǐ)變(biàn)化(huà)規律如(rú)下(xià)图(tú)所(suǒ)示。

图(tú)3.7-8秒(miǎo)鐘(zhōng)个(gè)位的(de)时(shí)序图(tú)
分(fēn)析秒(miǎo)鐘(zhōng)个(gè)位的(de)波(bō)形图(tú)可(kě)知,秒(miǎo)鐘(zhōng)个(gè)位數據(jù)是(shì)0、1、2、3、4、5、6、7、8、9、0、1……这(zhè)樣(yàng)有(yǒu)規律的(de)進(jìn)行加1變(biàn)化(huà)。回(huí)想(xiǎng)一(yī)下(xià)計(jì)數器需要(yào)的(de)条(tiáo)件(jiàn):加1条(tiáo)件(jiàn)和(hé)計(jì)數數量(liàng),可(kě)以(yǐ)發(fà)現(xiàn)m_g其实可(kě)以(yǐ)設計(jì)成(chéng)一(yī)个(gè)計(jì)數器,且該計(jì)數器每隔1秒(miǎo)时(shí)間(jiān)加1一(yī)次(cì),这(zhè)里(lǐ)的(de)1秒(miǎo)时(shí)間(jiān)計(jì)时(shí)也(yě)需要(yào)一(yī)个(gè)計(jì)數器,可(kě)以(yǐ)将其設为(wèi)cnt2。
首先(xiān)来(lái)讨論用(yòng)来(lái)1秒(miǎo)計(jì)时(shí)的(de)計(jì)數器cnt2。可(kě)以(yǐ)看(kàn)到(dào)cnt2是(shì)一(yī)直(zhí)在(zài)不(bù)停計(jì)數,永不(bù)停止的(de),即加1条(tiáo)件(jiàn)一(yī)直(zhí)有(yǒu)效,可(kě)以(yǐ)写成(chéng)assign add_cnt2= 1。cnt2要(yào)數1秒(miǎo)时(shí)間(jiān),本(běn)工程的(de)工作时(shí)鐘(zhōng)是(shì)50MHz,即周期(qī)为(wèi)20ns,計(jì)數器計(jì)數到(dào)第(dì)1_000_000_000/20=50_000_000个(gè)时(shí),就(jiù)表(biǎo)示1秒(miǎo)时(shí)間(jiān)到(dào)了(le),所(suǒ)以(yǐ)cnt2的(de)計(jì)數數量(liàng)是(shì) 50_000_000个(gè)。在(zài)命令模式下(xià)輸入(rù)“:Mdyjsq”,點(diǎn)擊回(huí)車,就(jiù)調出(chū)了(le)至(zhì)簡設計(jì)法計(jì)數器模板,補充完整得出(chū)cnt2代(dài)碼表(biǎo)示如(rú)下(xià):
接着讨論m_g,可(kě)以(yǐ)将其視作另(lìng)外(wài)一(yī)个(gè)計(jì)數器。其每隔1秒(miǎo)變(biàn)化(huà)一(yī)次(cì),因(yīn)此(cǐ)它(tā)的(de)加1条(tiáo)件(jiàn)是(shì)1秒(miǎo)計(jì)时(shí)完成(chéng),即end_cnt2==1。前(qián)面(miàn)中(zhōng)分(fēn)析过(guò)m_g需要(yào)進(jìn)行0~9的(de)循环(huán)計(jì)數,即計(jì)數數量(liàng)为(wèi)10个(gè)。在(zài)命令模式下(xià)輸入(rù)“:Mdyjsq”後(hòu)點(diǎn)擊回(huí)車調出(chū)至(zhì)簡設計(jì)法計(jì)數器模板,将其補充完整後(hòu)得到(dào)m_g代(dài)碼表(biǎo)示如(rú)下(xià):
在(zài)m_g的(de)基礎上(shàng)来(lái)思(sī)考秒(miǎo)鐘(zhōng)十(shí)位m_s的(de)變(biàn)化(huà)。根(gēn)據(jù)常識可(kě)知秒(miǎo)鐘(zhōng)个(gè)位進(jìn)行一(yī)个(gè)循环(huán)後(hòu)(即0~9秒(miǎo)完成(chéng)後(hòu))秒(miǎo)鐘(zhōng)十(shí)位的(de)信(xìn)号(hào)值会(huì)加1,因(yīn)此(cǐ)秒(miǎo)鐘(zhōng)十(shí)位m_s的(de)信(xìn)号(hào)波(bō)形图(tú)變(biàn)化(huà)情(qíng)況如(rú)下(xià)所(suǒ)示。

图(tú)3.7-9秒(miǎo)鐘(zhōng)十(shí)位的(de)时(shí)序图(tú)
分(fēn)析波(bō)形图(tú)可(kě)以(yǐ)看(kàn)到(dào),秒(miǎo)鐘(zhōng)十(shí)位m_s每隔10秒(miǎo)就(jiù)会(huì)加1,即可(kě)将m_s也(yě)看(kàn)做是(shì)一(yī)个(gè)計(jì)數器。其加1条(tiáo)件(jiàn)是(shì)10秒(miǎo)时(shí)間(jiān)結束(shù),由(yóu)于(yú)m_g的(de)一(yī)个(gè)循环(huán)是(shì)十(shí)秒(miǎo),因(yīn)此(cǐ)m_s的(de)加1条(tiáo)件(jiàn)可(kě)写为(wèi)end_m_g。这(zhè)里(lǐ)需要(yào)注意(yì)一(yī)下(xià)計(jì)數器m_s的(de)計(jì)數數量(liàng)并不(bù)是(shì)10,可(kě)以(yǐ)思(sī)考一(yī)下(xià)現(xiàn)实生(shēng)活中(zhōng)的(de)鐘(zhōng)表(biǎo),一(yī)分(fēn)等于(yú)60秒(miǎo),那(nà)麼(me)秒(miǎo)鐘(zhōng)十(shí)位的(de)變(biàn)化(huà)是(shì)0、1、2、3、4、5,因(yīn)此(cǐ)該計(jì)數器進(jìn)行6次(cì)計(jì)數就(jiù)会(huì)進(jìn)入(rù)到(dào)下(xià)一(yī)个(gè)循环(huán),其計(jì)數數量(liàng)为(wèi)6。綜上(shàng)所(suǒ)述,在(zài)命令模式下(xià)輸入(rù)“:Mdyjsq”,點(diǎn)擊回(huí)車就(jiù)調出(chū)了(le)至(zhì)簡設計(jì)法計(jì)數器模板,補充完整得出(chū)m_s代(dài)碼表(biǎo)示如(rú)下(xià):
接下(xià)来(lái)在(zài)秒(miǎo)鐘(zhōng)十(shí)位m_s的(de)基礎上(shàng)讨論分(fēn)鐘(zhōng)个(gè)位f_g,根(gēn)據(jù)实際情(qíng)況可(kě)以(yǐ)得知,每隔60秒(miǎo)即增加一(yī)分(fēn)鐘(zhōng),因(yīn)此(cǐ)分(fēn)鐘(zhōng)个(gè)位f_g的(de)變(biàn)化(huà)波(bō)形图(tú)如(rú)下(xià)所(suǒ)示。

图(tú)3.7-10分(fēn)鐘(zhōng)个(gè)位的(de)时(shí)序图(tú)
分(fēn)析波(bō)形图(tú)可(kě)以(yǐ)看(kàn)出(chū),每隔1分(fēn)鐘(zhōng)即60秒(miǎo)後(hòu)分(fēn)鐘(zhōng)个(gè)位f_g的(de)信(xìn)号(hào)值就(jiù)会(huì)加1。很明(míng)顯,f_g也(yě)是(shì)一(yī)个(gè)計(jì)數器,其加1条(tiáo)件(jiàn)是(shì)60秒(miǎo)时(shí)間(jiān)結束(shù),即end_m_s。分(fēn)鐘(zhōng)个(gè)位的(de)計(jì)數器數10个(gè)会(huì)進(jìn)入(rù)到(dào)下(xià)一(yī)个(gè)循环(huán),即計(jì)數數量(liàng)为(wèi)10。在(zài)命令模式下(xià)輸入(rù)“:Mdyjsq”,點(diǎn)擊回(huí)車,調用(yòng)至(zhì)簡設計(jì)法計(jì)數器模板,補充完整得出(chū)f_g代(dài)碼表(biǎo)示如(rú)下(xià):
接下(xià)来(lái)根(gēn)據(jù)分(fēn)鐘(zhōng)个(gè)位f_g思(sī)考分(fēn)鐘(zhōng)十(shí)位f_s的(de)情(qíng)況,根(gēn)據(jù)常識可(kě)知,每过(guò)十(shí)分(fēn)鐘(zhōng)分(fēn)鐘(zhōng)十(shí)位的(de)信(xìn)号(hào)值会(huì)加1,其變(biàn)化(huà)波(bō)形图(tú)如(rú)下(xià)所(suǒ)示。

图(tú)3.7-11分(fēn)鐘(zhōng)十(shí)位的(de)时(shí)序图(tú)
根(gēn)據(jù)波(bō)形图(tú)可(kě)以(yǐ)看(kàn)出(chū),f_s分(fēn)鐘(zhōng)个(gè)位也(yě)是(shì)一(yī)个(gè)計(jì)數器,其加1条(tiáo)件(jiàn)为(wèi)10分(fēn)鐘(zhōng)結束(shù),即end_f_g;分(fēn)鐘(zhōng)十(shí)位的(de)計(jì)數器計(jì)數數量(liàng)與(yǔ)秒(miǎo)鐘(zhōng)十(shí)位類(lèi)似,1小时(shí)等于(yú)60分(fēn),因(yīn)此(cǐ)分(fēn)鐘(zhōng)十(shí)位計(jì)數为(wèi)0、1、2、3、4、5,該計(jì)數器數的(de)計(jì)數數量(liàng)为(wèi)6。綜上(shàng)所(suǒ)述,在(zài)命令模式下(xià)輸入(rù)“:Mdyjsq”後(hòu)點(diǎn)擊回(huí)車,調用(yòng)至(zhì)簡設計(jì)法計(jì)數器模板,補充完整得出(chū)f_s代(dài)碼表(biǎo)示如(rú)下(xià):
接着根(gēn)據(jù)分(fēn)鐘(zhōng)十(shí)位f_s思(sī)考小时(shí)个(gè)位s_g,小时(shí)个(gè)位s_g的(de)變(biàn)化(huà)波(bō)形图(tú)情(qíng)況如(rú)下(xià)所(suǒ)示。

图(tú)3.7-12小时(shí)个(gè)位的(de)时(shí)序图(tú)
分(fēn)析波(bō)形图(tú)可(kě)以(yǐ)明(míng)顯看(kàn)出(chū):小时(shí)个(gè)位s_g每隔1小时(shí)即60分(fēn)鐘(zhōng)就(jiù)会(huì)加1,因(yīn)此(cǐ)s_g也(yě)是(shì)一(yī)个(gè)計(jì)數器,其加1条(tiáo)件(jiàn)是(shì)60分(fēn)鐘(zhōng)时(shí)間(jiān)結束(shù),即end_f_g。
确定(dìng)了(le)加1条(tiáo)件(jiàn),接着需要(yào)讨論計(jì)數數量(liàng)。根(gēn)據(jù)实際情(qíng)況可(kě)知一(yī)天(tiān)为(wèi)24小时(shí),可(kě)以(yǐ)發(fà)現(xiàn)此(cǐ)时(shí)小时(shí)的(de)个(gè)位周期(qī)循环(huán)并不(bù)是(shì)前(qián)面(miàn)的(de)0~6,那(nà)麼(me)小时(shí)个(gè)位的(de)周期(qī)到(dào)底應(yìng)該是(shì)多(duō)少(shǎo)呢?可(kě)能(néng)有(yǒu)同(tóng)学認为(wèi)是(shì)10个(gè),因(yīn)为(wèi)小时(shí)个(gè)位和(hé)前(qián)面(miàn)分(fēn)鐘(zhōng)个(gè)位、秒(miǎo)鐘(zhōng)个(gè)位一(yī)樣(yàng)有(yǒu)0~9的(de)變(biàn)化(huà);可(kě)能(néng)有(yǒu)同(tóng)学認为(wèi)是(shì)24个(gè),因(yīn)为(wèi)一(yī)天(tiān)为(wèi)24个(gè)小时(shí),每天(tiān)都是(shì)24的(de)循环(huán);也(yě)可(kě)能(néng)有(yǒu)同(tóng)学則会(huì)認为(wèi)是(shì)4个(gè),因(yīn)为(wèi)小时(shí)个(gè)位是(shì)0~3變(biàn)化(huà)。
下(xià)面(miàn)一(yī)起来(lái)思(sī)考一(yī)下(xià)現(xiàn)实情(qíng)況,本(běn)書(shū)的(de)前(qián)文(wén)部(bù)分(fēn)中(zhōng)有(yǒu)講解(jiě)过(guò):为(wèi)了(le)簡單直(zhí)接的(de)設計(jì),只(zhī)單个(gè)讨論每一(yī)个(gè)數碼管(guǎn)的(de)顯示變(biàn)化(huà)。而(ér)这(zhè)里(lǐ)讨論的(de)是(shì)小时(shí)的(de)个(gè)位,如(rú)果(guǒ)此(cǐ)时(shí)還(huán)認为(wèi)其周期(qī)是(shì)24个(gè)小时(shí)則代(dài)表(biǎo)观念還(huán)沒(méi)有(yǒu)轉(zhuǎn)變(biàn)过(guò)来(lái),沒(méi)有(yǒu)透徹的(de)理解(jiě)至(zhì)簡設計(jì)法的(de)設計(jì)理念。
24小时(shí)考慮的(de)是(shì)小时(shí)个(gè)位和(hé)小时(shí)十(shí)位两(liǎng)个(gè)數碼管(guǎn)的(de)顯示內(nèi)容,而(ér)在(zài)此(cǐ)單純分(fēn)析小时(shí)个(gè)位会(huì)發(fà)現(xiàn)它(tā)以(yǐ)这(zhè)樣(yàng)的(de)規律存在(zài):0~9,0~9,0~3,0~9,0~9,0~3……。可(kě)以(yǐ)看(kàn)出(chū)小时(shí)个(gè)位的(de)計(jì)數數量(liàng),有(yǒu)时(shí)候是(shì)10,有(yǒu)时(shí)候是(shì)4,即其計(jì)數數量(liàng)在(zài)不(bù)斷發(fà)生(shēng)變(biàn)化(huà)。这(zhè)里(lǐ)按照至(zhì)簡設計(jì)法的(de)變(biàn)量(liàng)法,設其周期(qī)是(shì)x,其具體(tǐ)定(dìng)義和(hé)取(qǔ)值在(zài)後(hòu)文(wén)中(zhōng)会(huì)進(jìn)行描述。打(dǎ)開(kāi)GVIM,在(zài)命令模式下(xià)輸入(rù)“:Mdyjsq”,點(diǎn)擊回(huí)車,調用(yòng)至(zhì)簡設計(jì)法計(jì)數器模板,補充完整得出(chū)的(de)s_g代(dài)碼如(rú)下(xià)所(suǒ)示。
最(zuì)後(hòu)根(gēn)據(jù)小时(shí)个(gè)位s_g来(lái)思(sī)考小时(shí)十(shí)位s_s,小时(shí)十(shí)位s_s的(de)變(biàn)化(huà)波(bō)形图(tú)情(qíng)況如(rú)下(xià)所(suǒ)示。

图(tú)3.7-13小时(shí)十(shí)位的(de)时(shí)序图(tú)
根(gēn)據(jù)波(bō)形图(tú)可(kě)以(yǐ)看(kàn)出(chū),當小时(shí)个(gè)位s_g要(yào)清(qīng)零(líng)时(shí)(注意(yì)不(bù)是(shì)每隔10小时(shí)),小时(shí)十(shí)位s_s会(huì)加1,因(yīn)此(cǐ)s_s也(yě)是(shì)一(yī)个(gè)計(jì)數器,該計(jì)數器加1条(tiáo)件(jiàn)是(shì)小时(shí)个(gè)位清(qīng)零(líng),即end_s_g。注意(yì)这(zhè)里(lǐ)本(běn)書(shū)描述的(de)計(jì)數器加1条(tiáo)件(jiàn)是(shì)s_g清(qīng)零(líng),而(ér)不(bù)是(shì)每隔10小时(shí)。回(huí)憶一(yī)下(xià)s_g的(de)計(jì)數數量(liàng),其有(yǒu)时(shí)是(shì)0~9一(yī)个(gè)周期(qī)進(jìn)行循环(huán),計(jì)數數量(liàng)是(shì)10;有(yǒu)时(shí)是(shì)0~3一(yī)个(gè)周期(qī)循环(huán),計(jì)數數量(liàng)是(shì)4,因(yīn)此(cǐ)該計(jì)數器的(de)加1条(tiáo)件(jiàn)是(shì)小时(shí)个(gè)位清(qīng)零(líng)。關(guān)于(yú)小时(shí)十(shí)位s_s計(jì)數器的(de)計(jì)數數量(liàng),通(tòng)过(guò)分(fēn)析可(kě)知小时(shí)十(shí)位每數0、1、2後(hòu),計(jì)數器進(jìn)入(rù)到(dào)下(xià)一(yī)个(gè)循环(huán),因(yīn)此(cǐ)該計(jì)數器的(de)計(jì)數數量(liàng)为(wèi)3。綜上(shàng)所(suǒ)述,在(zài)命令模式下(xià)輸入(rù)“:Mdyjsq”,點(diǎn)擊回(huí)車,調用(yòng)至(zhì)簡設計(jì)法計(jì)數器模板,補充完整得出(chū)s_s代(dài)碼表(biǎo)示如(rú)下(xià):
最(zuì)後(hòu)不(bù)要(yào)忘記(jì)对(duì)前(qián)文(wén)中(zhōng)表(biǎo)示小时(shí)个(gè)位計(jì)數數量(liàng)的(de)x進(jìn)行設計(jì)。小时(shí)个(gè)位循环(huán)是(shì)按照0~9,0~9,0~3,0~9,0~9,0~3……的(de)規律,即其計(jì)數單位是(shì)10或(huò)者(zhě)是(shì)4。那(nà)麼(me)計(jì)數單位什麼(me)时(shí)候是(shì)10,什麼(me)时(shí)候是(shì)4呢?思(sī)考一(yī)下(xià)現(xiàn)实情(qíng)況,小时(shí)个(gè)位的(de)情(qíng)況取(qǔ)決于(yú)小时(shí)十(shí)位的(de)顯示,因(yīn)为(wèi)一(yī)天(tiān)只(zhī)有(yǒu)24小时(shí),因(yīn)此(cǐ)只(zhī)有(yǒu)當时(shí)鐘(zhōng)的(de)小时(shí)十(shí)位为(wèi)2的(de)时(shí)候,小时(shí)个(gè)位的(de)計(jì)數數量(liàng)为(wèi)4。即當s_s为(wèi)2时(shí),x=4,否則x=10。根(gēn)據(jù)以(yǐ)上(shàng)分(fēn)析得出(chū)x的(de)代(dài)碼如(rú)下(xià)所(suǒ)示:
此(cǐ)次(cì),主(zhǔ)體(tǐ)程序已經(jīng)完成(chéng)。
接下(xià)来(lái)将module補充完整,首先(xiān)進(jìn)行定(dìng)義信(xìn)号(hào)類(lèi)型。再次(cì)強(qiáng)調,在(zài)進(jìn)行reg和(hé)wire的(de)判斷的(de)时(shí)候,總(zǒng)容易存在(zài)多(duō)餘的(de)聯想(xiǎng),比如(rú)認为(wèi)reg就(jiù)是(shì)寄存器,wire是(shì)線(xiàn);或(huò)者(zhě)認为(wèi)reg会(huì)綜合成(chéng)寄存器,wire不(bù)会(huì)綜合成(chéng)寄存器。但是(shì)这(zhè)些其实和(hé)reg型還(huán)是(shì)wire型都并无關(guān)系(xì),在(zài)信(xìn)号(hào)類(lèi)型的(de)判斷时(shí)不(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)。
進(jìn)行信(xìn)号(hào)定(dìng)義时(shí)還(huán)需要(yào)定(dìng)義信(xìn)号(hào)的(de)位宽(kuān),至(zhì)簡設計(jì)法在(zài)这(zhè)里(lǐ)们(men)分(fēn)享一(yī)个(gè)非(fēi)常实用(yòng)的(de)位宽(kuān)獲取(qǔ)技巧:打(dǎ)開(kāi)計(jì)算器,點(diǎn)擊“查看(kàn)”,選擇“程序員”模式,在(zài)“十(shí)進(jìn)制”下(xià)将信(xìn)号(hào)值輸入(rù)進(jìn)去(qù),就(jiù)会(huì)獲得对(duì)應(yìng)的(de)信(xìn)号(hào)位宽(kuān)。

图(tú)3.7-14通(tòng)过(guò)計(jì)算器獲取(qǔ)信(xìn)号(hào)位宽(kuān)
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)100_000,如(rú)上(shàng)图(tú)所(suǒ)示,通(tòng)过(guò)計(jì)算器可(kě)以(yǐ)得知需要(yào)用(yòng)17根(gēn)線(xiàn)表(biǎo)示,即位宽(kuān)是(shì)17位。
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ě)。在(zài)編輯模式下(xià)輸入(rù)“Wire1”調用(yòng)至(zhì)簡設計(jì)法模板,補充完整後(hòu)得到(dào)代(dài)碼表(biǎo)示如(rú)下(xià):
cnt1是(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)6,需要(yào)用(yòng)3根(gēn)線(xiàn)表(biǎo)示,即位宽(kuān)是(shì)3位。編輯模式下(xià)輸入(rù)“Reg3”調用(yòng)至(zhì)簡設計(jì)法模板并補充完整;
add_cnt1和(hé)end_cnt1都是(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ě)。編輯模式下(xià)輸入(rù)“Wire1”調用(yòng)至(zhì)簡設計(jì)法模板并補充完整。
補充後(hòu)的(de)cnt1、add_cnt1和(hé)end_cnt1的(de)定(dìng)義代(dài)碼如(rú)下(xià)所(suǒ)示:
seg_sel是(shì)用(yòng)always方(fāng)式設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)reg,其共(gòng)有(yǒu)8根(gēn)線(xiàn),即位宽(kuān)为(wèi)8。編輯模式下(xià)輸入(rù)“Reg8”調用(yòng)至(zhì)簡設計(jì)法模板,補充完整後(hòu)得到(dào)代(dài)碼表(biǎo)示如(rú)下(xià):
seg_ment是(shì)用(yòng)always方(fāng)式設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)reg,其用(yòng)7根(gēn)線(xiàn)表(biǎo)示,即位宽(kuān)为(wèi)7。代(dài)碼表(biǎo)示如(rú)下(xià):
sel_data是(shì)用(yòng)always設計(jì)的(de),所(suǒ)以(yǐ)類(lèi)型为(wèi)wire。其最(zuì)大值为(wèi)9,即位宽(kuān)为(wèi)4。編輯模式下(xià)輸入(rù)“Wire4”調用(yòng)至(zhì)簡設計(jì)法模板,補充完整後(hòu)得到(dào)代(dài)碼表(biǎo)示如(rú)下(xià):
cnt2是(shì)用(yòng)always産生(shēng)的(de)信(xìn)号(hào),因(yīn)此(cǐ)類(lèi)型为(wèi)reg。cnt2計(jì)數的(de)最(zuì)大值为(wèi)50_000_000,使用(yòng)計(jì)算機(jī)可(kě)以(yǐ)算出(chū)需要(yào)用(yòng)26根(gēn)線(xiàn)表(biǎo)示,即位宽(kuān)是(shì)26位。
add_cnt2和(hé)end_cnt2都是(shì)用(yòng)assign方(fāng)式設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire。并且其值是(shì)0或(huò)者(zhě)1,1个(gè)線(xiàn)表(biǎo)示即可(kě)。編輯模式下(xià)輸入(rù)“Wire1”調用(yòng)至(zhì)簡設計(jì)法模板,補充完整後(hòu)得到(dào)代(dài)碼表(biǎo)示如(rú)下(xià):
m_g是(shì)用(yòng)always産生(shēng)的(de)信(xìn)号(hào),因(yīn)此(cǐ)類(lèi)型为(wèi)reg。m_g計(jì)數的(de)最(zuì)大值为(wèi)9,需要(yào)用(yòng)4根(gēn)線(xiàn)表(biǎo)示,即位宽(kuān)是(shì)4位;
add_m_g和(hé)end_m_g都是(shì)用(yòng)assign方(fāng)式設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire。并且其值是(shì)0或(huò)者(zhě)1,1个(gè)線(xiàn)表(biǎo)示即可(kě);
編輯模式下(xià)輸入(rù)“Reg4”和(hé)“Wire1”調用(yòng)至(zhì)簡設計(jì)法模板,補充完整後(hòu)得到(dào)代(dài)碼表(biǎo)示如(rú)下(xià):
m_s是(shì)用(yòng)always産生(shēng)的(de)信(xìn)号(hào),因(yīn)此(cǐ)類(lèi)型为(wèi)reg。m_s計(jì)數的(de)最(zuì)大值为(wèi)5,需要(yào)用(yòng)3根(gēn)線(xiàn)表(biǎo)示,即位宽(kuān)是(shì)3位;
add_m_s和(hé)end_m_s都是(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ě);
編輯模式下(xià)輸入(rù)“Reg3”和(hé)“Wire1”調用(yòng)至(zhì)簡設計(jì)法模板,補充完整後(hòu)得到(dào)代(dài)碼表(biǎo)示如(rú)下(xià):
f_g是(shì)用(yòng)always産生(shēng)的(de)信(xìn)号(hào),因(yīn)此(cǐ)類(lèi)型为(wèi)reg。f_g計(jì)數的(de)最(zuì)大值为(wèi)9,需要(yào)用(yòng)4根(gēn)線(xiàn)表(biǎo)示,即位宽(kuān)是(shì)4位;
add_f_g和(hé)end_f_g都是(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ě);
編輯模式下(xià)輸入(rù)“Reg4”和(hé)“Wire1”調用(yòng)至(zhì)簡設計(jì)法模板,補充完整後(hòu)得到(dào)代(dài)碼表(biǎo)示如(rú)下(xià):
f_s是(shì)用(yòng)always産生(shēng)的(de)信(xìn)号(hào),因(yīn)此(cǐ)類(lèi)型为(wèi)reg。f_s計(jì)數的(de)最(zuì)大值为(wèi)5,需要(yào)用(yòng)3根(gēn)線(xiàn)表(biǎo)示,即位宽(kuān)是(shì)3位;
add_f_s和(hé)end_f_s都是(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ě);
編輯模式下(xià)輸入(rù)“Reg3”和(hé)“Wire1”調用(yòng)至(zhì)簡設計(jì)法模板,補充完整後(hòu)得到(dào)代(dài)碼表(biǎo)示如(rú)下(xià):
s_g是(shì)用(yòng)always産生(shēng)的(de)信(xìn)号(hào),因(yīn)此(cǐ)類(lèi)型为(wèi)reg。s_g計(jì)數的(de)最(zuì)大值为(wèi)9,需要(yào)用(yòng)4根(gēn)線(xiàn)表(biǎo)示,即位宽(kuān)是(shì)4位;
add_s_g和(hé)end_s_g都是(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ě);
編輯模式下(xià)輸入(rù)“Reg4”和(hé)“Wire1”調用(yòng)至(zhì)簡設計(jì)法模板,補充完整後(hòu)得到(dào)代(dài)碼表(biǎo)示如(rú)下(xià):
s_s是(shì)用(yòng)always産生(shēng)的(de)信(xìn)号(hào),因(yīn)此(cǐ)類(lèi)型为(wèi)reg。s_s計(jì)數的(de)最(zuì)大值为(wèi)2,需要(yào)用(yòng)2根(gēn)線(xiàn)表(biǎo)示,即位宽(kuān)是(shì)2位;
add_s_s和(hé)end_s_s都是(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ě)。因(yīn)此(cǐ)代(dài)碼如(rú)下(xià):
編輯模式下(xià)輸入(rù)“Reg2”和(hé)“Wire1”調用(yòng)至(zhì)簡設計(jì)法模板,補充完整後(hòu)得到(dào)代(dài)碼表(biǎo)示如(rú)下(xià):
x是(shì)用(yòng)always産生(shēng)的(de)信(xìn)号(hào),因(yīn)此(cǐ)類(lèi)型为(wèi)reg。x計(jì)數的(de)最(zuì)大值为(wèi)10,需要(yào)用(yòng)4根(gēn)線(xiàn)表(biǎo)示,即位宽(kuān)是(shì)4位。編輯模式下(xià)輸入(rù)“Reg4”調用(yòng)至(zhì)簡設計(jì)法模板,補充完整後(hòu)得到(dào)代(dài)碼表(biǎo)示如(rú)下(xià):
至(zhì)此(cǐ),整个(gè)代(dài)碼的(de)設計(jì)工作已經(jīng)完成(chéng),完整代(dài)碼如(rú)下(xià)所(suǒ)示。此(cǐ)設計(jì)看(kàn)起来(lái)比較複雜,但是(shì)認真(zhēn)思(sī)考会(huì)發(fà)現(xiàn)其原理非(fēi)常基礎。如(rú)果(guǒ)朋友還(huán)有(yǒu)不(bù)理解(jiě)的(de)地(dì)方(fāng),一(yī)定(dìng)要(yào)反(fǎn)複推敲,弄懂之後(hòu)会(huì)發(fà)現(xiàn)本(běn)設計(jì)還(huán)是(shì)非(fēi)常有(yǒu)趣的(de)。
接下(xià)来(lái)是(shì)新建工程和(hé)上(shàng)板查看(kàn)現(xiàn)象(xiàng)。
4.1 新建工程
打(dǎ)開(kāi)软(ruǎn)件(jiàn)Quartus Ⅱ,點(diǎn)擊“File”下(xià)拉列表(biǎo)中(zhōng)的(de)New ProjectWzard...新建工程選項,如(rú)下(xià)图(tú)所(suǒ)示。

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

图(tú)3.7-16Quartus新建工程介紹
此(cǐ)时(shí)会(huì)出(chū)現(xiàn)工程文(wén)件(jiàn)夾、工程名、頂层模块(kuài)名設置界面(miàn),如(rú)图(tú)3.7- 17所(suǒ)示。設置目录(lù)为(wèi):D:/mdy_book/my_shizhong,工程名和(hé)頂层名为(wèi)my_shizhong。再次(cì)強(qiáng)調,为(wèi)了(le)避免初学者(zhě)在(zài)後(hòu)續操作中(zhōng)出(chū)現(xiàn)報錯情(qíng)況,強(qiáng)烈建議設置的(de)文(wén)件(jiàn)目录(lù)和(hé)工程名稱與(yǔ)本(běn)書(shū)保持(chí)一(yī)致(zhì)。設置完成(chéng)後(hòu)點(diǎn)擊“Next”。

图(tú)3.7-17QUARTUS新建工程設置名稱
新建工程類(lèi)型設置選擇“Empty project”,然後(hòu)點(diǎn)擊“Next”。

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

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

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

图(tú)3.7-21QUARTUS設置工具界面(miàn)
下(xià)图(tú)为(wèi)新建工程彙總(zǒng)界面(miàn),可(kě)以(yǐ)看(kàn)到(dào)新建工程的(de)彙總(zǒng)情(qíng)況,點(diǎn)擊“Finish”,完成(chéng)新建工程。

图(tú)3.7-22QUARTUS新建工程彙總(zǒng)界面(miàn)
4.2 綜合
新建工程步驟完成(chéng)後(hòu),就(jiù)会(huì)出(chū)現(xiàn)下(xià)图(tú)所(suǒ)示的(de)QUARTUS新建工程後(hòu)界面(miàn)。

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

图(tú)3.7-24QUARTUS編譯後(hòu)界面(miàn)
4.3 配置管(guǎ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)就(jiù)会(huì)弹出(chū)配置管(guǎn)脚的(de)窗(chuāng)口(kǒu)。

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

图(tú)3.7-26 QUARTUS配置管(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ú)图(tú)3.7- 27所(suǒ)示。

图(tú)3.7-27QUARTUS編譯選項
當出(chū)如(rú)下(xià)所(suǒ)示的(de)編譯成(chéng)功标(biāo)志时(shí),就(jiù)说(shuō)明(míng)編譯綜合成(chéng)功。

图(tú)3.7-28QUARTUS編譯成(chéng)功标(biāo)志
4.5 連(lián)接開(kāi)發(fà)板
完成(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.7-29開(kāi)發(fà)板連(lián)接图(tú)
4.6 上(shàng)板
打(dǎ)開(kāi)QUARTUS界面(miàn),單擊界面(miàn)中(zhōng)的(de)“
”,会(huì)弹出(chū)配置界面(miàn)。在(zài)界面(miàn)中(zhōng)點(diǎn)擊“add file”添加“.sof”文(wén)件(jiàn)後(hòu)點(diǎn)擊“Start”,会(huì)在(zài)“Progress”出(chū)現(xiàn)顯示進(jìn)度(dù)。

图(tú)3.7-30QUARTUS界面(miàn)
QUARTUS下(xià)载程序界面(miàn)如(rú)下(xià)图(tú)所(suǒ)示,當進(jìn)度(dù)条(tiáo)到(dào)100%提(tí)示成(chéng)功後(hòu),可(kě)在(zài)開(kāi)發(fà)板上(shàng)观察相應(yìng)的(de)現(xiàn)象(xiàng)。

图(tú)3.7-31QUARTUS下(xià)载程序界面(miàn)
操作完成(chéng)後(hòu)可(kě)以(yǐ)在(zài)開(kāi)發(fà)板上(shàng)观察現(xiàn)象(xiàng),如(rú)果(guǒ)操作沒(méi)有(yǒu)錯誤,此(cǐ)刻可(kě)以(yǐ)看(kàn)到(dào)數碼管(guǎn)上(shàng)顯示出(chū)时(shí)間(jiān)并且在(zài)開(kāi)始不(bù)斷計(jì)數。如(rú)果(guǒ)顯示的(de)方(fāng)向(xiàng)或(huò)者(zhě)时(shí)間(jiān)表(biǎo)示出(chū)現(xiàn)錯誤,就(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)有(yǒu)更(gèng)多(duō)的(de)收(shōu)獲。
下(xià)面(miàn)会(huì)分(fēn)享簡化(huà)版的(de)步驟,方(fāng)便掌握基礎原理後(hòu)進(jìn)行反(fǎn)複操作複習。
5.1.1頂层信(xìn)号(hào)
新建目录(lù):D:mdy_bookmy_shizhong。在(zài)該目录(lù)中(zhōng),新建一(yī)个(gè)名为(wèi)my_shizong.v的(de)文(wén)件(jiàn),用(yòng)GVIM打(dǎ)開(kāi)後(hòu)開(kāi)始編写代(dài)碼。
确定(dìng)頂层信(xìn)号(hào),信(xìn)号(hào)和(hé)硬(yìng)件(jiàn)的(de)对(duì)應(yìng)關(guān)系(xì)見(jiàn)表(biǎo)3.7- 1。
表(biǎo)3.7 -1信(xìn)号(hào)和(hé)管(guǎn)脚關(guān)系(xì)
写出(chū)頂层代(dài)碼。
聲明(míng)輸入(rù)輸出(chū)屬性(xìng)。
5.1.2信(xìn)号(hào)設計(jì)
進(jìn)行架構設計(jì)。根(gēn)據(jù)設計(jì)目标(biāo)得出(chū)波(bō)形图(tú)如(rú)下(xià)所(suǒ)示。

图(tú)3.7-3带(dài)时(shí)間(jiān)信(xìn)息的(de)輸出(chū)时(shí)序
設計(jì)計(jì)數器架構,設計(jì)表(biǎo)示2ms时(shí)間(jiān)的(de)計(jì)數器cnt0代(dài)碼如(rú)下(xià)。
設計(jì)表(biǎo)示第(dì)幾(jǐ)次(cì)顯示的(de)計(jì)數器cnt1代(dài)碼如(rú)下(xià):
設計(jì)輸出(chū)信(xìn)号(hào)seg_sel代(dài)碼如(rú)下(xià):
設計(jì)輸出(chū)信(xìn)号(hào)seg_ment代(dài)碼如(rú)下(xià):
設計(jì)sel_data信(xìn)号(hào)代(dài)碼如(rú)下(xià):
秒(miǎo)鐘(zhōng)个(gè)位m_g的(de)时(shí)序图(tú):

图(tú)3.7-8秒(miǎo)鐘(zhōng)个(gè)位的(de)时(shí)序图(tú)
設計(jì)計(jì)數秒(miǎo)鐘(zhōng)个(gè)位m_g的(de)計(jì)數器cnt2代(dài)碼如(rú)下(xià):
設計(jì)秒(miǎo)鐘(zhōng)个(gè)位m_g代(dài)碼如(rú)下(xià):
秒(miǎo)鐘(zhōng)十(shí)位m_s的(de)时(shí)序图(tú):

图(tú)3.7-9秒(miǎo)鐘(zhōng)十(shí)位的(de)时(shí)序图(tú)
設計(jì)秒(miǎo)鐘(zhōng)十(shí)位m_s代(dài)碼如(rú)下(xià):
分(fēn)鐘(zhōng)个(gè)位f_g的(de)时(shí)序图(tú):

图(tú)3.7- 10 分(fēn)鐘(zhōng)个(gè)位的(de)时(shí)序图(tú)
設計(jì)分(fēn)鐘(zhōng)个(gè)位f_g代(dài)碼如(rú)下(xià):
分(fēn)鐘(zhōng)十(shí)位f_s的(de)时(shí)序图(tú):

图(tú)3.7- 11分(fēn)鐘(zhōng)十(shí)位的(de)时(shí)序图(tú)
設計(jì)分(fēn)鐘(zhōng)十(shí)位f_s代(dài)碼如(rú)下(xià):
小时(shí)个(gè)位s_g时(shí)序图(tú):

图(tú)3.7- 12 小时(shí)个(gè)位的(de)时(shí)序图(tú)
設計(jì)小时(shí)个(gè)位s_g代(dài)碼如(rú)下(xià):
小时(shí)十(shí)位s_s时(shí)序图(tú):

图(tú)3.7- 13 小时(shí)十(shí)位的(de)时(shí)序图(tú)
設計(jì)小时(shí)十(shí)位s_s代(dài)碼如(rú)下(xià):
設計(jì)變(biàn)量(liàng)x代(dài)碼如(rú)下(xià):
至(zhì)此(cǐ),主(zhǔ)體(tǐ)程序已經(jīng)完成(chéng),下(xià)面(miàn)将module補充完整。
5.1.3信(xìn)号(hào)定(dìng)義
首先(xiān)定(dìng)義信(xìn)号(hào)類(lèi)型,cnt0、add_cnt0和(hé)end_cnt0的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
cnt1、add_cnt1和(hé)end_cnt1的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
seg_sel的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
seg_ment的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
sel_data的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
cnt2、add_cnt2和(hé)end_cnt2的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
m_g、add_m_g和(hé)end_m_g的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
m_s、add_m_s和(hé)end_m_s的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
f_g、add_f_g和(hé)end_f_g的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
f_s、add_f_s和(hé)end_f_s的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
s_g、add_s_g和(hé)end_s_g的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
s_s、add_s_s和(hé)end_s_s的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
x的(de)信(xìn)号(hào)定(dìng)義如(rú)下(xià):
至(zhì)此(cǐ),整个(gè)代(dài)碼的(de)設計(jì)工作已經(jīng)完成(chéng),完整的(de)設計(jì)代(dài)碼如(rú)下(xià)所(suǒ)示。
5.2 綜合與(yǔ)上(shàng)板
5.2.1新建工程
接下(xià)来(lái)是(shì)新建工程和(hé)上(shàng)板查看(kàn)現(xiàn)象(xiàng)。首先(xiān)打(dǎ)開(kāi)QuartusⅡ,點(diǎn)擊File下(xià)拉列表(biǎo)中(zhōng)的(de)New Project Wzard...新建工程選項。

图(tú)3.7-15Quartus新建工程
直(zhí)接點(diǎn)擊Next。

图(tú)3.7- 16 Quartus新建工程介紹
如(rú)下(xià)图(tú)所(suǒ)示設置工程文(wén)件(jiàn)夾、工程名、頂层模块(kuài)名(目录(lù)为(wèi):D:/mdy_book/my_shizhong,工程名和(hé)頂层名为(wèi)my_shizhong),完成(chéng)設置後(hòu)點(diǎn)擊“Next”。

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

图(tú)3.7- 18 QUARTUS新建工程類(lèi)型
點(diǎn)擊右(yòu)側“Add ”選項-,添加“my_shizhong.v”文(wén)件(jiàn)後(hòu)點(diǎn)擊“Next”。

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

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

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

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

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

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

图(tú)3.7- 25 QUARTUS配置管(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.7- 26 QUARTUS配置管(guǎn)脚
5.2.4再次(cì)綜合
打(dǎ)開(kāi)“QUARTUS”软(ruǎn)件(jiàn),在(zài)菜單欄中(zhōng)選擇“Processing”,點(diǎn)擊“StartCompilation”。

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

图(tú)3.7- 28 QUARTUS編譯成(chéng)功标(biāo)志
5.2.5連(lián)接開(kāi)發(fà)板
下(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.7-29開(kāi)發(fà)板連(lián)接图(tú)
5.2.6上(shàng)板
打(dǎ)開(kāi)QUARTUS界面(miàn),單擊“ ”图(tú)标(biāo):

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

图(tú)3.7- 31 QUARTUS下(xià)载程序界面(miàn)
至(zhì)此(cǐ),整个(gè)數字(zì)时(shí)鐘(zhōng)的(de)工程設計(jì)就(jiù)分(fēn)享完畢了(le)。这(zhè)里(lǐ)只(zhī)是(shì)給(gěi)读(dú)者(zhě)朋友们(men)展(zhǎn)示了(le)一(yī)个(gè)案(àn)例,掌握了(le)原理的(de)读(dú)者(zhě)朋友可(kě)以(yǐ)試着進(jìn)行設計(jì)的(de)延伸與(yǔ)擴展(zhǎn)。比如(rú)更(gèng)改開(kāi)發(fà)板上(shàng)數碼管(guǎn)的(de)顯示位置或(huò)者(zhě)嘗試将24小时(shí)时(shí)鐘(zhōng)改为(wèi)12小时(shí)时(shí)鐘(zhōng)。这(zhè)樣(yàng)舉一(yī)反(fǎn)三(sān),既可(kě)以(yǐ)考察自(zì)己的(de)知識掌握程度(dù),又能(néng)強(qiáng)化(huà)自(zì)己的(de)設計(jì)能(néng)力。也(yě)欢迎读(dú)者(zhě)朋友对(duì)此(cǐ)設計(jì)進(jìn)行擴展(zhǎn)性(xìng)的(de)思(sī)考和(hé)讨論,有(yǒu)更(gèng)好(hǎo)的(de)思(sī)路(lù)可(kě)以(yǐ)前(qián)往至(zhì)簡設計(jì)法論壇進(jìn)行交流。








