《verilog_數(shù)字系統(tǒng)設(shè)計(jì)課程》(第二版)思考題答案_第1頁(yè)
《verilog_數(shù)字系統(tǒng)設(shè)計(jì)課程》(第二版)思考題答案_第2頁(yè)
《verilog_數(shù)字系統(tǒng)設(shè)計(jì)課程》(第二版)思考題答案_第3頁(yè)
《verilog_數(shù)字系統(tǒng)設(shè)計(jì)課程》(第二版)思考題答案_第4頁(yè)
《verilog_數(shù)字系統(tǒng)設(shè)計(jì)課程》(第二版)思考題答案_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室1緒論1.什么是信號(hào)處理電路?它通常由哪兩大部分組成?信號(hào)處理電路是進(jìn)行一些復(fù)雜的數(shù)字運(yùn)算和數(shù)據(jù)處理, 并且又有實(shí)時(shí)響應(yīng)要求的電路。它通常有高速數(shù)據(jù)通道接口和高速算法電路兩大部分組成。2.為什么要設(shè)計(jì)專(zhuān)用的信號(hào)處理電路?因?yàn)橛械臄?shù)字信號(hào)處理對(duì)時(shí)間的要求非??量蹋?以至于用高速的通用處理器也無(wú)法在規(guī)定的時(shí)間內(nèi)完成必要的運(yùn)算。 通用微處理器芯片是為一般目的而設(shè)計(jì)的,運(yùn)算的步驟必須通過(guò)程序編譯后生成的機(jī)器碼指令加載到存儲(chǔ)器中,然后在微處理器芯片控制下,按時(shí)鐘的節(jié)拍,逐條取出指令分析指令和執(zhí)行指令,直到程序的結(jié)束。微處理器芯片中的內(nèi)部總線和運(yùn)算

2、部件也是為通用目的而設(shè)計(jì), 即使是專(zhuān)為信號(hào)處理而設(shè)計(jì)的通用微處理器, 因?yàn)樗耐ㄓ眯砸膊豢赡転槟骋惶厥獾乃惴▉?lái)設(shè)計(jì)一系列的專(zhuān)用的運(yùn)算電路而且其內(nèi)部總線的寬度也不能隨便的改變,只有通過(guò)改變程序,才能實(shí)現(xiàn)這個(gè)特殊的算法,因而其算法速度也受到限制所以要設(shè)計(jì)專(zhuān)用的信號(hào)處理電路。3.什么是實(shí)時(shí)處理系統(tǒng)?實(shí)時(shí)處理系統(tǒng)是具有實(shí)時(shí)響應(yīng)的處理系統(tǒng)。4.為什么要用硬件描述語(yǔ)言來(lái)設(shè)計(jì)復(fù)雜的算法邏輯電路?因?yàn)楝F(xiàn)代復(fù)雜數(shù)字邏輯系統(tǒng)的設(shè)計(jì)都是借助于 eda 工具完成的,無(wú)論電路系統(tǒng)的仿真和綜合都需要掌握硬件描述語(yǔ)言。5.能不能完全用 c 語(yǔ)言來(lái)代替硬件描述語(yǔ)言進(jìn)行算法邏輯電路的設(shè)計(jì)?不能,因?yàn)榛A(chǔ)算法的描述和驗(yàn)證通常用

3、c 語(yǔ)言來(lái)做。如果要設(shè)計(jì)一個(gè)專(zhuān)用的電路來(lái)進(jìn)行這種對(duì)速度有要求的實(shí)時(shí)數(shù)據(jù)處理,除了以上 c 語(yǔ)言外,還須編寫(xiě)硬件描述語(yǔ)言程序進(jìn)行仿真以便從電路結(jié)構(gòu)上保證算法能在規(guī)定的時(shí)間內(nèi)完成,并能通過(guò)與前端和后端的設(shè)備接口正確無(wú)誤地交換數(shù)據(jù)。6.為什么在算法邏輯電路的設(shè)計(jì)中需要用 c 語(yǔ)言和硬件描述語(yǔ)言配合使用來(lái)提高設(shè)計(jì)效率?首先 c 語(yǔ)言很靈活,查錯(cuò)功能強(qiáng),還可以通過(guò) pli 編寫(xiě)自己的系統(tǒng)任務(wù),并直接與硬件仿真器結(jié)合使用。 c 語(yǔ)言是目前世界上應(yīng)用最為廣泛的一種編程語(yǔ)言,因而 c 程序的設(shè)計(jì)環(huán)境比 verilog hdl 更完整,此外,c 語(yǔ)言有可靠地編譯環(huán)境,語(yǔ)法完備,缺陷缺少,應(yīng)用于許多的領(lǐng)域。比較起

4、來(lái),verilog 語(yǔ)言只是針對(duì)硬件描述的,在別處使用并不方便。而用 verilog 的仿真,綜合,查錯(cuò)等大部分軟件都是商業(yè)軟件,與 c 語(yǔ)言相比缺乏長(zhǎng)期大量的使用,可靠性較差,亦有很多缺陷。所以只有在 c 語(yǔ)言的配合使用下,verilog 才能更好地發(fā)揮作用。c語(yǔ)言與 verilog hdl 語(yǔ)言相輔相成,互相配合使用。這就是即利用 c 語(yǔ)言的完整性又要結(jié)合 verilog 對(duì)硬件描述的精確性,來(lái)更快更好地設(shè)計(jì)出符合性能要求的verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室2硬件電路系統(tǒng),從而來(lái)提高效率。第一部分 verilog 數(shù)字設(shè)計(jì)基礎(chǔ)第 1 章 verilog 的基本知識(shí)1

5、.什么是硬件描述語(yǔ)言?它的主要作用是什么?硬件描述語(yǔ)言是一種用形式化方式來(lái)描述數(shù)字電路和系統(tǒng)的語(yǔ)言。它的主要作用是:數(shù)字電路系統(tǒng)的設(shè)計(jì)者利用這種語(yǔ)言可以從上層到下層(從抽象到具體)逐步描述自己的設(shè)計(jì)思想,用一系列分層次的模塊來(lái)表示極其復(fù)雜的數(shù)字系統(tǒng)。2.目前世界上符合 ieee 標(biāo)準(zhǔn)的硬件描述語(yǔ)言有哪兩種?它們各有什么特點(diǎn)?符合 ieee 標(biāo)準(zhǔn)的硬件描述語(yǔ)言是 verilog hdl 和 vhdl 兩種。 它們的共同特點(diǎn)是:能夠形式化地抽象表示電路的行為和結(jié)構(gòu);支持邏輯設(shè)計(jì)中層次與范圍的描述;可借用高級(jí)語(yǔ)言的精巧結(jié)構(gòu)來(lái)簡(jiǎn)化電路行為的描述;具有電路仿真與驗(yàn)證機(jī)制以保證設(shè)計(jì)的正確性;支持電路描述由

6、高層到低層的綜合 1 轉(zhuǎn)換硬件描述與實(shí)現(xiàn)工藝無(wú)關(guān); 便于文檔管理; 易于理解和設(shè)計(jì)重用。 不同點(diǎn): veriloghdl 是一種非常容易掌握的硬件描述語(yǔ)言,而 vhdl 掌握起來(lái)就比較困難。3.什么情況下需要采用硬件描述語(yǔ)言的設(shè)計(jì)方法?在對(duì)邏輯電路及系統(tǒng)的設(shè)計(jì)的時(shí)間要求很短的情況下需要采用硬件描述語(yǔ)言的設(shè)計(jì)方法。4.采用硬件描述語(yǔ)言設(shè)計(jì)方法的優(yōu)點(diǎn)是什么?有什么缺點(diǎn)??jī)?yōu)點(diǎn)是:與工藝無(wú)關(guān)性。這使得工程師在功能設(shè)計(jì),邏輯驗(yàn)證階段,可以不必過(guò)多考慮門(mén)級(jí)及工藝實(shí)現(xiàn)的具體細(xì)節(jié),只需要利用系統(tǒng)設(shè)計(jì)時(shí)對(duì)芯片的要求,施加不同的約束條件,即可設(shè)計(jì)出實(shí)際電路。缺點(diǎn)是: 需要相應(yīng)的 eda 工具, 而 eda 工具的

7、穩(wěn)定性需要進(jìn)一步的在工程中提升。5.簡(jiǎn)單敘述一下利用 eda 工具并采用硬件描述語(yǔ)言的設(shè)計(jì)方法和流程?采用自頂向下的設(shè)計(jì)方法:從系統(tǒng)級(jí)開(kāi)始把系統(tǒng)劃分為基本單元,然后再把每個(gè)基本單元?jiǎng)澐譃橄乱粚哟蔚幕締卧?,一直這樣做下去,直到可以直接用eda 元件庫(kù)中的基本元件來(lái)實(shí)現(xiàn)為止。其基本流程主要由兩大主要功能部分組成:(1)設(shè)計(jì)開(kāi)發(fā) 即從編寫(xiě)設(shè)計(jì)文件-綜合到布局布線-電路生成這樣一序列步驟。(2)設(shè)計(jì)驗(yàn)證 也就是進(jìn)行各種仿真的一序列步驟,如果在仿真過(guò)程中發(fā)現(xiàn)問(wèn)題就返回設(shè)計(jì)輸入進(jìn)行修改。5.硬件描述語(yǔ)言可以用哪兩種方式參與復(fù)雜數(shù)字電路的設(shè)計(jì)?復(fù)雜數(shù)字電路的設(shè)計(jì)和復(fù)雜數(shù)字電路的仿真驗(yàn)證。verilog 數(shù)

8、字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室37.用硬件描述語(yǔ)言設(shè)計(jì)的數(shù)字系統(tǒng)需要經(jīng)過(guò)哪些步驟才能與具體的電路相對(duì)應(yīng)?編寫(xiě)設(shè)計(jì)文件;功能仿真;優(yōu)化,布局布線;布線后門(mén)級(jí)仿真8.為什么說(shuō)用硬件描述語(yǔ)言設(shè)計(jì)的數(shù)字邏輯系統(tǒng)下具有很大的靈活性并可以映射到任何工藝的電路上?硬件描述語(yǔ)言的設(shè)計(jì)具有與工藝無(wú)關(guān)性。這使得工程師在功能設(shè)計(jì),邏輯驗(yàn)證階段,可以不必過(guò)多考 慮門(mén)級(jí)及工藝實(shí)現(xiàn)的具體細(xì)節(jié),只需要利用系統(tǒng)設(shè)計(jì)時(shí)對(duì)芯片的要求,施加不同的約束條件,即可設(shè)計(jì)出實(shí)際電路。9.軟核是什么?虛擬器件是什么?它們的作用是什么?把功能經(jīng)過(guò)驗(yàn)證的,可綜合的,實(shí)現(xiàn)后電路結(jié)構(gòu)總門(mén)數(shù)在 5000 門(mén)以上的verilog hdl 模型

9、稱(chēng)為軟核。而把由軟核構(gòu)成的器件稱(chēng)為虛擬器件。作用:大大縮短設(shè)計(jì)周期,加快復(fù)雜電路的設(shè)計(jì)。10.集成電路行業(yè)中 ip 的含義是什么?固核是什么?硬核是什么?與軟核相比它們各有什么特點(diǎn)?各適合于什么場(chǎng)合?在集成電路行業(yè)中 ip 是知識(shí)產(chǎn)權(quán)(intellectual property)的含義。把在某一現(xiàn)場(chǎng)可編程門(mén)陣列器件上實(shí)現(xiàn)的經(jīng)驗(yàn)證是正確的,總門(mén)數(shù)在 5000 門(mén)以上的電路結(jié)構(gòu)編碼文件稱(chēng)為固核。 把在某一專(zhuān)用集成電路工藝的器件上實(shí)現(xiàn)的經(jīng)驗(yàn)證時(shí)正確的總門(mén)數(shù)在 5000 門(mén)以上的門(mén)電路結(jié)構(gòu)版圖掩膜稱(chēng)為硬核。在工具實(shí)現(xiàn)手段和工藝技術(shù)尚未確定的邏輯設(shè)計(jì)階段,ip 核具有很大的靈活性,很容易借助 eda 工

10、具與其他外部邏輯結(jié)合為一體。相比之下固核和硬核與其他外部邏輯結(jié)合為一體的靈活性要差很多。11.簡(jiǎn)述 top_down 設(shè)計(jì)方法和硬件描述語(yǔ)言的關(guān)系?top_down 的設(shè)計(jì)方法是首先從系統(tǒng)設(shè)計(jì)入手,從頂層進(jìn)行功能劃分和結(jié)構(gòu)設(shè)計(jì)。系統(tǒng)的總仿真是頂層進(jìn)行功能劃分的總要環(huán)節(jié),而該過(guò)程需要采用硬件描述語(yǔ)言的方法。12.system verilog 與 verilog 有什么關(guān)系?適合于何種設(shè)計(jì)?system verilog 是 verilog 語(yǔ)言的拓展和延伸。veril 適合系統(tǒng)級(jí),算法級(jí), 寄存器級(jí),邏輯級(jí),門(mén)級(jí),電路開(kāi)關(guān)級(jí)設(shè)計(jì)而 system verilog 更適合于可重用的可綜合 ip 和可重

11、用的驗(yàn)證用 ip 設(shè)計(jì),以及特大型基于 ip 的系統(tǒng)級(jí)設(shè)計(jì)和驗(yàn)證。verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室4第 2 章 verilog 語(yǔ)法的基本概念1.verilog 語(yǔ)言有什么作用?可描述順序執(zhí)行和并行執(zhí)行的程序結(jié)構(gòu);用延遲表達(dá)式或事件表達(dá)式來(lái)明確地控制過(guò)程的啟動(dòng)時(shí)間;通過(guò)命名的事件來(lái)觸發(fā)其他過(guò)程里的激活行為或停止行為;提供了條件如 if-else,case 等循環(huán)程序結(jié)構(gòu);提供了可帶參數(shù)且非零延續(xù)時(shí)間的任務(wù)程序結(jié)構(gòu);提供了可定義新的操作符的函數(shù)結(jié)構(gòu);提供了用于建立表達(dá)式的算術(shù)運(yùn)算符,邏輯運(yùn)算符,位運(yùn)算符;verilog hdl 語(yǔ)言作為一種結(jié)構(gòu)化的語(yǔ)言非常適用于門(mén)級(jí)和開(kāi)

12、光級(jí)的模型設(shè)計(jì);提供了一套完整的表示組合邏輯的基本元件的原話(huà);提供了雙向通路和電阻器件的原話(huà);可建立 mos 器件的電荷分享和電荷衰減動(dòng)態(tài)模型;verilog hdl 的構(gòu)造性語(yǔ)句可以精確地建立信號(hào)的模型;2.構(gòu)成模塊的關(guān)鍵詞是什么?module,endmodule3.為什么說(shuō)可以用 verilog 構(gòu)成非常復(fù)雜的電路結(jié)構(gòu)?因?yàn)?verilog 可描述順序執(zhí)行和并行執(zhí)行的程序結(jié)構(gòu); 用延遲表達(dá)式或事件表達(dá)式來(lái)明確地控制過(guò)程的啟動(dòng)時(shí)間; 通過(guò)命名的事件來(lái)觸發(fā)其他過(guò)程里的激活行為或停止行為;提供了條件如 if-else,case 等循環(huán)程序結(jié)構(gòu);提供了可帶參數(shù)且非零延續(xù)時(shí)間的任務(wù)程序結(jié)構(gòu);提供了可

13、定義新的操作符的函數(shù)結(jié)構(gòu);提供了用于建立表達(dá)式的算術(shù)運(yùn)算符,邏輯運(yùn)算符,位運(yùn)算符;verilog hdl 語(yǔ)言作為一種結(jié)構(gòu)化的語(yǔ)言非常適用于門(mén)級(jí)和開(kāi)光級(jí)的模型設(shè)計(jì); 提供了一套完整的表示組合邏輯的基本元件的原話(huà);提供了雙向通路和電阻器件的原話(huà);可建立 mos 器件的電荷分享和電荷衰減動(dòng)態(tài)模型;verilog hdl 的構(gòu)造性語(yǔ)句可以精確地建立信號(hào)的模型。4.為什么可以用比較抽象的描述來(lái)設(shè)計(jì)具體的電路結(jié)構(gòu)?因?yàn)橛锌梢杂帽容^抽象描述設(shè)計(jì)電路結(jié)構(gòu)的語(yǔ)言,而這種語(yǔ)言是適合數(shù)字系統(tǒng)設(shè)計(jì)的語(yǔ)言。5.是否任意抽象的符合語(yǔ)法的 verilog 模塊都可以通過(guò)綜合工具轉(zhuǎn)變?yōu)殡娐方Y(jié)構(gòu)?不能。要符合語(yǔ)法,還符合一些

14、基本規(guī)則的 verilog 模塊才可以通過(guò)綜合工具轉(zhuǎn)變?yōu)殡娐方Y(jié)構(gòu)。6.什么叫綜合?verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室5通過(guò)綜合工具把行為級(jí)描述的模塊通過(guò)邏輯網(wǎng)表自動(dòng)轉(zhuǎn)化為門(mén)級(jí)形式的模塊叫綜合。7.綜合是由什么工具來(lái)完成的?eda 工具來(lái)完成綜合的。8.通過(guò)綜合產(chǎn)生的是什么?產(chǎn)生的結(jié)果有什么用處?產(chǎn)生的是由與門(mén),或門(mén)和非門(mén)組成的加法器,比較器等組合邏輯。產(chǎn)生的模塊很容易與某種工藝的基本元件逐一對(duì)應(yīng)起來(lái), 再通過(guò)布局布線工具自動(dòng)地轉(zhuǎn)變?yōu)槟撤N工具工藝的電路布線結(jié)構(gòu)。9.仿真是什么?為什么要進(jìn)行仿真?仿真是對(duì)電路模塊進(jìn)行動(dòng)態(tài)的全面測(cè)試。通過(guò)觀測(cè)被測(cè)試模塊的輸出信號(hào)是否符合要求可

15、以調(diào)試和驗(yàn)證邏輯系統(tǒng)的設(shè)計(jì)和結(jié)構(gòu)準(zhǔn)確與否, 并發(fā)現(xiàn)問(wèn)題及時(shí)修改。10.仿真可以在幾層面上進(jìn)行?每個(gè)層面的仿真有什么意義?分別為;前仿真,邏輯網(wǎng)表仿真,門(mén)級(jí)仿真和布線后仿真;前仿真,邏輯網(wǎng)表仿真,門(mén)級(jí)仿真;可以調(diào)試和驗(yàn)證邏輯系統(tǒng)的設(shè)計(jì)和結(jié)構(gòu)準(zhǔn)確與否,并發(fā)現(xiàn)問(wèn)題及時(shí)修改。布線后仿真:分析設(shè)計(jì)的電路模塊的運(yùn)行是否正常。11.模塊的端口是如何描述的?用“.”表示被引用模塊的端口。12.在引用實(shí)例模塊的時(shí)候,如何在主模塊中連接信號(hào)線?用小括號(hào)中來(lái)表示本模塊中與之連接的模塊。13.如何產(chǎn)生連續(xù)的周期性測(cè)試時(shí)鐘?用 always 語(yǔ)句來(lái)產(chǎn)生連續(xù)的周期性測(cè)試模塊。14.如果不用 initial 塊,能否產(chǎn)生測(cè)

16、試時(shí)鐘?不能,沒(méi)有 initial 塊,就不知道時(shí)鐘信號(hào)的初始值15.從本講中的簡(jiǎn)單例子,是否能明白 always 塊與 initial 塊有什么不同?initial 塊只執(zhí)行一次,而 always 塊執(zhí)行無(wú)數(shù)次。16.為什么說(shuō) verilog 可以用來(lái)設(shè)計(jì)數(shù)字邏輯電路和系統(tǒng)?因?yàn)?verilog 可描述順序執(zhí)行和并行執(zhí)行的程序結(jié)構(gòu); 用延遲表達(dá)式或事件表達(dá)式來(lái)明確地控制過(guò)程的啟動(dòng)時(shí)間; 通過(guò)命名的事件來(lái)觸發(fā)其他過(guò)程里的激活行為或停止行為;提供了條件如 if-else,case 等循環(huán)程序結(jié)構(gòu);提供了可帶參數(shù)且非零延續(xù)時(shí)間的任務(wù)程序結(jié)構(gòu);提供了可定義新的操作符的函數(shù)結(jié)構(gòu);提供了用于建立表達(dá)式的

17、算術(shù)運(yùn)算符,邏輯運(yùn)算符,位運(yùn)算符;verilog hdl 語(yǔ)言作為一種結(jié)構(gòu)化的語(yǔ)言非常適用于門(mén)級(jí)和開(kāi)光級(jí)的模型設(shè)計(jì); 提供了一套完整的表示組合邏輯的基本元件的原話(huà);提供了雙向通路和電阻器件的原話(huà);可建立 mos 器verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室6件的電荷分享和電荷衰減動(dòng)態(tài)模型;verilog hdl 的構(gòu)造性語(yǔ)句可以精確地建立信號(hào)的模型。第 3 章 模塊的結(jié)構(gòu)、數(shù)據(jù)類(lèi)型、變量和基本運(yùn)算符號(hào)1.模塊由幾個(gè)部分組成?由描述接口和描述邏輯功能兩部分組成。2.端口分為幾種?三種:輸出口,輸入口,輸入/輸出口3.為什么端口要說(shuō)明信號(hào)的位寬?因?yàn)槿绻徽f(shuō)明信號(hào)的位寬可能會(huì)在信號(hào)

18、發(fā)生改變時(shí)發(fā)生錯(cuò)誤, 不容易看出接收到的信號(hào)的數(shù)據(jù)寬度,就很難進(jìn)行數(shù)據(jù)的處理。4.能否說(shuō)模塊相當(dāng)于電路圖中的功能模塊,端口相當(dāng)于功能模塊的引腳?可以那樣說(shuō),每個(gè)模塊都有特定的功能,而功能的實(shí)現(xiàn)就必須依靠具體的電路得以實(shí)現(xiàn),端口是信號(hào)傳遞的通道,可以說(shuō)是功能模塊的引腳。5.模塊中的功能描述可以由哪幾類(lèi)語(yǔ)句或語(yǔ)句塊組成?它們出現(xiàn)的順序會(huì)不會(huì)影響功能的描述?用 assign 語(yǔ)句聲明,用實(shí)例元件,用 always 塊。它們出現(xiàn)的順序不會(huì)影響到功能的描述。6.這幾類(lèi)描述中哪一種直接與電路結(jié)構(gòu)有關(guān)?用實(shí)例元件直接與電路結(jié)構(gòu)有關(guān)。7.最基本的 verilog 變量有哪幾種類(lèi)型?wire 型、reg 型、m

19、emory 型8.reg 型和 wire 型變量的差別是什么?reg 型變量是寄存器型變量,wire 型變量是連線型變量。兩者根本性的差別在于reg 型變量有個(gè)寄存器來(lái)存放變量,這個(gè)值只有變量發(fā)生改變時(shí)才會(huì)改變否則保證原來(lái)的值不變,wire 型變量的值不是確定的值。9.由連續(xù)賦值語(yǔ)句(assign)賦值的變量能否是 reg 類(lèi)型的?可以是 reg 類(lèi)型的變量。10.在 always 模塊中被賦值的變量能否是 wire 類(lèi)型的?如果不能是 wire 類(lèi)型, 那么必須是什么類(lèi)型的?它們表示的一定是實(shí)際的寄存器嗎?不能。必須是 reg 類(lèi)型的變量,它們表示不一定是實(shí)際的寄存器。11.參數(shù)類(lèi)型的變量有

20、什么用處?參數(shù)類(lèi)型的變量的好處是可以提高程序的可讀性和可維護(hù)性。12.verilog 語(yǔ)法規(guī)定的參數(shù)傳遞和重新定義功能有什么直接的應(yīng)用價(jià)值?verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室7可以用于定義延遲時(shí)間和變量寬度。13.邏輯比較運(yùn)算符小于等于“=”和非阻塞賦值大于等于“=”的表示是完全一樣的,為什么 verilog 在語(yǔ)句解釋和編譯時(shí)不會(huì)搞錯(cuò)?因?yàn)檫壿嫳容^時(shí)“=”兩邊是兩個(gè)操作數(shù),此時(shí)“=”是雙目運(yùn)算符,而在非阻塞賦值時(shí)“=”的右邊是操作數(shù),此時(shí)“=”單目運(yùn)算符。14.是否可以說(shuō)實(shí)例引用的描述實(shí)際上就是嚴(yán)格意義上的電路結(jié)構(gòu)描述?不能實(shí)例引用的描述是在門(mén)級(jí)電路上加以描述的, 和

21、嚴(yán)格意義上的電路結(jié)構(gòu)描述還是有點(diǎn)差距的。verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室8第 4 章 運(yùn)算符、賦值語(yǔ)句和結(jié)構(gòu)說(shuō)明語(yǔ)句1.邏輯運(yùn)算符與按位邏輯運(yùn)算符有什么不同,它們各在什么場(chǎng)合使用?用邏輯運(yùn)算符運(yùn)算時(shí)是兩個(gè)操作數(shù)進(jìn)行邏輯運(yùn)算, 而按位邏輯運(yùn)算符運(yùn)算時(shí)是兩個(gè)操作數(shù)對(duì)應(yīng)的每一位進(jìn)行邏輯運(yùn)算。邏輯運(yùn)算符多用于條件的判斷,按位邏輯運(yùn)算符用于信號(hào)的運(yùn)算和檢測(cè)。2.指出兩種邏輯等式運(yùn)算符的不同點(diǎn),解釋書(shū)上的真值表。兩種邏輯運(yùn)算符有很大的區(qū)別。 ”=“要求兩個(gè)比較數(shù)完全一樣,無(wú)論高阻還是未知,只要每位完全相同即可;而“=”只有在兩個(gè)操作數(shù)每位都已知即 1或 0,在這種前提下兩個(gè)操作數(shù)

22、每位相同結(jié)果才為真,如果不是在這個(gè)前提那么其結(jié)果始終為 x;3.拼接符的作用是什么?為什么說(shuō)合理地使用拼接符可以提高程序的可讀性和可維護(hù)性?拼接符表示的操作其物理意義是什么?拼接符的作用是把兩個(gè)或多個(gè)信號(hào)的某些位拼接起來(lái)進(jìn)行運(yùn)算操作。 因?yàn)榻柚唇臃梢杂靡粋€(gè)符號(hào)名來(lái)表示由多位信號(hào)組成的復(fù)雜信號(hào)。 其物理意義是將多個(gè)信號(hào)結(jié)合成一個(gè)信號(hào)。4.如果都不帶時(shí)間延遲,阻塞和非阻塞賦值有什么不同?舉例說(shuō)明它們的不同點(diǎn)?阻塞和非阻塞賦值的區(qū)別在阻塞是順序執(zhí)行而非阻塞是并行執(zhí)行。以下面的語(yǔ)句舉例非阻塞賦值always(posedge clk)beginb=a;c=b;end阻塞賦值always(posedg

23、e clk)beginb=a;c=b;end兩種不同的賦值方式結(jié)果是不同的, 非阻塞賦值 b=a;cend_wave;endfork#50r=h35;#100r=he2;#150r=h00;#200r=hf7;#250-end_wave;join上面兩個(gè)塊執(zhí)行起來(lái)效果是完全一樣的,第一個(gè)模塊是按順序執(zhí)行,而第二個(gè)模塊是每個(gè)語(yǔ)句同時(shí)執(zhí)行的。6.如果在順序塊中,前面有一條語(yǔ)句是無(wú)限循環(huán),下面的語(yǔ)句能否進(jìn)行?下面的語(yǔ)句不能執(zhí)行。7.如果在并行塊中,發(fā)生上述情況,會(huì)如何呢?下面的語(yǔ)句能夠執(zhí)行。verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室10第 5 章 條件語(yǔ)句、循環(huán)語(yǔ)句、塊語(yǔ)句與生成語(yǔ)句

24、1.為什么建議在編寫(xiě)verilog 模塊程序時(shí), 如果用到if語(yǔ)句建議大家把配套的else情況也考慮在內(nèi)?因?yàn)槿绻麤](méi)有配套的 else 語(yǔ)句,在不滿(mǎn)足 if 條件語(yǔ)句時(shí),將會(huì)保持原來(lái)的狀態(tài)不變,從而在綜合時(shí)會(huì)產(chǎn)生一個(gè)鎖存器,而這是設(shè)計(jì)不想要的結(jié)果。2.用 if 語(yǔ)句;elseif 語(yǔ)句;elseif 語(yǔ)句;.else 語(yǔ)句和用 case endcase 表示不同條件下的多個(gè)分支是完全相同的,還是有什么不同?不是完全相同。 (1)與 case 語(yǔ)句中的控制表達(dá)式和多分支表達(dá)式這種比較相比,if_else_if 結(jié)構(gòu)中條件表達(dá)式更為直觀些。 (2) 對(duì)于那些分支表達(dá)式中存在不定值x 和高阻值 z

25、的位時(shí) case 語(yǔ)句提供了處理這種情況的手段。3.如果 case 語(yǔ)句的分支條件沒(méi)有覆蓋所有可能的組合條件,定義了 default 項(xiàng)和沒(méi)有定義 default 項(xiàng)有什么不同?定義了 default 項(xiàng)則會(huì)使電路描述的更加的清楚,綜合的時(shí)候不會(huì)產(chǎn)生不想要的結(jié)果,沒(méi)用定義 default 則會(huì)使在綜合是產(chǎn)生一個(gè)鎖存器。4.仔細(xì)闡釋 case、casex 和 casez 之間的不同。case、casex、casez 對(duì)應(yīng)的真值表如上,可以看出 case 無(wú)論是 0,1,還是 x 高阻都能夠比較,而 casez 不將高阻進(jìn)行比較,在其它情況都進(jìn)行比較;而 casex 不將高阻和 x 進(jìn)行比較,在其

26、它情況進(jìn)行比較。5.forever 語(yǔ)句如果運(yùn)行了,在它下面的語(yǔ)句能否運(yùn)行?它位于 begin end 和位于fork join 塊有什么不同?不能運(yùn)行。位于 begin end,由于 begin and 是順序塊,所以只要執(zhí)行到 forever則將不能運(yùn)行下面的程序;而位于 fork join,它是并行塊,執(zhí)行了 forever 還是能夠執(zhí)行 forever 下面的語(yǔ)句。6.forever 語(yǔ)句 repeat 語(yǔ)句能否獨(dú)立于過(guò)程塊而存在,即能否不在 initial 或 always塊中使用?forever 不能獨(dú)立于過(guò)程塊中,而 repeat 能夠獨(dú)立于過(guò)程塊中。verilog 數(shù)字系統(tǒng)設(shè)計(jì)

27、教程思考題答案天之藍(lán)電子工作室117.用 for 循環(huán)為存儲(chǔ)器許多單元賦值時(shí)是否需要時(shí)間?為什么如果不定義時(shí)間延遲,它可以不需要時(shí)間就把不管多大的儲(chǔ)存器賦值完畢?如果定義了時(shí)間延遲則需要時(shí)間,否則不需要時(shí)間。因?yàn)檠h(huán)的邊界是確定的,那么在綜合時(shí)該循環(huán)語(yǔ)句被認(rèn)為是重復(fù)的硬件結(jié)構(gòu)。8.for 循環(huán)是否可以表示可以綜合的組合邏輯?請(qǐng)舉例說(shuō)明??梢员硎揪C合的組合邏輯。例如用 for 循環(huán)實(shí)現(xiàn)的乘法器9.在編寫(xiě)測(cè)試模塊時(shí)用什么方法可以使 for 循環(huán)按照時(shí)鐘的節(jié)拍運(yùn)行?請(qǐng)比較圖5.3 所示程序段??梢栽?for 循環(huán)的最后嵌套時(shí)鐘節(jié)拍運(yùn)行的信號(hào)。第一種程序不能按照時(shí)鐘節(jié)拍來(lái)對(duì) memi賦值,而第二種程序

28、可以。10.聲明一個(gè)為 oscillate 的寄存器變量并將它初始化為 0,使其每 30 個(gè)時(shí)間單位進(jìn)行一次取反操作,不要使用 always 語(yǔ)句(提示:使用 forever 循環(huán))。reg oscillate;initialbeginoscillate=0;forever#30 oscillate=!oscillate;end11.設(shè)計(jì)一個(gè)周期為 40 個(gè)時(shí)鐘單位的時(shí)鐘循環(huán),其占空比為 25%,使用 always和 initial 塊進(jìn)行設(shè)計(jì),將其在仿真 0 時(shí)刻的值初始化為 0。initialbeginclock=0;alwaysbeginverilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電

29、子工作室12#30 clock=0;#10 clock=1;endend12.給定下面含有阻塞過(guò)程賦值語(yǔ)句的 initial 塊, 每個(gè)語(yǔ)句在什么仿真時(shí)刻開(kāi)始執(zhí)行?a,b,c 和 d 在仿真過(guò)程中的中間值和仿真結(jié)束時(shí)的值是什么?initialbegin1a=1b0;2b=#10 1b0;3c=#51b0;4d=#20a,b,c;end第一條語(yǔ)句在仿真開(kāi)始時(shí)就執(zhí)行,第二句在仿真 10 個(gè)時(shí)鐘單元后執(zhí)行,第三句在仿真 15 個(gè)時(shí)鐘信號(hào)單元后執(zhí)行,第四句在仿真 35 個(gè)時(shí)鐘單元后執(zhí)行。在中間仿真過(guò)程中a=0,b,c,d為不確定值結(jié)束時(shí)abcd的值是a=1b0,b=10,c=10,d=3b000。13

30、.在第 12 題中,如果 initial 塊中包含的是非阻塞過(guò)程賦值語(yǔ)句,那么各個(gè)問(wèn)題的答案是什么?如果是非阻塞過(guò)程賦值則答案是;第一條語(yǔ)句在仿真開(kāi)始時(shí)就執(zhí)行,第二句在仿真 10 個(gè)時(shí)鐘單元后執(zhí)行,第三句在仿真 5 個(gè)時(shí)鐘信號(hào)單元后執(zhí)行,第四句在仿真 20 個(gè)時(shí)鐘單元后執(zhí)行。在中間仿真過(guò)程中 a=0,b,c,d 為不確定值結(jié)束時(shí) abcd的值是 a=1b0,b=10,c=10,d=3b000。14.下面例子中 d 的最終值是什么?initialbeginb=1b1;c=1b0;#10b=1b0;endinitialbegind=#25(b|c);endd 的最終值 0。verilog 數(shù)字系統(tǒng)

31、設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室1315 使用帶同步清零端的 d 觸發(fā)器(清零高電平有效,在時(shí)鐘下降沿執(zhí)行清零操作)設(shè)計(jì)下一個(gè)下降沿觸發(fā)的 d 觸發(fā)器,只能使用行為語(yǔ)句(提示:d 觸發(fā)器的輸出 q 應(yīng)當(dāng)聲明為寄存器變量)。 使用設(shè)計(jì)出的 d 觸發(fā)器輸出一個(gè)周期為 10 個(gè)時(shí)間單位的時(shí)鐘信號(hào)。module d_ff(clr,clk,d,q);input clr,clk,d;output q;reg q;always (posedge clr or necedge clk)beginif(clr)q=0;else#10 q=d;endendmodule16.使用帶有異步清零端的 d 觸發(fā)器設(shè)計(jì)第

32、 15 題要求的 d 觸發(fā)器(在清零端變?yōu)楦唠娖胶罅⒓磮?zhí)行清零操作,無(wú)須等待下一個(gè)時(shí)鐘下降沿),并對(duì)這個(gè) d 觸發(fā)器進(jìn)行測(cè)試。module d_ff(clr,clk,d,q);input clr,clk,d;output q;reg q;always (posedge clr )beginq=0;endalways (necedge clk)begin#10 q=d;endendmodule17.使用wait語(yǔ)句設(shè)計(jì)一個(gè)電平敏感的鎖存器, 該鎖存器的輸入信號(hào)為d和clock,輸出為 q,其功能是當(dāng) clock=1 時(shí) q=d;module l_ff(d,clock,q);inputd,clk;

33、h t t p : / /b l o g . s i n a . c o m . c n / s /b l o g _6 0 8 a 53150 10 0 r hk s . h t m lverilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室14outputq;regq;alwaysbeginwait(clock=1)q=d;endendmodule18.使用條件語(yǔ)句設(shè)計(jì)例 5.18中的四選一多路選擇器,外部端口必須保持不變。module mux4_to_1(out,i0,i1,i2,i3,s1,s0);output out;input i0,i1,i2,i3;input s1,s0;re

34、g out;always (s1 or s0 or i0 or i1 or i2 or i3)beginif(s1=0&s0=0)out=i0;else if(s1=0&s0=1)out=i1;else if(s1=1&s0=0)out=i2;else if(s1=1&s0=1)out=i3;elseout=1bx;endendmodule19.使用 case 語(yǔ)句設(shè)計(jì)八功能的算術(shù)運(yùn)算單元(alu),其輸入信號(hào) a 和 b 均為 4 位,還有功能選擇信號(hào) select 為 3 位,輸出信號(hào)為 out(5 位),算術(shù)運(yùn)算單元 alu 所執(zhí)行的操作與 select

35、信號(hào)有關(guān), 具體關(guān)系如 5.1 所列(忽略輸出結(jié)果中的上溢和下溢的位)。另外的條件語(yǔ)句沒(méi)寫(xiě)的話(huà)會(huì)自動(dòng)生成一個(gè)鎖存器。即為當(dāng)c l o c k 不等于1的時(shí)候,q 值不發(fā)生變化。o u t 選擇的是一個(gè)寄存器變量,是因?yàn)閛 u t 是隨著 里面的語(yǔ)句變化而變化的,所以是寄存器變量。多路選擇器的電路圖?數(shù)電p 2 0 7 ,用寄存器怎么寫(xiě)?? ?verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室15modulealu(a,b,select,out);input3:0a,b;input2:0select;output4:0 out;reg4:0 out;always (select)begi

36、ncase(select)3b000: out=a;3b001: out=a+b;3b010: out=a-b;3b011: out=a/b;3b100: out=a%b;3b101: out=a1;3b111: out=ab;default:out=5bx;endcaseendendmoduleverilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室1620.使用 while 循環(huán)設(shè)計(jì)一個(gè)時(shí)鐘信號(hào)發(fā)生器。其時(shí)鐘信號(hào)的初值為 0,周期為 10個(gè)時(shí)間單元。initialbeginclk=0;while(1)#10 clk=!clk;end21.使用 for 循環(huán)對(duì)一個(gè)長(zhǎng)度為 1024(地址從

37、01023)、位寬為 4 的寄存器類(lèi)型數(shù)組 cache_var 進(jìn)行初始化,把所有單元都設(shè)置為 0.beginreg3:0cache_var1023:0;intiger i;for(i=0;i1024;i+)cache_vari=0;end22.使用 forever 循環(huán)設(shè)計(jì)一個(gè)時(shí)鐘信號(hào),周期為 10,占空比為 40%,初值為 0.initialbeginclk=0;foreverbegin#6 clk=0;#4 clk=1;endend23.使用 repeat 將語(yǔ)句 a=a+1 延遲 20 個(gè)時(shí)鐘上升沿之后再執(zhí)行。parameter delay=20;intigeri;reg a;begi

38、nrepeat(delay)過(guò)多少個(gè)時(shí)鐘不是用i 來(lái)進(jìn)行循環(huán)的,直接#就可以了!verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室17always (posedge clk)begini+;if(i=20)a=a+1;endend24.下面是一個(gè)內(nèi)嵌順序塊和并行塊的塊語(yǔ)句。該塊的執(zhí)行結(jié)束時(shí)間是多少?事件的順序是怎樣的?每條語(yǔ)句的仿真結(jié)束時(shí)間是多少?initialbegin/ 順序執(zhí)行x=1b0;#5y=1b1;.5fork/并行執(zhí)行#20 a=x;.25#15 b=y;.20join#40 x=1b1;/ 順序執(zhí)行.65fork/并行執(zhí)行#10 p=x;.75begin/ 順序執(zhí)行#1

39、0 a=y;.75#30 b=x;.105end#5 m=y;.70joinend該塊的執(zhí)行結(jié)束時(shí)間是 5+20+40+40=105 個(gè)時(shí)鐘單位每條語(yǔ)句執(zhí)行的時(shí)間如上圖所標(biāo)25.用 forever 循環(huán)語(yǔ)句,命名塊(named block)和禁用(disabling of) 命名塊來(lái)設(shè)計(jì)一個(gè)八位計(jì)數(shù)器。這個(gè)計(jì)數(shù)器從 count=5 開(kāi)始計(jì)數(shù),到 count=67 結(jié)束計(jì)數(shù)。每個(gè)時(shí)鐘正跳變計(jì)數(shù)器加一,時(shí)鐘的周期為 10,計(jì)數(shù)器的設(shè)計(jì)只用到了一次循環(huán),然后就被禁用了(提示:使用 disable 語(yǔ)句)。verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室18reg7:0count;initi

40、albegincount =5;endbegin:mame blockforeverbegin: disabling ofalways (posedge clk)beginif(count67)#10 count=count+1;disable: disabling of;endendendverilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室19第 6 章 結(jié)構(gòu)語(yǔ)句、系統(tǒng)任務(wù)、函數(shù)語(yǔ)句和顯示系統(tǒng)任務(wù)1.怎樣理解 initial 語(yǔ)句只執(zhí)行一次的概念?在仿真開(kāi)始時(shí),initial 語(yǔ)句只執(zhí)行一次,但 initial 語(yǔ)句里面的語(yǔ)句可能不執(zhí)行一次,因?yàn)槿绻?while 循環(huán),雖然 init

41、ial 語(yǔ)句是執(zhí)行一次,但只要進(jìn)了 while 循環(huán),則會(huì)執(zhí)行到仿真結(jié)束。2.在 initial 語(yǔ)句引導(dǎo)的過(guò)程中是否可以有循環(huán)語(yǔ)句?如果可以, 是否與思考題 1,互相矛盾?可以,并不互相矛盾。initial 語(yǔ)句確實(shí)是執(zhí)行了一次,但并不意味著 initial 語(yǔ)句過(guò)程中就不能是循環(huán)語(yǔ)句,兩者并不矛盾。3.怎樣理解由 always 語(yǔ)句引導(dǎo)的過(guò)程塊是不斷活動(dòng)的?always 語(yǔ)句的過(guò)程塊是不斷活動(dòng)的,在仿真過(guò)程中 always 塊始終在循環(huán)的活動(dòng)著,檢查 always 語(yǔ)句后面的信號(hào)是否發(fā)生相應(yīng)改變,這是 always 活動(dòng)的實(shí)質(zhì),如果 always 語(yǔ)句后面沒(méi)有檢查的信號(hào)則將會(huì)進(jìn)入一個(gè)循環(huán),

42、將會(huì)使仿真器鎖死。4.不斷活動(dòng)與不斷執(zhí)行有什么不同?不斷活動(dòng)是 always 語(yǔ)句不斷活動(dòng)檢查是否滿(mǎn)足條件(如某個(gè)信號(hào)發(fā)生改變) ,不斷執(zhí)行時(shí) always 語(yǔ)句引導(dǎo)的過(guò)程中的語(yǔ)句不斷的執(zhí)行著。5.怎樣理解沿觸發(fā)和電平觸發(fā)的不同?沿觸發(fā)是在某個(gè)信號(hào)在上升沿或下降沿到來(lái)時(shí),觸發(fā)執(zhí)行過(guò)程塊。電平觸發(fā)是在某個(gè)信號(hào)發(fā)生改變時(shí)就會(huì)觸發(fā)執(zhí)行過(guò)程塊。6.是不是可以說(shuō)沿觸發(fā)是有間隔的,在一定的時(shí)間區(qū)間里只需要注意有限的點(diǎn),而電平觸發(fā)卻需要注意無(wú)窮多個(gè)點(diǎn)?不是。沿觸發(fā)是信號(hào)的上升沿或下降沿進(jìn)行觸發(fā),而電平觸發(fā)是在某個(gè)信號(hào)發(fā)生改變時(shí)進(jìn)行觸發(fā),并不需要注意無(wú)窮多個(gè)點(diǎn)。7.沿觸發(fā)的 always 塊和電平觸發(fā)的 al

43、ways 塊各表示什么類(lèi)型的邏輯電路的行為?為什么?沿觸發(fā)的 always 塊常表示時(shí)序邏輯電路,因?yàn)槠浜蜁r(shí)序有很關(guān)。電平觸發(fā)的always 塊常表示組合邏輯電路,因?yàn)槠浜椭缓碗娖接嘘P(guān)。8.簡(jiǎn)單敘述任務(wù)和函數(shù)的不同點(diǎn)(1)函數(shù)只能與主模塊共用同一個(gè)仿真時(shí)間單元,而任務(wù)可以定義自己的仿真時(shí)間單位;(2)函數(shù)不能啟動(dòng)任務(wù),而任務(wù)能啟動(dòng)其他任務(wù)和函數(shù);(3)函數(shù)至少要有一個(gè)輸入變量,而任務(wù)可以沒(méi)有或有多個(gè)任何類(lèi)型的變量;(4)函數(shù)返回一個(gè)值,而任務(wù)則不返回值。9.簡(jiǎn)單敘述$display、$write 和$strobe 的不同點(diǎn)。$display 自動(dòng)地在輸出后進(jìn)行換行,$write 則不進(jìn)行自動(dòng)換

44、行,其它都非常相似。verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室20如果許多其他語(yǔ)句與$display 任務(wù)在同一個(gè)時(shí)間單位執(zhí)行,那么這些語(yǔ)句與$display 任務(wù)的執(zhí)行順序是不確定的。如果使用$strobe,該語(yǔ)句總是在同時(shí)刻的其他賦值語(yǔ)句執(zhí)行完成之后執(zhí)行。10.簡(jiǎn)單敘述 verilog1364-2001 版語(yǔ)法規(guī)定的電平敏感列表的簡(jiǎn)化寫(xiě)法。關(guān)鍵詞“or”也可以使用“, ”來(lái)代替。11.如何在 verilog 測(cè)試模塊中,利用文件的讀寫(xiě)產(chǎn)生預(yù)定格式的信號(hào),并記錄有測(cè)試價(jià)值的信號(hào)?verilog 提供了系統(tǒng)任務(wù)來(lái)選擇要轉(zhuǎn)儲(chǔ)的模塊實(shí)例或模塊實(shí)例信號(hào)(dumpvars) ,選擇 v

45、cd 文件的名稱(chēng)($dumpfile),選擇轉(zhuǎn)儲(chǔ)過(guò)程的起點(diǎn)和終點(diǎn)($dumppon,$dumpoff),選擇生成檢測(cè)點(diǎn)(sdunpall),其使用方法如下initial$dumpfile(myfile.dmp);/仿真信息轉(zhuǎn)儲(chǔ)到 myfile.dmp 文件initial$dumpvars;/沒(méi)有指定變量范圍,把設(shè)計(jì)中全部信號(hào)都轉(zhuǎn)儲(chǔ)initail$dunpvars(1,top);/轉(zhuǎn)儲(chǔ)模塊實(shí)例投票中的信號(hào)/數(shù) 1 表示層次的等級(jí)只轉(zhuǎn)儲(chǔ) top 下第一層信號(hào)/即轉(zhuǎn)儲(chǔ) top 模塊中的變量,而不轉(zhuǎn)儲(chǔ)在 top 中引用initial$dumpvars(2,top.m1);/轉(zhuǎn)儲(chǔ) top.m1 模塊下兩

46、層的信號(hào)initial$dumpvars(0,top.m1);/數(shù) 0 表示轉(zhuǎn)儲(chǔ) top.m1 模塊下面各個(gè)層的所有信號(hào)initialbegin$dumpon;/啟動(dòng)轉(zhuǎn)儲(chǔ)過(guò)程#100000 $dunpoff;/過(guò)了 100000 個(gè)仿真單位后,停止轉(zhuǎn)儲(chǔ)過(guò)程endinitial/生成一個(gè)檢查點(diǎn),轉(zhuǎn)儲(chǔ)所有 vcd 變量的現(xiàn)行值$dumpall;verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室21第 7 章 調(diào)試用系統(tǒng)任務(wù)和常用編譯預(yù)處理語(yǔ)句1.為什么在多個(gè)模塊調(diào)試的情況下$monitor 需要配合$monitoron 和$monitoroff 來(lái)工作?$monitoron 和$monit

47、oroff 任務(wù)的作用是通過(guò)打開(kāi)和關(guān)閉監(jiān)控標(biāo)志來(lái)控制監(jiān)控任務(wù)$monitor的啟動(dòng)和停止, 這樣使得程序員可以很容易地控制$monitor何時(shí)發(fā)生。$monitoron 則用于打開(kāi)監(jiān)控標(biāo)志,啟動(dòng)監(jiān)控任務(wù)$monitor。通常在通過(guò)調(diào)用$monitoron 來(lái)啟動(dòng)$monitor 時(shí)不管$monitor 參數(shù)列表中的值是否發(fā)生改變,總是立刻輸出顯示當(dāng)前時(shí)刻參數(shù)列表中的值, 這用于在監(jiān)控的初始時(shí)刻設(shè)定初始比較值。在默認(rèn)情況下,控制標(biāo)志在仿真的起始時(shí)刻就已經(jīng)打開(kāi)了。在多模式調(diào)試的情況下,許多模塊中都調(diào)用了$monitor,因?yàn)槿魏螘r(shí)刻只能用一個(gè)$monitor 起作用,因此需配合$monitoron

48、 與$monitoroff 使用,把需要監(jiān)視的模塊用$monitor 打開(kāi),在監(jiān)視完畢后及時(shí)用$monitoroff 關(guān)閉,以便把$monitor 讓給其他模塊使用。2.請(qǐng)用$random 配合求模運(yùn)算編寫(xiě):(1)用于測(cè)試的跳變沿抖動(dòng)為周期 1/10 的時(shí)鐘波形。(2)隨機(jī)出現(xiàn)的脈寬隨機(jī)的窄脈寬。module random_pulse(dout);output9:0dout;reg9:0 dout;integer delay;initialbegin#10 dout=0;for(k=0;k100;k=k+1)begindelay=$random%10;#delay dout=1;#delay

49、dout=0;endendendmodule3.verilog 的編譯預(yù)處理與 c 語(yǔ)言的編譯預(yù)處理有什么不同?verilog 的編譯處理,在編譯處理命令之前要以開(kāi)頭。4.請(qǐng)仔細(xì)闡釋timescale 編譯預(yù)處理的作用?timescale 命令用來(lái)說(shuō)明跟在該命令后的模塊的時(shí)間單位和時(shí)間精度。使用timescale 命令可以在同一個(gè)設(shè)計(jì)里包含采用了不同的時(shí)間單位的模塊。verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室225.不同timescale 定義的多模塊仿真測(cè)試時(shí)需要注意什么?如果在同一個(gè)設(shè)計(jì)里,多個(gè)模塊中用到的時(shí)間單位和時(shí)間精度單位不同, 需要用到以下的時(shí)間結(jié)構(gòu):(1)用tim

50、escale 命令來(lái)聲明本模塊中所用到的時(shí)間單位和時(shí)間精度;(2)用系統(tǒng)任務(wù)$printtimescale 來(lái)輸出顯示一個(gè)模塊的時(shí)間單位和時(shí)間精度;(3)用系統(tǒng)函數(shù)$time和$realtime及%t格式聲明來(lái)輸出顯示eda工具記錄的時(shí)間信息。6.為什么說(shuō)系統(tǒng)任務(wù)$readmen 可以用來(lái)產(chǎn)生用于算法驗(yàn)證的極其復(fù)雜的測(cè)試用數(shù)據(jù)流?在 verilog hdl 程序中有兩個(gè)系統(tǒng)任務(wù)$readmemb 和$readmemh, 并用來(lái)從文件中讀取數(shù)據(jù)到存儲(chǔ)器中,這兩個(gè)系統(tǒng)任務(wù)可以在仿真的任何時(shí)刻被執(zhí)行使用。復(fù)雜數(shù)據(jù)可以用 c 語(yǔ)言產(chǎn)生,存在文件中,用$readmem 取出存入存儲(chǔ)器,在按節(jié)拍輸出,這在

51、驗(yàn)證算法邏輯電路時(shí)特別有用。7.為什么熟練地使用條件編譯命令可以使源代碼有更大的靈活性,可以使用于不同的實(shí)現(xiàn)對(duì)象, 如不同工藝的 asic 或速度規(guī)模不同的 fbga 或 cpld,從而為軟核的商品化創(chuàng)造條件?合理的使用條件編譯和條件執(zhí)行預(yù)處理可以使測(cè)試程序適應(yīng)不同的編譯環(huán)境,也可以把不同的測(cè)試過(guò)程編寫(xiě)到一個(gè)統(tǒng)一的測(cè)試程序中去,可以簡(jiǎn)化測(cè)試的過(guò)程,對(duì)于復(fù)雜設(shè)計(jì)的驗(yàn)證模塊的編寫(xiě)很有實(shí)用價(jià)值。verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室23第二部分設(shè)計(jì)和驗(yàn)證部分第 9 章 verilog hdl 模型的不同抽象級(jí)別1.verilog hdl 的模型共有哪幾種類(lèi)型(級(jí)別)?有 5 種類(lèi)

52、型,系統(tǒng)級(jí),算法級(jí),rtl 級(jí),門(mén)級(jí),開(kāi)關(guān)級(jí)。2.每種類(lèi)型的 verilog hdl 各有什么特點(diǎn)?主要用于什么場(chǎng)合?系統(tǒng)級(jí),算法級(jí)和 rtl 級(jí)是屬于行為級(jí),門(mén)級(jí)是屬于結(jié)構(gòu)級(jí)的。系統(tǒng)級(jí):用高級(jí)語(yǔ)言結(jié)構(gòu)實(shí)現(xiàn)設(shè)計(jì)模塊的外部性能的模型。算法級(jí):用高級(jí)語(yǔ)言結(jié)構(gòu)實(shí)現(xiàn)設(shè)計(jì)算法的模型。rtl 級(jí):描述數(shù)據(jù)在寄存器之間流動(dòng)和如何處理這些數(shù)據(jù)的模型。門(mén)級(jí):描述邏輯門(mén)以及邏輯門(mén)之間的連接的模型。開(kāi)關(guān)級(jí):描述器件中三極管和存儲(chǔ)節(jié)點(diǎn)以及它們之間連接的模型。3.不可綜合成為電路的 verilog 模塊有什么好處?描述比較直觀4.為什么說(shuō) verilog hdl 的語(yǔ)言結(jié)構(gòu)可以支持構(gòu)成任意復(fù)雜的數(shù)字邏輯系統(tǒng)?通過(guò) ve

53、rilog 語(yǔ)言中的模塊實(shí)例引用,可以構(gòu)成任何復(fù)雜結(jié)構(gòu)的電路,這種以結(jié)構(gòu)方式所建成的 verilog 模型不僅是可以以仿真的,而且也是可以綜合的,其本質(zhì)是表示電路的具體結(jié)構(gòu),也可以說(shuō)這種 verilog 文件也是一種結(jié)構(gòu)網(wǎng)表。5.什么是綜合?是否任何符合語(yǔ)法的 verilog hdl 程序都可以綜合?綜合是通過(guò)綜合器把hdl程序轉(zhuǎn)化成標(biāo)準(zhǔn)的門(mén)級(jí)結(jié)構(gòu)網(wǎng)表。 不是任何復(fù)合語(yǔ)法的veriloghdl 程序都可以綜合。6.綜合生成的是不是真實(shí)的電路?若不是,還需要哪些步驟才能真正成為具體的電路?不是,真實(shí)的電路還需要利用 asic 和 fpga 制造廠商的布局布線工具,根據(jù)綜合生成的標(biāo)準(zhǔn)的門(mén)級(jí)結(jié)構(gòu)網(wǎng)來(lái)

54、產(chǎn)生。7.為什么綜合以后還可以用 verilog 進(jìn)行仿真?通過(guò)綜合以后產(chǎn)生的是門(mén)級(jí)結(jié)構(gòu),而門(mén)級(jí)結(jié)構(gòu)再經(jīng)過(guò) verilog 仿真測(cè)試驗(yàn)證其正確性8.同一物理電路的行為模塊仿真驗(yàn)證與結(jié)構(gòu)模塊的仿真驗(yàn)證在意義上有什么不同?行為模塊的仿真首先要轉(zhuǎn)換為結(jié)構(gòu)模塊再進(jìn)行仿真驗(yàn)證,結(jié)構(gòu)模塊是直接進(jìn)行仿真的。9.為什么說(shuō)前端邏輯設(shè)計(jì)必須包含結(jié)構(gòu)仿真驗(yàn)證,只有行為驗(yàn)證是遠(yuǎn)遠(yuǎn)不夠的?只有行為仿真遠(yuǎn)遠(yuǎn)不夠的,因?yàn)?verilog hdl 各種建模的方法,發(fā)揮各自在不同類(lèi)型電路描述中的長(zhǎng)處, 而且要在層次管理工具的協(xié)調(diào)下把各個(gè)既獨(dú)立又相互聯(lián)系的模塊組和, 才能有效的設(shè)計(jì)出高質(zhì)量的數(shù)字電路來(lái)。10.什么是 top-do

55、wn 設(shè)計(jì)方法?通過(guò)什么手段來(lái)驗(yàn)證系統(tǒng)分塊的合理性。通過(guò)行為建模把一個(gè)復(fù)雜的系統(tǒng)分解成可操作的若干個(gè)模塊,每個(gè)模塊之間的邏輯關(guān)系通過(guò)行為建模的仿真加以驗(yàn)證。11.編寫(xiě)兩路每路為 1 位信號(hào)的二選一多路器的行為模塊,再編寫(xiě)它的結(jié)構(gòu)模塊,然后編寫(xiě)測(cè)試模塊分別對(duì)這兩個(gè)模塊進(jìn)行測(cè)試,觀測(cè)仿真運(yùn)行的結(jié)果,編寫(xiě)實(shí)驗(yàn)報(bào)告。行為模塊module sel2_1(a,b,s,f);input a,b,s;verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室24output f;reg f;always (a,b,s)beginif(s=0)f=a;elsef=b;endendmodule結(jié)構(gòu)模塊module

56、 sel2_1(a,b,s,f);input a,b,s;output f;wire s_not,and1,and2;not u1(s_not,s);and u2(and1,b,s),u3(and2,a,s_not);oru4(f,and1,and2);endmodule12.如果讓你編寫(xiě)兩路每路為 8 位信號(hào)的二選一多路器的結(jié)構(gòu)模塊是不是感覺(jué)麻煩?編寫(xiě)行為模塊是不是很方便?是,編寫(xiě)行為模塊會(huì)很方便,只需要將輸入輸出的一位改為八位。13.用什么方法可以把行為模塊轉(zhuǎn)換為結(jié)構(gòu)模塊?用你掌握的綜合器,把 10 題和 11 題從行為模塊轉(zhuǎn)換為 verilog 網(wǎng)表,仔細(xì)閱讀自動(dòng)生成的網(wǎng)表文件。用 ed

57、a 綜合工具可以把行為模塊轉(zhuǎn)換為結(jié)構(gòu)模塊。14.編寫(xiě)測(cè)試模塊分別對(duì)行為的和自動(dòng)生成的 verilog 網(wǎng)表進(jìn)行測(cè)試,比較仿真結(jié)果細(xì)微的不同,分析為什么不同。verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室25verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室26第 10 章 如何編寫(xiě)和驗(yàn)證簡(jiǎn)單的純組合邏輯1.寫(xiě)出八位加法器和八位乘法器的邏輯表達(dá)式,比較用超前進(jìn)位邏輯和不用超前進(jìn)位邏輯的延遲。八位加法器:module add8(a,b,sum,cout);input7:0 a,b;output7:0 sum;output cout;assign count,sum=a+b;en

58、dmodule八位乘法器module add8(a,b,m);input7:0 a,b;output15:0 m;assign m=a*b;endmodule用超前進(jìn)位邏輯可以減少由于逐位進(jìn)位信號(hào)的傳遞所造成的延時(shí)。2.為什么用算法操作符號(hào)表示的加法器和乘法器能通過(guò)綜合器轉(zhuǎn)變?yōu)檫壿嬰娐??除了用算法操作符的表達(dá)式實(shí)現(xiàn)加法器和乘法器外, 是否可以直接引用可配置的參數(shù)化實(shí)例來(lái)實(shí)現(xiàn)算術(shù)操作電路?因?yàn)閹?kù)中已經(jīng)存在著可配置的參數(shù)化加法器乘法器的電路結(jié)構(gòu)和相應(yīng)行為模型??梢灾苯右每膳渲玫膮?shù)化實(shí)例來(lái)實(shí)現(xiàn)算術(shù)操作電路。3.提高復(fù)雜運(yùn)算組合邏輯運(yùn)算速度有哪些辦法?采用流水線的設(shè)計(jì)方法,用總線的方式實(shí)現(xiàn)數(shù)據(jù)流通

59、。4.如何用 verilog hdl 模塊來(lái)描述總線的操作?為什么總線的操作必須有嚴(yán)格的時(shí)序控制?各運(yùn)算部件和數(shù)據(jù)寄存器可以通過(guò)帶控制的三態(tài)門(mén)與總線的連接, 通過(guò)對(duì)控制端電平的控制來(lái)確定在某一段時(shí)間內(nèi),總線歸哪兩個(gè)或哪幾個(gè)部件使用。因?yàn)槭箍偩€連接模塊能正常工作的最重要的因素是與其他模塊的配合, 控制信號(hào)的互相配合由同步狀態(tài)機(jī)控制的開(kāi)關(guān)陣列控制。5.詳細(xì)解釋為什么采用流水線的辦法可以顯著提高層次多的復(fù)雜組合邏輯的運(yùn)算速度。采用流水線技術(shù)可以在相同的半導(dǎo)體工藝的前提下通過(guò)電路結(jié)構(gòu)的改進(jìn)大幅度地提高重復(fù)多次使用的復(fù)雜組合邏輯計(jì)算電路的吞吐量, 從而來(lái)提高層次多的復(fù)雜組合邏輯的運(yùn)算速度。 如果某個(gè)組合

60、邏輯設(shè)計(jì)的處理流程可以分為若干個(gè)步驟,而且整個(gè)數(shù)據(jù)處理過(guò)程是單向的即沒(méi)有反饋或者迭代運(yùn)算,前一個(gè)步驟的輸出是下一個(gè)步驟的輸入, 則可以考慮采用流水線設(shè)計(jì)方法提高系統(tǒng)的數(shù)據(jù)處理頻率即吞吐量。把組合邏輯分成延遲時(shí)間相等的小塊,每塊完成一定的組合邏輯功能都用寄存器暫存保存組合邏輯輸出的數(shù)據(jù)值, 只要小塊的組合邏輯的延遲小于時(shí)鐘周期, 整個(gè)組合邏輯的輸入值每個(gè)時(shí)鐘就可以變化一次不會(huì)由于組合邏輯的延遲引起輸出值的錯(cuò)誤,若沒(méi)有這些寄存器來(lái)暫時(shí)保存局部組合邏輯的輸出值,則為了保證整個(gè)組合邏輯的輸出正確,輸出端信號(hào)的變化周期必須大于整體verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程思考題答案天之藍(lán)電子工作室27邏輯的延遲時(shí)間。數(shù)據(jù)處理的吞吐量受到限制,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論