




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、2021年11月26日1西安理工大學(xué)電子工程西安理工大學(xué)電子工程系系2021年11月26日2HDL的來歷lHDL是是“硬件描述語言硬件描述語言”Hardware Description Language的縮寫的縮寫(不是不是“硬件設(shè)計語言硬件設(shè)計語言”Hardware Design Language的縮寫的縮寫)。lVHDL(VHSIC HDL) 1980年開始在美國國防部年開始在美國國防部Department of Defense (DOD) VHSIC (Very High Speed Integration Circuit)計劃的指計劃的指導(dǎo)下開發(fā),完成于導(dǎo)下開發(fā),完成于1983年,年,
2、1987 VHDL成為標(biāo)準,成為標(biāo)準,IEEE1076-1987。 美國國防部要求所有的電子設(shè)計使用美國國防部要求所有的電子設(shè)計使用VHDL描述,并決定描述,并決定在在YF-22戰(zhàn)斗機項目中使用戰(zhàn)斗機項目中使用VHDL。2021年11月26日3HDL的來歷lVerilog HDL Verilog HDL是在是在1983年由年由Gateway Design Automation 公司的公司的Phil Moorby首創(chuàng)的。首創(chuàng)的。 在在1984-1985年,年,Moorby設(shè)計出了第一個關(guān)于設(shè)計出了第一個關(guān)于Verilog-XL的的仿真器。仿真器。 1986年,他對年,他對Verilog HDL的
3、發(fā)展又作出了另一個巨大貢獻:的發(fā)展又作出了另一個巨大貢獻:即提出了用于快速門級仿真的即提出了用于快速門級仿真的XL算法。算法。 1989年,年,Cadence公司收購了公司收購了GDA公司,公司,Verilog HDL語言語言成為成為Cadence公司的私有財產(chǎn)。公司的私有財產(chǎn)。 1990年,年,Cadence公司決定公開公司決定公開Verilog HDL語言,于是成語言,于是成立了立了OVI(Open Verilog International)組織來負責(zé)組織來負責(zé)Verilog HDL語言的發(fā)展。語言的發(fā)展。 基于基于Verilog HDL的優(yōu)越性,的優(yōu)越性,IEEE于于1995年制定了年
4、制定了Verilog HDL的的IEEE標(biāo)準,即標(biāo)準,即Verilog HDL1364-1995。 2021年11月26日4HDL的來歷2021年11月26日5Verilog HDL和VHDL的比較l共同特點:共同特點: 能形式化地抽象表示電路的結(jié)構(gòu)和行為;能形式化地抽象表示電路的結(jié)構(gòu)和行為; 支持邏輯設(shè)計中層次描述;支持邏輯設(shè)計中層次描述; 具有電路仿真與驗證機制;具有電路仿真與驗證機制; 支持電路描述由高層到低層的綜合轉(zhuǎn)換;支持電路描述由高層到低層的綜合轉(zhuǎn)換; 硬件描述與實現(xiàn)工藝無關(guān);硬件描述與實現(xiàn)工藝無關(guān); 便于文檔管理、易于理解和設(shè)計重用。便于文檔管理、易于理解和設(shè)計重用。2021年1
5、1月26日6Verilog HDL和VHDL的比較l不同點:不同點: Verilog HDL擁有更廣泛的設(shè)計群體,擁有更廣泛的設(shè)計群體,成熟的資源也遠比成熟的資源也遠比VHDL豐富。豐富。 Verilog HDL的最大優(yōu)點是的最大優(yōu)點是:它是一種:它是一種非常容易掌握的硬件描述語言,只要非常容易掌握的硬件描述語言,只要有有C語言的編程基礎(chǔ),通過二十學(xué)時語言的編程基礎(chǔ),通過二十學(xué)時的學(xué)習(xí),再加上一段實際操作,一般的學(xué)習(xí),再加上一段實際操作,一般可在二至三個月內(nèi)掌握這種設(shè)計技術(shù)。可在二至三個月內(nèi)掌握這種設(shè)計技術(shù)。 Verilog HDL和和VHDL在行為級抽象建在行為級抽象建模的覆蓋范圍方面也有所
6、不同。一般模的覆蓋范圍方面也有所不同。一般認為認為Verilog HDL在系統(tǒng)級抽象方面比在系統(tǒng)級抽象方面比VHDL略差一些,而在門級開關(guān)電路略差一些,而在門級開關(guān)電路描述方面比描述方面比VHDL強得多。強得多。2021年11月26日7Verilog HDL和VHDL的比較l一個有趣的現(xiàn)象一個有趣的現(xiàn)象:由于由于Verilog HDL在其門級描述的底層,也就在其門級描述的底層,也就是在晶體管開關(guān)的描述方面比是在晶體管開關(guān)的描述方面比VHDL有強得多得功能,所以即使有強得多得功能,所以即使是是VHDL的設(shè)計環(huán)境,在底層往往上也是由的設(shè)計環(huán)境,在底層往往上也是由Verilog HDL描述的描述的器
7、件庫所支持的。器件庫所支持的。 Cadence開發(fā)了開發(fā)了Verilog HDL和和SDF,其領(lǐng)導(dǎo)開發(fā)的,其領(lǐng)導(dǎo)開發(fā)的ASIC的的庫元素的庫元素的Verilog HDL模型高效、仿真速度快;工具廠商在模型高效、仿真速度快;工具廠商在開發(fā)開發(fā)ASIC庫元素的高效庫元素的高效VHDL模型上速度較慢。模型上速度較慢。 VITAL:庫元素的庫元素的VHDL模型生成標(biāo)準模型生成標(biāo)準。IEEE成立成立VHDL Initiative Towards ASIC Libarary( VITAL)委員會,利用)委員會,利用現(xiàn)存的模型開發(fā)方法,加速現(xiàn)存的模型開發(fā)方法,加速VHDL的的ASIC單元仿真庫的開發(fā)。單元仿
8、真庫的開發(fā)。形成了一套標(biāo)準化的形成了一套標(biāo)準化的VHDL ASIC單元模型產(chǎn)生技術(shù),由兩個單元模型產(chǎn)生技術(shù),由兩個IEEE包支持:包支持:VITAL_timing和和VITAL_primitive。IEEE 1076.41995。(。(2000 年做了修訂:年做了修訂:IEEE 1076.4 2000)2021年11月26日8Verilog HDL的應(yīng)用lVerilog HDL是專門為復(fù)雜數(shù)字邏輯電路和系統(tǒng)的設(shè)計仿是專門為復(fù)雜數(shù)字邏輯電路和系統(tǒng)的設(shè)計仿真而開發(fā)的,本身就非常適合復(fù)雜數(shù)字邏輯電路和系統(tǒng)真而開發(fā)的,本身就非常適合復(fù)雜數(shù)字邏輯電路和系統(tǒng)的仿真和綜合。的仿真和綜合。lVerilog H
9、DL較為適合系統(tǒng)級較為適合系統(tǒng)級(System)、算法級、算法級(Alogrithem)、寄存器傳輸級、寄存器傳輸級(RTL)、邏輯級、邏輯級(Logic)、門、門級級(Gate)、電路開關(guān)級、電路開關(guān)級(Switch)設(shè)計。設(shè)計。l而對于特大型(幾百萬門級以上)的系統(tǒng)級而對于特大型(幾百萬門級以上)的系統(tǒng)級(System)設(shè)設(shè)計計,則則VHDL更為適合。更為適合。l2001年年3月,月,Verilog HDL IEEE13642001標(biāo)準公布,標(biāo)準公布, Verilog HDL語言在綜合和仿真性能方面都有大幅度的提語言在綜合和仿真性能方面都有大幅度的提升。升。2021年11月26日9Veri
10、log HDL的應(yīng)用l在美國,高層邏輯電路設(shè)計領(lǐng)域在美國,高層邏輯電路設(shè)計領(lǐng)域Verilog HDL和和VHDL的應(yīng)用比率是的應(yīng)用比率是80和和20;l日本和臺灣省與美國相同。日本和臺灣省與美國相同。l歐洲歐洲VHDL發(fā)展比較好。發(fā)展比較好。l國內(nèi)大多數(shù)集成電路設(shè)計公司都采用國內(nèi)大多數(shù)集成電路設(shè)計公司都采用Verilog HDL。2021年11月26日10Verilog HDL的應(yīng)用lVerilogVerilog HDL HDL作為一種高級的硬件描述編程語言,作為一種高級的硬件描述編程語言,有有著類似著類似C C語言的風(fēng)格語言的風(fēng)格。其中有許多語句如:。其中有許多語句如:ifif語句、語句、c
11、asecase語句等和語句等和C C語言中的對應(yīng)語句十分相似。語言中的對應(yīng)語句十分相似。l如果已經(jīng)掌握如果已經(jīng)掌握C C語言編程的基礎(chǔ),那么學(xué)習(xí)語言編程的基礎(chǔ),那么學(xué)習(xí) VerilogVerilog HDLHDL并不困難并不困難,只要對,只要對VerilogVerilog HDL HDL某些語句的特殊方某些語句的特殊方面著重理解,并加強上機練習(xí)就能很好地掌握它。面著重理解,并加強上機練習(xí)就能很好地掌握它。VerilogVerilog HDL HDL與與 C C 語言根本的區(qū)別:語言根本的區(qū)別:- - 并行性并行性- - 塊的含義:塊的含義:initialinitial塊塊 和和 alwaysa
12、lways塊塊 兩種賦值語句:阻塞賦值兩種賦值語句:阻塞賦值 “ “ = ” = ” 非阻塞賦值非阻塞賦值 “ “ = ”= ”2021年11月26日11Verilog HDL設(shè)計復(fù)雜數(shù)字電路的優(yōu)點l傳統(tǒng)的設(shè)計方法傳統(tǒng)的設(shè)計方法: - 查用器件手冊;查用器件手冊; - 選用合適的微處理器和電路芯片;選用合適的微處理器和電路芯片; - 設(shè)計面包板和線路板;設(shè)計面包板和線路板; - 調(diào)試;調(diào)試; - 定型;定型; - 設(shè)計復(fù)雜的系統(tǒng)(幾十萬門以上)極其困難。設(shè)計復(fù)雜的系統(tǒng)(幾十萬門以上)極其困難。2021年11月26日12Verilog HDL設(shè)計復(fù)雜數(shù)字電路的優(yōu)點傳統(tǒng)的設(shè)計方法2021年11月2
13、6日13Verilog HDL設(shè)計復(fù)雜數(shù)字電路的優(yōu)點lVerilog HDL設(shè)計法設(shè)計法采用采用Verilog HDL設(shè)計電路的邏輯功能容易理解;設(shè)計電路的邏輯功能容易理解;便于利用便于利用EDA工具對邏輯進行分析處理;工具對邏輯進行分析處理;把邏輯設(shè)計與具體電路的實現(xiàn)分成兩個獨立的階段來操作;把邏輯設(shè)計與具體電路的實現(xiàn)分成兩個獨立的階段來操作;邏輯設(shè)計與實現(xiàn)的工藝無關(guān);邏輯設(shè)計與實現(xiàn)的工藝無關(guān);邏輯設(shè)計的資源積累可以重復(fù)利用;邏輯設(shè)計的資源積累可以重復(fù)利用;可以由多人共同更好更快地設(shè)計非常復(fù)雜的邏輯電路(幾十可以由多人共同更好更快地設(shè)計非常復(fù)雜的邏輯電路(幾十萬門以上的邏輯系統(tǒng))。萬門以上的
14、邏輯系統(tǒng))。2021年11月26日14Verilog HDL設(shè)計復(fù)雜數(shù)字電路的優(yōu)點硬件描述語自身就是設(shè)計規(guī)格書。硬件描述語自身就是設(shè)計規(guī)格書??梢栽谠O(shè)計初期發(fā)現(xiàn)錯誤??梢栽谠O(shè)計初期發(fā)現(xiàn)錯誤??梢赃M行仿真。而且,仿真可以在電路系統(tǒng)不同的可以進行仿真。而且,仿真可以在電路系統(tǒng)不同的層次進層次進 行。行??梢灾苯幼鳛檫壿嬀C合的輸入數(shù)據(jù)??梢灾苯幼鳛檫壿嬀C合的輸入數(shù)據(jù)。設(shè)計的文檔化。設(shè)計的文檔化。2021年11月26日15Verilog HDL設(shè)計復(fù)雜數(shù)字電路的優(yōu)點l軟核、固核和硬核軟核、固核和硬核IP(Intellectual Property)就是常說的知識產(chǎn)權(quán)。美國)就是常說的知識產(chǎn)權(quán)。美國Da
15、taquest咨詢公司將半導(dǎo)體產(chǎn)業(yè)的咨詢公司將半導(dǎo)體產(chǎn)業(yè)的IP定義為定義為:用于用于 ASIC、ASSP和和PLD等當(dāng)中,并且是預(yù)先設(shè)計好的電路模塊。等當(dāng)中,并且是預(yù)先設(shè)計好的電路模塊。IP核模塊有核模塊有行為(行為(Behavior)、結(jié)構(gòu)()、結(jié)構(gòu)(Structure)和物理)和物理 (Physical)三級不同程度的設(shè)計,對應(yīng)描述功能行為的不同三級不同程度的設(shè)計,對應(yīng)描述功能行為的不同分為三類,即分為三類,即軟核軟核(Soft IP Core)、完成結(jié)構(gòu)描述的)、完成結(jié)構(gòu)描述的固核固核 (Firm IP Core)和基于物理描述并經(jīng)過工藝驗證的)和基于物理描述并經(jīng)過工藝驗證的硬核硬核(H
16、ard IP Core)。)。2021年11月26日16Verilog HDL設(shè)計復(fù)雜數(shù)字電路的優(yōu)點l軟核、固核和硬核軟核、固核和硬核軟核軟核:IP軟核通常是用軟核通常是用 HDL文本文本形式提交給用戶,它經(jīng)過形式提交給用戶,它經(jīng)過RTL級設(shè)計優(yōu)化和功能驗證,但其中不含有任何具體的物理信息。級設(shè)計優(yōu)化和功能驗證,但其中不含有任何具體的物理信息。據(jù)此,用戶可以綜合出正確的門電路級設(shè)計網(wǎng)表,并可以進據(jù)此,用戶可以綜合出正確的門電路級設(shè)計網(wǎng)表,并可以進 行行后續(xù)的結(jié)構(gòu)設(shè)計,具有很大的靈活性,借助于后續(xù)的結(jié)構(gòu)設(shè)計,具有很大的靈活性,借助于EDA綜合工具可綜合工具可以很容易地與其他外部邏輯電路合成一體,
17、根據(jù)各種不同半導(dǎo)以很容易地與其他外部邏輯電路合成一體,根據(jù)各種不同半導(dǎo)體工藝,設(shè)計成具有不同性能的器件。體工藝,設(shè)計成具有不同性能的器件。軟軟IP內(nèi)核也稱為虛擬組件(內(nèi)核也稱為虛擬組件(VC-Virtual Component)。國際上)。國際上有一個叫作有一個叫作虛擬接口聯(lián)盟虛擬接口聯(lián)盟的組織(的組織(Virtual Socket Interface Alliance)來協(xié)調(diào)這方面的工作。)來協(xié)調(diào)這方面的工作。2021年11月26日17Verilog HDL設(shè)計復(fù)雜數(shù)字電路的優(yōu)點l軟核、固核和硬核軟核、固核和硬核硬核硬核:IP硬核是基于半導(dǎo)體工藝的物理設(shè)計,已有固定硬核是基于半導(dǎo)體工藝的物理
18、設(shè)計,已有固定的拓撲布局和具體工藝,并已經(jīng)過工藝驗證,具有可保的拓撲布局和具體工藝,并已經(jīng)過工藝驗證,具有可保證的性能。其提供給用戶的形式是電路物理結(jié)構(gòu)掩模版證的性能。其提供給用戶的形式是電路物理結(jié)構(gòu)掩模版圖和全套工藝文件,是可以拿來就用的全套技術(shù)。圖和全套工藝文件,是可以拿來就用的全套技術(shù)。 固核固核:IP固核的設(shè)計程度則是介于軟核和硬核之間,除固核的設(shè)計程度則是介于軟核和硬核之間,除了完成軟核所有的設(shè)計外,還完成了門級電路綜合和時了完成軟核所有的設(shè)計外,還完成了門級電路綜合和時序仿真等設(shè)計環(huán)節(jié)。一般以序仿真等設(shè)計環(huán)節(jié)。一般以門級電路網(wǎng)表門級電路網(wǎng)表的形式提供給的形式提供給用戶。用戶。在邏輯
19、設(shè)計階段,軟核具有最大的靈活性,它可以很容易地在邏輯設(shè)計階段,軟核具有最大的靈活性,它可以很容易地借助借助EDA綜合工具與其它外部邏輯結(jié)合為一體。相比之下固綜合工具與其它外部邏輯結(jié)合為一體。相比之下固核和硬核與其它外部邏輯結(jié)合為一體的靈活性要差得多,特核和硬核與其它外部邏輯結(jié)合為一體的靈活性要差得多,特別是電路別是電路實現(xiàn)工藝技術(shù)改變時實現(xiàn)工藝技術(shù)改變時更是如此。更是如此。2021年11月26日18Verilog HDL設(shè)計流程l自頂向下自頂向下(Top-Down)設(shè)計設(shè)計2021年11月26日19Verilog HDL設(shè)計流程l設(shè)計流程2021年11月26日20Verilog HDL模塊的基
20、本概念/*一個名為一個名為adder的三位加法器的例子。的三位加法器的例子。 copyright XAUT 2021-11-26 */module adder ( count,sum,a,b,cin ); input 2:0 a,b; /輸入信號定義輸入信號定義 input cin; /輸出信號定義輸出信號定義 output count; /輸出信號定義輸出信號定義 output 2:0 sum; /輸出信號定義輸出信號定義 assign count,sum = a + b + cin; /模塊功能描述模塊功能描述endmodule /2021年11月26日21Verilog HDL模塊的基本
21、概念/*一個名為一個名為compare的比較器的比較器例子。例子。 copyright XAUT 2021-11-26 */module compare ( equal,a,b ); output equal; /聲明輸出信號聲明輸出信號equal input 1:0 a,b; /聲明輸入信號聲明輸入信號a,b /*如果如果a、b 兩個輸入信號相等兩個輸入信號相等,輸出為輸出為1,否則為,否則為0*/ assign equal=(a=b)?)?1:0;endmodule2021年11月26日22Verilog HDL模塊的基本概念2021年11月26日23Verilog HDL模塊的基本概念/
22、*一個模塊調(diào)用(例化)一個模塊調(diào)用(例化)的的例子。例子。 copyright XAUT 2021-11-26 */module trist1(out,in,enable); output out; input in, enable; mytri tri_inst(out,in,enable); /調(diào)用由調(diào)用由mytri模塊定義的實例元件模塊定義的實例元件tri_instendmodulemodule mytri(out,in,enable); output out; input in, enable; assign out = enable? in : bz;endmodule2021年11
23、月26日24Verilog HDL模塊的基本概念lVerilog HDL程序是由程序是由模塊模塊構(gòu)成的。每個模塊的內(nèi)容都是嵌在構(gòu)成的。每個模塊的內(nèi)容都是嵌在module和和endmodule兩個語句之間。每個模塊實現(xiàn)特定的功能。兩個語句之間。每個模塊實現(xiàn)特定的功能。l模塊是可以進行層次嵌套的??梢詫⒋笮偷挠嫹指畛刹煌男∧DK是可以進行層次嵌套的??梢詫⒋笮偷挠嫹指畛刹煌男∧K來實現(xiàn)特定的功能塊來實現(xiàn)特定的功能,最后通過頂層模塊調(diào)用子模塊來實現(xiàn)整體功最后通過頂層模塊調(diào)用子模塊來實現(xiàn)整體功能。能。l每個模塊要進行端口定義每個模塊要進行端口定義,并說明輸入輸出口并說明輸入輸出口,然后對模塊的功能
24、進然后對模塊的功能進行行為邏輯描述。行行為邏輯描述。lVerilog HDL區(qū)分大小寫區(qū)分大小寫。也就是說大小寫不同的標(biāo)識符是不同的。也就是說大小寫不同的標(biāo)識符是不同的。此外,此外,Verilog HDL是自由格式的,即結(jié)構(gòu)可以跨越多行編寫,也是自由格式的,即結(jié)構(gòu)可以跨越多行編寫,也可以在一行內(nèi)編寫。白空(新行、制表符和空格)沒有特殊意義。可以在一行內(nèi)編寫。白空(新行、制表符和空格)沒有特殊意義。l除了除了endmodule語句外語句外,每個語句和數(shù)據(jù)定義的最后必須有分號每個語句和數(shù)據(jù)定義的最后必須有分號。l可以用可以用/*.*/和和/.對對Verilog HDL程序的任何部分作注釋。程序的任
25、何部分作注釋。2021年11月26日25模塊的結(jié)構(gòu)l“模塊模塊”(block)是是Verilog的基本設(shè)計單元的基本設(shè)計單元。l一個模塊是由一個模塊是由兩部分兩部分組成的,組成的,一部分描述接口一部分描述接口,另一部分描述邏輯功能,另一部分描述邏輯功能,即定義輸入是如何影響輸出的。即定義輸入是如何影響輸出的。 module block (a,b,c,d); input a,b; output c,d; assign c= a | b ; assign d= a & b; endmodulel程序模塊和電路圖符號是一致的,電路圖符號的引腳也就是程序模塊的程序模塊和電路圖符號是一致的,電路
26、圖符號的引腳也就是程序模塊的接口。而程序模塊描述了電路圖符號所實現(xiàn)的邏輯功能。接口。而程序模塊描述了電路圖符號所實現(xiàn)的邏輯功能。2021年11月26日26模塊的結(jié)構(gòu)l從上面的例子可以看出:從上面的例子可以看出:l- Verilog模塊結(jié)構(gòu)完全嵌在模塊結(jié)構(gòu)完全嵌在module和和endmodule聲明語句之間;聲明語句之間;l- 每個每個Verilog程序包括四個主要部分:端口定義、程序包括四個主要部分:端口定義、I/O說明、內(nèi)說明、內(nèi)部信號聲明、功能定義。部信號聲明、功能定義。模塊的端口定義:模塊的端口定義: 模塊的端口聲明了模塊的輸入輸出口。其格式如下:模塊的端口聲明了模塊的輸入輸出口。其格
27、式如下: module 模塊名模塊名(端口端口1,端口,端口2,端口,端口3,); 如:如:module sample ( q, a, b, sel, clk, resetn ) ;2021年11月26日27模塊的結(jié)構(gòu)lI/O說明:對輸入輸出端口的屬性進行定義,包括端口的方向、說明:對輸入輸出端口的屬性進行定義,包括端口的方向、信號位寬等。信號位寬等。定義端子方向有如下語句:定義端子方向有如下語句: input(輸入(輸入端口端口) output(輸出輸出端口端口) inout(雙向(雙向端口端口) 定義信號位寬:定義信號位寬: 信號類型信號類型 MSB:LSB 信號名信號名 如:如:inpu
28、t 11:0 address; inout 7:0 data;lI/O說明也可寫在端口聲明語句里,說明也可寫在端口聲明語句里,Verilog 2001支持下面的描支持下面的描述方式。述方式。 module adder_16 (output reg 15:0 sum,output reg cout, input wire cin, input wire 15:0 a, b);2021年11月26日28模塊的結(jié)構(gòu)l內(nèi)部信號說明:在模塊內(nèi)用到的和與端口有關(guān)的內(nèi)部信號說明:在模塊內(nèi)用到的和與端口有關(guān)的wire 和和 reg 變變量的聲明。量的聲明。l如:如: reg width-1 : 0 R變量變量
29、1,R變量變量2 。;。;l wire width-1 : 0 W變量變量1,W變量變量2 。;。;2021年11月26日29模塊的結(jié)構(gòu)l時延時延: Verilog HDL模型中的所有時延都根據(jù)時間單位定義。模型中的所有時延都根據(jù)時間單位定義。Assign #2 Sum = A B; /# 2指指2個時間單位。個時間單位。使用編譯指令將時間單位與物理時間相關(guān)聯(lián)。編譯器指令需使用編譯指令將時間單位與物理時間相關(guān)聯(lián)。編譯器指令需在模塊描述前定義在模塊描述前定義 timescale 1ns /100ps此語句說明時延時間單位為此語句說明時延時間單位為1ns并且時間精度為并且時間精度為100ps (時
30、間時間精度是指所有的時延必須被限定在精度是指所有的時延必須被限定在0.1ns內(nèi)內(nèi))。如果此編譯器指令所在的模塊包含上面的連續(xù)賦值語句如果此編譯器指令所在的模塊包含上面的連續(xù)賦值語句, #2 代表代表2ns。2021年11月26日30模塊的結(jié)構(gòu)l模塊的功能定義可以用采用下面的模塊的功能定義可以用采用下面的4種方式描述:種方式描述:l1) 數(shù)據(jù)流方式數(shù)據(jù)流方式;l2) 行為方式行為方式;l3) 結(jié)構(gòu)方式結(jié)構(gòu)方式;l4) 混合描述方式。混合描述方式。2021年11月26日31模塊的結(jié)構(gòu)數(shù)據(jù)流描述方式:數(shù)據(jù)流描述方式: 用連續(xù)賦值語句用連續(xù)賦值語句“assign” ,只能描述組合邏輯。,只能描述組合邏
31、輯。l連續(xù)賦值語句的語法為連續(xù)賦值語句的語法為:lassign delay LHS_net = RHS_ expression無論右邊的操作數(shù)何時發(fā)生變化無論右邊的操作數(shù)何時發(fā)生變化, 右邊表達式都重新計算右邊表達式都重新計算, 并且并且在指定的時延后賦給左邊線網(wǎng)變量。在指定的時延后賦給左邊線網(wǎng)變量。如果沒有定義時延值如果沒有定義時延值, 缺省時延為缺省時延為0。 2021年11月26日32模塊的結(jié)構(gòu)timescale 1ns/ 1nsmodule Decoder2x4 (A, B, EN, Z);input A, B, EN;output 0 :3 Z;wire Abar, Bbar;ass
32、ign #1 Abar = A; assign #1 Bbar = B; 。 assign #2 Z0 = (Abar & Bbar & EN) ; assign #2 Z1 = (Abar & B & EN) ; assign #2 Z2 = (A & Bbar & EN) ; assign #2 Z3 = (A & B & EN) ; endmodulel連續(xù)賦值語句是隱式而非顯式的建模方式。連續(xù)賦值語句是隱式而非顯式的建模方式。l連續(xù)賦值語句是連續(xù)賦值語句是并發(fā)執(zhí)行并發(fā)執(zhí)行的,也就是說各語句的執(zhí)行順序與其在的,也就是說各語句
33、的執(zhí)行順序與其在描述中出現(xiàn)的順序無關(guān)。描述中出現(xiàn)的順序無關(guān)。2-4解碼器電路2021年11月26日33模塊的結(jié)構(gòu)行為描述方式行為描述方式:用類似軟件程序中的各種算符,直接表示輸入輸出信號之間的關(guān)系用類似軟件程序中的各種算符,直接表示輸入輸出信號之間的關(guān)系的描述方法稱為的描述方法稱為行為描述行為描述。 設(shè)計的行為功能使用下述過程語句結(jié)構(gòu)描述:設(shè)計的行為功能使用下述過程語句結(jié)構(gòu)描述:1) initial語句:此語句只執(zhí)行一次。語句:此語句只執(zhí)行一次。2) always語句:此語句總是循環(huán)執(zhí)行語句:此語句總是循環(huán)執(zhí)行, 或者說重復(fù)執(zhí)行?;蛘哒f重復(fù)執(zhí)行。只有寄存器類型數(shù)據(jù)能夠在這兩種語句中被賦值。只有
34、寄存器類型數(shù)據(jù)能夠在這兩種語句中被賦值。 所有的所有的initial語句和語句和always語句在語句在0時刻并發(fā)執(zhí)行。時刻并發(fā)執(zhí)行。 2021年11月26日34模塊的結(jié)構(gòu)用用always語句對語句對1位全加器電路建模位全加器電路建模module FA_Seq (A, B, Cin, Sum, Cout);input A, B, Cin;output Sum, Cout;reg Sum, Cout;reg T1, T2, T3;always ( A or B or Cin ) beginSum = (A B) Cin;T1 = A & Cin;T2 = B & Cin;T3 =
35、 A & B;Cout = (T1| T2) | T3; endendmodule1位全加器電路2021年11月26日35模塊的結(jié)構(gòu)lalways 語句中有一個與語句中有一個與事件控制事件控制(緊跟在字符緊跟在字符 后面的表達式后面的表達式)。 相關(guān)聯(lián)的順序過程相關(guān)聯(lián)的順序過程(begin-end對對)。l這意味著只要這意味著只要A、B或或Cin 上發(fā)生事件,即上發(fā)生事件,即A、B或或Cin之一的值發(fā)之一的值發(fā)生變化,順序過程就執(zhí)行。生變化,順序過程就執(zhí)行。l在在順序過程中順序過程中(begin-end對對)的語句順序執(zhí)行,并且在順序過程執(zhí)的語句順序執(zhí)行,并且在順序過程執(zhí)行結(jié)束后被掛起
36、。行結(jié)束后被掛起。l順序過程執(zhí)行完成后,順序過程執(zhí)行完成后,always 語句再次等待語句再次等待A、B或或Cin上發(fā)生的上發(fā)生的事件。事件。2021年11月26日36模塊的結(jié)構(gòu)linitial語句示例語句示例:ltimescale 1ns / 1nsmodule Test;reg Pop, Pid;initial beginPop = 0; Pid = 0; #5 Pop = 1; #3 Pid = 1; #6 Pop = 0; #2 Pid = 0; endendmodulelinitial語句包含一個順序過程。語句包含一個順序過程。l這一順序過程在這一順序過程在0 ns時開始執(zhí)行,并時開
37、始執(zhí)行,并 且在順序過程中所有語句全部執(zhí)行完且在順序過程中所有語句全部執(zhí)行完畢后畢后, initial語句永遠掛起。語句永遠掛起。l此語句只執(zhí)行一次。此語句只執(zhí)行一次。2021年11月26日37模塊的結(jié)構(gòu)l結(jié)構(gòu)化描述方式: 在Verilog HDL中可使用如下方式描述結(jié)構(gòu):1) 內(nèi)置門原語內(nèi)置門原語(在門級在門級);2) 開關(guān)級原語(在晶體管級);3) 用戶定義的原語(在門級);4) 模塊實例模塊實例 (創(chuàng)建層次結(jié)構(gòu)創(chuàng)建層次結(jié)構(gòu))。通過使用線網(wǎng)來相互連接。2021年11月26日38模塊的結(jié)構(gòu)module FA_Str (A, B, Cin, Sum, Cout); input A, B, Ci
38、n; output Sum, Cout; wire S1, T1, T2, T3; xor X1 (S1, A, B); xor X2 (Sum, S1, Cin); and A1 (T3, A, B); and A2 (T2, B, Cin); and A3 (T1, A, Cin); or O1 (Cout, T1, T2, T3);Endmodule門實例語句可以以任何順序出現(xiàn)門實例語句可以以任何順序出現(xiàn)1位全加器電路2021年11月26日39模塊的結(jié)構(gòu)l4位全加器可以使用位全加器可以使用4個個1位全加器模塊描述位全加器模塊描述module FourBitFA (FA, FB, FCin
39、, FSum, FCout );input 3:0 FA, FB;output 3:0 FSuminput FCin;input FCout;wire 1: 3 FTemp;FA_Str FA1( .A(FA1), .B(FB1), .Cin(FCin),.Sum(FSum1), .Cout(FTemp1);FA_Str FA2( .A(FA2), .B(FB2), .Cin(FTemp1),.Sum(FSum2), .Cout(FTemp2);FA_Str FA3(FA3, FB3, FTemp2, FSum3, FTemp3);FA_Str FA4(FA4, FB4, FTemp3, FS
40、um4, FCout);endmodule2021年11月26日40模塊的結(jié)構(gòu)l模塊實例模塊實例用于建模用于建模4位全加器。位全加器。l在模塊實例語句中,在模塊實例語句中,端口可以與名稱或位置關(guān)聯(lián)端口可以與名稱或位置關(guān)聯(lián)。l前兩個實例前兩個實例FA1和和FA2使用使用命名關(guān)聯(lián)方式命名關(guān)聯(lián)方式,也就是說,端口的名,也就是說,端口的名稱和它連接的線網(wǎng)被顯式描述(每一個的形式都為稱和它連接的線網(wǎng)被顯式描述(每一個的形式都為“.port_name (net_name))。)。l最后兩個實例語句,實例最后兩個實例語句,實例FA3和和FA4使用使用位置關(guān)聯(lián)方式位置關(guān)聯(lián)方式將端口與將端口與線網(wǎng)關(guān)聯(lián)。這里線網(wǎng)
41、關(guān)聯(lián)。這里關(guān)聯(lián)的順序很重要關(guān)聯(lián)的順序很重要,例如,在實例,例如,在實例FA4中,第一中,第一個個FA4與與FA_Str 的端口的端口A連接,第二個連接,第二個FB4與與FA_Str 的端口的端口B連接,余下的由此類推。連接,余下的由此類推。2021年11月26日41模塊的結(jié)構(gòu)混合描述方式:混合描述方式:結(jié)構(gòu)的和行為的描述自由混合。模塊描述中可以包含實結(jié)構(gòu)的和行為的描述自由混合。模塊描述中可以包含實例化的門、模塊實例化語句、連續(xù)賦值語句以及例化的門、模塊實例化語句、連續(xù)賦值語句以及always語句。語句。module FA_Mix (A, B, Cin, Sum, Cout);input A,B
42、, Cin;output Sum, Cout;reg Cout;reg T1, T2, T3;wire S1;xor X1(S1, A, B); / 門實例語句。門實例語句。always ( A or B or Cin ) /always語句語句begin T1 = A & Cin; T2 = B & Cin; T3 = A & B; Cout = (T1| T2) | T3;end assign Sum = S1 Cin; / 連續(xù)賦值語句連續(xù)賦值語句endmodulel只要只要A或或B上有事件發(fā)生,門上有事件發(fā)生,門實例語句即被執(zhí)行。實例語句即被執(zhí)行。l只要只要A、
43、B或或Cin上有事件發(fā)上有事件發(fā)生,就執(zhí)行生,就執(zhí)行always 語句。語句。l只要只要S1或或Cin上有事件發(fā)生,上有事件發(fā)生,就執(zhí)行連續(xù)賦值語句。就執(zhí)行連續(xù)賦值語句。2021年11月26日42模塊的結(jié)構(gòu)l理解要點:理解要點:如果用如果用Verilog模塊實現(xiàn)一定的功能,首先應(yīng)該清楚模塊實現(xiàn)一定的功能,首先應(yīng)該清楚哪些是同哪些是同時發(fā)生的時發(fā)生的,哪些是順序發(fā)生的哪些是順序發(fā)生的。“assign”語句語句、實例元件實例元件和和“always”塊塊描述的邏輯功能是描述的邏輯功能是同時執(zhí)行的,也就是同時執(zhí)行的,也就是并發(fā)并發(fā)的,如果把這三項寫到一個的,如果把這三項寫到一個 VeriIog 模塊文
44、件中去,它們的次序不會影響邏輯實現(xiàn)的功模塊文件中去,它們的次序不會影響邏輯實現(xiàn)的功能。能。在在“always”模塊內(nèi),邏輯是按照指定的模塊內(nèi),邏輯是按照指定的順序執(zhí)行順序執(zhí)行的。的?!癮lways”塊中的語句稱為塊中的語句稱為“順序語句順序語句”。兩個或更多的兩個或更多的“always”模塊也是同時執(zhí)行的,但是模塊內(nèi)模塊也是同時執(zhí)行的,但是模塊內(nèi)部的語句是順序執(zhí)行的。部的語句是順序執(zhí)行的。2021年11月26日43測試平臺Test Benchl測試平臺測試平臺是驗證對象電路的工作狀態(tài)是否正確的測試用模塊。是驗證對象電路的工作狀態(tài)是否正確的測試用模塊。l測試平臺的作用是對對象電路的輸入信號加上測
45、試平臺的作用是對對象電路的輸入信號加上測試圖形測試圖形,并通過,并通過觀察輸出信號觀察輸出信號來驗證電路是否正常工作。來驗證電路是否正常工作。lVerilog HDL不僅提供描述設(shè)計的能力,而且提供對激勵、控制、不僅提供描述設(shè)計的能力,而且提供對激勵、控制、存儲響應(yīng)和設(shè)計驗證的建模能力。存儲響應(yīng)和設(shè)計驗證的建模能力。被測模塊被測模塊激勵和控制激勵和控制信號信號輸 出 響 應(yīng)輸 出 響 應(yīng)和驗證和驗證2021年11月26日44測試平臺Test Bench電路仿真所需要的數(shù)據(jù)電路仿真所需要的數(shù)據(jù)l 被測電路的被測電路的HDL描述描述 。l 測試平臺的測試平臺的HDL描述描述 HDL仿真器仿真器將測
46、試平臺中描述的激勵信號按照所定時間提供給將測試平臺中描述的激勵信號按照所定時間提供給被測電路。被測電路。 對被測電路進行仿真。對被測電路進行仿真。將仿真后被測電路產(chǎn)生的輸出信號以部波形、數(shù)據(jù)將仿真后被測電路產(chǎn)生的輸出信號以部波形、數(shù)據(jù)或文字的方式表示出來。或文字的方式表示出來。2021年11月26日45測試平臺Test Benchl激勵和控制可用初始化語句產(chǎn)生激勵和控制可用初始化語句產(chǎn)生。l設(shè)計驗證設(shè)計驗證可以通過在初始化語句中寫入相應(yīng)的語句可以通過在初始化語句中寫入相應(yīng)的語句自動與期望的響應(yīng)值比較自動與期望的響應(yīng)值比較完成。完成。timescale 1ns/1nsmodule Top; /
47、一個模塊可以有一個空的端口列表。一個模塊可以有一個空的端口列表。 reg PA, PB, PCi; wire PCo, PSum; FA_Seq F1(PA, PB, PCi, PSum, PCo); / 正在測試的實例化模塊:正在測試的實例化模塊: initial begin: ONLY_ONCEreg 2:0 Pal; for (Pal = 0; Pal 8; Pal = Pal + 1) Begin PA, PB, PCi = Pal; #5 $display (“PA, PB, PCi = %b%b%b”, PA, PB, PCi,“ : : : PCo, PSum=%b%b”, PC
48、o, PSum); end endendmodule2021年11月26日46測試平臺Test Benchl系統(tǒng)任務(wù)系統(tǒng)任務(wù)$display調(diào)用中的時延控制規(guī)定調(diào)用中的時延控制規(guī)定$display任務(wù)在任務(wù)在5個時間單位后執(zhí)行。個時間單位后執(zhí)行。這這5個時間單位基本上代表了邏輯處理時間。個時間單位基本上代表了邏輯處理時間。lPal在初始化語句內(nèi)被局部定義,初始化語句中的順序過程(在初始化語句內(nèi)被局部定義,初始化語句中的順序過程(begin-end)必須)必須標(biāo)記,標(biāo)記,ONLY_ONCE是順序過程標(biāo)記。如果在順序過程內(nèi)沒有局部聲明的變量,是順序過程標(biāo)記。如果在順序過程內(nèi)沒有局部聲明的變量,就不
49、需要該標(biāo)記。就不需要該標(biāo)記。l測試模塊產(chǎn)生的輸出:測試模塊產(chǎn)生的輸出:PA, PB, PCi = 000 : PCo, PSum = 00PA, PB, PCi = 001 : PCo, PSum = 01PA, PB, PCi = 010 : PCo, PSum = 01PA, PB, PCi = 011 : PCo, PSum = 10PA, PB, PCi = 100 : PCo, PSum = 01PA, PB, PCi = 101 : PCo, PSum = 10PA, PB, PCi = 110 : PCo, PSum = 10PA, PB, PCi = 111 : PCo, PSum = 112021年11月26日47VerilogVerilog 語言中,字符串常常用于表示命令內(nèi)需要顯示的信息。語言中,字符串常常用于表示命令內(nèi)需要顯示的信息。用用“ ”“ ”括起來的一行字符串括起來的一行字符串,換新一行用,換新一行用 “ “n” n” 字符字符, ,與與 C C 語語言一致。言一致。在字符串中可以用在字符串中可以用 C C 語
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東財貿(mào)職業(yè)學(xué)院《醫(yī)學(xué)統(tǒng)計學(xué)與流行病學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 商丘職業(yè)技術(shù)學(xué)院《稀有金屬冶金學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 蘇州衛(wèi)生職業(yè)技術(shù)學(xué)院《珠寶玉石材料學(xué)基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 長春醫(yī)學(xué)高等??茖W(xué)?!洞髷?shù)據(jù)財務(wù)分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年上海松江區(qū)都城企業(yè)發(fā)展有限公司招聘筆試參考題庫附帶答案詳解
- 打造卓越酒店品牌-品牌形象與市場競爭力的策略
- 室內(nèi)設(shè)計環(huán)節(jié)核心要素
- 云計算:賦能未來-理解、應(yīng)用與挑戰(zhàn)
- 知識產(chǎn)權(quán)保護與創(chuàng)新-知識產(chǎn)權(quán)專家演講
- 未來出行-無人駕駛的契機-交通運輸專家的演講稿
- 北師大版《相遇問題》公開課課件
- QC-R 596-2017高速鐵路板式無砟軌道自密實混凝土高清-無水印
- 2023高中學(xué)業(yè)水平合格性考試歷史重點知識點歸納總結(jié)(復(fù)習(xí)必背)
- 鄰補角、對頂角、同位角、內(nèi)錯角、同旁內(nèi)角經(jīng)典習(xí)題-一對一專用
- HP系列培訓(xùn)手冊
- 常見病媒生物分類鑒定
- 畢業(yè)論文-原油電脫水方法與機理的研究
- 陜西省2022年普通高中學(xué)業(yè)水平考試(真題)
- 事故池管理的有關(guān)規(guī)定
- 2021-2022學(xué)年甘肅省天水市第一中學(xué)高一下學(xué)期第二階段考物理試題(原卷版)
- 混凝土結(jié)構(gòu)課程設(shè)計244
評論
0/150
提交評論