一(yī)、硬(yìng)件(jiàn)與(yǔ)架構設計(jì)
本(běn)項目中(zhōng)用(yòng)到(dào)的(de)設備有(yǒu):PC、FPGA、温(wēn)度(dù)傳感(gǎn)器DS18B20、蜂鳴器(beep)、數碼管(guǎn)(segment)。
对(duì)于(yú)本(běn)次(cì)的(de)項目,我(wǒ)的(de)任务是(shì)将之前(qián)的(de)温(wēn)度(dù)檢测項目的(de)架構再進(jìn)行细(xì)分(fēn),以(yǐ)及(jí)将相應(yìng)的(de)代(dài)碼写出(chū)来(lái)并且能(néng)够上(shàng)板調試出(chū)来(lái)。
之前(qián)的(de)温(wēn)度(dù)檢测項目的(de)架構主(zhǔ)要(yào)分(fēn)了(le)九个(gè)模块(kuài):分(fēn)别是(shì)uart_rx模块(kuài)、ascii_hex模块(kuài)、opcode模块(kuài)、control模块(kuài)、byte模块(kuài)、bit模块(kuài)、seg_disp模块(kuài)、hex_ascii模块(kuài)、uart_tx模块(kuài),具體(tǐ)的(de)架構图(tú)如(rú)图(tú)1所(suǒ)示:


在(zài)上(shàng)面(miàn)温(wēn)度(dù)檢测架構(图(tú)1)的(de)基礎上(shàng),我(wǒ)将架構再進(jìn)行了(le)细(xì)分(fēn),分(fēn)成(chéng)了(le)11个(gè)模块(kuài):分(fēn)别是(shì)uart_rx模块(kuài)、ascii_hex模块(kuài)、opcode模块(kuài)、control模块(kuài)、byte模块(kuài)、温(wēn)度(dù)比較模块(kuài)、温(wēn)度(dù)計(jì)算轉(zhuǎn)換模块(kuài)、bit模块(kuài)、seg_disp模块(kuài)、hex_ascii模块(kuài)、符号(hào)補全(quán)模块(kuài)、uart_tx模块(kuài),具體(tǐ)的(de)架構图(tú)如(rú)图(tú)2所(suǒ)示:
該項目架構细(xì)分(fēn)前(qián)後(hòu)的(de)主(zhǔ)要(yào)區(qū)别主(zhǔ)要(yào)是(shì):将细(xì)分(fēn)之前(qián)的(de)control模块(kuài)分(fēn)解(jiě)成(chéng)了(le)control模块(kuài)、温(wēn)度(dù)比較模块(kuài)、温(wēn)度(dù)計(jì)算比較轉(zhuǎn)換模块(kuài)、符号(hào)補全(quán)模块(kuài)、以(yǐ)及(jí)将opcode模块(kuài)的(de)輸出(chū)設置为(wèi)地(dì)址指令和(hé)數據(jù)指令一(yī)起輸出(chū)。
二(èr)、架構细(xì)分(fēn)後(hòu)的(de)优點(diǎn)
我(wǒ)个(gè)人(rén)認为(wèi)有(yǒu)以(yǐ)下(xià)幾(jǐ)个(gè)优點(diǎn):
1、 讓每一(yī)个(gè)模块(kuài)的(de)功能(néng)更(gèng)加清(qīng)晰,看(kàn)起来(lái)比較直(zhí)观(讓刚接觸到(dào)該項目的(de)新手(shǒu),能(néng)够比較短(duǎn)时(shí)間(jiān)內(nèi)了(le)解(jiě)各(gè)个(gè)模块(kuài)的(de)功能(néng));
2、 讓思(sī)路(lù)更(gèng)加清(qīng)晰,方(fāng)便写相應(yìng)地(dì)代(dài)碼,減少(shǎo)因(yīn)代(dài)碼过(guò)多(duō)而(ér)導致(zhì)容易發(fà)生(shēng)錯誤的(de)問(wèn)題(tí)(细(xì)分(fēn)前(qián)的(de)control模块(kuài)代(dài)碼多(duō),功能(néng)多(duō),使得看(kàn)或(huò)者(zhě)写代(dài)碼时(shí)有(yǒu)一(yī)定(dìng)的(de)難度(dù));
3、 方(fāng)便对(duì)每一(yī)个(gè)模块(kuài)進(jìn)行相應(yìng)地(dì)测試(方(fāng)便写测試文(wén)件(jiàn))。
三(sān)、産生(shēng)問(wèn)題(tí)及(jí)解(jiě)決方(fāng)案(àn)
在(zài)细(xì)分(fēn)該項目的(de)过(guò)程中(zhōng),我(wǒ)所(suǒ)遇到(dào)的(de)問(wèn)題(tí)有(yǒu)以(yǐ)下(xià)三(sān)點(diǎn):
1、 对(duì)各(gè)个(gè)细(xì)分(fēn)模块(kuài)的(de)輸入(rù)和(hé)輸出(chū)信(xìn)号(hào)定(dìng)義不(bù)太清(qīng)晰(不(bù)知道(dào)該設置多(duō)少(shǎo)个(gè)輸入(rù)和(hé)輸出(chū)信(xìn)号(hào));
2、 对(duì)模块(kuài)之前(qián)的(de)閑忙信(xìn)号(hào)定(dìng)義比較模糊(不(bù)太清(qīng)楚哪些模块(kuài)之間(jiān)需要(yào)定(dìng)義閑忙信(xìn)号(hào));
3、 上(shàng)板調試时(shí),數碼管(guǎn)上(shàng)能(néng)够正(zhèng)常顯示读(dú)取(qǔ)到(dào)的(de)温(wēn)度(dù)值,而(ér)pc上(shàng)卻出(chū)現(xiàn)了(le)亂碼(沒(méi)有(yǒu)顯示读(dú)取(qǔ)到(dào)的(de)温(wēn)度(dù)值);
对(duì)于(yú)以(yǐ)上(shàng)提(tí)到(dào)的(de)三(sān)个(gè)問(wèn)題(tí),我(wǒ)分(fēn)别做了(le)如(rú)下(xià)的(de)处理:对(duì)于(yú)第(dì)一(yī)个(gè)問(wèn)題(tí)、我(wǒ)先(xiān)将能(néng)够想(xiǎng)到(dào)的(de)輸入(rù)或(huò)者(zhě)輸出(chū)信(xìn)号(hào)先(xiān)定(dìng)義好(hǎo)(多(duō)除少(shǎo)補),再結合细(xì)分(fēn)架構之前(qián)对(duì)應(yìng)的(de)輸入(rù)和(hé)輸出(chū)進(jìn)行定(dìng)義;对(duì)于(yú)第(dì)二(èr)个(gè)問(wèn)題(tí)、我(wǒ)先(xiān)考慮各(gè)个(gè)模块(kuài)之間(jiān)的(de)信(xìn)号(hào)处理时(shí)間(jiān),看(kàn)看(kàn)哪些模块(kuài)之間(jiān)需要(yào)用(yòng)到(dào)閑忙信(xìn)号(hào),最(zuì)後(hòu)再結合细(xì)分(fēn)架構之前(qián)各(gè)个(gè)模块(kuài)之前(qián)的(de)閑忙信(xìn)号(hào)設置;对(duì)于(yú)第(dì)三(sān)个(gè)問(wèn)題(tí)、我(wǒ)使用(yòng)signaltap從uart_tx模块(kuài)、符号(hào)補全(quán)模块(kuài)、hex_ascii模块(kuài)、温(wēn)度(dù)計(jì)算比較轉(zhuǎn)換模块(kuài)依次(cì)進(jìn)行查找(zhǎo)問(wèn)題(tí),最(zuì)後(hòu)查找(zhǎo)出(chū)是(shì)某一(yī)个(gè)輸出(chū)信(xìn)号(hào)的(de)位宽(kuān)定(dìng)義的(de)問(wèn)題(tí)。
總(zǒng)的(de)来(lái)说(shuō),通(tòng)过(guò)对(duì)本(běn)次(cì)温(wēn)度(dù)檢测項目架構细(xì)分(fēn),讓我(wǒ)对(duì)該項目更(gèng)加的(de)了(le)解(jiě)了(le),以(yǐ)及(jí)在(zài)一(yī)定(dìng)程度(dù)上(shàng)擴展(zhǎn)我(wǒ)的(de)設計(jì)思(sī)路(lù),同(tóng)时(shí)也(yě)讓我(wǒ)对(duì)signaltap的(de)使用(yòng)更(gèng)加熟悉了(le)(用(yòng)signaltap找(zhǎo)bug确实是(shì)一(yī)種(zhǒng)很好(hǎo)的(de)方(fāng)法),還(huán)有(yǒu)就(jiù)是(shì)也(yě)讓我(wǒ)體(tǐ)验(yàn)到(dào)了(le)一(yī)丝(sī)的(de)成(chéng)就(jiù)感(gǎn)。
以(yǐ)上(shàng)就(jiù)是(shì)本(běn)人(rén)优化(huà)温(wēn)度(dù)檢测工程架構的(de)心(xīn)得笔(bǐ)記(jì),感(gǎn)興趣的(de)朋友可(kě)以(yǐ)在(zài)留言中(zhōng)與(yǔ)我(wǒ)進(jìn)行交流讨論!














