国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Verilog數(shù)字系統(tǒng)設(shè)計(夏宇聞)—課后思考題記錄(上)

這篇具有很好參考價值的文章主要介紹了Verilog數(shù)字系統(tǒng)設(shè)計(夏宇聞)—課后思考題記錄(上)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

00、緒論

1、什么是信號處理電路?它通常由哪兩大部分組成?

數(shù)字信號處理電路是進行一些復(fù)雜的數(shù)字運算和數(shù)據(jù)處理,并且又有實時響應(yīng)需求的電路。

它們通常是由高速專用數(shù)字邏輯系統(tǒng)或?qū)S脭?shù)字信號處理器所構(gòu)成,通常包括高速數(shù)據(jù)通道接口和高速算法電路。

2、為什么要設(shè)計專用的信號處理電路?

因為有的數(shù)字信號處理對時間的要求非常苛刻,以至于用高速的通用處理器也無法在規(guī)定的時間內(nèi)完成必要的運算。通用微處理器芯片是為一般目的而設(shè)計的,運算的步驟必須通過編程編譯后生成的機器碼指令加載到存儲器中,然后在微處理器芯片的控制下,按時鐘的節(jié)拍,逐條取出指令分析指令和執(zhí)行指令,直到程序的結(jié)束。微處理器芯片中的內(nèi)部總線和運算部件也是為通用目的而設(shè)計,即使是專為信號處理而設(shè)計的通用微處理器,因為它的通用性也不可能為某一特殊的算法來設(shè)計一系列的專用的運算電路,而且其內(nèi)部總線的寬度也不能隨便的改變,只有通過改變程序,才能實現(xiàn)這個特殊的算法,因而其算法速度也受到限制,所以要設(shè)計專用的信號處理器。

3、什么是實時處理系統(tǒng)?

實時處理系統(tǒng)是具有實時響應(yīng)的處理系統(tǒng)。

4、為什么要用硬件描述語言來設(shè)計復(fù)雜的算法邏輯電路?

因為現(xiàn)代復(fù)雜數(shù)字邏輯系統(tǒng)的設(shè)計都是借住于EDA工具完成的,無論電路系統(tǒng)的仿真和綜合都需要掌握硬件描述語言。

5、能不能完全用C語言來代替硬件描述語言進行算法邏輯電路的設(shè)計?

不能,因為基礎(chǔ)算法的描述和驗證常用C語言來做。

如果要設(shè)計一個專用的電路來進行這種對速度有要求的實時數(shù)據(jù)處理,除了以上C語言外,還須編寫硬件描述語言進行仿真以便從電路結(jié)構(gòu)上保證算法能在規(guī)定的時間內(nèi)完成,并能通過與前端和后端的設(shè)備接口正確無誤的交換數(shù)據(jù)。

6、為什么在算法邏輯電路的設(shè)計中需要用C語言和硬件描述語言配合使用來提高設(shè)計效率?

首先,C語言很靈活,查錯功能強,還可以通過 PLI (編程語言接口)編寫自己的系統(tǒng)任務(wù),并直接與硬件仿真器結(jié)合使用。C語言是目前世界上應(yīng)用最為廣泛的一種編程語言,因而C程序的設(shè)計環(huán)境比VerilogHDL更完整。

此外,C語言有可靠地編譯環(huán)境,語法完備,缺陷缺少,應(yīng)用于許多的領(lǐng)域。比較起來,Verilog語言只是針對硬件描述的,在別處使用并不方便。而用Verilog的仿真,綜合,查錯等大部分軟件都是商業(yè)軟件,與C語言相比缺乏長期大量的使用,可靠性較差,亦有很多缺陷。所以只有在C語言的配合使用下,Verilog才能更好地發(fā)揮作用。C語言與VerilogHDL語言相輔相成,互相配合使用。這就是既利用C語言的完整性又要結(jié)合Verilog對硬件描述的精確性,來更快更好地設(shè)計出符合性能要求的硬件電路系統(tǒng),從而來提高效率。

01、第1章Verilog的基本知識

1、什么是硬件描述語言? 它的主要作用是什么?

  • 硬件描述語言(HDL, hardware description language)是一種用形式化方法來描述數(shù)字電路和系統(tǒng)的語言。
  • 作用:數(shù)字電路系統(tǒng)的設(shè)計者利用這種語言可以從上層到下層(從抽象到具體)逐層描述自己的設(shè)計思想,用一系列分層次的模塊來表示極其復(fù)雜的數(shù)字系統(tǒng)。然后利用電子設(shè)計自動化(簡稱為EDA)工具逐層進行仿真驗證,再把其中需要變?yōu)榫唧w物理電路的模塊組合經(jīng)由自動綜合工具轉(zhuǎn)換到門級電路網(wǎng)表。接下去再用專用集成電路(ASIC)或現(xiàn)場可編程門陣列(FPGA)自動布局布線工具把網(wǎng)表轉(zhuǎn)換為具體電路布線結(jié)構(gòu)的實現(xiàn)。

2、目前世界上符合IEEE標(biāo)準(zhǔn)的硬件描述語言有哪兩種 ?它們各有什么特點?

  • Verilog HDL和 VHDL都是用于邏輯設(shè)計的硬件描述語言,并且都已成為IEEE標(biāo)準(zhǔn)。VHDL是在1987年成為IEEE標(biāo)準(zhǔn),Verilog HDL則在1995年才正式成為IEEE標(biāo)準(zhǔn)。VHDL其英文全名為 VHSIC Hardware Description Language。而 VHSIC則是 Very High Speed Integerated Circuit的縮寫詞,意為甚高速集成電路,故VHDL其準(zhǔn)確的中文譯名為甚高速集成電路的硬件描述語言。

  • Verilog HDL和VHDL其共同的特點在于:

    • 能形式化地抽象表示電路的行為和結(jié)構(gòu);
    • 支持邏輯設(shè)計中層次與范圍的描述;
    • 可借用高級語言的精巧結(jié)構(gòu)來簡化電路行為的描述;
    • 具有電路仿真與驗證機制以保證設(shè)計的正確性;
    • 支持電路描述由高層到低層的綜合轉(zhuǎn)換;
    • 硬件描述與實現(xiàn)工藝無關(guān)(有關(guān)工藝參數(shù)可通過語言提供的屬性包括進去);
    • 便于文檔管理;
    • 易于理解和設(shè)計重用。
  • 與VHDL相比Verilog HDL的最大優(yōu)點是:它是一種非常容易掌握的硬件描述語言,只要有C語言的編程基礎(chǔ),通過20學(xué)時的學(xué)習(xí),再加上一段實際操作,一般同學(xué)可在2~3個月內(nèi)掌握這種設(shè)計方法的基本技術(shù)。而掌握VHDL設(shè)計技術(shù)就比較困難。這是因為VHDL不很直觀,需要有Ada編程基礎(chǔ),一般認(rèn)為至少需要半年以上的專業(yè)培訓(xùn),才能掌握VHDL的基本設(shè)計技術(shù)。

  • 下圖所示為Verilog HDL和VHDL建模能力的比較圖。

    Verilog數(shù)字系統(tǒng)設(shè)計(夏宇聞)—課后思考題記錄(上)

3、什么情況下需要采用硬件描述語言的設(shè)計方法?

  • 近年來,F(xiàn)PGA和ASIC的設(shè)計在規(guī)模和復(fù)雜度方面不斷取得進展,而對邏輯電路及系統(tǒng)的設(shè)計時間要求卻越來越短。這些因素促使設(shè)計人員采用高水準(zhǔn)的設(shè)計工具,如:硬件描述語言(Verilog HDL或VHDL)來進行設(shè)計。

4、采用硬件描述語言設(shè)計方法的優(yōu)點是什么? 有什么缺點?

  • 采用Verilog輸入法最大的優(yōu)點是其與工藝無關(guān)性。這使得工程師在功能設(shè)計,邏輯驗證階段,可以不必過多考慮門級及工藝實現(xiàn)的具體細節(jié),只需要利用系統(tǒng)設(shè)計時對芯片的要求,施加不同的約束條件,即可設(shè)計出實際電路。
  • 缺點是:需要響應(yīng)的EDA工具,而EDA工具的穩(wěn)定性需要進一步的在工程中提升。

5、簡單敘述一下利用 EDA工具并采用硬件描述語言(HDL)的設(shè)計方法和流程。

  • 采用自頂向下的設(shè)計(即Top_Down設(shè)計)方法:從系統(tǒng)級開始把系統(tǒng)劃分為基本單元,然后再把每個基本單元劃分為下一層次的基本單元,一直這樣做下去,直到可以直接用EDA元件庫中的基本元件來實現(xiàn)為止。
  • 其基本流程主要由兩大功能部分組成:
    • (1)設(shè)計開發(fā),即從編寫設(shè)計文檔→綜合到布局布線→電路生產(chǎn)這樣一序列步驟。
    • (2)設(shè)計驗證,也就是進行各種仿真的一序列步驟,如果在仿真過程中發(fā)現(xiàn)問題就返回設(shè)計輸入進行修改。

Verilog數(shù)字系統(tǒng)設(shè)計(夏宇聞)—課后思考題記錄(上)

6、硬件描述語言可以用哪兩種方式參與復(fù)雜數(shù)字電路的設(shè)計?

  • 復(fù)雜數(shù)字電路的設(shè)計和復(fù)雜數(shù)字電路的仿真驗證。

7、用硬件描述語言設(shè)計的數(shù)字系統(tǒng)需要經(jīng)過哪些步驟才能與具體的電路相對應(yīng)?

  • 編寫設(shè)計文件;
  • 功能仿真;
  • 優(yōu)化,布局布線;
  • 布線后門級仿真。

8、為什么說用硬件描述語言設(shè)計的數(shù)字邏輯系統(tǒng)具有最大的靈活性并可以映射到任何工藝的電路上?

  • 硬件描述語言的設(shè)計具有與工藝無關(guān)性。
  • 這使得工程師在功能設(shè)計,邏輯驗證階段,可以不必過多考慮門級及工藝實現(xiàn)的具體細節(jié),只需要利用系統(tǒng)設(shè)計時對芯片的要求,施加不同的約束條件,即可設(shè)計出實際電路。

9、軟核是什么?虛擬器件是什么?它們的作用是什么?

  • 把功能經(jīng)過驗證的、可綜合的、實現(xiàn)后電路結(jié)構(gòu)總門數(shù)在5 000門以上的Verilog HDL模型稱為**“軟核”(Soft Core)**。
  • 把由軟核構(gòu)成的器件稱為虛擬器件,在新電路的研制過程中,軟核和虛擬器件可以很容易地借助EDA綜合工具與其他外部邏輯結(jié)合為一體。這樣,軟核和虛擬器件的重用性就可大大縮短設(shè)計周期,加快了復(fù)雜電路的設(shè)計。

10、集成電路行業(yè)中 IP 的含義是什么?固核是什么?硬核是什么?與軟核相比它們各有什么特點?各適用于什么場合?

  • 在數(shù)字邏輯設(shè)計領(lǐng)域,迫切需要一種共同的工業(yè)標(biāo)準(zhǔn)來統(tǒng)一對數(shù)字邏輯電路及系統(tǒng)的描述,這樣就能把系統(tǒng)設(shè)計工作分解為邏輯設(shè)計(前端),電路實現(xiàn)(后端)和驗證三個互相獨立而又相關(guān)的部分。由于邏輯設(shè)計的相對獨立性就可以把專家們設(shè)計的各種常用數(shù)字邏輯電路和組件(如 FFT算法、DCT算法部件、DDRAM 讀寫控制器等)建成宏單元( megcell)或軟(固/硬)核,也稱作Soft(firm/hard)Core,即 IP(知識產(chǎn)權(quán)內(nèi)核的英文縮寫)庫供設(shè)計者引用。設(shè)計者可以直接利用它們的行為模型設(shè)計并驗證其他電路,以減少重復(fù)勞動,提高工作效率。
  • 在集成電路行業(yè)中IP是知識產(chǎn)權(quán)(IntellectualProperty)的含義。
  • 把在某一現(xiàn)場可編程門陣列(FPGA)器件上實現(xiàn)的、經(jīng)檢驗證明是正確的、總門數(shù)在5000門以上的電路結(jié)構(gòu)編碼文件稱為**“固核”(firm core)**。
  • 把在某一專用集成電路工藝的(ASIC)器件上實現(xiàn)的、經(jīng)檢驗證明是正確的、總門數(shù)在5000門以上的門電路結(jié)構(gòu)版圖掩膜稱為**“硬核”(hard core)**。
  • 在工具實現(xiàn)手段和工藝技術(shù)尚未確定的邏輯設(shè)計階段,IP核具有很大的靈活性,很容易借助EDA工具與其他外部邏輯結(jié)合為一體。相比之下固核和硬核與其他外部邏輯結(jié)合為一體的靈活性要差很多。

11、簡述Top_Down設(shè)計方法和硬件描述語言的關(guān)系。

  • Top_Down的設(shè)計方法是首先從系統(tǒng)設(shè)計入手,從頂層進行功能劃分和結(jié)構(gòu)設(shè)計。系統(tǒng)的總仿真時頂層進行功能劃分的總要環(huán)節(jié),而該過程需要采用硬件描述語言的方法。

12、System Verilog 與Verilog有什么關(guān)系?適用于何種設(shè)計?

  • Verilog適合系統(tǒng)級( system)、算法級(alogrithem)、寄存器傳輸級(RTL)、邏輯級(logic)、門級(gate)、電路開關(guān)級(switch)設(shè)計。

  • 而SystemVerilog 是Verilog語言的擴展和延伸,更適用于可重用的可綜合IP和可重用的驗證用IP設(shè)計,以及特大型(千萬門級以上)基于IP的系統(tǒng)級設(shè)計和驗證。

02、第2章Verilog語法的基本概念

1、Verilog語言有什么作用?

Verilog HDL是一種用于數(shù)字系統(tǒng)設(shè)計的語言。用Verilog HDL描述的電路設(shè)計就是該電路的Verilog HDL模型,也稱為模塊。Verilog HDL既是一種行為描述的語言也是一種結(jié)構(gòu)描述的語言。這就是說,無論描述電路功能行為的模塊或描述元器件或較大部件互聯(lián)的模塊都可以用Verilog 語言來建立電路模型。如果按照一定的規(guī)則和風(fēng)格編寫,功能行為模塊可以通過工具自動地轉(zhuǎn)換為門級互聯(lián)的結(jié)構(gòu)模塊。Verilog模型可以是實際電路的不同級別的抽象。這些抽象的級別和它們所對應(yīng)的模型類型共有以下5種,現(xiàn)分別給以簡述。

  • (1)系統(tǒng)級(system-level):用語言提供的高級結(jié)構(gòu)能夠?qū)崿F(xiàn)待設(shè)計模塊的外部性能的模型。

  • (2)算法級( algorithm-level):用語言提供的高級結(jié)構(gòu)能夠?qū)崿F(xiàn)算法運行的模型。

  • (3)RTL級(register transfer level):描述數(shù)據(jù)在寄存器之間的流動和如何處理、控制這些數(shù)據(jù)流動的模型。

    以上三種都屬于行為描述,只有RTL級才有與邏輯電路有明確的對應(yīng)關(guān)系。

  • (4)門級(gate-level):描述邏輯門以及邏輯門之間連接的模型。

    與邏輯電路有確定的連接關(guān)系,以上4種數(shù)字系統(tǒng)設(shè)計工程師必須掌握。

  • (5)開關(guān)級(switch-level):描述器件中三極管和儲存節(jié)點以及它們之間連接的模型。

這與具體的物理電路有對應(yīng)關(guān)系,工藝庫元件和宏部件設(shè)計人員必須掌握,將在高級教程中介紹。

一個復(fù)雜電路系統(tǒng)的完整Verilog HDL模型是由若干個Verilog HDL模塊構(gòu)成的,每一個模塊又可以由若干個子模塊構(gòu)成。其中有些模塊需要綜合成具體電路,而有些模塊只是與用戶所設(shè)計的模塊有交互聯(lián)系的現(xiàn)存電路或激勵信號源。利用Verilog HDL語言結(jié)構(gòu)所提供的這種功能就可以構(gòu)造一個模塊間的清晰層次結(jié)構(gòu),以此來描述極其復(fù)雜的大型設(shè)計,并對所作設(shè)計的邏輯電路進行嚴(yán)格的驗證。

Verilog HDL行為描述語言作為一種結(jié)構(gòu)化和過程性的語言,其語法結(jié)構(gòu)非常適合于算法級和RTL級的模型設(shè)計。這種行為描述語言具有以下功能:

  • 可描述順序執(zhí)行或并行執(zhí)行的程序結(jié)構(gòu);
  • 用延遲表達式或事件表達式來明確地控制過程的啟動時間;
  • 通過命名的事件來觸發(fā)其他過程里的激活行為或停止行為;
  • 提供了條件如 if-else,case等循環(huán)程序結(jié)構(gòu);
  • 提供了可帶參數(shù)且非零延續(xù)時間的任務(wù)(task)程序結(jié)構(gòu);
  • 提供了可定義新的操作符的函數(shù)結(jié)構(gòu)(function);
  • 提供了用于建立表達式的算術(shù)運算符、邏輯運算符、位運算符;
  • Verilog HDL語言作為一種結(jié)構(gòu)化的語言非常適用于門級和開關(guān)級的模型設(shè)計。因其結(jié)構(gòu)化的特點又使它具有以下功能:
    • 提供了一套完整的表示組合邏輯的基本元件的原語(primitive) ;
    • 提供了雙向通路(總線)和電阻器件的原語;
    • 可建立MOS器件的電荷分享和電荷衰減動態(tài)模型。

Verilog HDL的構(gòu)造性語句可以精確地建立信號的模型。這是因為在 Verilog HDL中,提供了延遲和輸出強度的原語來建立精確程度很高的信號模型。信號值可以有不同的強度,可以通過設(shè)定寬范圍的模糊值來降低不確定條件的影響。

Verilog HDL作為一種高級的硬件描述編程語言,與C語言的風(fēng)格有許多類似之處。其中有許多語句,如 if語句,case語句和C語言中的對應(yīng)語句十分相似。

2、構(gòu)成模塊的關(guān)鍵詞是什么?

module

endmodule

3、為什么說可以用Verilog構(gòu)成非常復(fù)雜的電路結(jié)構(gòu)?

  • 因為Verilog可描述順序執(zhí)行和并行執(zhí)行的程序結(jié)構(gòu);
  • 用延遲表達式或事件表達式來明確的控制過程的啟動時間;
  • 通過命名的事件來觸發(fā)其它過程里的激活行為或停止行為;
  • 提供了條件如if-else,case等循環(huán)程序結(jié)構(gòu);
  • 提供了可帶參數(shù)且非零延續(xù)時間的任務(wù)程序結(jié)構(gòu);
  • 提供了可定義新的操作符的函數(shù)結(jié)構(gòu);
  • 提供了用于建立表達式的算術(shù)運算符、邏輯運算符、位運算符;
  • Verilog HDL語言作為一種結(jié)構(gòu)化的語言非常適用于門級和開關(guān)級的模型設(shè)計;
  • 提供了一套完整的表示組合邏輯的基本元件的原話(primitive);
  • 提供了雙向通路(總線)和電阻器件的原語;
  • 可建立MOS器件的電荷分享和電荷衰減動態(tài)模型;
  • Verilog HDL的構(gòu)造性語句可以精確地建立信號的模型;

4、為什么可以用比較抽象的描述來設(shè)計具體的電路結(jié)構(gòu)?

因為有可以用比較抽象描述設(shè)計電路結(jié)構(gòu)的語言,而這種語言是適合數(shù)字系統(tǒng)設(shè)計的語言。

5、任意抽象的符合語法的 Verilog模塊是否都可以通過綜合工具轉(zhuǎn)變?yōu)殡娐方Y(jié)構(gòu)?

不能;

要符合語法,還要符合一些基本規(guī)則的Verilog模塊才可以通過綜合工具轉(zhuǎn)變?yōu)殡娐方Y(jié)構(gòu)。

6、什么叫綜合?

在編寫Verilog模塊時,不但符合語法,還符合一些基本規(guī)則,就可以通過計算機上的綜合工具把行為級描述的模塊通過邏輯網(wǎng)表自動轉(zhuǎn)化為門級形式的模塊叫綜合。

7、綜合是由什么工具來完成的?

由EDA工具來完成綜合。

8、通過綜合產(chǎn)生的是什么?產(chǎn)生的結(jié)果有什么用處?

產(chǎn)生的是由與門,或門和非門組成的加法器、比較器和三態(tài)門等組合邏輯。

產(chǎn)生的模塊很容易與某種工藝的基本元件逐一對應(yīng)起來,再通過布局布線工具自動地轉(zhuǎn)變?yōu)槟撤N工具工藝的電路布線結(jié)構(gòu)。

9、仿真是什么?為什么要進行仿真?

仿真是對電路模塊進行動態(tài)的全面測試。

通過觀察測試模塊的輸出信號是否符合要求,可以調(diào)試和驗證邏輯系統(tǒng)的設(shè)計和結(jié)構(gòu)準(zhǔn)確與否,并發(fā)現(xiàn)問題及時修改。

10、仿真可以在幾個層面上進行?每個層面的仿真有什么意義?

分別為前(RTL)仿真、邏輯網(wǎng)表仿真、門級仿真和布線后仿真;

前仿真,邏輯網(wǎng)表仿真,門級仿真可以調(diào)試和驗證邏輯系統(tǒng)的設(shè)計和結(jié)構(gòu)準(zhǔn)確與否,并發(fā)現(xiàn)問題及時修改。

布線后仿真,分析設(shè)計的電路模塊的運行是否正常。

11、模塊的端口是如何描述的?

用 “ . ”表示被引用模塊的端口。

12、在引用實例模塊的時候,如何在主模塊中連接信號線?

小括號中表示本模塊中與之連接的線路。

13、如何產(chǎn)生連續(xù)的周期性測試時鐘?

用always語句來產(chǎn)生連續(xù)的周期性測試模塊。

always #50 clock = ~clock;	//產(chǎn)生一個不斷重復(fù)的周期為100個時鐘單位的時鐘信號clock

14、如果不用initial塊,能否產(chǎn)生測試時鐘?

不能,如果沒有initial塊,就不知道時鐘信號的初始值。

15、從本講的簡單例子,是否能明白always塊與initial塊有什么不同?

initial塊只執(zhí)行一次,而always塊執(zhí)行無數(shù)次。

16、為什么說Verilog可以用來設(shè)計數(shù)字邏輯電路和系統(tǒng)?

  • 因為Verilog可描述順序執(zhí)行和并行執(zhí)行的程序結(jié)構(gòu);
  • 用延遲表達式或事件表達式來明確的控制過程的啟動時間;
  • 通過命名的事件來觸發(fā)其它過程里的激活行為或停止行為;
  • 提供了條件如if-else,case等循環(huán)程序結(jié)構(gòu);
  • 提供了可帶參數(shù)且非零延續(xù)時間的任務(wù)程序結(jié)構(gòu);
  • 提供了可定義新的操作符的函數(shù)結(jié)構(gòu);
  • 提供了用于建立表達式的算術(shù)運算符、邏輯運算符、位運算符;
  • Verilog HDL語言作為一種結(jié)構(gòu)化的語言非常適用于門級和開關(guān)級的模型設(shè)計;
  • 提供了一套完整的表示組合邏輯的基本元件的原話(primitive);
  • 提供了雙向通路(總線)和電阻器件的原語;
  • 可建立MOS器件的電荷分享和電荷衰減動態(tài)模型;
  • Verilog HDL的構(gòu)造性語句可以精確地建立信號的模型;

03、第3章模塊的結(jié)構(gòu)、數(shù)據(jù)類型、變量和基本運算符號

1、模塊由幾個部分組成?

  • Verilog的基本設(shè)計單元是“模塊”(block)。
  • 一個模塊是由兩部分組成的,一部分描述接口,另一部分描述邏輯功能,即定義輸入是如何影響輸出的。

2、端口分為幾種?

  • 輸入口:input
  • 輸出口:output
  • 輸入\輸出口:inout

3、為什么端口要說明信號的位寬?

  • 因為如果不說明信號的位寬可能會在信號發(fā)生改變時發(fā)生錯誤,不容易看出接收到的信號的數(shù)據(jù)寬度,就很難進行數(shù)據(jù)的處理。

4、能否說模塊相當(dāng)于電路圖中的功能模塊,端口相當(dāng)于功能模塊的引腳?

  • 在許多方面,程序模塊和電路圖符號是一致的,這是因為電路圖符號的引腳也就是程序模塊的接口。而程序模塊描述了電路圖符號所能實現(xiàn)的邏輯功能。

5、模塊中的功能描述可以由哪幾類語句或語句塊組成?它們出現(xiàn)的順序會不會影響功能的描述?

  • 模塊中最重要的部分是邏輯功能定義部分。有以下3種方法可在模塊中產(chǎn)生邏輯。

    • (1)用“assign”聲明語句

      //如:
      
      assign a=b & c;
      
      //這種方法的句法很簡單,只須寫一個“assign”,后面再加一個方程式即可。
      //例中的方程式描述了一個有兩個輸入的與門。
      
    • (2)用實例元件

      //如: 
      and #2 ul( q,a,b );
      //采用實例元件的方法像在電路圖輸入方式下調(diào)入庫元件一樣,鍵入元件的名字和相連的引腳即可。
      //這表示在設(shè)計中用到一個跟與門(and)一樣的名為ul的與門,其輸入端為a,b,輸出為q。
      //輸出延遲為2個單位時間。
      //要求每個實例元件的名字必須是唯一的,以避免與其他調(diào)用與門(and)的實例混淆。
      
    • (3)用“always”塊

      //如:
      always @( posedge clk or posedge clr) begin
      	if(clr)
              q<= 0;
      	else if(en)
              q<= d;
      end
      
  • 采用“assign”語句是描述組合邏輯最常用的方法之一。

  • 而**“always”塊既可用于描述組合邏輯,也可描述時序邏輯。**用“ always”塊的例子生成了一個帶有異步清除端的D觸發(fā)器。“always”塊可用很多種描述手段來表達邏輯,例如上例就用了if…else語句來表達邏輯關(guān)系。如按一定的風(fēng)格來編寫“always”塊,可以通過綜合工具把源代碼自動綜合成用門級結(jié)構(gòu)表示的組合或時序邏輯電路。

  • 上面的3個例子分別采用了“assign”語句、實例元件和“always"塊。這3個例子描述的邏輯功能是同時執(zhí)行的。也就是說,如果把這3項寫到一個Verilog模塊文件中去,它們的順序不會影響實現(xiàn)的功能。這3項是同時執(zhí)行的,也就是并發(fā)的。

  • 然而,在“always”模塊內(nèi),邏輯是按照指定的順序執(zhí)行的?!癮lways”塊中的語句稱為“順序語句”,因為它們是順序執(zhí)行的。所以,**"always”塊也稱為“過程塊”。**請注意,兩個或更多的“always”模塊都是同時執(zhí)行的,而模塊內(nèi)部的語句是順序執(zhí)行的??匆幌隆癮lways”內(nèi)的語句,就會明白它是如何實現(xiàn)功能的。if…else…if必須順序執(zhí)行,否則其功能就沒有任何意義。

6、這幾類描述中哪一種直接與電路結(jié)構(gòu)有關(guān)?

  • 用實例元件直接與電路結(jié)構(gòu)有關(guān)。
  • 采用實例元件的方法像在電路圖輸入方式下調(diào)入庫元件一樣,鍵入元件的名字和相連的引腳即可。

7、最基本的Verilog變量有幾種類型?

  • wire型

    wire型數(shù)據(jù)常用來表示用以 assign關(guān)鍵字指定的組合邏輯信號。Verilog程序模塊中輸入、輸出信號類型默認(rèn)時自動定義為wire型。wire型信號可以用做任何方程式的輸入,也可以用做“assign”語句或?qū)嵗妮敵觥?/p>

  • reg型

    寄存器是數(shù)據(jù)儲存單元的抽象,寄存器數(shù)據(jù)類型的關(guān)鍵字是reg。reg類型數(shù)據(jù)的默認(rèn)初始值為不定值x。reg型數(shù)據(jù)常用來表示“always”模塊內(nèi)的指定信號,常代表觸發(fā)器。在“always”模塊內(nèi)被賦值的每一個信號都必須定義成reg型。

  • memory型

    Verilog HDL通過對reg型變量建立數(shù)組來對存儲器建模,可以描述RAM型存儲器、ROM存儲器和 reg文件。數(shù)組中的每一個單元通過一個數(shù)組索引進行尋址。在Verilog語言中沒有多維數(shù)組存在。memory型數(shù)據(jù)是通過擴展reg型數(shù)據(jù)的地址范圍來生成的。其格式如下:

    reg	[n一1:0]	存儲器名	[m―1:0]	;
    //或
    reg	[n―1:0]	存儲器名	[m: 1]	;
    
    //在這里,reg[n一1:0]定義了存儲器中每一個存儲單元的大小,即該存儲單元是一個n位的寄存器;
    //存儲器名后的[m—1:0]或[m:1]則定義了該存儲器中有多少個這樣的寄存器。
    //下面舉例說明:
    reg	[7:0]	mema	[255:0]	;
    //這個例子定義了一個名為mema的存儲器,該存儲器有256個8位的存儲器。該存儲器的地址范圍是0到255。
    

8、reg型和 wire型變量的差別是什么?

  • reg型變量是寄存器變量,wire型變量是連線型變量。
  • 兩者根本性的差別在于reg型變量有個寄存器來存放變量,這個值只有變量發(fā)生改變時才會改變,否則保證原來的值不變,wire型變量的值不是確定的值。
  • 網(wǎng)絡(luò)數(shù)據(jù)類型表示結(jié)構(gòu)實體(例如門)之間的物理連接。網(wǎng)絡(luò)類型的變量不能儲存值,而且它必須受到驅(qū)動器(例如門或連續(xù)賦值語句assign)的驅(qū)動。如果沒有驅(qū)動器連接到網(wǎng)絡(luò)類型的變量上,則該變量就是高阻的,即其值為z。常用的網(wǎng)絡(luò)數(shù)據(jù)類型包括wire型和 tri型。

9、由連續(xù)賦值語句( assign)賦值的變量能否是reg類型的?

  • 可以是reg類型的變量。

10、在 always模塊中被賦值的變量能否是 wire類型的?如果不能是 wire類型,那么必須是什么類型的?它們表示的一定是實際的寄存器嗎?

  • 不能。
  • 必須是reg類型的變量,它們表示的不一定是實際的寄存器。

11、參數(shù)類型的變量有什么用處?

  • 在Verilog HDL中用parameter定義常量,即用parameter來定義一個標(biāo)識符代表一個常量,稱為符號常量,即標(biāo)識符形式的常量,
  • 采用標(biāo)識符代表一個常量可提高程序的可讀性和可維護性。

12、Verilog語法規(guī)定的參數(shù)傳遞和重新定義功能有什么直接的應(yīng)用價值?

  • 可以用于定義延遲時間和變量寬度。

13、邏輯比較運算符小于等于 “<=” 和非阻塞賦值大于等于 “<=” 的表示是完全一樣的,為什么Verilog在語句解釋和編譯時不會搞錯?

  • 因為邏輯比較時“<=”兩邊是兩個操作數(shù),此時“<=”是雙目運算符;
  • 而在非阻塞賦值時“<=”的右邊是操作數(shù),此時“<=”是單目運算符。

14、是否可以說實例引用的描述實際上就是嚴(yán)格意義上的電路結(jié)構(gòu)描述?

  • 不能,實例引用的描述是在門級電路上加以描述的,和嚴(yán)格意義上的電路結(jié)構(gòu)描述還是有點差距的。

04、第4章運算符、賦值語句和結(jié)構(gòu)說明語句

1、邏輯運算符與按位邏輯運算符有什么不同,它們各在什么場合使用?

  • 邏輯運算符(&&與、||或、!非)運算時是兩個操作數(shù)進行邏輯運算,返回結(jié)果為真或假。多用于條件的判斷;
  • 按位邏輯運算符是兩個操作數(shù)對應(yīng)的每一位進行邏輯運算。按位邏輯運算符用于信號的運算和檢測。

2、指出兩種邏輯等式運算符的不同點,解釋書上的真值表。

  • == 和 != 又稱為邏輯等式運算符,其結(jié)果由兩個操作數(shù)的值決定。由于操作數(shù)中某些位可能是不定值x和高阻值z,結(jié)果可能為不定值x。== 的真值表如下。

    == 0 1 x z
    0 1 0 x x
    1 0 1 x x
    x x x x x
    z x x x x
  • 而 === 和 !== 運算符則不同,它在對操作數(shù)進行比較時對某些位的不定值 x 和高阻值 z 也進行比較,兩個操作數(shù)必須完全一致,其結(jié)果才是1,否則為0。 === 和 !== 運算符常用于case表達式的判別,所以又稱為“case等式運算符”。=== 的真值表如下。

    === 0 1 x z
    0 1 0 0 0
    1 0 1 0 0
    x 0 0 1 0
    z 0 0 0 1

3、拼接符的作用是什么?為什么說合理地使用拼接符可以提高程序的可讀性和可維護性?拼接符表示的操作其物理意義是什么?

  • 位拼接運算符(Concatation){}:可以把兩個或多個信號的某些位拼接起來進行運算操作;
  • 因為借助拼接符可以用一個符號名來表示由多位信號組成的復(fù)雜信號;
  • 其物理意義是將多個信號結(jié)合成一個信號。

4、如果都不帶時間延遲,阻塞和非阻塞賦值有什么不同?舉例說明它們的不同點?

  • 阻塞和非阻塞賦值的區(qū)別在于阻塞是順序執(zhí)行而非阻塞是并行執(zhí)行。

  • 非阻塞賦值:

    always @(posedge clk) begin
    	b <= a;
    	c <= b;
    end
    //定義了兩個reg型信號b和c,clk信號的上升沿到來時,b就等于a,c就等于b。
    //非阻塞賦值b<=a;c<=b;兩條語句是同時執(zhí)行的。
    

    賦值是在“always”塊結(jié)束后執(zhí)行的,c應(yīng)為原來b的值,這里用到了兩個觸發(fā)器,這個“always”塊實際描述的電路功能如圖所示。

Verilog數(shù)字系統(tǒng)設(shè)計(夏宇聞)—課后思考題記錄(上)

  • 阻塞賦值:

    always @(posedge clk) begin
    	b = a;
    	c = b;
    end
    //阻塞賦值b=a;c=b;兩條語句先執(zhí)行b=a后執(zhí)行c=b,最終的結(jié)果是c = a。
    

    阻塞賦值方式:clk信號的上升沿到來時,b馬上取 a的值,c馬上取b的值(即等于a) ,生成的電路如圖所示,只用了一個觸發(fā)器來寄存a的值,又輸出給b和c。

    Verilog數(shù)字系統(tǒng)設(shè)計(夏宇聞)—課后思考題記錄(上)

5、舉例說明順序塊和并行塊的不同。

  • 塊語句通常用來將兩條或多條語句組合在一起,使其在格式上看更像一條語句。塊語句有兩種:
    • 一種是 begin_end 語句,通常用來標(biāo)識順序執(zhí)行的語句,用它來標(biāo)識的塊稱為順序塊;
    • 另一種是 fork_join語句,通常用來標(biāo)識并行執(zhí)行的語句,用它來標(biāo)識的塊稱為并行塊。
  • 下面兩個塊執(zhí)行起來效果是完全一樣的,第一個模塊是按順序執(zhí)行,而第二個模塊是每個語句同時執(zhí)行的。
//順序塊
parameter d =50;
reg [7:0] r;
begin
	#d r = 'h35;
	#d r = 'hE2;
	#d r = 'h00;
	#d r = 'hF7;
	#d r -> end_wave;//觸發(fā)事件end——wave
end
//并行塊
reg [7:0] r;
fork
	#50 r = 'h35;
	#100 r = 'hE2;
	#150 r = 'h00;
	#200 r = 'hF7;
	#250 r -> end_wave;//觸發(fā)事件end——wave
join

6、如果在順序塊中,前面有一條語句是無限循環(huán),下面的語句能否進行?

  • 下面的語句不能執(zhí)行。

7、如果在并行塊中,發(fā)生上述情況,會如何呢?文章來源地址http://www.zghlxwxcb.cn/news/detail-412102.html

  • 下面的語句可以執(zhí)行。

05、第5章條件語句、循環(huán)語句、塊語句與生成語句

06、第6章結(jié)構(gòu)語句、系統(tǒng)任務(wù)、函數(shù)語句和顯示系統(tǒng)任務(wù)

07、第7章調(diào)試用系統(tǒng)任務(wù)和常用編譯預(yù)處理語句

08、第8章語法概念總復(fù)習(xí)練習(xí)

到了這里,關(guān)于Verilog數(shù)字系統(tǒng)設(shè)計(夏宇聞)—課后思考題記錄(上)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • verilog數(shù)字系統(tǒng)設(shè)計教程(夏聞宇)|第一章-第六章

    verilog數(shù)字系統(tǒng)設(shè)計教程(夏聞宇)|第一章-第六章

    早聽聞此書大名,雖然有些verilog的編程經(jīng)驗,今天來系統(tǒng)的學(xué)習(xí)下verilog,完善知識體系,提升編程能力。本文章只當(dāng)自己做筆記使用,記錄自己沒掌握的重難點,和大家一起學(xué)習(xí)。 目錄 第一章? 第二章 verilog語法 第三章 模塊的結(jié)構(gòu)、數(shù)據(jù)類型、變量和基本運算符號 1.常量

    2024年03月18日
    瀏覽(23)
  • 數(shù)字系統(tǒng)設(shè)計實驗七(完結(jié)):verilog實現(xiàn)簡易飲料販?zhǔn)蹤C

    數(shù)字系統(tǒng)設(shè)計實驗七(完結(jié)):verilog實現(xiàn)簡易飲料販?zhǔn)蹤C

    1.問題重述: 自動售飲料機是一個典型的利用狀態(tài)機進行電路設(shè)計的例子。要求采用有限狀態(tài)機設(shè)計,使用case語句來描述各個狀態(tài)之間的轉(zhuǎn)移關(guān)系。假定每瓶飲料售價為2.5元,可使用 2 種硬市,即5角(half_dollar)、1元(one_dollar),機器有找零功能。下圖是該自動售飲料機的示

    2024年02月08日
    瀏覽(25)
  • Verilog數(shù)字系統(tǒng)設(shè)計——10進制計數(shù)器,具有異步復(fù)位功能

    Verilog數(shù)字系統(tǒng)設(shè)計——10進制計數(shù)器,具有異步復(fù)位功能

    編程實現(xiàn)10進制計數(shù)器,具有異步復(fù)位功能,十位和個位用8421BCD碼表示,各端口定義如下圖所示: 仔細考慮端口定義中每個端口的含義; 要求完成程序編輯、編譯、時序仿真; 實驗提交Verilog設(shè)計文件(.v文件)、仿真波形截圖以及對于第3個步驟所提出問題的回答,文件打包

    2024年02月11日
    瀏覽(19)
  • 數(shù)字電路思考題匯總

    數(shù)字邏輯在電路中如何實現(xiàn)?邏輯電平與電壓值有什么關(guān)系? 數(shù)字邏輯在電路中是通過開關(guān)的開閉或者電平高低來實現(xiàn)。而邏輯電平是對應(yīng)一定范圍的電壓值;如在課本中舉例的 CMOS器件:0 - 1.5V對應(yīng)低電平,3.5 - 5V對應(yīng)高電平。 問題1: 邏輯函數(shù)的表示方法都有哪些? 1、邏

    2024年02月06日
    瀏覽(18)
  • 基于FPGA的數(shù)字電子琴——數(shù)電小系統(tǒng)設(shè)計【數(shù)字電子技術(shù)】(使用Vivado中的verilog語言)含piano代碼文件(全)

    基于FPGA的數(shù)字電子琴——數(shù)電小系統(tǒng)設(shè)計【數(shù)字電子技術(shù)】(使用Vivado中的verilog語言)含piano代碼文件(全)

    目錄 一、電路功能描述 二、方案設(shè)計 1. 總體設(shè)計方案 2. 對原理框圖或程序流程圖做出簡單解釋 3. 各模塊介紹 3.1 音頻驅(qū)動模塊 3.2 LED顯示模塊 3.3 數(shù)碼管顯示模塊 3.4 矩陣鍵盤模塊 3.5 PS2機械鍵盤模塊 3.6 時鐘分頻模塊 3.7 曲譜生成模塊 三、總結(jié) 數(shù)碼管和LED顯示模塊 矩陣鍵盤

    2024年02月06日
    瀏覽(27)
  • Verilog設(shè)計數(shù)字時鐘

    Verilog設(shè)計數(shù)字時鐘

    目錄 一、設(shè)計要求 二、模塊總和 三、模塊設(shè)計 1.頂層模塊 2.秒分頻模塊 3.秒計數(shù)模塊 4.分鐘分頻模塊 5.分鐘計數(shù)模塊 6.小時分頻模塊 7.小時計數(shù)模塊 8.數(shù)據(jù)分配數(shù)碼管模塊 9.數(shù)碼管顯示模塊 10.管腳約束代碼 四、引腳分配 1.利用 NEXYS4 DDR 開發(fā)板設(shè)計一款數(shù)字時鐘,能夠正確

    2024年02月06日
    瀏覽(23)
  • 數(shù)字集成電路設(shè)計(四、Verilog HDL數(shù)字邏輯設(shè)計方法)(二)

    數(shù)字集成電路設(shè)計(四、Verilog HDL數(shù)字邏輯設(shè)計方法)(二)

    所有的是時序邏輯電路都可以拆成組合邏輯電路+存儲 (關(guān)于組合邏輯電路的理解可以參考我數(shù)電的博客https://blog.csdn.net/y_u_yu_yu_/article/details/127592466) 可以分成兩個部分,組合邏輯電路和存儲電路。組合邏輯電路的輸入一個是x信號一個是當(dāng)前的狀態(tài),這兩個信號決定了組合

    2024年02月06日
    瀏覽(128)
  • Verilog學(xué)習(xí)筆記(3):Verilog數(shù)字邏輯電路設(shè)計方法

    Verilog學(xué)習(xí)筆記(3):Verilog數(shù)字邏輯電路設(shè)計方法

    例:用Verilog設(shè)計模256(8bits)計數(shù)器 (a)可綜合程序描述方式 (b)常見的錯誤描述方式 同時Verilog的電路描述方式具有多樣性,這也決定了對于電路設(shè)計的多樣性。 例:用Verilog設(shè)計數(shù)字多路選擇器 (a)采用真值表形式的代碼 (b)采用邏輯表達式形式的代碼 (c)采用結(jié)

    2023年04月08日
    瀏覽(34)
  • 【verilog】多功能數(shù)字鐘的設(shè)計

    【verilog】多功能數(shù)字鐘的設(shè)計

    掌握數(shù)字鐘的工作原理。 掌握計數(shù)器級聯(lián)構(gòu)成更大模值計數(shù)器的方法。? 能用verilog描述簡單的時序邏輯電路。 ????????多功能數(shù)字鐘應(yīng)該具有的基本功能有:顯示時-分-秒、整點報時、小時和分鐘可調(diào)等。首先要知道鐘表的工作機理,整個鐘表的工作應(yīng)該是在1Hz信號的

    2024年02月04日
    瀏覽(32)
  • 數(shù)字電路EDA綜合設(shè)計verilog筆記(持續(xù)更新)

    數(shù)字電路EDA綜合設(shè)計verilog筆記(持續(xù)更新)

    目錄 1、常用組合電路模塊的設(shè)計 1、基本門電路(常用3種描述方法) 2、譯碼器與編碼器 (1)譯碼器(decoder) (2)編碼器(encoder) 2、常用時序電路模塊的設(shè)計 1、D觸發(fā)器 2、數(shù)據(jù)鎖存器 3、實用電路設(shè)計 1、基本門電路 2、譯碼器與編碼器 3、數(shù)據(jù)選擇器 4、奇偶校驗產(chǎn)生器

    2024年02月09日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包