




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 | HYPERLINK / 百度首頁 HYPERLINK /v2/?login 登錄 HYPERLINK /cashier/browse/vipcashier?dqStatCode=topnav_joinvip&cashier_code=topnav_joinvip VIP意見反饋 HYPERLINK /apps?fr=1011 下載客戶端4/15/2019verilog - 數字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案 HYPERLINK /?fr=nav 首頁 HYPERLINK javascript:void(0); 分類 HYPERLI
2、NK javascript:void(0); 精品內容 HYPERLINK /wenkuverify?from=1 申請認證 HYPERLINK javascript:void(0); 機構合作 HYPERLINK javascript:void(0); 頻道專區 HYPERLINK /xtopic/wkback 百度智慧課堂 HYPERLINK /user/browse/vip/ 百度教育VIP緒 論 HYPERLINK /?fr=crumbs 百度文庫 HYPERLINK /?fr=crumbs HYPERLINK /edu/index 教育專區 HYPERLINK /edu/index
3、HYPERLINK /list/10 高等教育 HYPERLINK /list/10 HYPERLINK /list/109 工學1.什么是信號處理電路?它通常由哪兩大部分組成?信號處理電路是進行一些復雜的數字運算和數據處理,并且又有實時響應要求的電路。它通常有高速數據通道接口和高速算法電路兩大部分組成。2.為什么要設計專用的信號處理電路?因為有的數字信號處理對時間的要求非常苛刻,以至于用高速的通用處理器也無法在規定的時間內完成必要的運算。通用微處理器芯片是為一般目的而設計的,運算的步驟必須通過程序編譯后生成的機器碼指令加載到存儲器中,然后在微處理器芯片控制下,按時鐘的節拍,逐條取出指令分析指
4、令和執行指令,直到程序的結束。微處理器芯片中的內部總線和運算部件也是為通用目的而設計,即使是專為信號處理而設計的通用微處理器,因為它的通用性也不可能為某一特殊的算法來設計一系列的專用的運算電路而且其內部總線的寬度也不能隨便的改變,只有通過改變程序,才能實現這個特殊的算法,因而其算法速度也受到限制所以要設計專用的信號處理電路。3.什么是實時處理系統?實時處理系統是具有實時響應的處理系統。4.為什么要用硬件描述語言來設計復雜的算法邏輯電路?因為現代復雜數字邏輯系統的設計都是借助于 EDA 工具完成的,無論電路系統的仿真和綜合都需要掌握硬件描述語言。5.能不能完全用 C 語言來代替硬件描述語言進行算
5、法邏輯電路的設計?不能,因為基礎算法的描述和驗證通常用 C 語言來做。如果要設計一個專用的電路來進行這種對速度有要求的實時數據處理,除了以上 C 語言外,還須編寫硬件描述語言程序進行仿真以便從電路結構上保證算法能在規定的時間內完成,并能通過與前端和后端的設備接口正確無誤地交換數據。6.為什么在算法邏輯電路的設計中需要用 C 語言和硬件描述語言配合使用來提高設計效率?首先 C 語言很靈活,查錯功能強,還可以通過 PLI 編寫自己的系統任務,并直接與硬件仿真器結合使用。C 語言是目前世界上應用最為廣泛的一種編程語言,因而 C 程序的設計環境比 Verilog HDL 更完整,此外,C 語言有可靠地
6、編譯環境,語法完備,缺陷缺少,應用于許多的領域。比較起來,Verilog 語言只是針對硬件描述的,在別處使用并不方便。而用 Verilog 的仿真,綜合,查錯等大部分軟件都是商業軟件,與 C 語言相比缺乏長期大量的使用,可靠性較差,亦有很多缺陷。所以只有在 C 語言的配合使用下,Verilog 才能更好地發揮作用。C語言與 Verilog HDL 語言相輔相成,互相配合使用。這就是即利用 C 語言的完整性又要結合 Verilog 對硬件描述的精確性,來更快更好地設計出符合性能要求的天之藍電子工作室1/view/33cc9b7d192e45361166f54e.html1/44 4/15/201
7、9verilog - 數字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案硬件電路系統,從而來提高效率。第一部分 Verilog 數字設計基礎第 1 章 Verilog 的基本知識1.什么是硬件描述語言?它的主要作用是什么?硬件描述語言是一種用形式化方式來描述數字電路和系統的語言。它的主要作用是:數字電路系統的設計者利用這種語言可以從上層到下層(從抽象到具體)逐步描述自己的設計思想,用一系列分層次的模塊來表示極其復雜的數字系統。2.目前世界上符合 IEEE 標準的硬件描述語言有哪兩種?它們各有什么特點?符合 IEEE 標準的硬件描述語言是 Verilog
8、 HDL 和 VHDL 兩種。它們的共同特點是:能夠形式化地抽象表示電路的行為和結構;支持邏輯設計中層次與范圍的描述;可借用高級語言的精巧結構來簡化電路行為的描述;具有電路仿真與驗證機制以保證設計的正確性;支持電路描述由高層到低層的綜合 1 轉換硬件描述與實現工藝無關;便于文檔管理;易于理解和設計重用。不同點:VerilogHDL 是一種非常容易掌握的硬件描述語言,而 VHDL 掌握起來就比較困難。3.什么情況下需要采用硬件描述語言的設計方法?在對邏輯電路及系統的設計的時間要求很短的情況下需要采用硬件描述語言的設計方法。4.采用硬件描述語言設計方法的優點是什么?有什么缺點?優點是:與工藝無關性
9、。這使得工程師在功能設計,邏輯驗證階段,可以不必過多考慮門級及工藝實現的具體細節,只需要利用系統設計時對芯片的要求,施加不同的約束條件,即可設計出實際電路。缺點是:需要相應的 EDA 工具,而 EDA 工具的穩定性需要進一步的在工程中提升。5.簡單敘述一下利用 EDA 工具并采用硬件描述語言的設計方法和流程?采用自頂向下的設計方法:從系統級開始把系統劃分為基本單元,然后再把每個基本單元劃分為下一層次的基本單元,一直這樣做下去,直到可以直接用EDA 元件庫中的基本元件來實現為止。其基本流程主要由兩大主要功能部分組成:(1)設計開發 即從編寫設計文件-綜合到布局布線-電路生成這樣一序列步驟。(2)
10、設計驗證 也就是進行各種仿真的一序列步驟,如果在仿真過程中發現問題就返回設計輸入進行修改。5.硬件描述語言可以用哪兩種方式參與復雜數字電路的設計?復雜數字電路的設計和復雜數字電路的仿真驗證。天之藍電子工作室2/view/33cc9b7d192e45361166f54e.html2/44 4/15/2019verilog - 數字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案7.用硬件描述語言設計的數字系統需要經過哪些步驟才能與具體的電路相對應?編寫設計文件;功能仿真;優化,布局布線;布線后門級仿真8.為什么說用硬件描述語言設計的數字邏輯系統下具有很大的
11、靈活性并可以映射到任何工藝的電路上?硬件描述語言的設計具有與工藝無關性。這使得工程師在功能設計,邏輯驗證階段,可以不必過多考 慮門級及工藝實現的具體細節,只需要利用系統設計時對芯片的要求,施加不同的約束條件,即可設計出實際電路。9.軟核是什么?虛擬器件是什么?它們的作用是什么?把功能經過驗證的,可綜合的,實現后電路結構總門數在 5000 門以上的Verilog HDL 模型稱為軟核。而把由軟核構成的器件稱為虛擬器件。作用:大大縮短設計周期,加快復雜電路的設計。10.集成電路行業中 IP 的含義是什么?固核是什么?硬核是什么?與軟核相比它們各有什么特點?各適合于什么場合?在集成電路行業中 IP
12、是知識產權(Intellectual Property)的含義。把在某一現場可編程門陣列器件上實現的經驗證是正確的,總門數在 5000 門以上的電路結構編碼文件稱為固核。把在某一專用集成電路工藝的器件上實現的經驗證時正確的總門數在 5000 門以上的門電路結構版圖掩膜稱為硬核。在工具實現手段和工藝技術尚未確定的邏輯設計階段,IP 核具有很大的靈活性,很容易借助 EDA 工具與其他外部邏輯結合為一體。相比之下固核和硬核與其他外部邏輯結合為一體的靈活性要差很多。11.簡述 Top_Down 設計方法和硬件描述語言的關系?Top_Down 的設計方法是首先從系統設計入手,從頂層進行功能劃分和結構設計
13、。系統的總仿真是頂層進行功能劃分的總要環節,而該過程需要采用硬件描述語言的方法。12.System Verilog 與 Verilog 有什么關系?適合于何種設計?System Verilog 是 Verilog 語言的拓展和延伸。Veril 適合系統級,算法級,寄存器級,邏輯級,門級,電路開關級設計而 System Verilog 更適合于可重用的可綜合 IP 和可重用的驗證用 IP 設計,以及特大型基于 IP 的系統級設計和驗證。天之藍電子工作室3/view/33cc9b7d192e45361166f54e.html3/44 4/15/2019verilog - 數字系統設計課程(第二版)
14、思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案第 2 章 Verilog 語法的基本概念1.Verilog 語言有什么作用?可描述順序執行和并行執行的程序結構;用延遲表達式或事件表達式來明確地控制過程的啟動時間;通過命名的事件來觸發其他過程里的激活行為或停止行為;提供了條件如 if-else,case 等循環程序結構;提供了可帶參數且非零延續時間的任務程序結構;提供了可定義新的操作符的函數結構;提供了用于建立表達式的算術運算符,邏輯運算符,位運算符;Verilog HDL 語言作為一種結構化的語言非常適用于門級和開光級的模型設計;提供了一套完整的表示組合邏輯的基本元件的原話
15、;提供了雙向通路和電阻器件的原話;可建立 MOS 器件的電荷分享和電荷衰減動態模型;Verilog HDL 的構造性語句可以精確地建立信號的模型;2.構成模塊的關鍵詞是什么?module,endmodule3.為什么說可以用 Verilog 構成非常復雜的電路結構?因為 Verilog 可描述順序執行和并行執行的程序結構;用延遲表達式或事件表達式來明確地控制過程的啟動時間;通過命名的事件來觸發其他過程里的激活行為或停止行為;提供了條件如 if-else,case 等循環程序結構;提供了可帶參數且非零延續時間的任務程序結構;提供了可定義新的操作符的函數結構;提供了用于建立表達式的算術運算符,邏輯
16、運算符,位運算符;Verilog HDL 語言作為一種結構化的語言非常適用于門級和開光級的模型設計;提供了一套完整的表示組合邏輯的基本元件的原話;提供了雙向通路和電阻器件的原話;可建立 MOS 器件的電荷分享和電荷衰減動態模型;Verilog HDL 的構造性語句可以精確地建立信號的模型。4.為什么可以用比較抽象的描述來設計具體的電路結構?因為有可以用比較抽象描述設計電路結構的語言,而這種語言是適合數字系統設計的語言。5.是否任意抽象的符合語法的 Verilog 模塊都可以通過綜合工具轉變為電路結構?不能。要符合語法,還符合一些基本規則的 Verilog 模塊才可以通過綜合工具轉變為電路結構。
17、6.什么叫綜合?天之藍電子工作室4/view/33cc9b7d192e45361166f54e.html4/44 4/15/2019verilog - 數字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案通過綜合工具把行為級描述的模塊通過邏輯網表自動轉化為門級形式的模塊叫綜合。7.綜合是由什么工具來完成的?EDA 工具來完成綜合的。8.通過綜合產生的是什么?產生的結果有什么用處?產生的是由與門,或門和非門組成的加法器,比較器等組合邏輯。產生的模塊很容易與某種工藝的基本元件逐一對應起來,再通過布局布線工具自動地轉變為某種工具工藝的電路布線結構。9.仿真是什
18、么?為什么要進行仿真?仿真是對電路模塊進行動態的全面測試。通過觀測被測試模塊的輸出信號是否符合要求可以調試和驗證邏輯系統的設計和結構準確與否,并發現問題及時修改。10.仿真可以在幾層面上進行?每個層面的仿真有什么意義?分別為;前仿真,邏輯網表仿真,門級仿真和布線后仿真;前仿真,邏輯網表仿真,門級仿真;可以調試和驗證邏輯系統的設計和結構準確與否,并發現問題及時修改。布線后仿真:分析設計的電路模塊的運行是否正常。11.模塊的端口是如何描述的?用“.”表示被引用模塊的端口。12.在引用實例模塊的時候,如何在主模塊中連接信號線?用小括號中來表示本模塊中與之連接的模塊。13.如何產生連續的周期性測試時鐘
19、?用 always 語句來產生連續的周期性測試模塊。14.如果不用 initial 塊,能否產生測試時鐘?不能,沒有 initial 塊,就不知道時鐘信號的初始值15.從本講中的簡單例子,是否能明白 always 塊與 initial 塊有什么不同?Initial 塊只執行一次,而 always 塊執行無數次。16.為什么說 Verilog 可以用來設計數字邏輯電路和系統?因為 Verilog 可描述順序執行和并行執行的程序結構;用延遲表達式或事件表達式來明確地控制過程的啟動時間;通過命名的事件來觸發其他過程里的激活行為或停止行為;提供了條件如 if-else,case 等循環程序結構;提供了
20、可帶參數且非零延續時間的任務程序結構;提供了可定義新的操作符的函數結構;提供了用于建立表達式的算術運算符,邏輯運算符,位運算符;Verilog HDL 語言作為一種結構化的語言非常適用于門級和開光級的模型設計;提供了一套完整的表示組合邏輯的基本元件的原話;提供了雙向通路和電阻器件的原話;可建立 MOS 器天之藍電子工作室5/view/33cc9b7d192e45361166f54e.html5/44 4/15/2019verilog - 數字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案件的電荷分享和電荷衰減動態模型;Verilog HDL 的構造性語
21、句可以精確地建立信號的模型。第 3 章 模塊的結構、數據類型、變量和基本運算符號1.模塊由幾個部分組成?由描述接口和描述邏輯功能兩部分組成。2.端口分為幾種?三種:輸出口,輸入口,輸入/輸出口3.為什么端口要說明信號的位寬?因為如果不說明信號的位寬可能會在信號發生改變時發生錯誤,不容易看出接收到的信號的數據寬度,就很難進行數據的處理。4.能否說模塊相當于電路圖中的功能模塊,端口相當于功能模塊的引腳?可以那樣說,每個模塊都有特定的功能,而功能的實現就必須依靠具體的電路得以實現,端口是信號傳遞的通道,可以說是功能模塊的引腳。5.模塊中的功能描述可以由哪幾類語句或語句塊組成?它們出現的順序會不會影響
22、功能的描述?用 assign 語句聲明,用實例元件,用 always 塊。它們出現的順序不會影響到功能的描述。6.這幾類描述中哪一種直接與電路結構有關?用實例元件直接與電路結構有關。7.最基本的 Verilog 變量有哪幾種類型?wire 型、reg 型、memory 型8.reg 型和 wire 型變量的差別是什么?reg 型變量是寄存器型變量,wire 型變量是連線型變量。兩者根本性的差別在于reg 型變量有個寄存器來存放變量,這個值只有變量發生改變時才會改變否則保證原來的值不變,wire 型變量的值不是確定的值。9.由連續賦值語句(assign)賦值的變量能否是 reg 類型的?可以是
23、reg 類型的變量。10.在 always 模塊中被賦值的變量能否是 wire 類型的?如果不能是 wire 類型,那么必須是什么類型的?它們表示的一定是實際的寄存器嗎?不能。必須是 reg 類型的變量,它們表示不一定是實際的寄存器。11.參數類型的變量有什么用處?參數類型的變量的好處是可以提高程序的可讀性和可維護性。12.Verilog 語法規定的參數傳遞和重新定義功能有什么直接的應用價值?天之藍電子工作室6/view/33cc9b7d192e45361166f54e.html6/44 4/15/2019verilog - 數字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數
24、字系統設計教程思考題答案可以用于定義延遲時間和變量寬度。13.邏輯比較運算符小于等于“=”和非阻塞賦值大于等于“=”的表示是完全一樣的,為什么 Verilog 在語句解釋和編譯時不會搞錯?因為邏輯比較時“=”兩邊是兩個操作數,此時“=”是雙目運算符,而在非阻塞賦值時“=”的右邊是操作數,此時“=”單目運算符。14.是否可以說實例引用的描述實際上就是嚴格意義上的電路結構描述?不能實例引用的描述是在門級電路上加以描述的,和嚴格意義上的電路結構描述還是有點差距的。天之藍電子工作室7/view/33cc9b7d192e45361166f54e.html7/44 4/15/2019verilog - 數
25、字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案第 4 章 運算符、賦值語句和結構說明語句1.邏輯運算符與按位邏輯運算符有什么不同,它們各在什么場合使用?用邏輯運算符運算時是兩個操作數進行邏輯運算,而按位邏輯運算符運算時是兩個操作數對應的每一位進行邏輯運算。邏輯運算符多用于條件的判斷,按位邏輯運算符用于信號的運算和檢測。2.指出兩種邏輯等式運算符的不同點,解釋書上的真值表。兩種邏輯運算符有很大的區別。”=“要求兩個比較數完全一樣,無論高阻還是未知,只要每位完全相同即可;而“=”只有在兩個操作數每位都已知即 1或 0,在這種前提下兩個操作數每位相同結果才
26、為真,如果不是在這個前提那么其結果始終為 x;3.拼接符的作用是什么?為什么說合理地使用拼接符可以提高程序的可讀性和可維護性?拼接符表示的操作其物理意義是什么?拼接符的作用是把兩個或多個信號的某些位拼接起來進行運算操作。因為借助拼接符可以用一個符號名來表示由多位信號組成的復雜信號。其物理意義是將多個信號結合成一個信號。4.如果都不帶時間延遲,阻塞和非阻塞賦值有什么不同?舉例說明它們的不同點?阻塞和非阻塞賦值的區別在阻塞是順序執行而非阻塞是并行執行。以下面的語句舉例非阻塞賦值always(posedge clk)beginb=a;c=b;end阻塞賦值always(posedge clk)beg
27、inb=a;c=b;end兩種不同的賦值方式結果是不同的,非阻塞賦值 b=a;cend_wave;endfork#50 r=h35;#100 r=hE2;#150 r=h00;#200 r=hF7;#250 -end_wave;join上面兩個塊執行起來效果是完全一樣的,第一個模塊是按順序執行,而第二個模塊是每個語句同時執行的。6.如果在順序塊中,前面有一條語句是無限循環,下面的語句能否進行?下面的語句不能執行。7.如果在并行塊中,發生上述情況,會如何呢?下面的語句能夠執行。天之藍電子工作室9/view/33cc9b7d192e45361166f54e.html9/44 4/15/2019ve
28、rilog - 數字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案第 5 章 條件語句、循環語句、塊語句與生成語句1.為什么建議在編寫 Verilog 模塊程序時,如果用到 if 語句建議大家把配套的 else情況也考慮在內?因為如果沒有配套的 else 語句,在不滿足 if 條件語句時,將會保持原來的狀態不變,從而在綜合時會產生一個鎖存器,而這是設計不想要的結果。2.用 if 語句;elseif 語句;elseif 語句;.else 語句和用 case endcase 表示不同條件下的多個分支是完全相同的,還是有什么不同?不是完全相同。(1)與 ca
29、se 語句中的控制表達式和多分支表達式這種比較相比,if_else_if 結構中條件表達式更為直觀些。(2)對于那些分支表達式中存在不定值x 和高阻值 z 的位時 case 語句提供了處理這種情況的手段。3.如果 case 語句的分支條件沒有覆蓋所有可能的組合條件,定義了 default 項和沒有定義 default 項有什么不同?定義了 default 項則會使電路描述的更加的清楚,綜合的時候不會產生不想要的結果,沒用定義 default 則會使在綜合是產生一個鎖存器。4.仔細闡釋 case、casex 和 casez 之間的不同。case、casex、casez 對應的真值表如上,可以看出
30、 case 無論是 0,1,還是 x 高阻都能夠比較,而 casez 不將高阻進行比較,在其它情況都進行比較;而 casex 不將高阻和 x 進行比較,在其它情況進行比較。5.forever 語句如果運行了,在它下面的語句能否運行?它位于 begin end 和位于fork join 塊有什么不同?不能運行。位于 begin end,由于 begin and 是順序塊,所以只要執行到 forever則將不能運行下面的程序;而位于 fork join,它是并行塊,執行了 forever 還是能夠執行 forever 下面的語句。6.forever 語句 repeat 語句能否獨立于過程塊而存在,
31、即能否不在 initial 或 always塊中使用?forever 不能獨立于過程塊中,而 repeat 能夠獨立于過程塊中。天之藍電子工作室10/view/33cc9b7d192e45361166f54e.html10/44 4/15/2019verilog - 數字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案7.用 for 循環為存儲器許多單元賦值時是否需要時間?為什么如果不定義時間延遲,它可以不需要時間就把不管多大的儲存器賦值完畢?如果定義了時間延遲則需要時間,否則不需要時間。因為循環的邊界是確定的,那么在綜合時該循環語句被認為是重復的硬件結
32、構。8.for 循環是否可以表示可以綜合的組合邏輯?請舉例說明。可以表示綜合的組合邏輯。例如用 for 循環實現的乘法器9.在編寫測試模塊時用什么方法可以使 for 循環按照時鐘的節拍運行?請比較圖5.3 所示程序段。可以在 for 循環的最后嵌套時鐘節拍運行的信號。第一種程序不能按照時鐘節拍來對 memi賦值,而第二種程序可以。10.聲明一個為 oscillate 的寄存器變量并將它初始化為 0,使其每 30 個時間單位進行一次取反操作,不要使用 always 語句(提示:使用 forever 循環)。reg oscillate;initialbeginoscillate=0;forever
33、#30 oscillate=!Oscillate;end11.設計一個周期為 40 個時鐘單位的時鐘循環,其占空比為 25%,使用 always和 initial 塊進行設計,將其在仿真 0 時刻的值初始化為 0。initialbeginclock=0;alwaysbegin天之藍電子工作室11/view/33cc9b7d192e45361166f54e.html11/44 4/15/2019verilog - 數字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案#30 clock=0;#10 clock=1;endend12.給定下面含有阻塞過程賦值語
34、句的 initial 塊,每個語句在什么仿真時刻開始執行?a,b,c 和 d 在仿真過程中的中間值和仿真結束時的值是什么?initialbegina=1b0;1b=#10 1b0;c=#5 1b0;d=#20a,b,c;234end第一條語句在仿真開始時就執行,第二句在仿真 10 個時鐘單元后執行,第三句在仿真 15 個時鐘信號單元后執行,第四句在仿真 35 個時鐘單元后執行。在中間仿真過程中 a=0,b,c,d 為不確定值結束時 abcd 的值是 a=1b0,b=10,c=10,d=3b000。13.在第 12 題中,如果 initial 塊中包含的是非阻塞過程賦值語句,那么各個問題的答案是
35、什么?如果是非阻塞過程賦值則答案是;第一條語句在仿真開始時就執行,第二句在仿真 10 個時鐘單元后執行,第三句在仿真 5 個時鐘信號單元后執行,第四句在仿真 20 個時鐘單元后執行。在中間仿真過程中 a=0,b,c,d 為不確定值結束時 abcd的值是 a=1b0,b=10,c=10,d=3b000。14.下面例子中 d 的最終值是什么?initialbeginb=1b1;c=1b0;#10 b=1b0;endinitialbegind=#25(b|c);endD 的最終值 0。天之藍電子工作室12/view/33cc9b7d192e45361166f54e.html12/44 4/15/20
36、19verilog - 數字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案15 使用帶同步清零端的 D 觸發器(清零高電平有效,在時鐘下降沿執行清零操作)設計下一個下降沿觸發的 D 觸發器,只能使用行為語句(提示:D 觸發器的輸出 q 應當聲明為寄存器變量)。使用設計出的 D 觸發器輸出一個周期為 10 個時間單位的時鐘信號。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
37、 Q=D;endendmodule16.使用帶有異步清零端的 D 觸發器設計第 15 題要求的 D 觸發器(在清零端變為高電平后立即執行清零操作,無須等待下一個時鐘下降沿 ),并對這個 D 觸發器進行測試。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 語句設計一個電平敏感的鎖存器,該鎖存器的輸入信號為 d 和 clock,輸出為 q,其功能是當 cloc
38、k=1 時 q=d;module L_FF(d,clock,q);input d,clk;天之藍電子工作室13/view/33cc9b7d192e45361166f54e.html13/44 4/15/2019verilog - 數字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案output q;reg q;alwaysbeginwait(clock=1)q=d;endendmodule18.使用條件語句設計例 5.18中的四選一多路選擇器,外部端口必須保持不變。module mux4_to_1(out,i0,i1,i2,i3,s1,s0);outpu
39、t out;input i0,i1,i2,i3;input s1,s0;reg 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 語句設計八功能的算術運算單元(ALU),其輸入信號 a 和 b 均為 4 位,還有功能選擇信號 select 為 3 位,輸出信號為 out(5 位),算術運算
40、單元 ALU 所執行的操作與 select 信號有關,具體關系如 5.1 所列(忽略輸出結果中的上溢和下溢的位)。天之藍電子工作室14/view/33cc9b7d192e45361166f54e.html14/44 4/15/2019verilog - 數字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案module ALU(a,b,select,out);input3:0 a,b;input2:0 select;output4:0 out;reg4:0 out;always (select)begincase(select)3b000: out=a;3
41、b001: out=a+b;3b010: out=a-b;3b011: out=a/b;3b100: out=a%b;3b101: out=a1;3b111: out=ab;default:out=5bx;endcaseendendmodule天之藍電子工作室15/view/33cc9b7d192e45361166f54e.html15/44 4/15/2019verilog - 數字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案20.使用 while 循環設計一個時鐘信號發生器。其時鐘信號的初值為 0,周期為 10個時間單元。initialbegin
42、clk=0;while(1)#10 clk=!clk;end21.使用 for 循環對一個長度為 1024(地址從 01023)、位寬為 4 的寄存器類型數組 cache_var 進行初始化,把所有單元都設置為 0.beginreg3:0 cache_var1023:0;intiger i;for(i=0;i1024;i+)cache_vari=0;end22.使用 forever 循環設計一個時鐘信號,周期為 10,占空比為 40%,初值為 0.initialbeginclk=0;foreverbegin#6 clk=0;#4 clk=1;endend23.使用 repeat 將語句 a=a
43、+1 延遲 20 個時鐘上升沿之后再執行。parameter delay=20;intiger i;reg a;beginrepeat(delay)天之藍電子工作室16/view/33cc9b7d192e45361166f54e.html16/44 4/15/2019verilog - 數字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案always (posedge clk)begini+;if(i=20)a=a+1;endend24.下面是一個內嵌順序塊和并行塊的塊語句。該塊的執行結束時間是多少?事件的順序是怎樣的?每條語句的仿真結束時間是多少?in
44、itialbegin/ 順序執行x=1b0;#5 y=1b1;fork.5/并行執行#20 a=x;#15 b=y;join.25.20#40 x=1b1; / 順序執行 .65fork#10 p=x;/并行執行.75begin/ 順序執行.75#10 a=y;#30 b=x;.105end#5 m=y;.70joinend該塊的執行結束時間是 5+20+40+40=105 個時鐘單位每條語句執行的時間如上圖所標25.用 forever 循環語句,命名塊(named block)和禁用(disabling of) 命名塊來設計一個八位計數器。這個計數器從 count=5 開始計數,到 coun
45、t=67 結束計數。每個時鐘正跳變計數器加一,時鐘的周期為 10,計數器的設計只用到了一次循環,然后就被禁用了(提示:使用 disable 語句)。天之藍電子工作室17/view/33cc9b7d192e45361166f54e.html17/44 4/15/2019verilog - 數字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案reg7:0 count;initialbegincount =5;endbegin:mame blockforeverbegin: disabling ofalways (posedge clk)beginif(cou
46、nt67)#10 count=count+1;disable: disabling of;endendend天之藍電子工作室18/view/33cc9b7d192e45361166f54e.html18/44 4/15/2019verilog - 數字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案第 6 章 結構語句、系統任務、函數語句和顯示系統任務1.怎樣理解 initial 語句只執行一次的概念?在仿真開始時,initial 語句只執行一次,但 initial 語句里面的語句可能不執行一次,因為如果是 while 循環,雖然 initial 語句是
47、執行一次,但只要進了 while 循環,則會執行到仿真結束。2.在 initial 語句引導的過程中是否可以有循環語句?如果可以,是否與思考題 1,互相矛盾?可以,并不互相矛盾。initial 語句確實是執行了一次,但并不意味著 initial 語句過程中就不能是循環語句,兩者并不矛盾。3.怎樣理解由 always 語句引導的過程塊是不斷活動的?always 語句的過程塊是不斷活動的,在仿真過程中 always 塊始終在循環的活動著,檢查 always 語句后面的信號是否發生相應改變,這是 always 活動的實質,如果 always 語句后面沒有檢查的信號則將會進入一個循環,將會使仿真器鎖死
48、。4.不斷活動與不斷執行有什么不同?不斷活動是 always 語句不斷活動檢查是否滿足條件(如某個信號發生改變),不斷執行時 always 語句引導的過程中的語句不斷的執行著。5.怎樣理解沿觸發和電平觸發的不同?沿觸發是在某個信號在上升沿或下降沿到來時,觸發執行過程塊。電平觸發是在某個信號發生改變時就會觸發執行過程塊。6.是不是可以說沿觸發是有間隔的,在一定的時間區間里只需要注意有限的點,而電平觸發卻需要注意無窮多個點?不是。沿觸發是信號的上升沿或下降沿進行觸發,而電平觸發是在某個信號發生改變時進行觸發,并不需要注意無窮多個點。7.沿觸發的 always 塊和電平觸發的 always 塊各表示
49、什么類型的邏輯電路的行為?為什么?沿觸發的 always 塊常表示時序邏輯電路,因為其和時序有很關。電平觸發的always 塊常表示組合邏輯電路,因為其和只和電平有關。8.簡單敘述任務和函數的不同點(1)函數只能與主模塊共用同一個仿真時間單元,而任務可以定義自己的仿真時間單位;(2)函數不能啟動任務,而任務能啟動其他任務和函數;(3)函數至少要有一個輸入變量,而任務可以沒有或有多個任何類型的變量;(4)函數返回一個值,而任務則不返回值。9.簡單敘述$display、$write 和$strobe 的不同點。$display 自動地在輸出后進行換行,$write 則不進行自動換行,其它都非常相似
50、。天之藍電子工作室19/view/33cc9b7d192e45361166f54e.html19/44 4/15/2019verilog - 數字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案如果許多其他語句與$display 任務在同一個時間單位執行,那么這些語句與$display 任務的執行順序是不確定的。如果使用$strobe,該語句總是在同時刻的其他賦值語句執行完成之后執行。10.簡單敘述 Verilog1364-2001 版語法規定的電平敏感列表的簡化寫法。關鍵詞“or”也可以使用“,”來代替。11.如何在 Verilog 測試模塊中,利用文
51、件的讀寫產生預定格式的信號,并記錄有測試價值的信號?Verilog 提供了系統任務來選擇要轉儲的模塊實例或模塊實例信號( dumpvars),選擇 VCD 文件的名稱($dumpfile),選擇轉儲過程的起點和終點($dumppon,$dumpoff),選擇生成檢測點(Sdunpall),其使用方法如下initial$dumpfile(myfile.dmp); /仿真信息轉儲到 myfile.dmp 文件initial$dumpvars;initail/沒有指定變量范圍,把設計中全部信號都轉儲$dunpvars(1,top); /轉儲模塊實例投票中的信號/數 1 表示層次的等級只轉儲 top
52、下第一層信號/即轉儲 top 模塊中的變量,而不轉儲在 top 中引用initial$dumpvars(2,top.m1); /轉儲 top.m1 模塊下兩層的信號initial$dumpvars(0,top.m1); /數 0 表示轉儲 top.m1 模塊下面各個層的所有信號initialbegin$dumpon;/啟動轉儲過程#100000 $dunpoff; /過了 100000 個仿真單位后,停止轉儲過程endinitial/生成一個檢查點,轉儲所有 VCD 變量的現行值$dumpall;天之藍電子工作室20/view/33cc9b7d192e45361166f54e.html20/4
53、4 4/15/2019verilog - 數字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案第 7 章 調試用系統任務和常用編譯預處理語句1.為什么在多個模塊調試的情況下$monitor 需要配合$monitoron 和$monitoroff 來工作?$monitoron 和$monitoroff 任務的作用是通過打開和關閉監控標志來控制監控任務$monitor 的啟動和停止,這樣使得程序員可以很容易地控制$monitor 何時發生。$monitoron 則用于打開監控標志,啟動監控任務$monitor。通常在通過調用$monitoron 來啟動$mo
54、nitor 時不管$monitor 參數列表中的值是否發生改變,總是立刻輸出顯示當前時刻參數列表中的值,這用于在監控的初始時刻設定初始比較值。在默認情況下,控制標志在仿真的起始時刻就已經打開了。在多模式調試的情況下,許多模塊中都調用了$monitor,因為任何時刻只能用一個$monitor 起作用,因此需配合$monitoron 與$monitoroff 使用,把需要監視的模塊用$monitor 打開,在監視完畢后及時用$monitoroff 關閉,以便把$monitor 讓給其他模塊使用。2.請用$random 配合求模運算編寫:(1)用于測試的跳變沿抖動為周期 1/10 的時鐘波形。(2)
55、隨機出現的脈寬隨機的窄脈寬。module random_pulse(dout);output9:0 dout;reg9:0 dout;integer delay;initialbegin#10 dout=0;for(k=0;k100;k=k+1)begindelay=$random%10;#delay dout=1;#delay dout=0;endendendmodule3.Verilog 的編譯預處理與 C 語言的編譯預處理有什么不同?Verilog 的編譯處理,在編譯處理命令之前要以開頭。4.請仔細闡釋timescale 編譯預處理的作用?timescale 命令用來說明跟在該命令后的模
56、塊的時間單位和時間精度。使用timescale 命令可以在同一個設計里包含采用了不同的時間單位的模塊。天之藍電子工作室21/view/33cc9b7d192e45361166f54e.html21/44 4/15/2019verilog - 數字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案5.不同timescale 定義的多模塊仿真測試時需要注意什么?如果在同一個設計里,多個模塊中用到的時間單位和時間精度單位不同,需要用到以下的時間結構:(1)用timescale 命令來聲明本模塊中所用到的時間單位和時間精度;(2)用系統任務$printtimesc
57、ale 來輸出顯示一個模塊的時間單位和時間精度;(3)用系統函數$time 和$realtime 及%t 格式聲明來輸出顯示 EDA 工具記錄的時間信息。6.為什么說系統任務$readmen 可以用來產生用于算法驗證的極其復雜的測試用數據流?在 Verilog HDL 程序中有兩個系統任務$readmemb 和$readmemh,并用來從文件中讀取數據到存儲器中,這兩個系統任務可以在仿真的任何時刻被執行使用。復雜數據可以用 C 語言產生,存在文件中,用$readmem 取出存入存儲器,在按節拍輸出,這在驗證算法邏輯電路時特別有用。7.為什么熟練地使用條件編譯命令可以使源代碼有更大的靈活性,可以
58、使用于不同的實現對象,如不同工藝的 ASIC 或速度規模不同的 FBGA 或 CPLD,從而為軟核的商品化創造條件?合理的使用條件編譯和條件執行預處理可以使測試程序適應不同的編譯環境,也可以把不同的測試過程編寫到一個統一的測試程序中去,可以簡化測試的過程,對于復雜設計的驗證模塊的編寫很有實用價值。天之藍電子工作室22/view/33cc9b7d192e45361166f54e.html22/44 4/15/2019verilog - 數字系統設計課程(第二版)思考題答案 - 百度文庫Verilog 數字系統設計教程思考題答案第二部分 設計和驗證部分第 9 章 Verilog HDL 模型的不同
59、抽象級別1.Verilog HDL 的模型共有哪幾種類型(級別)?有 5 種類型,系統級,算法級,RTL 級,門級,開關級。2.每種類型的 Verilog HDL 各有什么特點?主要用于什么場合?系統級,算法級和 RTL 級是屬于行為級,門級是屬于結構級的。系統級:用高級語言結構實現設計模塊的外部性能的模型。算法級:用高級語言結構實現設計算法的模型。RTL 級:描述數據在寄存器之間流動和如何處理這些數據的模型。門級:描述邏輯門以及邏輯門之間的連接的模型。開關級:描述器件中三極管和存儲節點以及它們之間連接的模型。3.不可綜合成為電路的 Verilog 模塊有什么好處?描述比較直觀4.為什么說 V
60、erilog HDL 的語言結構可以支持構成任意復雜的數字邏輯系統?通過 Verilog 語言中的模塊實例引用,可以構成任何復雜結構的電路,這種以結構方式所建成的 Verilog 模型不僅是可以以仿真的,而且也是可以綜合的,其本質是表示電路的具體結構,也可以說這種 Verilog 文件也是一種結構網表。5.什么是綜合?是否任何符合語法的 Verilog HDL 程序都可以綜合?綜合是通過綜合器把 HDL 程序轉化成標準的門級結構網表。不是任何復合語法的 VerilogHDL 程序都可以綜合。6.綜合生成的是不是真實的電路?若不是,還需要哪些步驟才能真正成為具體的電路?不是,真實的電路還需要利用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五ktv經營權轉讓合同
- 電子商務公司商家加盟合同書二零二五年
- 2024年上海高考英語作文對比分析技巧與范文
- 粵教版科學在線學習計劃
- 部編版三年級語文課時安排計劃
- 屋頂綠化系統的施工方案與技術措施
- 中學英語作文評分標準與范文
- 家庭教育指導第七單元方案計劃
- 中小企業利率風險管理的實踐探索-全面剖析
- 2025年互聯網公司干部紀律作風整頓活動心得體會
- 跌倒護理RCA案例匯報
- 利用DeepSeek優化水資源管理
- DeepSeek人工智能語言模型探索AI世界科普課件
- 《迪拜帆船酒店》課件
- 2025年晉城職業技術學院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 牛橋水庫現代化水庫運行管理矩陣建設探討
- (一模)烏魯木齊地區2025年高三年級第一次質量歷史試卷(含官方答案)
- 2024年晉中職業技術學院單招職業技能測試題庫附解析答案
- 《漂亮的熱帶魚》課件
- DB32∕T 2677-2014 公路涉路工程安全影響評價報告編制標準
- 地下建筑結構知到智慧樹章節測試課后答案2024年秋南京工業大學
評論
0/150
提交評論