版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章VerilogHDL數(shù)字集成電路設(shè)計(jì)方法概述
第2章VerilogHDL基礎(chǔ)知識(shí)
第3章VerilogHDL程序設(shè)計(jì)語句和描述方式
第4章VerilogHDL數(shù)字邏輯電路設(shè)計(jì)方法
第5章
仿真驗(yàn)證與Testbench編寫
第6章VerilogHDL高級(jí)程序設(shè)計(jì)舉例
第7章
仿真測(cè)試工具和綜合工具
第8章SystemVerilog設(shè)計(jì)與驗(yàn)證全套可編輯PPT課件
1.1數(shù)字集成電路的發(fā)展和設(shè)計(jì)方法的演變
1.2硬件描述語言
1.3功能模塊的可重用性與IP核
1.4VerilogHDL的發(fā)展和國(guó)際標(biāo)準(zhǔn)
1.5VerilogHDL在數(shù)字集成電路設(shè)計(jì)中的優(yōu)點(diǎn)
1.6VerilogHDL在數(shù)字集成電路設(shè)計(jì)流程中的作用本課件是可編輯的正常PPT課件1.1數(shù)字集成電路的發(fā)展和設(shè)計(jì)方法的演變本課件是可編輯的正常PPT課件從20世紀(jì)60年代開始,隨著數(shù)字集成電路的工藝、制造和設(shè)計(jì)技術(shù)的飛速發(fā)展,數(shù)字集成電路從最早的真空管和電子管電路,發(fā)展到以硅基半導(dǎo)體為主的集成電路。集成電路的規(guī)模從開始的僅幾十個(gè)邏輯門的小規(guī)模集成電路發(fā)展到單芯片數(shù)達(dá)千萬個(gè)邏輯門的極大規(guī)模集成電路,單芯片上可以集成幾百億只晶體管(見圖1.1-1)。數(shù)字集成電路設(shè)計(jì)單元從起初的分立元件發(fā)展到IP復(fù)用;系統(tǒng)級(jí)別由早期的印制板系統(tǒng)發(fā)展到當(dāng)下最為流行的片上系統(tǒng);采用的7?nm和5?nm工藝技術(shù)已成熟,并迅速向更小尺寸的產(chǎn)品方向發(fā)展;功能方面也從開始的簡(jiǎn)單布爾邏輯運(yùn)算發(fā)展到可以每秒處理數(shù)十億次計(jì)算的復(fù)雜運(yùn)算。因此,數(shù)字集成電路在計(jì)算機(jī)、通信、圖像等領(lǐng)域得到了廣泛應(yīng)用。本課件是可編輯的正常PPT課件數(shù)字集成電路工藝制造水平的提高和芯片規(guī)模的擴(kuò)大,使芯片的設(shè)計(jì)方法和設(shè)計(jì)技術(shù)發(fā)生了很大的變化,如圖1.1-2所示。早期的數(shù)字系統(tǒng)大多采用搭積木式的原理圖設(shè)計(jì)方法,通過一些固定功能的器件加上一定的外圍電路構(gòu)成模塊,再由這些模塊進(jìn)一步形成功能電路。這種設(shè)計(jì)方法的靈活性差,只適合于中小規(guī)模的集成電路,當(dāng)電路和模塊的規(guī)模增大時(shí),設(shè)計(jì)效率會(huì)降低。集成電路的發(fā)展可分為三個(gè)主要階段。20世紀(jì)70年代為第一次變革時(shí)期,是以加工制造為主導(dǎo)的IC產(chǎn)業(yè)發(fā)展的初級(jí)階段,主流產(chǎn)品是簡(jiǎn)單微處理器、存儲(chǔ)器以及標(biāo)準(zhǔn)通用邏輯電路。這一時(shí)期,IC整合元件廠在IC市場(chǎng)中充當(dāng)主要角色,設(shè)計(jì)部門只作為附屬部門而存在。芯片設(shè)計(jì)和半導(dǎo)體工藝密切相關(guān),設(shè)計(jì)主要以人工為主,計(jì)算機(jī)輔助設(shè)計(jì)系統(tǒng)僅作為數(shù)據(jù)處理和圖形編程之用。本課件是可編輯的正常PPT課件20世紀(jì)80年代為第二次變革時(shí)期,是標(biāo)準(zhǔn)工藝加工線公司與IC設(shè)計(jì)公司共同發(fā)展的階段,主流產(chǎn)品是MPU、微控制器及專用IC。這時(shí),F(xiàn)oundry和IC設(shè)計(jì)公司相結(jié)合的方式開始成為集成電路產(chǎn)業(yè)發(fā)展的新模式。這一時(shí)期,IC產(chǎn)業(yè)開始進(jìn)入以客戶為導(dǎo)向的階段。首先,標(biāo)準(zhǔn)化功能的IC已難以滿足整機(jī)客戶對(duì)系統(tǒng)成本、可靠性等的要求;其次,由于小尺寸加工技術(shù)的進(jìn)步,軟件的硬件化已成為可能,超大規(guī)模集成電路開始成為主流芯片;再次,隨著電子設(shè)計(jì)自動(dòng)化工具軟件的發(fā)展,采用了元件庫(kù)、工藝模擬參數(shù)及其仿真概念等方法,芯片設(shè)計(jì)開始進(jìn)入以計(jì)算機(jī)為主的抽象化軟件階段,設(shè)計(jì)過程可以獨(dú)立于生產(chǎn)工藝而存在。無生產(chǎn)線的IC設(shè)計(jì)公司和設(shè)計(jì)部門紛紛建立起來并得到迅速的發(fā)展,同時(shí)以制造為主的Foundry工廠也迅速發(fā)展起來。1987年,全球第一個(gè)Foundry工廠—臺(tái)灣積體電路公司成立,它的創(chuàng)始人張忠謀被譽(yù)為“晶芯片加工之父”。本課件是可編輯的正常PPT課件20世紀(jì)90年代為第三次變革時(shí)期,IC產(chǎn)業(yè)的“四業(yè)”(設(shè)計(jì)業(yè)、制造業(yè)、封裝業(yè)、測(cè)試業(yè))開始分離,功能強(qiáng)大的通用型中央處理器和信號(hào)處理器成為產(chǎn)業(yè)新的增長(zhǎng)點(diǎn)。在這個(gè)階段,芯片廠商認(rèn)識(shí)到,越來越龐大的集成電路產(chǎn)業(yè)體系并不利于整個(gè)IC產(chǎn)業(yè)的發(fā)展,“分”才能精,“整合”才能成優(yōu)勢(shì)。于是,IC產(chǎn)業(yè)結(jié)構(gòu)向高度專業(yè)化轉(zhuǎn)化成為一種趨勢(shì),開始形成設(shè)計(jì)業(yè)、制造業(yè)、封裝業(yè)、測(cè)試業(yè)獨(dú)立成行的局面,全球IC產(chǎn)業(yè)的發(fā)展越來越顯示出這種結(jié)構(gòu)的優(yōu)勢(shì)。進(jìn)入21世紀(jì),IC產(chǎn)業(yè)的發(fā)展速度更是驚人;基于市場(chǎng)和社會(huì)發(fā)展的需要,數(shù)字集成電路正向多元化方向發(fā)展。在芯片的市場(chǎng)需求方面,移動(dòng)通信、多媒體技術(shù)等應(yīng)用的迅速發(fā)展,使具有特定功能的差異化專用芯片取代通用型芯片,逐漸成為數(shù)字IC的主要增長(zhǎng)點(diǎn)。本課件是可編輯的正常PPT課件在技術(shù)方面,出現(xiàn)了新的發(fā)展方向。首先,CMOS模擬技術(shù)的發(fā)展使得數(shù)/?;旌蠁涡酒杉夹g(shù)迅速發(fā)展,在設(shè)計(jì)和成本方面表現(xiàn)出了巨大優(yōu)勢(shì);其次,應(yīng)用需求使得存儲(chǔ)器在ULSI芯片中的作用越來越明顯,高密度存儲(chǔ)器及其SoC成為設(shè)計(jì)的熱點(diǎn);再次,單芯片規(guī)模的擴(kuò)大使得單純依靠提升頻率的發(fā)展路線出現(xiàn)技術(shù)瓶頸,大規(guī)模多內(nèi)核處理器結(jié)構(gòu)成為通用型芯片和SoC芯片的主流設(shè)計(jì)方式。在設(shè)計(jì)方法方面,功能復(fù)用IP的設(shè)計(jì)方式成為IC設(shè)計(jì)和商業(yè)化的一種主要方式,極大提高了ULSI芯片的設(shè)計(jì)效率和可擴(kuò)展性。本課件是可編輯的正常PPT課件隨著集成電路規(guī)模的迅速擴(kuò)大和復(fù)雜度的不斷提高,芯片設(shè)計(jì)和制造成本不斷增加,設(shè)計(jì)、測(cè)試和制造工藝中的環(huán)節(jié)也隨之增多,相應(yīng)的設(shè)計(jì)過程變得越來越復(fù)雜,因此,設(shè)計(jì)者希望通過某種手段提高數(shù)字集成電路設(shè)計(jì)、驗(yàn)證的效率和可靠性。數(shù)字集成電路單元從起初的分立元件到單元,然后到寄存器傳輸級(jí),再到IP復(fù)用技術(shù);系統(tǒng)級(jí)別由原先的印制板系統(tǒng)到當(dāng)下最為流行的SoC片上系統(tǒng)。由圖1.1-1可以看出,數(shù)字集成電路技術(shù)的發(fā)展速度基本符合摩爾定律,芯片上晶體管的集成數(shù)目以每三年翻兩番的速度在增長(zhǎng)。超大規(guī)模集成電路的發(fā)展給設(shè)計(jì)者和開發(fā)者提出了一系列問題,如高層次綜合、數(shù)/模混合電路描述、仿真驗(yàn)證與形式驗(yàn)證等自動(dòng)驗(yàn)證手段、數(shù)字電路的超深亞微米效應(yīng)以及設(shè)計(jì)重用等。這些問題給EDA技術(shù)的發(fā)展提出了一系列新的課題。為了從更高的抽象層次開展設(shè)計(jì)工作,增強(qiáng)元件模型的可重用性,提高硬件描述設(shè)計(jì)效率,采用硬件描述語言進(jìn)行數(shù)字集成電路設(shè)計(jì)因此被提了出來。如何自動(dòng)化、高效率地進(jìn)行數(shù)字電路的設(shè)計(jì),是HDL產(chǎn)生的出發(fā)點(diǎn),也是其進(jìn)一步完善和發(fā)展的目標(biāo)。本課件是可編輯的正常PPT課件1.2硬件描述語言本課件是可編輯的正常PPT課件C、FORTRAN、Pascal等程序化設(shè)計(jì)語言極大地提高了計(jì)算機(jī)軟件程序設(shè)計(jì)的效率和可靠性。因此,在硬件設(shè)計(jì)領(lǐng)域,設(shè)計(jì)人員也希望采用程序化設(shè)計(jì)語言來進(jìn)行硬件電路的設(shè)計(jì)。為此,產(chǎn)生了硬件描述語言HDL。HDL是一種高級(jí)程序設(shè)計(jì)語言,通過對(duì)數(shù)字電路和系統(tǒng)進(jìn)行語言描述,可以對(duì)數(shù)字集成電路進(jìn)行設(shè)計(jì)和驗(yàn)證。利用HDL,數(shù)字集成電路設(shè)計(jì)工程師可以根據(jù)電路結(jié)構(gòu)的特點(diǎn),采用層次化的設(shè)計(jì)結(jié)構(gòu),將抽象的邏輯功能用電路的方式進(jìn)行實(shí)現(xiàn)。為了提高HDL對(duì)數(shù)字電路設(shè)計(jì)、綜合和仿真的能力,Mentor、Cadence、Synopsys等公司提供了功能強(qiáng)大的EDA工具,可以將HDL程序綜合成為網(wǎng)表,通過自動(dòng)布局布線工具把網(wǎng)表轉(zhuǎn)換為具體電路布線結(jié)構(gòu),用以實(shí)現(xiàn)專用集成電路和現(xiàn)場(chǎng)可編程門陣列。本課件是可編輯的正常PPT課件HDL發(fā)展至今,產(chǎn)生了很多種對(duì)于數(shù)字集成電路的描述性設(shè)計(jì)語言,并成功地應(yīng)用于設(shè)計(jì)的各個(gè)階段(建模、仿真、驗(yàn)證和綜合等)。20世紀(jì)80年代至今,已出現(xiàn)了上百種硬件描述語言,它們對(duì)設(shè)計(jì)自動(dòng)化起到了極大的促進(jìn)和推動(dòng)作用,主要有GatewayDesignAutomation公司提出的VerilogHDL、美國(guó)國(guó)防部高級(jí)研究計(jì)劃局(DARPA)設(shè)計(jì)的VHDL、美國(guó)國(guó)防部RPASSP計(jì)劃提出的基于面向?qū)ο蟮腛OVHDL、美國(guó)杜克大學(xué)的DEVHDL和電氣電子工程師學(xué)會(huì)支持的VITAL等。目前,最為常用的硬件描述語言有兩種,分別是VerilogHDL和VHDL。其中,VHSIC是VeryHighSpeedIntegratedCircuit的縮寫,故VHDL準(zhǔn)確的中文譯名應(yīng)為超高速集成電路硬件描述語言。VerilogHDL和VHDL都是完備的HDL設(shè)計(jì)和驗(yàn)證語言,具有完整的設(shè)計(jì)方法和設(shè)計(jì)規(guī)范。它們可以設(shè)計(jì)和驗(yàn)證超大規(guī)模數(shù)字集成電路,并且分別在1995年和1987年被采納為IEEE國(guó)際標(biāo)準(zhǔn)。選用哪種語言進(jìn)行數(shù)字集成電路開發(fā),主要取決于設(shè)計(jì)單位的基礎(chǔ)、計(jì)劃采用的設(shè)計(jì)方案和EDA工具。本課件是可編輯的正常PPT課件這兩種HDL具有較多的共同點(diǎn):(1)能形式化地抽象表示電路的行為和結(jié)構(gòu);(2)支持邏輯設(shè)計(jì)中層次與范圍的描述;(3)可借用高級(jí)語言的精巧結(jié)構(gòu)來簡(jiǎn)化電路行為的描述,具有電路仿真與驗(yàn)證機(jī)制,以保證設(shè)計(jì)的正確性;(4)支持電路描述由高層到低層的綜合轉(zhuǎn)換;(5)硬件描述與實(shí)現(xiàn)工藝無關(guān)(有關(guān)工藝參數(shù)可通過語言提供的屬性包括進(jìn)去);(6)便于文檔管理;(7)易于理解和設(shè)計(jì)重用。本課件是可編輯的正常PPT課件作為兩種不同的標(biāo)準(zhǔn)化HDL,VerilogHDL和VHDL在設(shè)計(jì)方法和設(shè)計(jì)范圍方面也有一些各自的特點(diǎn):(1)在設(shè)計(jì)方法方面,VHDL語法結(jié)構(gòu)緊湊、靈活性差、設(shè)計(jì)規(guī)則煩瑣,初學(xué)者需要用較長(zhǎng)時(shí)間掌握它。由于語法規(guī)則嚴(yán)謹(jǐn)性高,VHDL的可綜合性和代碼一致性很強(qiáng),適用于規(guī)模較大的數(shù)字集成電路系統(tǒng)設(shè)計(jì)。而VerilogHDL的語法結(jié)構(gòu)和設(shè)計(jì)方法靈活,初學(xué)者掌握語言的難度較小,設(shè)計(jì)也較容易進(jìn)行綜合和驗(yàn)證;但是,由于所設(shè)計(jì)代碼風(fēng)格的多樣性,當(dāng)數(shù)字電路規(guī)模較大時(shí),代碼的管理和系統(tǒng)設(shè)計(jì)難度較大。當(dāng)然,作為經(jīng)驗(yàn)豐富的數(shù)字電路設(shè)計(jì)工程師,采用何種語言進(jìn)行設(shè)計(jì)的關(guān)鍵在于對(duì)語言和電路的掌握能力和對(duì)設(shè)計(jì)規(guī)范的理解程度。為了發(fā)揮兩種語言在設(shè)計(jì)方面各自的優(yōu)勢(shì),EDA工具廠商提供了VerilogHDL和VHDL的混合設(shè)計(jì)、驗(yàn)證和綜合方法。因此,設(shè)計(jì)人員只需掌握其中一種HDL即可。本課件是可編輯的正常PPT課件(2)在設(shè)計(jì)范圍方面,VerilogHDL和VHDL有一個(gè)顯著的區(qū)別:VerilogHDL可以描述系統(tǒng)級(jí)、算法級(jí)、寄存器傳輸級(jí)、門級(jí)和開關(guān)級(jí)電路,VHDL則不具備開關(guān)級(jí)電路描述能力。在FPGA和CPLD等用戶可配置數(shù)字電路的設(shè)計(jì)中,由于最小可配置電路是門級(jí)電路,沒有開關(guān)級(jí)可配置電路,因此兩種語言的設(shè)計(jì)能力相當(dāng)。但是在專用數(shù)字集成電路設(shè)計(jì)和開關(guān)級(jí)描述方面,VerilogHDL的設(shè)計(jì)范圍比VHDL略大一些。圖1.2-1是VerilogHDL和VHDL在電路建模能力方面的比較。隨著數(shù)字集成電路工藝和設(shè)計(jì)方法的快速發(fā)展,這兩種語言也在不斷豐富和改進(jìn),以滿足更大、更高速、更復(fù)雜的數(shù)字集成電路系統(tǒng)設(shè)計(jì)的要求。本課件是可編輯的正常PPT課件1.3功能模塊的可重用性與IP核本課件是可編輯的正常PPT課件HDL的標(biāo)準(zhǔn)化極大地?cái)U(kuò)展了VerilogHDL和VHDL的使用范圍,并增強(qiáng)了其通用性。目前絕大多數(shù)的數(shù)字集成電路和FPGA的開發(fā)都采用了HDL。這使得VerilogHDL和VHDL的功能模塊積累得越來越多,同時(shí)也極大地提高了功能模塊的可重用性。由于模塊的可重用性對(duì)于硬件電路開發(fā)效率的提高至關(guān)重要,因此業(yè)界提出了數(shù)字集成電路的軟核(SoftCore)、固核(FirmCore)和硬核(HardCore)的概念。軟核一般是指經(jīng)過功能驗(yàn)證、5000門以上的可綜合VerilogHDL或VHDL模型。軟核通常與設(shè)計(jì)方法和電路所采用的工藝無關(guān),具有很強(qiáng)的可綜合性和可重用性。由軟核構(gòu)成的器件稱為虛擬器件,通過EDA綜合工具可以把它與其他數(shù)字邏輯電路結(jié)合起來,構(gòu)成新的功能電路。軟核的可重用性大大縮短了設(shè)計(jì)周期,提高了復(fù)雜電路的設(shè)計(jì)能力。固核通常是指在FPGA器件上,經(jīng)過綜合驗(yàn)證、大于5000門的電路網(wǎng)表文件。本課件是可編輯的正常PPT課件硬核通常是指在ASIC器件上,經(jīng)過驗(yàn)證、正確的、大于5000門的電路結(jié)構(gòu)版圖掩膜。軟核、固核和硬核是目前數(shù)字集成電路功能單元模塊在不同層級(jí)使用的三種形式。由于軟核采用可讀性較高的可綜合HDL實(shí)現(xiàn),因此其可維護(hù)性和可重用性高,使用也更加靈活和便捷。固核和硬核是針對(duì)不同芯片平臺(tái)的功能單元,性能穩(wěn)定,不易修改。商用軟核通常都有針對(duì)不同芯片和工藝而定制的硬核和固核,可以從不同層次提高數(shù)字電路功能模塊的可重用性。目前,國(guó)際設(shè)計(jì)領(lǐng)域正試圖通過建立相應(yīng)的標(biāo)準(zhǔn)化組織,推廣和規(guī)范軟核的使用方式,如虛擬接口聯(lián)盟(VirtualSocketInterfaceAlliance)希望通過接口的標(biāo)準(zhǔn)化來提高HDL設(shè)計(jì)模塊的可重用性。軟核、固核和硬核的產(chǎn)生和推廣,為集成電路的設(shè)計(jì)和開發(fā)提供了一種新的商業(yè)模式?,F(xiàn)在,超大規(guī)模的ASIC和FPGA設(shè)計(jì)更多采用的是不同公司功能模塊的組合,通過開發(fā)特定功能的部件電路,形成具有特定功能的芯片和系統(tǒng)。相應(yīng)的內(nèi)核成為各個(gè)公司重要的資產(chǎn),并擁有特殊的知識(shí)產(chǎn)權(quán)。本課件是可編輯的正常PPT課件IP核是具有知識(shí)產(chǎn)權(quán)核的集成電路芯核的總稱,是經(jīng)過反復(fù)驗(yàn)證的、具有特定功能的宏模塊,且該模塊與芯片制造工藝無關(guān),可以移植到不同的半導(dǎo)體工藝中。到了SoC階段,向用戶提供IP核服務(wù)已經(jīng)成為可編程邏輯器件提供商的重要任務(wù)。在SoC芯片的設(shè)計(jì)生產(chǎn)過程中,芯片的生產(chǎn)廠家只需根據(jù)設(shè)計(jì)需要購(gòu)入相應(yīng)功能的IP核,再將這些IP核按照設(shè)計(jì)要求進(jìn)行組合,即可完成所需特定功能的設(shè)計(jì),如圖1.3-1所示。這樣可以大大減少設(shè)計(jì)人力的投入并降低風(fēng)險(xiǎn),縮短設(shè)計(jì)周期,確保產(chǎn)品質(zhì)量。對(duì)于可編程提供商來說,能夠提供的IP核越豐富,用戶的設(shè)計(jì)就會(huì)越方便,其市場(chǎng)占有率就越高?,F(xiàn)在,IP核已經(jīng)成為系統(tǒng)設(shè)計(jì)的基本單元,并作為獨(dú)立設(shè)計(jì)成果被交換、轉(zhuǎn)讓和銷售。目前,全球最大的IP核設(shè)計(jì)公司是英國(guó)的ARM公司。通過IP核的市場(chǎng)推廣,不同性能的ARM被廣泛用于通信、計(jì)算機(jī)、媒體控制器、工業(yè)芯片中,極大地提高了設(shè)計(jì)的效率。這種商業(yè)模式為數(shù)字集成電路的發(fā)展作出了重要貢獻(xiàn)。本課件是可編輯的正常PPT課件1.4VerilogHDL的發(fā)展和國(guó)際標(biāo)準(zhǔn)本課件是可編輯的正常PPT課件VerilogHDL是一種常用的硬件描述語言,可以從系統(tǒng)級(jí)、電路級(jí)、門級(jí)到開關(guān)級(jí)等抽象層次進(jìn)行數(shù)字電路系統(tǒng)的建模、設(shè)計(jì)和驗(yàn)證工作。利用該語言可以設(shè)計(jì)出簡(jiǎn)單的門級(jí)電路,甚至功能完整的數(shù)字電路系統(tǒng)。從設(shè)計(jì)之初到目前的廣泛應(yīng)用,VerilogHDL經(jīng)過40多年的發(fā)展,其功能也由最初的數(shù)字集成電路設(shè)計(jì)發(fā)展到數(shù)字和模擬電路設(shè)計(jì)(見圖1.4-1),它已經(jīng)成為數(shù)字電路和數(shù)字集成電路中使用最為廣泛的設(shè)計(jì)語言。VerilogHDL最初是由GatewayDesignAutomation(GDA)公司于1983年為其模擬器產(chǎn)品開發(fā)的硬件建模語言。作為一種便于使用的專用設(shè)計(jì)語言,VerilogHDL被廣泛用于模擬器和仿真器中,并逐漸為眾多設(shè)計(jì)者所接受。在隨后的幾年,VerilogHDL開始在數(shù)字電路設(shè)計(jì)領(lǐng)域廣泛使用。1987年,Synopsys公司開始使用VerilogHDL作為綜合工具的輸入,為在數(shù)字集成電路上的應(yīng)用提供了EDA綜合工具,提高了電路描述性設(shè)計(jì)方式的效率。本課件是可編輯的正常PPT課件1989年,Cadence公司收購(gòu)了GDA公司,VerilogHDL成為Cadence公司的專有設(shè)計(jì)語言。為了在更大范圍內(nèi)推廣和使用VerilogHDL,1990年Cadence公司決定公開VerilogHDL,于是成立了OVI(OpenVerilogInternational)組織,負(fù)責(zé)促進(jìn)VerilogHDL的發(fā)展。本課件是可編輯的正常PPT課件1993年,幾乎所有的ASIC廠商都開始支持VerilogHDL,并且認(rèn)為VerilogHDL-XL是最好的仿真器。同時(shí),OVI組織推出VerilogHDL2.0規(guī)范,IEEE接受了將其作為IEEE標(biāo)準(zhǔn)的提案。自此,VerilogHDL正式成為數(shù)字集成電路設(shè)計(jì)語言的標(biāo)準(zhǔn)(見表1.4-1)。1995年年底,IEEE制定了第一個(gè)VerilogHDL標(biāo)準(zhǔn)VerilogIEEE1364-1995。在此基礎(chǔ)上,于2001年又增加了部分功能,并制定了較為完善的標(biāo)準(zhǔn)VerilogIEEE1364-2001。目前在數(shù)字集成電路方面主要采用的就是這兩個(gè)標(biāo)準(zhǔn)所規(guī)定的程序語法和設(shè)計(jì)規(guī)范。在模擬電路設(shè)計(jì)方面,基于IEEE1364VerilogHDL規(guī)范,提出了模擬電路行業(yè)的標(biāo)準(zhǔn)建模語言Verilog-A,以提高模擬集成電路的程序化設(shè)計(jì)能力。
本課件是可編輯的正常PPT課件在系統(tǒng)級(jí)設(shè)計(jì)方面,傳統(tǒng)的設(shè)計(jì)方法采用C語言等高級(jí)軟件語言進(jìn)行數(shù)學(xué)模型的建立和分析,通過定點(diǎn)化設(shè)計(jì),將數(shù)學(xué)模型轉(zhuǎn)變成電路模型,最后采用HDL進(jìn)行電路設(shè)計(jì)。這種方法的缺點(diǎn)是,數(shù)學(xué)模型的建立和電路設(shè)計(jì)是獨(dú)立的,從而導(dǎo)致設(shè)計(jì)周期長(zhǎng)、需要的人員和軟件多,且存在重復(fù)性的工作等問題。研究和開發(fā)人員希望能將數(shù)學(xué)模型直接用于數(shù)字集成電路的設(shè)計(jì),以提高集成電路的設(shè)計(jì)效率,這就給EDA工具廠商提出了新的要求。為了滿足這一要求,2005年誕生了SystemVerilogIEEE1800-2005標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)建立在VerilogHDL的基礎(chǔ)上,在系統(tǒng)層次上增強(qiáng)了模型建立和驗(yàn)證的功能,是VerilogIEEE1364—2001標(biāo)準(zhǔn)的擴(kuò)展,向下兼容VerilogIEEE1364-2001,成為新一代硬件設(shè)計(jì)和驗(yàn)證的語言。關(guān)于SystemVerilog語言將在第8章介紹。本課件是可編輯的正常PPT課件1.5VerilogHDL在數(shù)字集成電路設(shè)計(jì)中的優(yōu)點(diǎn)本課件是可編輯的正常PPT課件在數(shù)字集成電路出現(xiàn)的最初幾十年中,數(shù)字邏輯電路和系統(tǒng)的設(shè)計(jì)規(guī)模較小,復(fù)雜度也低。ASIC、FPGA和CPLD的設(shè)計(jì)工作采用廠家提供的專用電路圖工具,通過連接線將定制電路單元進(jìn)行互連實(shí)現(xiàn)。而隨著電路規(guī)模的增加,設(shè)計(jì)人員通常要花費(fèi)很多的時(shí)間做大量重復(fù)的手工布線工作,同時(shí)為了達(dá)到設(shè)計(jì)目標(biāo),對(duì)于大量定制單元電路還要求分廠也要熟悉。這種低效率的設(shè)計(jì)方式持續(xù)了很長(zhǎng)時(shí)間。VerilogHDL和EDA工具的出現(xiàn)和發(fā)展,使得高效率的描述性語言和強(qiáng)大的仿真綜合工具得以運(yùn)用,設(shè)計(jì)人員則可以將注意力集中于系統(tǒng)、算法和電路結(jié)構(gòu)上,極大地提高了設(shè)計(jì)輸入和驗(yàn)證的效率。作為最廣泛采用的HDL,VerilogHDL在硬件描述方面的效率高、靈活性強(qiáng)。圖1.5-1中的(a)和(b)分別是4位和32位總線與邏輯的原理圖設(shè)計(jì)和VerilogHDL描述方式的對(duì)比。本課件是可編輯的正常PPT課件圖1.5-2中的(a)、(b)分別是長(zhǎng)度為4位和8位移位寄存器的原理圖設(shè)計(jì)與VerilogHDL描述方式的對(duì)比。本課件是可編輯的正常PPT課件圖1.5-1和圖1.5-2分別是典型的組合邏輯電路和時(shí)序邏輯電路。從這兩個(gè)例子可以看到,VerilogHDL在設(shè)計(jì)方面有兩個(gè)突出的能力。第一,可以用較少的語句描述較為復(fù)雜的電路。圖1.5-1和圖1.5-2中采用一條有效語句即實(shí)現(xiàn)了電路設(shè)計(jì)。第二,VerilogHDL具有極為靈活的可擴(kuò)展特性。圖1.5-1中,VerilogHDL僅需修改總線的位寬,即可將4位總線與邏輯轉(zhuǎn)變?yōu)?2位總線與邏輯。圖1.5-2中僅需改變移位信號(hào)的長(zhǎng)度,就可以實(shí)現(xiàn)不同長(zhǎng)度移位寄存器的設(shè)計(jì)。通過這兩個(gè)例子可以看到,VerilogHDL極大地提高了原理圖設(shè)計(jì)的效率,同時(shí)提高了設(shè)計(jì)的靈活性和電路設(shè)計(jì)管理的有效性。在功能設(shè)計(jì)方面,VerilogHDL采用描述性建模方式,通過行為描述、數(shù)據(jù)流描述和結(jié)構(gòu)性描述等方式,對(duì)電路、輸入信號(hào)激勵(lì)和響應(yīng)監(jiān)控方式進(jìn)行設(shè)計(jì);同時(shí),提供編程語言接口,通過該接口可以在模擬、驗(yàn)證期間從設(shè)計(jì)外部訪問設(shè)計(jì),包括模擬的具體控制和運(yùn)行。本課件是可編輯的正常PPT課件VerilogHDL定義了完善的語法規(guī)則,對(duì)每個(gè)語法結(jié)構(gòu)都定義了清晰的模擬、仿真語義。它從C語言中繼承了多種操作符和結(jié)構(gòu),具有較強(qiáng)的擴(kuò)展建模能力。VerilogHDL的核心子集相對(duì)緊湊,可以滿足大多數(shù)建模應(yīng)用的要求,容易學(xué)習(xí)和掌握。當(dāng)然,應(yīng)用于數(shù)字集成電路設(shè)計(jì)得較為完整的VerilogHDL還有很多的語法規(guī)則和使用方式,需要進(jìn)一步學(xué)習(xí)。本書主要針對(duì)VerilogHDL基本語法規(guī)則和數(shù)字集成電路設(shè)計(jì)進(jìn)行介紹,更為專業(yè)和細(xì)致的內(nèi)容需要參照相關(guān)的國(guó)際標(biāo)準(zhǔn)和EDA工具的功能說明,以應(yīng)對(duì)越來越復(fù)雜的數(shù)字集成電路芯片設(shè)計(jì)和驗(yàn)證工作。本課件是可編輯的正常PPT課件1.6VerilogHDL在數(shù)字集成電路設(shè)計(jì)流程中的作用本課件是可編輯的正常PPT課件圖1.6-1為一般的數(shù)字集成電路設(shè)計(jì)流程。作為一種標(biāo)準(zhǔn)化的硬件電路設(shè)計(jì)語言,VerilogHDL在設(shè)計(jì)和驗(yàn)證中起著重要作用。數(shù)字集成電路和FPGA設(shè)計(jì)過程主要分為以下四個(gè)階段:第一階段是系統(tǒng)設(shè)計(jì)階段,包括總體方案和系統(tǒng)建模兩個(gè)主要過程??傮w方案是對(duì)系統(tǒng)進(jìn)行結(jié)構(gòu)規(guī)劃、功能分割并進(jìn)行互連模型系統(tǒng)級(jí)規(guī)劃。系統(tǒng)建模是對(duì)總體方案的細(xì)化,將總體方案劃分為具體的功能模塊,并對(duì)互連總線等進(jìn)行較為詳細(xì)的設(shè)計(jì)。第二階段是數(shù)字電路設(shè)計(jì)和代碼編寫階段,即RTL代碼編寫階段。在這個(gè)階段,設(shè)計(jì)人員將系統(tǒng)設(shè)計(jì)的功能模塊進(jìn)行具體的電路設(shè)計(jì),并形成可以測(cè)試的功能代碼。第三階段是電路驗(yàn)證階段,主要包括對(duì)硬件描述語言程序代碼的功能驗(yàn)證和經(jīng)過EDA綜合工具后的時(shí)序驗(yàn)證兩個(gè)部分。VerilogHDL程序可以對(duì)代碼的功能進(jìn)行基本邏輯的初步驗(yàn)證。VerilogHDL也可以對(duì)程序綜合后生成的電路進(jìn)行時(shí)序驗(yàn)證,電路的網(wǎng)表也可以用VerilogHDL程序形式表示。第四階段是集成電路的后端設(shè)計(jì)階段,主要通過EDA工具進(jìn)行物理綜合、布局布線、物理驗(yàn)證、原型建立和測(cè)試,并最終交付工藝實(shí)現(xiàn)。在集成電路的設(shè)計(jì)流程中,以VerilogHDL為代表的HDL發(fā)揮了很大作用。在第一、二階段的電路設(shè)計(jì)過程中,VerilogHDL主要進(jìn)行系統(tǒng)級(jí)和電路級(jí)的設(shè)計(jì)和驗(yàn)證;在第三、四階段,對(duì)于不同階段的綜合網(wǎng)表和物理電路,VerilogHDL也被用于電路的驗(yàn)證工作。因此,VerilogHDL可用于復(fù)雜數(shù)字邏輯電路和系統(tǒng)的總體仿真、子系統(tǒng)仿真和具體電路綜合等各個(gè)設(shè)計(jì)階段,在設(shè)計(jì)流程中具有重要的作用。2.1VerilogHDL的語言要素
2.2模塊
2.3端口本課件是可編輯的正常PPT課件2.1VerilogHDL的語言要素本課件是可編輯的正常PPT課件2.1.1符號(hào)1.空白符空白符包括空格符(\b)、制表符(\t)、換行符和換頁符??瞻追勾a看起來結(jié)構(gòu)清晰,閱讀起來更方便。在編譯和綜合時(shí),空白符被忽略。VerilogHDL程序可以不分行,也可以加入空白符采用多行編寫。2.注釋符VerilogHDL中允許插入注釋,表明程序代碼功能、修改、版本等信息,以增強(qiáng)程序的可讀性和幫助管理文檔。VerilogHDL中有以下兩種形式的注釋:(1)單行注釋。單行注釋以“//”開始,VerilogHDL忽略從此處到行尾的內(nèi)容。(2)多行注釋。多行注釋以“/*”開始,到“*/”結(jié)束,VerilogHDL忽略其中的注釋內(nèi)容。需要注意的是,多行注釋不允許嵌套,但是單行注釋可以嵌套在多行注釋中。本課件是可編輯的正常PPT課件3.標(biāo)識(shí)符和轉(zhuǎn)義標(biāo)識(shí)符在VerilogHDL中,標(biāo)識(shí)符(Identifier)被用來命名信號(hào)、模塊、參數(shù)等,它可以是任意一組字母、數(shù)字、$符號(hào)和_(下畫線)符號(hào)的組合。應(yīng)該注意的是,標(biāo)識(shí)符的字母區(qū)分大小寫,并且第一個(gè)字符必須是字母或者下畫線。為了使用標(biāo)識(shí)符集合以外的字符或標(biāo)號(hào),VerilogHDL規(guī)定了轉(zhuǎn)義標(biāo)識(shí)符(EscapedIdentifier)。采用轉(zhuǎn)義標(biāo)識(shí)符,可以在一條標(biāo)識(shí)符中包含任何可打印的字符。轉(zhuǎn)義標(biāo)識(shí)符以“\”(反斜線)符號(hào)開頭,以空白結(jié)尾(空白可以是一個(gè)空格、一個(gè)制表字符或換行符)。4.關(guān)鍵字VerilogHDL內(nèi)部已經(jīng)使用的詞稱為關(guān)鍵字或保留字,它是VerilogHDL內(nèi)部的專用詞,是事先定義好的確認(rèn)符,用來組織語言結(jié)構(gòu)。用戶不能隨便使用這些關(guān)鍵字。需注意的是,所有關(guān)鍵字都是小寫的。例如,ALWAYS不是關(guān)鍵字,它只是標(biāo)識(shí)符,與always(關(guān)鍵字)是不同的。表2.1-1所示為VerilogHDL中的常用關(guān)鍵字。本課件是可編輯的正常PPT課件5.數(shù)值VerilogHDL中有四種基本的邏輯數(shù)值狀態(tài)[0、1、x(X)、z(Z)],用數(shù)字或字符表達(dá)數(shù)字電路中傳送的邏輯狀態(tài)和存儲(chǔ)信息。其中,x和z都不區(qū)分大小寫,也就是說,0x1z與0X1Z是等同的。VerilogHDL中的四值電平邏輯如表2.1-2所示。本課件是可編輯的正常PPT課件在數(shù)值中,下畫線符號(hào)“_”除了不能放于數(shù)值的首位外,可以隨意用在整型數(shù)與實(shí)型數(shù)中,它們對(duì)數(shù)值大小沒有任何改變,只是為了提高可讀性。例如,16'b1011000110001100和16'b1011_0001_1000_1100的數(shù)值大小是相同的,只是后一種表達(dá)方式的可讀性更強(qiáng)。1)整數(shù)及其表示VerilogHDL中的整數(shù)可以是二進(jìn)制(b或B)、八進(jìn)制(o或O)、十進(jìn)制(d或D)、十六進(jìn)制(h或H),其基數(shù)符號(hào)與可以采用的數(shù)字字符集如表2.1-3所示。整數(shù)的表示形式如下:+/-<size>'<base_format><number>其中:“+/-”是正數(shù)和負(fù)數(shù)標(biāo)識(shí);size指換算后的二進(jìn)制數(shù)的寬度;“?'?”為基數(shù)格式表示的固有字符,該字符不能缺省,否則為非法表示形式;base_format是其基數(shù)符號(hào);number是可以使用的數(shù)字字符集,形式上是相應(yīng)進(jìn)制格式下的一串?dāng)?shù)值。本課件是可編輯的正常PPT課件使用整數(shù)時(shí)需要注意的是:(1)較長(zhǎng)的數(shù)之間可以用下畫線來分開,目的是提高可讀性,下畫線本身沒有意義,如16'b1110_1011_0011_1010,但下畫線符號(hào)不能用作首字符。(2)當(dāng)數(shù)字沒有說明位寬時(shí),默認(rèn)為32位。(3)?x或z在二進(jìn)制中代表1位x或z,在八進(jìn)制中代表3位x或z,在十六進(jìn)制中代表4位x或z,其代表的寬度取決于所用的進(jìn)制。(4)若沒有定義一個(gè)整數(shù)的位寬,其寬度為相應(yīng)值中定義的位數(shù)。(5)若定義的位寬比實(shí)際數(shù)的位數(shù)大,則在左邊用0補(bǔ)齊。但如果數(shù)的最左邊一位為x或z,就相應(yīng)地用x或z在左邊補(bǔ)齊。如果定義的位寬比實(shí)際數(shù)的位寬小,那么最左邊的位被截?cái)唷?6)?“?”是高阻態(tài)z的另一種表示符號(hào)。在數(shù)字的表示中,字符“?”和Z或z是等價(jià)的,可互相替代。(7)整數(shù)可以帶正、負(fù)號(hào),并且正、負(fù)號(hào)應(yīng)寫在最左邊。負(fù)數(shù)表示為二進(jìn)制的補(bǔ)碼形式。本課件是可編輯的正常PPT課件(8)如果位寬和進(jìn)制都缺省,則代表十進(jìn)制數(shù)。例如:-15代表十進(jìn)制數(shù)?-15。(9)數(shù)字中不能有空格,但在表示進(jìn)制的字母兩側(cè)可以有空格。2)實(shí)數(shù)及其表示實(shí)數(shù)有以下兩種表示方法:(1)十進(jìn)制表示法。采用十進(jìn)制格式,小數(shù)點(diǎn)兩邊必須都有數(shù)字,否則為非法的表示形式。(2)科學(xué)記數(shù)法。VerilogHDL還定義了實(shí)數(shù)轉(zhuǎn)換為整數(shù)的方法,實(shí)數(shù)通過四舍五入轉(zhuǎn)換為最相近的整數(shù)。3)字符串及其表示字符串是指用雙引號(hào)括起來的字符序列,它必須包含在同一行中,不能分行書寫。若字符串用作VerilogHDL表達(dá)式或賦值語句中的操作數(shù),則字符串被看作8位的ASCII值序列,即一個(gè)字符對(duì)應(yīng)8位的ASCII值。本課件是可編輯的正常PPT課件2.1.2數(shù)據(jù)類型在VerilogHDL中,常見的數(shù)據(jù)類型有wire、tri、tri0、tri1、wand、triand、trireg、trior、wor、supply0、supply1、reg、integer、time、real、parameter。按照抽象程度,VerilogHDL的數(shù)據(jù)類型又可劃分為兩大類:物理數(shù)據(jù)類型(主要包括連線型及寄存器型)和抽象數(shù)據(jù)類型(主要包括整型、時(shí)間型、實(shí)型及參數(shù)型)。物理數(shù)據(jù)類型的抽象程度比較低,與實(shí)際硬件電路的映射關(guān)系比較明顯;抽象數(shù)據(jù)類型則是進(jìn)行輔助設(shè)計(jì)和驗(yàn)證的數(shù)據(jù)類型。1.物理數(shù)據(jù)類型VerilogHDL中最主要的物理數(shù)據(jù)類型是連線型、寄存器型和存儲(chǔ)器型,并使用四種邏輯電平和八種信號(hào)強(qiáng)度對(duì)實(shí)際的硬件電路建模。四值邏輯電平是對(duì)信號(hào)的抽象表示(見表2.1-2)。信號(hào)強(qiáng)度表示數(shù)字電路中不同強(qiáng)度的驅(qū)動(dòng)源,用來解決不同驅(qū)動(dòng)強(qiáng)度下的賦值沖突;對(duì)邏輯0和1可以用表2.1-4中列出的信號(hào)強(qiáng)度值表示,驅(qū)動(dòng)強(qiáng)度從supply到highz依次遞減,例如(supply0,strong1)表示邏輯0的驅(qū)動(dòng)程度是supply,邏輯1的驅(qū)動(dòng)程度是strong。本課件是可編輯的正常PPT課件1)連線型連線型變量包含多種類型,表2.1-5給出了各種連線型數(shù)據(jù)類型及其功能說明。連線表示邏輯單元的物理連接,可以對(duì)應(yīng)為電路中的物理信號(hào)連線,這種變量類型不能保持電荷(除trireg之外)。連線型變量必須有驅(qū)動(dòng)源,一種是連接到一個(gè)門或者模塊的輸出端,另一種是用assign連續(xù)賦值語句對(duì)它進(jìn)行賦值。若沒有驅(qū)動(dòng)源,將保持高阻態(tài)z。本課件是可編輯的正常PPT課件(1)?wire和tri。在眾多的連線型數(shù)據(jù)類型中,最常見的是wire(連線)和tri(三態(tài)線)兩種,它們的語法和語義一致。不同之處在于:wire型變量通常用來表示單個(gè)門驅(qū)動(dòng)或連續(xù)賦值語句驅(qū)動(dòng)的連線型數(shù)據(jù),tri型變量則用來表示多驅(qū)動(dòng)器驅(qū)動(dòng)的連線型數(shù)據(jù),主要用于定義三態(tài)的線網(wǎng)。wire/tri的真值表如表2.1-6所示。上述真值表可以理解為,同時(shí)有兩個(gè)驅(qū)動(dòng)強(qiáng)度相同的驅(qū)動(dòng)源來驅(qū)動(dòng)wire或tri變量時(shí)的輸出結(jié)果。本課件是可編輯的正常PPT課件(2)?wor和trior。當(dāng)有多個(gè)驅(qū)動(dòng)源驅(qū)動(dòng)wor和trior型數(shù)據(jù)時(shí),將產(chǎn)生線或結(jié)構(gòu),其真值表如表2.1-7所示。(3)?wand和triand。當(dāng)有多個(gè)驅(qū)動(dòng)源驅(qū)動(dòng)wand和triand型數(shù)據(jù)時(shí),將產(chǎn)生線與結(jié)構(gòu),其真值表如表2.1-8所示。(4)?tri0和tri1。tri0(tri1)的特征是:若無驅(qū)動(dòng)源驅(qū)動(dòng),則其值為0(tri1的值為1)。在有多個(gè)驅(qū)動(dòng)源的情況下,tri0/tri1的真值表如表2.1-9所示。本課件是可編輯的正常PPT課件(5)?supply0和supply1。supply0用于對(duì)“地”建模,即低電平0;supply1用于對(duì)電源建模,即高電平1。例如:supply0表示Gnd,supply1表示Vcc。(6)?trireg。trireg能存儲(chǔ)數(shù)值(類似于寄存器型數(shù)據(jù)類型),并且用于電容節(jié)點(diǎn)的建模。當(dāng)三態(tài)寄存器(trireg)的所有驅(qū)動(dòng)源都處于高阻態(tài)z時(shí),三態(tài)寄存器連線將保存作用在線網(wǎng)上的最后一個(gè)邏輯值。三態(tài)寄存器連線的缺省初始值為x。trireg連線型數(shù)據(jù)用于模擬電荷存儲(chǔ)。電荷量強(qiáng)度可由small、medium、large三個(gè)關(guān)鍵字來控制。默認(rèn)的電荷強(qiáng)度為medium。一個(gè)trireg連線型數(shù)據(jù)能夠模擬一個(gè)電荷存儲(chǔ)節(jié)點(diǎn),該節(jié)點(diǎn)的電荷量將隨時(shí)間而逐漸衰減。對(duì)于一個(gè)trireg連線型數(shù)據(jù),電荷衰減時(shí)間就是定義的仿真延遲時(shí)間。本課件是可編輯的正常PPT課件2)寄存器型reg型變量是最常見也是最重要的寄存器型數(shù)據(jù)類型,它是數(shù)據(jù)存儲(chǔ)單元的抽象類型,其對(duì)應(yīng)的硬件電路元件具有狀態(tài)保持作用,能夠存儲(chǔ)數(shù)據(jù),如觸發(fā)器、鎖存器等。reg型變量常用于行為級(jí)描述中,由過程賦值語句對(duì)其進(jìn)行賦值。reg型數(shù)據(jù)與wire型數(shù)據(jù)的區(qū)別在于,reg型數(shù)據(jù)保持最后一次的賦值,而wire型數(shù)據(jù)需要有持續(xù)的驅(qū)動(dòng)。一般情況下,reg型數(shù)據(jù)的默認(rèn)初始值為不定值x,缺省時(shí)的位寬為1位。reg型變量一般為無符號(hào)數(shù),若將一個(gè)負(fù)數(shù)賦給reg型變量,則自動(dòng)轉(zhuǎn)換成其二進(jìn)制補(bǔ)碼形式。在過程塊內(nèi)被賦值的每一個(gè)信號(hào)都必須定義成reg型,并且只能在always或initial過程塊中賦值,大多數(shù)reg型信號(hào)常常是寄存器或觸發(fā)器的輸出。2.連線型和寄存器型數(shù)據(jù)類型的聲明1)連線型數(shù)據(jù)類型的聲明缺省的連線型數(shù)據(jù)的默認(rèn)類型為1位(標(biāo)量)wire類型。VerilogHDL中禁止對(duì)已經(jīng)聲明過的網(wǎng)絡(luò)、變量或參數(shù)再次聲明。連線型數(shù)據(jù)類型聲明的一般語法格式如下:
<net_declaration><drive_strength><range><delay>[list_of_variables];其中,drive_strength、range、delay為可選項(xiàng),而list_of_variables為必選項(xiàng)。
說明:(1)?net_declaration:連線型數(shù)據(jù)類型,可以是wire、tri、tri0、tri1、wand、triand、trior、wor、trireg、supply1、supply0中的任意一種。(2)?drive_strength:連線型變量的驅(qū)動(dòng)強(qiáng)度。對(duì)于trireg類型,聲明的是charge_strength(電荷強(qiáng)度)。(3)?range:指定數(shù)據(jù)為標(biāo)量或矢量。若該項(xiàng)默認(rèn),則表示數(shù)據(jù)類型為1位的標(biāo)量;若超過1位,則為矢量形式。
(4)?delay:指定仿真延遲時(shí)間。
(5)?list_of_variables:變量名稱,一次可定義多個(gè)名稱,之間用逗號(hào)分開。除了邏輯值外,VerilogHDL還用強(qiáng)度值來解決數(shù)字電路中不同強(qiáng)度的驅(qū)動(dòng)源之間的賦值沖突,強(qiáng)度等級(jí)說明見表2.2-1。如果兩個(gè)具有不同強(qiáng)度的信號(hào)驅(qū)動(dòng)同一個(gè)線網(wǎng),則競(jìng)爭(zhēng)結(jié)果為高強(qiáng)度信號(hào)的值;如果兩個(gè)強(qiáng)度相同的信號(hào)之間發(fā)生競(jìng)爭(zhēng),則結(jié)果為不確定值。2)寄存器型數(shù)據(jù)類型的聲明reg型數(shù)據(jù)類型聲明的一般語法格式如下:reg<range><list_of_register_variables>;其中,range為可選項(xiàng),它指定了reg型變量的位寬,缺省時(shí)為1位。
說明:list_of_register_variables:變量名稱列表,一次可以定義多個(gè)名稱,之間用逗號(hào)分開。3)物理數(shù)據(jù)類型聲明示例前面已經(jīng)了解了連線型數(shù)據(jù)和寄存器型數(shù)據(jù)這兩種物理數(shù)據(jù)類型的聲明格式,下面舉例來說明這兩種聲明格式的用法。3.存儲(chǔ)器型存儲(chǔ)器型(memory)本質(zhì)上還是寄存器型變量陣列,只是VerilogHDL中沒有多維數(shù)組,所以就用reg型變量建立寄存器組(數(shù)組)來實(shí)現(xiàn)存儲(chǔ)器的功能,也就是擴(kuò)展的reg型數(shù)據(jù)地址范圍。存儲(chǔ)器型變量可以描述RAM型、ROM型存儲(chǔ)器以及reg文件。數(shù)組中的每一個(gè)單元通過一個(gè)數(shù)組索引進(jìn)行尋址。
存儲(chǔ)器型變量的一般聲明格式如下:reg<range1><name_of_register><range2>;其中,range1和range2都是可選項(xiàng),缺省時(shí)都為1。
說明:(1)?range1:存儲(chǔ)器中寄存器的位寬,格式為[msb:lsb]。(2)?range2:寄存器的個(gè)數(shù),格式為[msb:lsb],即有msb-lsb+1個(gè)。(3)?name_of_register:變量名稱列表,一次可以定義多個(gè)名稱,之間用逗號(hào)分開。4.抽象數(shù)據(jù)類型除了物理數(shù)據(jù)類型外,VerilogHDL還提供了整型(integer)、時(shí)間型(time)、實(shí)型(real)及參數(shù)型(parameter)等幾種抽象數(shù)據(jù)類型。它們只是純數(shù)學(xué)的抽象描述,不能與實(shí)際的硬件電路相映射。1)整型整型數(shù)據(jù)常用于對(duì)循環(huán)控制變量的說明,在算術(shù)運(yùn)算中被視為二進(jìn)制補(bǔ)碼形式的有符號(hào)數(shù)。除了寄存器型數(shù)據(jù)被當(dāng)作無符號(hào)數(shù)來處理之外,整型數(shù)據(jù)與32位寄存器型數(shù)據(jù)在實(shí)際意義上相同。整型數(shù)據(jù)的聲明格式如下:integer<list_of_register_variables>;2)時(shí)間型時(shí)間型數(shù)據(jù)與整型數(shù)據(jù)類似,只是它是64位的無符號(hào)數(shù)。時(shí)間型數(shù)據(jù)主要用于處理模擬時(shí)間的存儲(chǔ)與計(jì)算,常與系統(tǒng)函數(shù)$time一起使用。時(shí)間型數(shù)據(jù)的聲明格式如下:time<list_of_register_variables>;3)實(shí)型VerilogHDL支持實(shí)型常量與變量。實(shí)型數(shù)據(jù)在機(jī)器碼表示法中是浮點(diǎn)型數(shù)值,可用于對(duì)延遲時(shí)間的計(jì)算。實(shí)型數(shù)據(jù)的聲明格式如下:real<list_of_variables>;4)參數(shù)型在VerilogHDL中,參數(shù)是一個(gè)非常重要的數(shù)據(jù)類型,屬于常量,在仿真開始之前就被賦值,在仿真過程中保持不變。采用參數(shù)定義方法,可以提高程序的可讀性和可維護(hù)性。參數(shù)常用來定義延遲時(shí)間和變量的位寬。參數(shù)型數(shù)據(jù)的定義格式如下:parameter參數(shù)名1?=?表達(dá)式1,參數(shù)名2?=?表達(dá)式2,…,參數(shù)名n?=?表達(dá)式n;其中,表達(dá)式既可以是常數(shù),也可以是常量表達(dá)式,即表達(dá)式中是常數(shù)或之前定義過的參數(shù)。參數(shù)定義完后,程序中出現(xiàn)的所有的參數(shù)名都將被替換為相對(duì)應(yīng)的表達(dá)式。對(duì)于同一個(gè)模塊來說,參數(shù)一旦被定義,就不能夠通過其他語句對(duì)它重新賦值。下例是錯(cuò)誤的,因?yàn)閍被重復(fù)賦值。2.1.3運(yùn)算符VerilogHDL的運(yùn)算符主要針對(duì)數(shù)字邏輯電路制定,覆蓋范圍廣泛。VerilogHDL中的運(yùn)算符及其運(yùn)算優(yōu)先級(jí)如表2.1-10所示。不同的綜合開發(fā)工具在執(zhí)行這些優(yōu)先級(jí)時(shí)可能有微小的差別,因此在書寫程序時(shí)建議用括號(hào)來控制運(yùn)算的優(yōu)先級(jí),以有效避免錯(cuò)誤,同時(shí)增加程序的可讀性。1.算術(shù)運(yùn)算符VerilogHDL中常用的算術(shù)運(yùn)算符有五種,分別是加法(?+?)、減法(?-?)、乘法(?*?)、除法(?/?)和取模(?%?)。這五種運(yùn)算符都屬于雙目運(yùn)算符。符號(hào)“+”“-”“*”“/”分別表示常用的加、減、乘、除四則運(yùn)算;%?是取模運(yùn)算,如“6%3”的值為0,“7%4”的值為3。在算術(shù)運(yùn)算符的使用中,要注意如下問題:(1)算術(shù)運(yùn)算結(jié)果的位寬。算術(shù)表達(dá)式結(jié)果的長(zhǎng)度由最長(zhǎng)的操作數(shù)決定。在賦值語句下,算術(shù)運(yùn)算結(jié)果的長(zhǎng)度由等號(hào)操作符左端的目標(biāo)長(zhǎng)度決定。(2)有符號(hào)數(shù)和無符號(hào)數(shù)的使用。在設(shè)計(jì)中要注意到哪些操作數(shù)應(yīng)該是無符號(hào)數(shù),哪些應(yīng)該是有符號(hào)數(shù)。無符號(hào)數(shù)值一般存儲(chǔ)在線網(wǎng)、reg(寄存器)型變量及普通(沒有符號(hào)標(biāo)記s)的基數(shù)格式表示的整型數(shù)中。有符號(hào)數(shù)值一般存儲(chǔ)在整型變量、十進(jìn)制形式的整數(shù)、有符號(hào)的reg(寄存器)型變量及有符號(hào)的線網(wǎng)中。2.關(guān)系運(yùn)算符關(guān)系運(yùn)算符也是雙目運(yùn)算符,是對(duì)兩個(gè)操作數(shù)的大小進(jìn)行比較。關(guān)系運(yùn)算符有大于(>)、小于(<)、大于等于(>=)和小于等于(<=)幾種。在進(jìn)行關(guān)系比較時(shí),如果成立則結(jié)果為1'b1,否則返回的結(jié)果為0'b0;若不確定則返回結(jié)果為不定值(x)。例如:10>15的結(jié)果為假(0),20?>?18的結(jié)果為真(1),而4'b1101?<?4'hx的結(jié)果為不定值(x)。需注意的是,若操作數(shù)長(zhǎng)度不同,則長(zhǎng)度短的操作數(shù)應(yīng)在左邊用0補(bǔ)齊。例如:'b1001>='b101100等價(jià)于?'b001001>='b101101,結(jié)果為假(0)。3.相等關(guān)系運(yùn)算符相等關(guān)系運(yùn)算符是對(duì)兩個(gè)操作數(shù)進(jìn)行比較,比較的結(jié)果有三種,即真(1)、假(0)和不定值(x)。VerilogHDL中有四種相等關(guān)系運(yùn)算符:等于(==)、不等于(!=)、全等(===)、非全等(!==)。這四種運(yùn)算符都是雙目運(yùn)算符,要求有兩個(gè)操作數(shù),并且這四種相等運(yùn)算符的優(yōu)先級(jí)別是相同的?!?=”和“!=”稱為邏輯等式運(yùn)算符,其結(jié)果由兩個(gè)操作數(shù)的值決定,由于操作數(shù)中某些位可能是不定值x和高阻態(tài)值z(mì),所以結(jié)果可能為不定值x?!?==”和“!==”運(yùn)算符則不同,它是對(duì)操作數(shù)進(jìn)行按位比較,兩個(gè)操作數(shù)必須完全一致,其結(jié)果才是1,否則為0。若兩個(gè)操作數(shù)對(duì)應(yīng)位同時(shí)出現(xiàn)不定值x和高阻值z(mì),則可認(rèn)為是相同的。“===”和“!==”運(yùn)算符常用于case表達(dá)式的判別,所以又稱為“case等式運(yùn)算符”。表2.1-11列出了“==”和“===”的真值表,可幫助讀者理解兩者的區(qū)別。4.邏輯運(yùn)算符邏輯運(yùn)算符有三種,分別是邏輯與(&&)、邏輯或(||)和邏輯非(!)。其中邏輯與、邏輯或是雙目運(yùn)算符,邏輯非為單目運(yùn)算符。邏輯運(yùn)算符的操作數(shù)只能是邏輯0或者邏輯1。三種邏輯運(yùn)算符的真值表如表2.1-12所示。在邏輯運(yùn)算符的操作過程中,如果操作數(shù)僅有1位,那么1就代表邏輯真,0就代表邏輯假;如果操作數(shù)是由多位組成的,則當(dāng)操作數(shù)每一位都是0時(shí)才是邏輯0值,只要有某一位為1,這個(gè)操作數(shù)就是邏輯1值。例如:寄存器變量a、b的初值分別為4'b1110和4'b0000,則?!a?=?0,!b?=?1,a&&b?=?0,a?||?b?=?1。需注意的是,若操作數(shù)中存在不定態(tài)x,并且其他位都是0,則邏輯運(yùn)算的結(jié)果也是不定態(tài),例如:a的初值為4'b1100,b的初值為4'b00x0,則?!a?=?0,!b?=?x,a&&b?=?x,a?||?b?=?1。5.按位運(yùn)算符數(shù)字邏輯電路中,信號(hào)與信號(hào)之間的運(yùn)算稱為位運(yùn)算。VerilogHDL提供了五種類型的位運(yùn)算符:按位取反(~)、按位與(&)、按位或(|)、按位異或(^)、按位同或(^~)。按位運(yùn)算符對(duì)其自變量的每一位進(jìn)行操作。例如:表達(dá)式A|B的結(jié)果是A和B的對(duì)應(yīng)位相或的值。表2.1-13~表2.1-15給出了按位與、按位或和按位異或運(yùn)算符的真值表。需要注意的是,兩個(gè)不同長(zhǎng)度的數(shù)進(jìn)行位運(yùn)算時(shí),會(huì)自動(dòng)地將兩個(gè)操作數(shù)按右端對(duì)齊,位數(shù)少的操作數(shù)會(huì)在高位用0補(bǔ)齊;然后逐位進(jìn)行運(yùn)算,運(yùn)算結(jié)果的位寬與操作數(shù)中的位寬較大者相同。6.歸約運(yùn)算符歸約運(yùn)算符按位進(jìn)行邏輯運(yùn)算,屬于單目運(yùn)算符。由于這一類運(yùn)算符運(yùn)算的結(jié)果是產(chǎn)生1位邏輯值,因而被形象地稱為縮位運(yùn)算符。VerilogHDL中,縮位運(yùn)算符包括?&(與)、|(或)、^(異或)以及相應(yīng)的非操作?~&、~|、~^、^~。歸約運(yùn)算符的操作數(shù)只有一個(gè)。歸約運(yùn)算符的運(yùn)算過程是:設(shè)a是一個(gè)4位的寄存器型變量,它的4位分別是a[0]、a[1]、a[2]?和a[3]。當(dāng)對(duì)a進(jìn)行縮位運(yùn)算時(shí),先對(duì)a[0]?和a[1]?進(jìn)行縮位運(yùn)算,產(chǎn)生1位的結(jié)果,再將這個(gè)結(jié)果與a[2]?進(jìn)行縮位運(yùn)算,接著是a[3],最后產(chǎn)生1位的操作結(jié)果。7.移位運(yùn)算符移位運(yùn)算符有兩種:左移位運(yùn)算符(<<)和右移位運(yùn)算符(>>)。移位運(yùn)算過程是將左邊(右邊)的操作數(shù)向左(右)移,所移動(dòng)的位數(shù)由右邊的操作數(shù)來決定,然后用0來填補(bǔ)移出的空位。
8.條件運(yùn)算符條件運(yùn)算符(??:)是VerilogHDL里唯一的三目運(yùn)算符,它根據(jù)條件表達(dá)式的值來選擇應(yīng)執(zhí)行的表達(dá)式,其表達(dá)形式如下:<條件表達(dá)式>?<表達(dá)式1>:<表達(dá)式2>其中,條件表達(dá)式的運(yùn)算結(jié)果有真(1)、假(0)和不定態(tài)(x)三種。當(dāng)條件表達(dá)式的結(jié)果為真時(shí),執(zhí)行表達(dá)式1;當(dāng)條件表達(dá)式的結(jié)果為假時(shí),執(zhí)行表達(dá)式2。如果條件表達(dá)式的運(yùn)算結(jié)果為不定態(tài)x,則模擬器將按位對(duì)表達(dá)式1的值與表達(dá)式2的值進(jìn)行比較,位與位的比較按表2.1-16的規(guī)則產(chǎn)生每個(gè)結(jié)果位,從而構(gòu)成條件表達(dá)式的結(jié)果。9.連接和復(fù)制運(yùn)算符VerilogHDL中還有兩個(gè)特殊的運(yùn)算符:連接運(yùn)算符({})和復(fù)制運(yùn)算符({{}})。連接運(yùn)算符是把位于大括號(hào)({})中的兩個(gè)或兩個(gè)以上信號(hào)或數(shù)值用逗號(hào)(?,?)分隔的小表達(dá)式按位連接在一起,最后用大括號(hào)括起來表示一個(gè)整體信號(hào)或數(shù)值,形成一個(gè)大的表達(dá)式。其格式如下:{信號(hào)1的某幾位,信號(hào)2的某幾位,…,信號(hào)n的某幾位}復(fù)制運(yùn)算符({{}})將一個(gè)表達(dá)式放入雙重花括號(hào)中,復(fù)制因子放在第一層括號(hào)中。它為復(fù)制一個(gè)常量或變量提供了一種簡(jiǎn)便的方法。2.2模
塊本課件是可編輯的正常PPT課件模塊(module)是VerilogHDL的基本單元,它代表一個(gè)基本的功能塊,用于描述某個(gè)設(shè)計(jì)的功能或結(jié)構(gòu),以及與其他模塊通信的外部端口。一個(gè)電路的設(shè)計(jì)不是一個(gè)模塊的設(shè)計(jì),而是多個(gè)模塊的組合,因此一個(gè)模塊的設(shè)計(jì)只是一個(gè)系統(tǒng)設(shè)計(jì)中某個(gè)層次的設(shè)計(jì)。圖2.2-1是一個(gè)基本的模塊結(jié)構(gòu)組成。從圖2.2-1中可以看出,一個(gè)模塊主要包括模塊的開始與結(jié)束、模塊端口定義、模塊數(shù)據(jù)類型說明和模塊邏輯功能描述幾個(gè)基本部分。(1)模塊的開始與結(jié)束:模塊在語言形式上是以關(guān)鍵詞module開始、以關(guān)鍵詞endmodule結(jié)束的一段程序,其中模塊開始語句必須以分號(hào)結(jié)束。模塊的開始部分包括模塊名(name)和端口列表(port_list),模塊名是模塊唯一的標(biāo)識(shí)符,而端口列表是由模塊各個(gè)輸入、輸出和雙向端口變量組成的一張列表,這些端口用來與其他模塊進(jìn)行連接(不妨理解為集成電路的引腳)。(2)模塊端口定義:定義端口列表里的變量哪些是輸入(input)、輸出(output)和雙向端口(inout)以及位寬。(3)模塊數(shù)據(jù)類型說明:包括wire、reg、memory和parameter等數(shù)據(jù)類型,以說明模塊中所用到的內(nèi)部信號(hào)、調(diào)用模塊等的聲明語句和功能定義語句。一般來說,module的input缺省定義為wire類型;output信號(hào)可以是wire類型,也可以是reg類型(條件是在always或initial語句塊中被賦值);inout一般為tri(三態(tài)線)類型,表示有多個(gè)驅(qū)動(dòng)源。(4)模塊邏輯功能描述:產(chǎn)生各種邏輯(主要是組合邏輯和時(shí)序邏輯),主要包括initial語句、always語句、其他子模塊實(shí)例化語句、門實(shí)例化語句、用戶自定義原語(UDP)實(shí)例化語句、連續(xù)賦值語句(assign)、函數(shù)(function)和任務(wù)(task)。由上述模塊的結(jié)構(gòu)組成可以看出,模塊在概念上可等同于一個(gè)器件,比如通用器件(與門、三態(tài)門等)或通用宏單元(計(jì)數(shù)器、ALU、CPU)等。一個(gè)模塊可在另一個(gè)模塊中被調(diào)用,一個(gè)模塊代表了一個(gè)特定功能塊。一個(gè)電路設(shè)計(jì)可由多個(gè)模塊組合而成,因此一個(gè)模塊的設(shè)計(jì)只是一個(gè)系統(tǒng)設(shè)計(jì)中某個(gè)層次的設(shè)計(jì)。模塊設(shè)計(jì)可采用多種建模方式,一般包括行為描述方式、結(jié)構(gòu)描述方式以及混合描述方式(混合使用結(jié)構(gòu)描述和行為描述)。通過下例的VerilogHDL設(shè)計(jì)的簡(jiǎn)單模塊,可結(jié)合模塊結(jié)構(gòu)體會(huì)VerilogHDL代碼和電路圖的含義。2.3端
口本課件是可編輯的正常PPT課件端口是模塊與外界或其他模塊溝通的信號(hào)線。模塊的端口可以是輸入端口(input)、輸出端口(output)或輸入/輸出(雙向)端口(inout)。缺省狀態(tài)下,端口類型都默認(rèn)為wire類型。需要注意的是,在某一端口的類型聲明中,類型聲明的長(zhǎng)度必須和端口聲明的長(zhǎng)度一致。一個(gè)模塊往往具有多個(gè)端口,它們是本模塊和其他模塊進(jìn)行聯(lián)系的標(biāo)志。在模塊定義格式中,“模塊端口列表”列出了模塊具有的外部可見端口,該“模塊端口列表”內(nèi)的每一個(gè)端口項(xiàng)都代表著一個(gè)模塊端口。VerilogHDL中有如下三種端口聲明方式。輸入端口:input[信號(hào)位寬-1:0]端口名1;輸出端口:output[信號(hào)位寬-1:0]端口名1;輸入/輸出端口:inout[信號(hào)位寬-1:0]端口名1;端口聲明語句的作用對(duì)象必須是與模塊端口相連的模塊內(nèi)部變量,而不能是端口名(端口名和內(nèi)部變量標(biāo)識(shí)符同名的情況除外)。模塊內(nèi)部對(duì)端口進(jìn)行的輸入/輸出操作是通過端口表達(dá)式中出現(xiàn)的內(nèi)部變量進(jìn)行的(這些變量與對(duì)應(yīng)的端口相連),所以在模塊內(nèi)部必須對(duì)這些內(nèi)部變量的輸入/輸出特性進(jìn)行說明。當(dāng)模塊被引用時(shí),在引用的模塊中,有些信號(hào)需要輸入到被引用的模塊中,有些信號(hào)需要從被引用的模塊中取出。在引用模塊時(shí)其端口可以用如下兩種方法連接。(1)在引用時(shí),嚴(yán)格按照模塊定義的端口順序來連接,不用標(biāo)明源模塊定義時(shí)規(guī)定的端口名。其格式如下:模塊名(連接端口1信號(hào)名,連接端口2信號(hào)名,…);(2)在引用時(shí)用“.”標(biāo)明源模塊定義時(shí)規(guī)定的端口名。其格式如下:模塊名(.端口1名(連接信號(hào)1名),.端口2名(連接信號(hào)2名),…);這樣表示的好處在于可以用端口名與被引用模塊的端口對(duì)應(yīng),不必嚴(yán)格按端口順序?qū)?yīng),提高了程序的可讀性和可移植性。3.1數(shù)據(jù)流建模
3.2行為級(jí)建模
3.3結(jié)構(gòu)化建模3.1數(shù)據(jù)流建模在數(shù)字電路中,輸入信號(hào)經(jīng)過組合邏輯電路傳送到輸出端類似于數(shù)據(jù)流動(dòng),而不會(huì)在其中存儲(chǔ)。通過連續(xù)賦值語句可以對(duì)這種特性進(jìn)行建模,這種建模方式通常稱為數(shù)據(jù)流建模。VerilogHDL中的數(shù)據(jù)流建模方式是比較簡(jiǎn)單的行為建模,它只有一種描述方式,即通過連續(xù)賦值語句進(jìn)行邏輯描述。其最基本的語句是由關(guān)鍵詞assign引導(dǎo)的。對(duì)于連續(xù)賦值語句,只要輸入端操作數(shù)的值發(fā)生變化,該語句就重新計(jì)算并刷新賦值結(jié)果。通常可以使用連續(xù)賦值語句來描述組合邏輯電路,而不需要用門電路和互連線。連續(xù)賦值的目標(biāo)類型主要是標(biāo)量線網(wǎng)和向量線網(wǎng),標(biāo)量線網(wǎng)如“wirea,b;”,向量線網(wǎng)如“wire[3:0]a,b;”。連續(xù)賦值語句只能用來對(duì)連線型變量進(jìn)行驅(qū)動(dòng),而不能對(duì)寄存器型變量進(jìn)行賦值,它可以采取顯式連續(xù)賦值語句和隱式連續(xù)賦值語句兩種賦值方式。1.顯式連續(xù)賦值語句顯式連續(xù)賦值語句的語法格式如下:<net_declaration><range><name>;assign#<delay><name>=assignmentexpression;這種格式的連續(xù)賦值語句包含兩條語句:第一條語句是對(duì)連線型變量進(jìn)行類型說明的語句;第二條語句是對(duì)這個(gè)連線型變量進(jìn)行連續(xù)賦值的賦值語句。賦值語句是由關(guān)鍵詞assign引導(dǎo)的,它能夠用來驅(qū)動(dòng)連線型變量,而且只能對(duì)連線型變量進(jìn)行賦值,主要用于對(duì)wire型變量進(jìn)行賦值。2.隱式連續(xù)賦值語句隱式連續(xù)賦值語句的語法格式如下:<net_declaration><drive_strength><range>#<delay><name>=assignmentexpression;這種格式的連續(xù)賦值語句把連線型變量的說明語句以及對(duì)該連線型變量進(jìn)行連續(xù)賦值的語句結(jié)合到同一條語句內(nèi)。利用它可以在對(duì)連線型變量進(jìn)行類型說明的同時(shí)實(shí)現(xiàn)連續(xù)賦值。上述兩種格式中:·“net_declaration(連線型變量類型)”可以是除了trireg類型外的任何一種連線型數(shù)據(jù)類型?!ぁ皉ange(變量位寬)”指明了變量數(shù)據(jù)類型的寬度,格式為[msb:lab],缺省時(shí)為1位?!ぁ癲rive_strength(賦值驅(qū)動(dòng)強(qiáng)度)”是可選的,它只能在“隱式連續(xù)賦值語句”格式中指定。它用來對(duì)連線型變量受到的驅(qū)動(dòng)強(qiáng)度進(jìn)行指定。它是由“對(duì)1驅(qū)動(dòng)強(qiáng)度”和“對(duì)0驅(qū)動(dòng)強(qiáng)度”兩項(xiàng)組成的。驅(qū)動(dòng)強(qiáng)度的概念在上一章的數(shù)據(jù)類型中已經(jīng)說明,比如語句“wire(weak0,strong1)out=in1&in2;”內(nèi)的“(weak0,strong1)”就表示該語句指定的連續(xù)賦值對(duì)連線型變量“out”的驅(qū)動(dòng)強(qiáng)度是:賦“0”值時(shí)的驅(qū)動(dòng)強(qiáng)度為“弱(weak)”,而賦“1”值時(shí)的驅(qū)動(dòng)強(qiáng)度為“強(qiáng)(strong)”。如果在格式中缺省了“賦值驅(qū)動(dòng)強(qiáng)度”這一項(xiàng),則驅(qū)動(dòng)強(qiáng)度默認(rèn)為(strong1,strong0)?!ぁ癲elay(延時(shí)量)”項(xiàng)也是可選的,它指定了賦值表達(dá)式內(nèi)信號(hào)發(fā)生變化時(shí)刻到連線型變量取值被更新時(shí)刻之間的延遲時(shí)間量。其語法格式如下:#(delay1,delay2,delay3)其中,delay1、delay2、delay3都是一個(gè)數(shù)值,“delay1”指明了連線型變量轉(zhuǎn)移到“1”狀態(tài)時(shí)的延時(shí)值(稱為上升延時(shí));“delay2”指明了連線型變量轉(zhuǎn)移到“0”狀態(tài)時(shí)的延時(shí)值(稱為下降延時(shí));“delay3”指明了連線型變量轉(zhuǎn)移到“高阻Z”狀態(tài)時(shí)的延時(shí)值(稱為關(guān)閉延時(shí))。如果沒有定義delay,則缺省值為0。3.連續(xù)賦值語句使用中的注意事項(xiàng)(1)賦值目標(biāo)只能是線網(wǎng)類型(wire)。(2)在連續(xù)賦值中,只要賦值語句右邊表達(dá)式的任何一個(gè)變量有變化,表達(dá)式立即被計(jì)算,計(jì)算的結(jié)果立即賦給左邊的信號(hào)(若沒有定義延時(shí)量)。(3)連續(xù)賦值語句不能出現(xiàn)在過程塊中。(4)多個(gè)連續(xù)賦值語句之間是并行關(guān)系,因此與位置順序無關(guān)。(5)連續(xù)賦值語句中的延時(shí)具有硬件電路中慣性延時(shí)的特性,任何小于其延時(shí)量的信號(hào)變化脈沖都將被濾除掉,不會(huì)出現(xiàn)在輸出端口。
3.2行
為
級(jí)
建
模VerilogHDL支持設(shè)計(jì)者從電路外部行為的角度對(duì)其進(jìn)行描述,因此行為級(jí)建模是從一個(gè)層次很高的抽象角度來表示電路的。其目標(biāo)不是對(duì)電路的具體硬件結(jié)構(gòu)進(jìn)行說明,它是為了綜合以及仿真的目的而進(jìn)行的。在這個(gè)層次上,設(shè)計(jì)數(shù)字電路更類似于使用一些高級(jí)語言(如C語言)進(jìn)行編程,而且VerilogHDL行為級(jí)建模的語法結(jié)構(gòu)與C語言也非常相似。VerilogHDL提供了許多行為級(jí)建模語法結(jié)構(gòu),為設(shè)計(jì)者的使用提供了很大的靈活性。行為描述常常用于復(fù)雜數(shù)字邏輯系統(tǒng)的頂層設(shè)計(jì)中,也就是通過行為級(jí)建模把一個(gè)復(fù)雜的系統(tǒng)分解成可操作的若干個(gè)模塊,每個(gè)模塊之間的邏輯關(guān)系通過行為模塊的仿真加以驗(yàn)證。這樣就能把一個(gè)大的系統(tǒng)合理地分解為若干個(gè)較小的子系統(tǒng),然后再將每個(gè)子系統(tǒng)用可綜合風(fēng)格的VerilogHDL模塊(門級(jí)結(jié)構(gòu)或RTL級(jí)、算法級(jí)、系統(tǒng)級(jí)的模塊)加以描述。同時(shí),行為級(jí)建模也可以用來生成仿真測(cè)試信號(hào),對(duì)已設(shè)計(jì)的模塊進(jìn)行檢測(cè)。本節(jié)將詳細(xì)介紹行為級(jí)建模結(jié)構(gòu)以及各種高級(jí)語句的語法格式和用法。圖3.2-1給出了VerilogHDL行為描述中模塊的構(gòu)成框架。3.2.1過程語句
VerilogHDL中的過程塊是由過程語句組成的。過程語句有兩種,即initial過程語句和always過程語句。1.initial過程語句initial過程語句的語法格式是:
initial過程語句在進(jìn)行仿真時(shí)從模擬0時(shí)刻開始執(zhí)行,它在仿真過程中只執(zhí)行一次,在執(zhí)行完一次后該initial過程語句就被掛起,不再執(zhí)行。如果一個(gè)模塊中存在多個(gè)initial過程語句,則每個(gè)initial過程語句都是同時(shí)從0時(shí)刻開始并行執(zhí)行的。initial過程語句內(nèi)的多條行為語句可以是順序執(zhí)行的,也可以是并行執(zhí)行的。initial過程語句通常用于仿真模塊中對(duì)激勵(lì)向量的描述,或用于給寄存器變量賦初值。2.a(chǎn)lways過程語句從語法描述角度而言,相對(duì)于initial過程語句,always過程語句的觸發(fā)狀態(tài)是一直存在的,只要滿足always后面的敏感事件列表,就執(zhí)行語句塊。其語法格式如下:always@(<敏感事件列表>)
語句塊;其中,敏感事件列表就是觸發(fā)條件,只有當(dāng)觸發(fā)條件滿足時(shí),其后的語句塊才能被執(zhí)行。也就是說,只要該列表中變量的值發(fā)生改變,就會(huì)引發(fā)塊內(nèi)語句的執(zhí)行。因此,敏感事件列表中應(yīng)列出影響塊內(nèi)取值的所有信號(hào)。若有兩個(gè)或兩個(gè)以上信號(hào),則它們之間可以用“or”連接,也可以用逗號(hào)“,”連接。敏感信號(hào)可以分為兩種類型:一種為邊沿敏感型,一種為電平敏感型。對(duì)于時(shí)序電路,事件通常是由時(shí)鐘邊沿觸發(fā)的。為表達(dá)邊沿這個(gè)概念,VerilogHDL提供了posedge和negedge兩個(gè)關(guān)鍵字分別描述信號(hào)的上升沿和下降沿。3.過程語句使用中的注意事項(xiàng)過程語句具有很強(qiáng)的功能,VerilogHDL的大多數(shù)高級(jí)程序語句都是在過程中使用的。它既可以描述時(shí)序邏輯電路,也可以描述組合邏輯電路。采用過程語句進(jìn)行程序設(shè)計(jì)時(shí),VerilogHDL有一定的設(shè)計(jì)要求和規(guī)范。在信號(hào)的形式定義方面,無論是對(duì)時(shí)序邏輯電路還是對(duì)組合邏輯電路進(jìn)行描述,VerilogHDL都要求在過程語句(initial和always)中被賦值信號(hào)必須定義為reg類型。敏感事件列表是VerilogHDL中的一個(gè)關(guān)鍵性設(shè)計(jì),如何選取敏感事件作為過程的觸發(fā)條件,在VerilogHDL程序中有一定的設(shè)計(jì)要求:(1)采用過程語句對(duì)組合電路進(jìn)行描述時(shí),需要把全部的輸入信號(hào)列入敏感事件列表。(2)采用過程語句對(duì)時(shí)序電路進(jìn)行描述時(shí),需要把時(shí)間信號(hào)和部分輸入信號(hào)列入敏感事件列表。應(yīng)當(dāng)注意的是,不同的敏感事件列表會(huì)產(chǎn)生不同的電路形式。
3.2.2語句塊在VerilogHDL過程語句的使用中,當(dāng)語句數(shù)超過一條時(shí),需要采用語句塊。語句塊就是由塊標(biāo)識(shí)符begin-end或fork-join界定的一組行為描述語句。語句塊就相當(dāng)于給塊中的一組行為描述語句進(jìn)行打包,使之在形式上類似于一條語句。語句塊的具體功能是通過語句塊中所包含的描述語句的執(zhí)行而得以實(shí)現(xiàn)的。當(dāng)語句塊中只包含一條語句時(shí),可以直接寫這條語句,此時(shí)塊標(biāo)識(shí)符可以缺省。語句塊包括串行語句塊(begin-end)和并行語句塊(fork-join)兩種。1.串行語句塊串行語句塊采用的是關(guān)鍵字“begin”和“end”,其中的語句按串行方式順序執(zhí)行,可以用于可綜合電路程序和仿真測(cè)試程序。其語法格式是:其中,塊名即該塊的名字,當(dāng)塊內(nèi)有變量時(shí)必須有塊名,否則在編譯時(shí)將出現(xiàn)語法錯(cuò)誤。塊內(nèi)聲明語句是可選的,可以是參數(shù)說明語句、integer型變量聲明語句、reg型變量聲明語句、time型變量聲明語句和事件(event)說明語句。串行語句塊的特點(diǎn):(1)串行語句塊中的每條語句依據(jù)塊中的排列次序逐條執(zhí)行。塊中每條語句給出的延遲時(shí)間都是相對(duì)于前一條語句執(zhí)行結(jié)束的相對(duì)時(shí)間。(2)串行語句塊的起始執(zhí)行時(shí)間就是串行語句塊中第一條語句開始執(zhí)行的時(shí)間;串行語句塊的結(jié)束時(shí)間就是塊中最后一條語句執(zhí)行結(jié)束的時(shí)間。2.并行語句塊并行語句塊采用的是關(guān)鍵字“fork”和“join”,其中的語句按并行方式執(zhí)行,只能用于仿真測(cè)試程序,不能用于可綜合電路程序。其語法格式是:并行語句塊的特點(diǎn):(1)塊內(nèi)語句是同時(shí)執(zhí)行的,即程序流程控制指令一進(jìn)入到該并行語句塊,塊內(nèi)語句就同時(shí)開始執(zhí)行。(2)塊內(nèi)每條語句的延遲時(shí)間是相對(duì)于程序流程控制指令進(jìn)入到塊內(nèi)的仿真時(shí)間。3.語句塊的使用例3.2-6分別采用串行語句塊和并行語句塊產(chǎn)生圖3.2-3所示的信號(hào)波形。(1)采用串行語句塊的VerilogHDL程序代碼如下:(2)采用并行語句塊的VerilogHDL程序代碼如下:從該例可以看到,采用串行語句塊和并行語句塊都可以產(chǎn)生相同的測(cè)試信號(hào),具體采用哪種語句進(jìn)行設(shè)計(jì)主要取決于設(shè)計(jì)者的習(xí)慣。需要說明的是,在對(duì)于電路的描述性設(shè)計(jì)中,部分綜合工具不支持并行語句塊,因此主要采用串行語句塊進(jìn)行設(shè)計(jì)。
表3.2-1對(duì)比了串行語句塊和并行語句塊,用以幫助讀者理解二者的區(qū)別和聯(lián)系。3.2.3過程賦值語句過程塊中的賦值語句稱為過程賦值語句。過程性賦值是在initial語句或always語句內(nèi)的賦值,它只能對(duì)寄存器數(shù)據(jù)類型的變量賦值。對(duì)于多位寬的寄存器變量(矢量),還可以只對(duì)其中的某一位或某幾位進(jìn)行賦值。對(duì)于存儲(chǔ)器類型的,則只能通過選定的地址單元,對(duì)某個(gè)單元進(jìn)行賦值。還可以將前述各類變量用連接符拼接起來,構(gòu)成一個(gè)整體,作為過程賦值語句的左端。過程賦值語句有阻塞賦值語句和非阻塞賦值語句兩種。1.阻塞賦值語句阻塞賦值語句的操作符號(hào)為“=”,其語法格式是:變量?=?表達(dá)式;例如:b=a;當(dāng)一個(gè)語句塊中有多條阻塞賦值語句時(shí),如果前面的賦值語句沒有完成,則后面的語句就不能被執(zhí)行,仿佛被阻塞了一樣,因此稱為阻塞賦值方式。阻塞賦值語句的特點(diǎn):(1)在串行語句塊中,各條阻塞賦值語句將按照排列順序依次執(zhí)行;在并行語句塊中的各條阻塞賦值語句則同時(shí)執(zhí)行,沒有先后之分。(2)執(zhí)行阻塞賦值語句的順序是,先計(jì)算等號(hào)右端表達(dá)式的值,然后立刻將計(jì)算的值賦給左邊的變量,與仿真時(shí)間無關(guān)。2.非阻塞賦值語句非阻塞賦值語句的操作符號(hào)為“<=”,其語法格式是:變量<=表達(dá)式;例如:b?<=a;如果在一個(gè)語句塊中有多條非阻塞賦值語句,則后面語句的執(zhí)行不會(huì)受到前面語句的限制,因此稱為非阻塞賦值方式。非阻塞賦值語句的特點(diǎn):(1)在串行語句塊中,各條非阻塞賦值語句的執(zhí)行沒有先后之分,排在前面的語句不會(huì)影響到后面語句的執(zhí)行,各條語句并行執(zhí)行。(2)執(zhí)行非阻塞賦值語句的順序是,先計(jì)算右端表達(dá)式的值,然后待延遲時(shí)間的結(jié)束后,再將計(jì)算的值賦給左邊的變量。阻塞賦值語句和非阻塞賦值語句可以用于數(shù)字邏輯電路設(shè)計(jì)和測(cè)試仿真程序中。在數(shù)字邏輯電路設(shè)計(jì)中,阻塞賦值語句和非阻塞賦值語句對(duì)于電路的描述差別很大,使
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東第二師范學(xué)院《新媒體創(chuàng)新與創(chuàng)業(yè)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東潮州衛(wèi)生健康職業(yè)學(xué)院《數(shù)據(jù)庫(kù)技術(shù)MySQ》2023-2024學(xué)年第一學(xué)期期末試卷
- 蛋糕生產(chǎn)工藝培訓(xùn)課件
- 《汽車空調(diào)工作原理》課件
- 《神經(jīng)內(nèi)科急癥》課件
- 《藝術(shù)論文寫作講義》課件
- 甘孜職業(yè)學(xué)院《固體化學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 甘肅政法大學(xué)《外科》2023-2024學(xué)年第一學(xué)期期末試卷
- 七年級(jí)生物上冊(cè)第二單元生物體的結(jié)構(gòu)層次第二章細(xì)胞怎樣構(gòu)成生物體第四節(jié)單細(xì)胞生物教案新版新人教版
- 七年級(jí)道德與法治上冊(cè)第三單元師長(zhǎng)情誼第六課師生之間第1課時(shí)誤區(qū)警示新人教版
- GB/T 9445-2024無損檢測(cè)人員資格鑒定與認(rèn)證
- 超聲科危急值內(nèi)容及報(bào)告制度
- 河南省鄭州市2023-2024學(xué)年高二上學(xué)期期末考試 物理 含解析
- 財(cái)務(wù)崗位招聘筆試題及解答(某大型國(guó)企)2025年
- 2024年代打包發(fā)貨合作協(xié)議書模板
- 天津市2023-2024學(xué)年七年級(jí)上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- 《地方導(dǎo)游基礎(chǔ)知識(shí)》3.4 安徽 地方導(dǎo)游基礎(chǔ)知識(shí)-題庫(kù)及答案
- 四川省成都市青白江區(qū)2024-2025學(xué)年六年級(jí)數(shù)學(xué)第一學(xué)期期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 診所的醫(yī)療廢物處置協(xié)議
- 高職建筑設(shè)計(jì)專業(yè)《建筑構(gòu)造與識(shí)圖》說課課件
- 《國(guó)珍產(chǎn)品介紹》
評(píng)論
0/150
提交評(píng)論