《Verilog HDL數(shù)字集成電路設(shè)計原理與應(yīng)用(第三版)》全套教學(xué)課件_第1頁
《Verilog HDL數(shù)字集成電路設(shè)計原理與應(yīng)用(第三版)》全套教學(xué)課件_第2頁
《Verilog HDL數(shù)字集成電路設(shè)計原理與應(yīng)用(第三版)》全套教學(xué)課件_第3頁
《Verilog HDL數(shù)字集成電路設(shè)計原理與應(yīng)用(第三版)》全套教學(xué)課件_第4頁
《Verilog HDL數(shù)字集成電路設(shè)計原理與應(yīng)用(第三版)》全套教學(xué)課件_第5頁
已閱讀5頁,還剩393頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章VerilogHDL數(shù)字集成電路設(shè)計方法概述

第2章VerilogHDL基礎(chǔ)知識

第3章VerilogHDL程序設(shè)計語句和描述方式

第4章VerilogHDL數(shù)字邏輯電路設(shè)計方法

第5章

仿真驗證與Testbench編寫

第6章VerilogHDL高級程序設(shè)計舉例

第7章

仿真測試工具和綜合工具

第8章SystemVerilog設(shè)計與驗證全套可編輯PPT課件

1.1數(shù)字集成電路的發(fā)展和設(shè)計方法的演變

1.2硬件描述語言

1.3功能模塊的可重用性與IP核

1.4VerilogHDL的發(fā)展和國際標(biāo)準(zhǔn)

1.5VerilogHDL在數(shù)字集成電路設(shè)計中的優(yōu)點

1.6VerilogHDL在數(shù)字集成電路設(shè)計流程中的作用本課件是可編輯的正常PPT課件1.1數(shù)字集成電路的發(fā)展和設(shè)計方法的演變本課件是可編輯的正常PPT課件從20世紀(jì)60年代開始,隨著數(shù)字集成電路的工藝、制造和設(shè)計技術(shù)的飛速發(fā)展,數(shù)字集成電路從最早的真空管和電子管電路,發(fā)展到以硅基半導(dǎo)體為主的集成電路。集成電路的規(guī)模從開始的僅幾十個邏輯門的小規(guī)模集成電路發(fā)展到單芯片數(shù)達千萬個邏輯門的極大規(guī)模集成電路,單芯片上可以集成幾百億只晶體管(見圖1.1-1)。數(shù)字集成電路設(shè)計單元從起初的分立元件發(fā)展到IP復(fù)用;系統(tǒng)級別由早期的印制板系統(tǒng)發(fā)展到當(dāng)下最為流行的片上系統(tǒng);采用的7?nm和5?nm工藝技術(shù)已成熟,并迅速向更小尺寸的產(chǎn)品方向發(fā)展;功能方面也從開始的簡單布爾邏輯運算發(fā)展到可以每秒處理數(shù)十億次計算的復(fù)雜運算。因此,數(shù)字集成電路在計算機、通信、圖像等領(lǐng)域得到了廣泛應(yīng)用。本課件是可編輯的正常PPT課件數(shù)字集成電路工藝制造水平的提高和芯片規(guī)模的擴大,使芯片的設(shè)計方法和設(shè)計技術(shù)發(fā)生了很大的變化,如圖1.1-2所示。早期的數(shù)字系統(tǒng)大多采用搭積木式的原理圖設(shè)計方法,通過一些固定功能的器件加上一定的外圍電路構(gòu)成模塊,再由這些模塊進一步形成功能電路。這種設(shè)計方法的靈活性差,只適合于中小規(guī)模的集成電路,當(dāng)電路和模塊的規(guī)模增大時,設(shè)計效率會降低。集成電路的發(fā)展可分為三個主要階段。20世紀(jì)70年代為第一次變革時期,是以加工制造為主導(dǎo)的IC產(chǎn)業(yè)發(fā)展的初級階段,主流產(chǎn)品是簡單微處理器、存儲器以及標(biāo)準(zhǔn)通用邏輯電路。這一時期,IC整合元件廠在IC市場中充當(dāng)主要角色,設(shè)計部門只作為附屬部門而存在。芯片設(shè)計和半導(dǎo)體工藝密切相關(guān),設(shè)計主要以人工為主,計算機輔助設(shè)計系統(tǒng)僅作為數(shù)據(jù)處理和圖形編程之用。本課件是可編輯的正常PPT課件20世紀(jì)80年代為第二次變革時期,是標(biāo)準(zhǔn)工藝加工線公司與IC設(shè)計公司共同發(fā)展的階段,主流產(chǎn)品是MPU、微控制器及專用IC。這時,F(xiàn)oundry和IC設(shè)計公司相結(jié)合的方式開始成為集成電路產(chǎn)業(yè)發(fā)展的新模式。這一時期,IC產(chǎn)業(yè)開始進入以客戶為導(dǎo)向的階段。首先,標(biāo)準(zhǔn)化功能的IC已難以滿足整機客戶對系統(tǒng)成本、可靠性等的要求;其次,由于小尺寸加工技術(shù)的進步,軟件的硬件化已成為可能,超大規(guī)模集成電路開始成為主流芯片;再次,隨著電子設(shè)計自動化工具軟件的發(fā)展,采用了元件庫、工藝模擬參數(shù)及其仿真概念等方法,芯片設(shè)計開始進入以計算機為主的抽象化軟件階段,設(shè)計過程可以獨立于生產(chǎn)工藝而存在。無生產(chǎn)線的IC設(shè)計公司和設(shè)計部門紛紛建立起來并得到迅速的發(fā)展,同時以制造為主的Foundry工廠也迅速發(fā)展起來。1987年,全球第一個Foundry工廠—臺灣積體電路公司成立,它的創(chuàng)始人張忠謀被譽為“晶芯片加工之父”。本課件是可編輯的正常PPT課件20世紀(jì)90年代為第三次變革時期,IC產(chǎn)業(yè)的“四業(yè)”(設(shè)計業(yè)、制造業(yè)、封裝業(yè)、測試業(yè))開始分離,功能強大的通用型中央處理器和信號處理器成為產(chǎn)業(yè)新的增長點。在這個階段,芯片廠商認(rèn)識到,越來越龐大的集成電路產(chǎn)業(yè)體系并不利于整個IC產(chǎn)業(yè)的發(fā)展,“分”才能精,“整合”才能成優(yōu)勢。于是,IC產(chǎn)業(yè)結(jié)構(gòu)向高度專業(yè)化轉(zhuǎn)化成為一種趨勢,開始形成設(shè)計業(yè)、制造業(yè)、封裝業(yè)、測試業(yè)獨立成行的局面,全球IC產(chǎn)業(yè)的發(fā)展越來越顯示出這種結(jié)構(gòu)的優(yōu)勢。進入21世紀(jì),IC產(chǎn)業(yè)的發(fā)展速度更是驚人;基于市場和社會發(fā)展的需要,數(shù)字集成電路正向多元化方向發(fā)展。在芯片的市場需求方面,移動通信、多媒體技術(shù)等應(yīng)用的迅速發(fā)展,使具有特定功能的差異化專用芯片取代通用型芯片,逐漸成為數(shù)字IC的主要增長點。本課件是可編輯的正常PPT課件在技術(shù)方面,出現(xiàn)了新的發(fā)展方向。首先,CMOS模擬技術(shù)的發(fā)展使得數(shù)/?;旌蠁涡酒杉夹g(shù)迅速發(fā)展,在設(shè)計和成本方面表現(xiàn)出了巨大優(yōu)勢;其次,應(yīng)用需求使得存儲器在ULSI芯片中的作用越來越明顯,高密度存儲器及其SoC成為設(shè)計的熱點;再次,單芯片規(guī)模的擴大使得單純依靠提升頻率的發(fā)展路線出現(xiàn)技術(shù)瓶頸,大規(guī)模多內(nèi)核處理器結(jié)構(gòu)成為通用型芯片和SoC芯片的主流設(shè)計方式。在設(shè)計方法方面,功能復(fù)用IP的設(shè)計方式成為IC設(shè)計和商業(yè)化的一種主要方式,極大提高了ULSI芯片的設(shè)計效率和可擴展性。本課件是可編輯的正常PPT課件隨著集成電路規(guī)模的迅速擴大和復(fù)雜度的不斷提高,芯片設(shè)計和制造成本不斷增加,設(shè)計、測試和制造工藝中的環(huán)節(jié)也隨之增多,相應(yīng)的設(shè)計過程變得越來越復(fù)雜,因此,設(shè)計者希望通過某種手段提高數(shù)字集成電路設(shè)計、驗證的效率和可靠性。數(shù)字集成電路單元從起初的分立元件到單元,然后到寄存器傳輸級,再到IP復(fù)用技術(shù);系統(tǒng)級別由原先的印制板系統(tǒng)到當(dāng)下最為流行的SoC片上系統(tǒng)。由圖1.1-1可以看出,數(shù)字集成電路技術(shù)的發(fā)展速度基本符合摩爾定律,芯片上晶體管的集成數(shù)目以每三年翻兩番的速度在增長。超大規(guī)模集成電路的發(fā)展給設(shè)計者和開發(fā)者提出了一系列問題,如高層次綜合、數(shù)/?;旌想娐访枋?、仿真驗證與形式驗證等自動驗證手段、數(shù)字電路的超深亞微米效應(yīng)以及設(shè)計重用等。這些問題給EDA技術(shù)的發(fā)展提出了一系列新的課題。為了從更高的抽象層次開展設(shè)計工作,增強元件模型的可重用性,提高硬件描述設(shè)計效率,采用硬件描述語言進行數(shù)字集成電路設(shè)計因此被提了出來。如何自動化、高效率地進行數(shù)字電路的設(shè)計,是HDL產(chǎn)生的出發(fā)點,也是其進一步完善和發(fā)展的目標(biāo)。本課件是可編輯的正常PPT課件1.2硬件描述語言本課件是可編輯的正常PPT課件C、FORTRAN、Pascal等程序化設(shè)計語言極大地提高了計算機軟件程序設(shè)計的效率和可靠性。因此,在硬件設(shè)計領(lǐng)域,設(shè)計人員也希望采用程序化設(shè)計語言來進行硬件電路的設(shè)計。為此,產(chǎn)生了硬件描述語言HDL。HDL是一種高級程序設(shè)計語言,通過對數(shù)字電路和系統(tǒng)進行語言描述,可以對數(shù)字集成電路進行設(shè)計和驗證。利用HDL,數(shù)字集成電路設(shè)計工程師可以根據(jù)電路結(jié)構(gòu)的特點,采用層次化的設(shè)計結(jié)構(gòu),將抽象的邏輯功能用電路的方式進行實現(xiàn)。為了提高HDL對數(shù)字電路設(shè)計、綜合和仿真的能力,Mentor、Cadence、Synopsys等公司提供了功能強大的EDA工具,可以將HDL程序綜合成為網(wǎng)表,通過自動布局布線工具把網(wǎng)表轉(zhuǎn)換為具體電路布線結(jié)構(gòu),用以實現(xiàn)專用集成電路和現(xiàn)場可編程門陣列。本課件是可編輯的正常PPT課件HDL發(fā)展至今,產(chǎn)生了很多種對于數(shù)字集成電路的描述性設(shè)計語言,并成功地應(yīng)用于設(shè)計的各個階段(建模、仿真、驗證和綜合等)。20世紀(jì)80年代至今,已出現(xiàn)了上百種硬件描述語言,它們對設(shè)計自動化起到了極大的促進和推動作用,主要有GatewayDesignAutomation公司提出的VerilogHDL、美國國防部高級研究計劃局(DARPA)設(shè)計的VHDL、美國國防部RPASSP計劃提出的基于面向?qū)ο蟮腛OVHDL、美國杜克大學(xué)的DEVHDL和電氣電子工程師學(xué)會支持的VITAL等。目前,最為常用的硬件描述語言有兩種,分別是VerilogHDL和VHDL。其中,VHSIC是VeryHighSpeedIntegratedCircuit的縮寫,故VHDL準(zhǔn)確的中文譯名應(yīng)為超高速集成電路硬件描述語言。VerilogHDL和VHDL都是完備的HDL設(shè)計和驗證語言,具有完整的設(shè)計方法和設(shè)計規(guī)范。它們可以設(shè)計和驗證超大規(guī)模數(shù)字集成電路,并且分別在1995年和1987年被采納為IEEE國際標(biāo)準(zhǔn)。選用哪種語言進行數(shù)字集成電路開發(fā),主要取決于設(shè)計單位的基礎(chǔ)、計劃采用的設(shè)計方案和EDA工具。本課件是可編輯的正常PPT課件這兩種HDL具有較多的共同點:(1)能形式化地抽象表示電路的行為和結(jié)構(gòu);(2)支持邏輯設(shè)計中層次與范圍的描述;(3)可借用高級語言的精巧結(jié)構(gòu)來簡化電路行為的描述,具有電路仿真與驗證機制,以保證設(shè)計的正確性;(4)支持電路描述由高層到低層的綜合轉(zhuǎn)換;(5)硬件描述與實現(xiàn)工藝無關(guān)(有關(guān)工藝參數(shù)可通過語言提供的屬性包括進去);(6)便于文檔管理;(7)易于理解和設(shè)計重用。本課件是可編輯的正常PPT課件作為兩種不同的標(biāo)準(zhǔn)化HDL,VerilogHDL和VHDL在設(shè)計方法和設(shè)計范圍方面也有一些各自的特點:(1)在設(shè)計方法方面,VHDL語法結(jié)構(gòu)緊湊、靈活性差、設(shè)計規(guī)則煩瑣,初學(xué)者需要用較長時間掌握它。由于語法規(guī)則嚴(yán)謹(jǐn)性高,VHDL的可綜合性和代碼一致性很強,適用于規(guī)模較大的數(shù)字集成電路系統(tǒng)設(shè)計。而VerilogHDL的語法結(jié)構(gòu)和設(shè)計方法靈活,初學(xué)者掌握語言的難度較小,設(shè)計也較容易進行綜合和驗證;但是,由于所設(shè)計代碼風(fēng)格的多樣性,當(dāng)數(shù)字電路規(guī)模較大時,代碼的管理和系統(tǒng)設(shè)計難度較大。當(dāng)然,作為經(jīng)驗豐富的數(shù)字電路設(shè)計工程師,采用何種語言進行設(shè)計的關(guān)鍵在于對語言和電路的掌握能力和對設(shè)計規(guī)范的理解程度。為了發(fā)揮兩種語言在設(shè)計方面各自的優(yōu)勢,EDA工具廠商提供了VerilogHDL和VHDL的混合設(shè)計、驗證和綜合方法。因此,設(shè)計人員只需掌握其中一種HDL即可。本課件是可編輯的正常PPT課件(2)在設(shè)計范圍方面,VerilogHDL和VHDL有一個顯著的區(qū)別:VerilogHDL可以描述系統(tǒng)級、算法級、寄存器傳輸級、門級和開關(guān)級電路,VHDL則不具備開關(guān)級電路描述能力。在FPGA和CPLD等用戶可配置數(shù)字電路的設(shè)計中,由于最小可配置電路是門級電路,沒有開關(guān)級可配置電路,因此兩種語言的設(shè)計能力相當(dāng)。但是在專用數(shù)字集成電路設(shè)計和開關(guān)級描述方面,VerilogHDL的設(shè)計范圍比VHDL略大一些。圖1.2-1是VerilogHDL和VHDL在電路建模能力方面的比較。隨著數(shù)字集成電路工藝和設(shè)計方法的快速發(fā)展,這兩種語言也在不斷豐富和改進,以滿足更大、更高速、更復(fù)雜的數(shù)字集成電路系統(tǒng)設(shè)計的要求。本課件是可編輯的正常PPT課件1.3功能模塊的可重用性與IP核本課件是可編輯的正常PPT課件HDL的標(biāo)準(zhǔn)化極大地擴展了VerilogHDL和VHDL的使用范圍,并增強了其通用性。目前絕大多數(shù)的數(shù)字集成電路和FPGA的開發(fā)都采用了HDL。這使得VerilogHDL和VHDL的功能模塊積累得越來越多,同時也極大地提高了功能模塊的可重用性。由于模塊的可重用性對于硬件電路開發(fā)效率的提高至關(guān)重要,因此業(yè)界提出了數(shù)字集成電路的軟核(SoftCore)、固核(FirmCore)和硬核(HardCore)的概念。軟核一般是指經(jīng)過功能驗證、5000門以上的可綜合VerilogHDL或VHDL模型。軟核通常與設(shè)計方法和電路所采用的工藝無關(guān),具有很強的可綜合性和可重用性。由軟核構(gòu)成的器件稱為虛擬器件,通過EDA綜合工具可以把它與其他數(shù)字邏輯電路結(jié)合起來,構(gòu)成新的功能電路。軟核的可重用性大大縮短了設(shè)計周期,提高了復(fù)雜電路的設(shè)計能力。固核通常是指在FPGA器件上,經(jīng)過綜合驗證、大于5000門的電路網(wǎng)表文件。本課件是可編輯的正常PPT課件硬核通常是指在ASIC器件上,經(jīng)過驗證、正確的、大于5000門的電路結(jié)構(gòu)版圖掩膜。軟核、固核和硬核是目前數(shù)字集成電路功能單元模塊在不同層級使用的三種形式。由于軟核采用可讀性較高的可綜合HDL實現(xiàn),因此其可維護性和可重用性高,使用也更加靈活和便捷。固核和硬核是針對不同芯片平臺的功能單元,性能穩(wěn)定,不易修改。商用軟核通常都有針對不同芯片和工藝而定制的硬核和固核,可以從不同層次提高數(shù)字電路功能模塊的可重用性。目前,國際設(shè)計領(lǐng)域正試圖通過建立相應(yīng)的標(biāo)準(zhǔn)化組織,推廣和規(guī)范軟核的使用方式,如虛擬接口聯(lián)盟(VirtualSocketInterfaceAlliance)希望通過接口的標(biāo)準(zhǔn)化來提高HDL設(shè)計模塊的可重用性。軟核、固核和硬核的產(chǎn)生和推廣,為集成電路的設(shè)計和開發(fā)提供了一種新的商業(yè)模式?,F(xiàn)在,超大規(guī)模的ASIC和FPGA設(shè)計更多采用的是不同公司功能模塊的組合,通過開發(fā)特定功能的部件電路,形成具有特定功能的芯片和系統(tǒng)。相應(yīng)的內(nèi)核成為各個公司重要的資產(chǎn),并擁有特殊的知識產(chǎn)權(quán)。本課件是可編輯的正常PPT課件IP核是具有知識產(chǎn)權(quán)核的集成電路芯核的總稱,是經(jīng)過反復(fù)驗證的、具有特定功能的宏模塊,且該模塊與芯片制造工藝無關(guān),可以移植到不同的半導(dǎo)體工藝中。到了SoC階段,向用戶提供IP核服務(wù)已經(jīng)成為可編程邏輯器件提供商的重要任務(wù)。在SoC芯片的設(shè)計生產(chǎn)過程中,芯片的生產(chǎn)廠家只需根據(jù)設(shè)計需要購入相應(yīng)功能的IP核,再將這些IP核按照設(shè)計要求進行組合,即可完成所需特定功能的設(shè)計,如圖1.3-1所示。這樣可以大大減少設(shè)計人力的投入并降低風(fēng)險,縮短設(shè)計周期,確保產(chǎn)品質(zhì)量。對于可編程提供商來說,能夠提供的IP核越豐富,用戶的設(shè)計就會越方便,其市場占有率就越高。現(xiàn)在,IP核已經(jīng)成為系統(tǒng)設(shè)計的基本單元,并作為獨立設(shè)計成果被交換、轉(zhuǎn)讓和銷售。目前,全球最大的IP核設(shè)計公司是英國的ARM公司。通過IP核的市場推廣,不同性能的ARM被廣泛用于通信、計算機、媒體控制器、工業(yè)芯片中,極大地提高了設(shè)計的效率。這種商業(yè)模式為數(shù)字集成電路的發(fā)展作出了重要貢獻。本課件是可編輯的正常PPT課件1.4VerilogHDL的發(fā)展和國際標(biāo)準(zhǔn)本課件是可編輯的正常PPT課件VerilogHDL是一種常用的硬件描述語言,可以從系統(tǒng)級、電路級、門級到開關(guān)級等抽象層次進行數(shù)字電路系統(tǒng)的建模、設(shè)計和驗證工作。利用該語言可以設(shè)計出簡單的門級電路,甚至功能完整的數(shù)字電路系統(tǒng)。從設(shè)計之初到目前的廣泛應(yīng)用,VerilogHDL經(jīng)過40多年的發(fā)展,其功能也由最初的數(shù)字集成電路設(shè)計發(fā)展到數(shù)字和模擬電路設(shè)計(見圖1.4-1),它已經(jīng)成為數(shù)字電路和數(shù)字集成電路中使用最為廣泛的設(shè)計語言。VerilogHDL最初是由GatewayDesignAutomation(GDA)公司于1983年為其模擬器產(chǎn)品開發(fā)的硬件建模語言。作為一種便于使用的專用設(shè)計語言,VerilogHDL被廣泛用于模擬器和仿真器中,并逐漸為眾多設(shè)計者所接受。在隨后的幾年,VerilogHDL開始在數(shù)字電路設(shè)計領(lǐng)域廣泛使用。1987年,Synopsys公司開始使用VerilogHDL作為綜合工具的輸入,為在數(shù)字集成電路上的應(yīng)用提供了EDA綜合工具,提高了電路描述性設(shè)計方式的效率。本課件是可編輯的正常PPT課件1989年,Cadence公司收購了GDA公司,VerilogHDL成為Cadence公司的專有設(shè)計語言。為了在更大范圍內(nèi)推廣和使用VerilogHDL,1990年Cadence公司決定公開VerilogHDL,于是成立了OVI(OpenVerilogInternational)組織,負(fù)責(zé)促進VerilogHDL的發(fā)展。本課件是可編輯的正常PPT課件1993年,幾乎所有的ASIC廠商都開始支持VerilogHDL,并且認(rèn)為VerilogHDL-XL是最好的仿真器。同時,OVI組織推出VerilogHDL2.0規(guī)范,IEEE接受了將其作為IEEE標(biāo)準(zhǔn)的提案。自此,VerilogHDL正式成為數(shù)字集成電路設(shè)計語言的標(biāo)準(zhǔn)(見表1.4-1)。1995年年底,IEEE制定了第一個VerilogHDL標(biāo)準(zhǔn)VerilogIEEE1364-1995。在此基礎(chǔ)上,于2001年又增加了部分功能,并制定了較為完善的標(biāo)準(zhǔn)VerilogIEEE1364-2001。目前在數(shù)字集成電路方面主要采用的就是這兩個標(biāo)準(zhǔn)所規(guī)定的程序語法和設(shè)計規(guī)范。在模擬電路設(shè)計方面,基于IEEE1364VerilogHDL規(guī)范,提出了模擬電路行業(yè)的標(biāo)準(zhǔn)建模語言Verilog-A,以提高模擬集成電路的程序化設(shè)計能力。

本課件是可編輯的正常PPT課件在系統(tǒng)級設(shè)計方面,傳統(tǒng)的設(shè)計方法采用C語言等高級軟件語言進行數(shù)學(xué)模型的建立和分析,通過定點化設(shè)計,將數(shù)學(xué)模型轉(zhuǎn)變成電路模型,最后采用HDL進行電路設(shè)計。這種方法的缺點是,數(shù)學(xué)模型的建立和電路設(shè)計是獨立的,從而導(dǎo)致設(shè)計周期長、需要的人員和軟件多,且存在重復(fù)性的工作等問題。研究和開發(fā)人員希望能將數(shù)學(xué)模型直接用于數(shù)字集成電路的設(shè)計,以提高集成電路的設(shè)計效率,這就給EDA工具廠商提出了新的要求。為了滿足這一要求,2005年誕生了SystemVerilogIEEE1800-2005標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)建立在VerilogHDL的基礎(chǔ)上,在系統(tǒng)層次上增強了模型建立和驗證的功能,是VerilogIEEE1364—2001標(biāo)準(zhǔn)的擴展,向下兼容VerilogIEEE1364-2001,成為新一代硬件設(shè)計和驗證的語言。關(guān)于SystemVerilog語言將在第8章介紹。本課件是可編輯的正常PPT課件1.5VerilogHDL在數(shù)字集成電路設(shè)計中的優(yōu)點本課件是可編輯的正常PPT課件在數(shù)字集成電路出現(xiàn)的最初幾十年中,數(shù)字邏輯電路和系統(tǒng)的設(shè)計規(guī)模較小,復(fù)雜度也低。ASIC、FPGA和CPLD的設(shè)計工作采用廠家提供的專用電路圖工具,通過連接線將定制電路單元進行互連實現(xiàn)。而隨著電路規(guī)模的增加,設(shè)計人員通常要花費很多的時間做大量重復(fù)的手工布線工作,同時為了達到設(shè)計目標(biāo),對于大量定制單元電路還要求分廠也要熟悉。這種低效率的設(shè)計方式持續(xù)了很長時間。VerilogHDL和EDA工具的出現(xiàn)和發(fā)展,使得高效率的描述性語言和強大的仿真綜合工具得以運用,設(shè)計人員則可以將注意力集中于系統(tǒng)、算法和電路結(jié)構(gòu)上,極大地提高了設(shè)計輸入和驗證的效率。作為最廣泛采用的HDL,VerilogHDL在硬件描述方面的效率高、靈活性強。圖1.5-1中的(a)和(b)分別是4位和32位總線與邏輯的原理圖設(shè)計和VerilogHDL描述方式的對比。本課件是可編輯的正常PPT課件圖1.5-2中的(a)、(b)分別是長度為4位和8位移位寄存器的原理圖設(shè)計與VerilogHDL描述方式的對比。本課件是可編輯的正常PPT課件圖1.5-1和圖1.5-2分別是典型的組合邏輯電路和時序邏輯電路。從這兩個例子可以看到,VerilogHDL在設(shè)計方面有兩個突出的能力。第一,可以用較少的語句描述較為復(fù)雜的電路。圖1.5-1和圖1.5-2中采用一條有效語句即實現(xiàn)了電路設(shè)計。第二,VerilogHDL具有極為靈活的可擴展特性。圖1.5-1中,VerilogHDL僅需修改總線的位寬,即可將4位總線與邏輯轉(zhuǎn)變?yōu)?2位總線與邏輯。圖1.5-2中僅需改變移位信號的長度,就可以實現(xiàn)不同長度移位寄存器的設(shè)計。通過這兩個例子可以看到,VerilogHDL極大地提高了原理圖設(shè)計的效率,同時提高了設(shè)計的靈活性和電路設(shè)計管理的有效性。在功能設(shè)計方面,VerilogHDL采用描述性建模方式,通過行為描述、數(shù)據(jù)流描述和結(jié)構(gòu)性描述等方式,對電路、輸入信號激勵和響應(yīng)監(jiān)控方式進行設(shè)計;同時,提供編程語言接口,通過該接口可以在模擬、驗證期間從設(shè)計外部訪問設(shè)計,包括模擬的具體控制和運行。本課件是可編輯的正常PPT課件VerilogHDL定義了完善的語法規(guī)則,對每個語法結(jié)構(gòu)都定義了清晰的模擬、仿真語義。它從C語言中繼承了多種操作符和結(jié)構(gòu),具有較強的擴展建模能力。VerilogHDL的核心子集相對緊湊,可以滿足大多數(shù)建模應(yīng)用的要求,容易學(xué)習(xí)和掌握。當(dāng)然,應(yīng)用于數(shù)字集成電路設(shè)計得較為完整的VerilogHDL還有很多的語法規(guī)則和使用方式,需要進一步學(xué)習(xí)。本書主要針對VerilogHDL基本語法規(guī)則和數(shù)字集成電路設(shè)計進行介紹,更為專業(yè)和細(xì)致的內(nèi)容需要參照相關(guān)的國際標(biāo)準(zhǔn)和EDA工具的功能說明,以應(yīng)對越來越復(fù)雜的數(shù)字集成電路芯片設(shè)計和驗證工作。本課件是可編輯的正常PPT課件1.6VerilogHDL在數(shù)字集成電路設(shè)計流程中的作用本課件是可編輯的正常PPT課件圖1.6-1為一般的數(shù)字集成電路設(shè)計流程。作為一種標(biāo)準(zhǔn)化的硬件電路設(shè)計語言,VerilogHDL在設(shè)計和驗證中起著重要作用。數(shù)字集成電路和FPGA設(shè)計過程主要分為以下四個階段:第一階段是系統(tǒng)設(shè)計階段,包括總體方案和系統(tǒng)建模兩個主要過程??傮w方案是對系統(tǒng)進行結(jié)構(gòu)規(guī)劃、功能分割并進行互連模型系統(tǒng)級規(guī)劃。系統(tǒng)建模是對總體方案的細(xì)化,將總體方案劃分為具體的功能模塊,并對互連總線等進行較為詳細(xì)的設(shè)計。第二階段是數(shù)字電路設(shè)計和代碼編寫階段,即RTL代碼編寫階段。在這個階段,設(shè)計人員將系統(tǒng)設(shè)計的功能模塊進行具體的電路設(shè)計,并形成可以測試的功能代碼。第三階段是電路驗證階段,主要包括對硬件描述語言程序代碼的功能驗證和經(jīng)過EDA綜合工具后的時序驗證兩個部分。VerilogHDL程序可以對代碼的功能進行基本邏輯的初步驗證。VerilogHDL也可以對程序綜合后生成的電路進行時序驗證,電路的網(wǎng)表也可以用VerilogHDL程序形式表示。第四階段是集成電路的后端設(shè)計階段,主要通過EDA工具進行物理綜合、布局布線、物理驗證、原型建立和測試,并最終交付工藝實現(xiàn)。在集成電路的設(shè)計流程中,以VerilogHDL為代表的HDL發(fā)揮了很大作用。在第一、二階段的電路設(shè)計過程中,VerilogHDL主要進行系統(tǒng)級和電路級的設(shè)計和驗證;在第三、四階段,對于不同階段的綜合網(wǎng)表和物理電路,VerilogHDL也被用于電路的驗證工作。因此,VerilogHDL可用于復(fù)雜數(shù)字邏輯電路和系統(tǒng)的總體仿真、子系統(tǒng)仿真和具體電路綜合等各個設(shè)計階段,在設(shè)計流程中具有重要的作用。2.1VerilogHDL的語言要素

2.2模塊

2.3端口本課件是可編輯的正常PPT課件2.1VerilogHDL的語言要素本課件是可編輯的正常PPT課件2.1.1符號1.空白符空白符包括空格符(\b)、制表符(\t)、換行符和換頁符。空白符使代碼看起來結(jié)構(gòu)清晰,閱讀起來更方便。在編譯和綜合時,空白符被忽略。VerilogHDL程序可以不分行,也可以加入空白符采用多行編寫。2.注釋符VerilogHDL中允許插入注釋,表明程序代碼功能、修改、版本等信息,以增強程序的可讀性和幫助管理文檔。VerilogHDL中有以下兩種形式的注釋:(1)單行注釋。單行注釋以“//”開始,VerilogHDL忽略從此處到行尾的內(nèi)容。(2)多行注釋。多行注釋以“/*”開始,到“*/”結(jié)束,VerilogHDL忽略其中的注釋內(nèi)容。需要注意的是,多行注釋不允許嵌套,但是單行注釋可以嵌套在多行注釋中。本課件是可編輯的正常PPT課件3.標(biāo)識符和轉(zhuǎn)義標(biāo)識符在VerilogHDL中,標(biāo)識符(Identifier)被用來命名信號、模塊、參數(shù)等,它可以是任意一組字母、數(shù)字、$符號和_(下畫線)符號的組合。應(yīng)該注意的是,標(biāo)識符的字母區(qū)分大小寫,并且第一個字符必須是字母或者下畫線。為了使用標(biāo)識符集合以外的字符或標(biāo)號,VerilogHDL規(guī)定了轉(zhuǎn)義標(biāo)識符(EscapedIdentifier)。采用轉(zhuǎn)義標(biāo)識符,可以在一條標(biāo)識符中包含任何可打印的字符。轉(zhuǎn)義標(biāo)識符以“\”(反斜線)符號開頭,以空白結(jié)尾(空白可以是一個空格、一個制表字符或換行符)。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)識符,與always(關(guān)鍵字)是不同的。表2.1-1所示為VerilogHDL中的常用關(guān)鍵字。本課件是可編輯的正常PPT課件5.數(shù)值VerilogHDL中有四種基本的邏輯數(shù)值狀態(tài)[0、1、x(X)、z(Z)],用數(shù)字或字符表達數(shù)字電路中傳送的邏輯狀態(tài)和存儲信息。其中,x和z都不區(qū)分大小寫,也就是說,0x1z與0X1Z是等同的。VerilogHDL中的四值電平邏輯如表2.1-2所示。本課件是可編輯的正常PPT課件在數(shù)值中,下畫線符號“_”除了不能放于數(shù)值的首位外,可以隨意用在整型數(shù)與實型數(shù)中,它們對數(shù)值大小沒有任何改變,只是為了提高可讀性。例如,16'b1011000110001100和16'b1011_0001_1000_1100的數(shù)值大小是相同的,只是后一種表達方式的可讀性更強。1)整數(shù)及其表示VerilogHDL中的整數(shù)可以是二進制(b或B)、八進制(o或O)、十進制(d或D)、十六進制(h或H),其基數(shù)符號與可以采用的數(shù)字字符集如表2.1-3所示。整數(shù)的表示形式如下:+/-<size>'<base_format><number>其中:“+/-”是正數(shù)和負(fù)數(shù)標(biāo)識;size指換算后的二進制數(shù)的寬度;“?'?”為基數(shù)格式表示的固有字符,該字符不能缺省,否則為非法表示形式;base_format是其基數(shù)符號;number是可以使用的數(shù)字字符集,形式上是相應(yīng)進制格式下的一串?dāng)?shù)值。本課件是可編輯的正常PPT課件使用整數(shù)時需要注意的是:(1)較長的數(shù)之間可以用下畫線來分開,目的是提高可讀性,下畫線本身沒有意義,如16'b1110_1011_0011_1010,但下畫線符號不能用作首字符。(2)當(dāng)數(shù)字沒有說明位寬時,默認(rèn)為32位。(3)?x或z在二進制中代表1位x或z,在八進制中代表3位x或z,在十六進制中代表4位x或z,其代表的寬度取決于所用的進制。(4)若沒有定義一個整數(shù)的位寬,其寬度為相應(yīng)值中定義的位數(shù)。(5)若定義的位寬比實際數(shù)的位數(shù)大,則在左邊用0補齊。但如果數(shù)的最左邊一位為x或z,就相應(yīng)地用x或z在左邊補齊。如果定義的位寬比實際數(shù)的位寬小,那么最左邊的位被截斷。(6)?“?”是高阻態(tài)z的另一種表示符號。在數(shù)字的表示中,字符“?”和Z或z是等價的,可互相替代。(7)整數(shù)可以帶正、負(fù)號,并且正、負(fù)號應(yīng)寫在最左邊。負(fù)數(shù)表示為二進制的補碼形式。本課件是可編輯的正常PPT課件(8)如果位寬和進制都缺省,則代表十進制數(shù)。例如:-15代表十進制數(shù)?-15。(9)數(shù)字中不能有空格,但在表示進制的字母兩側(cè)可以有空格。2)實數(shù)及其表示實數(shù)有以下兩種表示方法:(1)十進制表示法。采用十進制格式,小數(shù)點兩邊必須都有數(shù)字,否則為非法的表示形式。(2)科學(xué)記數(shù)法。VerilogHDL還定義了實數(shù)轉(zhuǎn)換為整數(shù)的方法,實數(shù)通過四舍五入轉(zhuǎn)換為最相近的整數(shù)。3)字符串及其表示字符串是指用雙引號括起來的字符序列,它必須包含在同一行中,不能分行書寫。若字符串用作VerilogHDL表達式或賦值語句中的操作數(shù),則字符串被看作8位的ASCII值序列,即一個字符對應(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ù)據(jù)類型的抽象程度比較低,與實際硬件電路的映射關(guān)系比較明顯;抽象數(shù)據(jù)類型則是進行輔助設(shè)計和驗證的數(shù)據(jù)類型。1.物理數(shù)據(jù)類型VerilogHDL中最主要的物理數(shù)據(jù)類型是連線型、寄存器型和存儲器型,并使用四種邏輯電平和八種信號強度對實際的硬件電路建模。四值邏輯電平是對信號的抽象表示(見表2.1-2)。信號強度表示數(shù)字電路中不同強度的驅(qū)動源,用來解決不同驅(qū)動強度下的賦值沖突;對邏輯0和1可以用表2.1-4中列出的信號強度值表示,驅(qū)動強度從supply到highz依次遞減,例如(supply0,strong1)表示邏輯0的驅(qū)動程度是supply,邏輯1的驅(qū)動程度是strong。本課件是可編輯的正常PPT課件1)連線型連線型變量包含多種類型,表2.1-5給出了各種連線型數(shù)據(jù)類型及其功能說明。連線表示邏輯單元的物理連接,可以對應(yīng)為電路中的物理信號連線,這種變量類型不能保持電荷(除trireg之外)。連線型變量必須有驅(qū)動源,一種是連接到一個門或者模塊的輸出端,另一種是用assign連續(xù)賦值語句對它進行賦值。若沒有驅(qū)動源,將保持高阻態(tài)z。本課件是可編輯的正常PPT課件(1)?wire和tri。在眾多的連線型數(shù)據(jù)類型中,最常見的是wire(連線)和tri(三態(tài)線)兩種,它們的語法和語義一致。不同之處在于:wire型變量通常用來表示單個門驅(qū)動或連續(xù)賦值語句驅(qū)動的連線型數(shù)據(jù),tri型變量則用來表示多驅(qū)動器驅(qū)動的連線型數(shù)據(jù),主要用于定義三態(tài)的線網(wǎng)。wire/tri的真值表如表2.1-6所示。上述真值表可以理解為,同時有兩個驅(qū)動強度相同的驅(qū)動源來驅(qū)動wire或tri變量時的輸出結(jié)果。本課件是可編輯的正常PPT課件(2)?wor和trior。當(dāng)有多個驅(qū)動源驅(qū)動wor和trior型數(shù)據(jù)時,將產(chǎn)生線或結(jié)構(gòu),其真值表如表2.1-7所示。(3)?wand和triand。當(dāng)有多個驅(qū)動源驅(qū)動wand和triand型數(shù)據(jù)時,將產(chǎn)生線與結(jié)構(gòu),其真值表如表2.1-8所示。(4)?tri0和tri1。tri0(tri1)的特征是:若無驅(qū)動源驅(qū)動,則其值為0(tri1的值為1)。在有多個驅(qū)動源的情況下,tri0/tri1的真值表如表2.1-9所示。本課件是可編輯的正常PPT課件(5)?supply0和supply1。supply0用于對“地”建模,即低電平0;supply1用于對電源建模,即高電平1。例如:supply0表示Gnd,supply1表示Vcc。(6)?trireg。trireg能存儲數(shù)值(類似于寄存器型數(shù)據(jù)類型),并且用于電容節(jié)點的建模。當(dāng)三態(tài)寄存器(trireg)的所有驅(qū)動源都處于高阻態(tài)z時,三態(tài)寄存器連線將保存作用在線網(wǎng)上的最后一個邏輯值。三態(tài)寄存器連線的缺省初始值為x。trireg連線型數(shù)據(jù)用于模擬電荷存儲。電荷量強度可由small、medium、large三個關(guān)鍵字來控制。默認(rèn)的電荷強度為medium。一個trireg連線型數(shù)據(jù)能夠模擬一個電荷存儲節(jié)點,該節(jié)點的電荷量將隨時間而逐漸衰減。對于一個trireg連線型數(shù)據(jù),電荷衰減時間就是定義的仿真延遲時間。本課件是可編輯的正常PPT課件2)寄存器型reg型變量是最常見也是最重要的寄存器型數(shù)據(jù)類型,它是數(shù)據(jù)存儲單元的抽象類型,其對應(yīng)的硬件電路元件具有狀態(tài)保持作用,能夠存儲數(shù)據(jù),如觸發(fā)器、鎖存器等。reg型變量常用于行為級描述中,由過程賦值語句對其進行賦值。reg型數(shù)據(jù)與wire型數(shù)據(jù)的區(qū)別在于,reg型數(shù)據(jù)保持最后一次的賦值,而wire型數(shù)據(jù)需要有持續(xù)的驅(qū)動。一般情況下,reg型數(shù)據(jù)的默認(rèn)初始值為不定值x,缺省時的位寬為1位。reg型變量一般為無符號數(shù),若將一個負(fù)數(shù)賦給reg型變量,則自動轉(zhuǎn)換成其二進制補碼形式。在過程塊內(nèi)被賦值的每一個信號都必須定義成reg型,并且只能在always或initial過程塊中賦值,大多數(shù)reg型信號常常是寄存器或觸發(fā)器的輸出。2.連線型和寄存器型數(shù)據(jù)類型的聲明1)連線型數(shù)據(jù)類型的聲明缺省的連線型數(shù)據(jù)的默認(rèn)類型為1位(標(biāo)量)wire類型。VerilogHDL中禁止對已經(jīng)聲明過的網(wǎng)絡(luò)、變量或參數(shù)再次聲明。連線型數(shù)據(jù)類型聲明的一般語法格式如下:

<net_declaration><drive_strength><range><delay>[list_of_variables];其中,drive_strength、range、delay為可選項,而list_of_variables為必選項。

說明:(1)?net_declaration:連線型數(shù)據(jù)類型,可以是wire、tri、tri0、tri1、wand、triand、trior、wor、trireg、supply1、supply0中的任意一種。(2)?drive_strength:連線型變量的驅(qū)動強度。對于trireg類型,聲明的是charge_strength(電荷強度)。(3)?range:指定數(shù)據(jù)為標(biāo)量或矢量。若該項默認(rèn),則表示數(shù)據(jù)類型為1位的標(biāo)量;若超過1位,則為矢量形式。

(4)?delay:指定仿真延遲時間。

(5)?list_of_variables:變量名稱,一次可定義多個名稱,之間用逗號分開。除了邏輯值外,VerilogHDL還用強度值來解決數(shù)字電路中不同強度的驅(qū)動源之間的賦值沖突,強度等級說明見表2.2-1。如果兩個具有不同強度的信號驅(qū)動同一個線網(wǎng),則競爭結(jié)果為高強度信號的值;如果兩個強度相同的信號之間發(fā)生競爭,則結(jié)果為不確定值。2)寄存器型數(shù)據(jù)類型的聲明reg型數(shù)據(jù)類型聲明的一般語法格式如下:reg<range><list_of_register_variables>;其中,range為可選項,它指定了reg型變量的位寬,缺省時為1位。

說明:list_of_register_variables:變量名稱列表,一次可以定義多個名稱,之間用逗號分開。3)物理數(shù)據(jù)類型聲明示例前面已經(jīng)了解了連線型數(shù)據(jù)和寄存器型數(shù)據(jù)這兩種物理數(shù)據(jù)類型的聲明格式,下面舉例來說明這兩種聲明格式的用法。3.存儲器型存儲器型(memory)本質(zhì)上還是寄存器型變量陣列,只是VerilogHDL中沒有多維數(shù)組,所以就用reg型變量建立寄存器組(數(shù)組)來實現(xiàn)存儲器的功能,也就是擴展的reg型數(shù)據(jù)地址范圍。存儲器型變量可以描述RAM型、ROM型存儲器以及reg文件。數(shù)組中的每一個單元通過一個數(shù)組索引進行尋址。

存儲器型變量的一般聲明格式如下:reg<range1><name_of_register><range2>;其中,range1和range2都是可選項,缺省時都為1。

說明:(1)?range1:存儲器中寄存器的位寬,格式為[msb:lsb]。(2)?range2:寄存器的個數(shù),格式為[msb:lsb],即有msb-lsb+1個。(3)?name_of_register:變量名稱列表,一次可以定義多個名稱,之間用逗號分開。4.抽象數(shù)據(jù)類型除了物理數(shù)據(jù)類型外,VerilogHDL還提供了整型(integer)、時間型(time)、實型(real)及參數(shù)型(parameter)等幾種抽象數(shù)據(jù)類型。它們只是純數(shù)學(xué)的抽象描述,不能與實際的硬件電路相映射。1)整型整型數(shù)據(jù)常用于對循環(huán)控制變量的說明,在算術(shù)運算中被視為二進制補碼形式的有符號數(shù)。除了寄存器型數(shù)據(jù)被當(dāng)作無符號數(shù)來處理之外,整型數(shù)據(jù)與32位寄存器型數(shù)據(jù)在實際意義上相同。整型數(shù)據(jù)的聲明格式如下:integer<list_of_register_variables>;2)時間型時間型數(shù)據(jù)與整型數(shù)據(jù)類似,只是它是64位的無符號數(shù)。時間型數(shù)據(jù)主要用于處理模擬時間的存儲與計算,常與系統(tǒng)函數(shù)$time一起使用。時間型數(shù)據(jù)的聲明格式如下:time<list_of_register_variables>;3)實型VerilogHDL支持實型常量與變量。實型數(shù)據(jù)在機器碼表示法中是浮點型數(shù)值,可用于對延遲時間的計算。實型數(shù)據(jù)的聲明格式如下:real<list_of_variables>;4)參數(shù)型在VerilogHDL中,參數(shù)是一個非常重要的數(shù)據(jù)類型,屬于常量,在仿真開始之前就被賦值,在仿真過程中保持不變。采用參數(shù)定義方法,可以提高程序的可讀性和可維護性。參數(shù)常用來定義延遲時間和變量的位寬。參數(shù)型數(shù)據(jù)的定義格式如下:parameter參數(shù)名1?=?表達式1,參數(shù)名2?=?表達式2,…,參數(shù)名n?=?表達式n;其中,表達式既可以是常數(shù),也可以是常量表達式,即表達式中是常數(shù)或之前定義過的參數(shù)。參數(shù)定義完后,程序中出現(xiàn)的所有的參數(shù)名都將被替換為相對應(yīng)的表達式。對于同一個模塊來說,參數(shù)一旦被定義,就不能夠通過其他語句對它重新賦值。下例是錯誤的,因為a被重復(fù)賦值。2.1.3運算符VerilogHDL的運算符主要針對數(shù)字邏輯電路制定,覆蓋范圍廣泛。VerilogHDL中的運算符及其運算優(yōu)先級如表2.1-10所示。不同的綜合開發(fā)工具在執(zhí)行這些優(yōu)先級時可能有微小的差別,因此在書寫程序時建議用括號來控制運算的優(yōu)先級,以有效避免錯誤,同時增加程序的可讀性。1.算術(shù)運算符VerilogHDL中常用的算術(shù)運算符有五種,分別是加法(?+?)、減法(?-?)、乘法(?*?)、除法(?/?)和取模(?%?)。這五種運算符都屬于雙目運算符。符號“+”“-”“*”“/”分別表示常用的加、減、乘、除四則運算;%?是取模運算,如“6%3”的值為0,“7%4”的值為3。在算術(shù)運算符的使用中,要注意如下問題:(1)算術(shù)運算結(jié)果的位寬。算術(shù)表達式結(jié)果的長度由最長的操作數(shù)決定。在賦值語句下,算術(shù)運算結(jié)果的長度由等號操作符左端的目標(biāo)長度決定。(2)有符號數(shù)和無符號數(shù)的使用。在設(shè)計中要注意到哪些操作數(shù)應(yīng)該是無符號數(shù),哪些應(yīng)該是有符號數(shù)。無符號數(shù)值一般存儲在線網(wǎng)、reg(寄存器)型變量及普通(沒有符號標(biāo)記s)的基數(shù)格式表示的整型數(shù)中。有符號數(shù)值一般存儲在整型變量、十進制形式的整數(shù)、有符號的reg(寄存器)型變量及有符號的線網(wǎng)中。2.關(guān)系運算符關(guān)系運算符也是雙目運算符,是對兩個操作數(shù)的大小進行比較。關(guān)系運算符有大于(>)、小于(<)、大于等于(>=)和小于等于(<=)幾種。在進行關(guān)系比較時,如果成立則結(jié)果為1'b1,否則返回的結(jié)果為0'b0;若不確定則返回結(jié)果為不定值(x)。例如:10>15的結(jié)果為假(0),20?>?18的結(jié)果為真(1),而4'b1101?<?4'hx的結(jié)果為不定值(x)。需注意的是,若操作數(shù)長度不同,則長度短的操作數(shù)應(yīng)在左邊用0補齊。例如:'b1001>='b101100等價于?'b001001>='b101101,結(jié)果為假(0)。3.相等關(guān)系運算符相等關(guān)系運算符是對兩個操作數(shù)進行比較,比較的結(jié)果有三種,即真(1)、假(0)和不定值(x)。VerilogHDL中有四種相等關(guān)系運算符:等于(==)、不等于(!=)、全等(===)、非全等(!==)。這四種運算符都是雙目運算符,要求有兩個操作數(shù),并且這四種相等運算符的優(yōu)先級別是相同的。“==”和“!=”稱為邏輯等式運算符,其結(jié)果由兩個操作數(shù)的值決定,由于操作數(shù)中某些位可能是不定值x和高阻態(tài)值z,所以結(jié)果可能為不定值x。“===”和“!==”運算符則不同,它是對操作數(shù)進行按位比較,兩個操作數(shù)必須完全一致,其結(jié)果才是1,否則為0。若兩個操作數(shù)對應(yīng)位同時出現(xiàn)不定值x和高阻值z,則可認(rèn)為是相同的。“===”和“!==”運算符常用于case表達式的判別,所以又稱為“case等式運算符”。表2.1-11列出了“==”和“===”的真值表,可幫助讀者理解兩者的區(qū)別。4.邏輯運算符邏輯運算符有三種,分別是邏輯與(&&)、邏輯或(||)和邏輯非(!)。其中邏輯與、邏輯或是雙目運算符,邏輯非為單目運算符。邏輯運算符的操作數(shù)只能是邏輯0或者邏輯1。三種邏輯運算符的真值表如表2.1-12所示。在邏輯運算符的操作過程中,如果操作數(shù)僅有1位,那么1就代表邏輯真,0就代表邏輯假;如果操作數(shù)是由多位組成的,則當(dāng)操作數(shù)每一位都是0時才是邏輯0值,只要有某一位為1,這個操作數(shù)就是邏輯1值。例如:寄存器變量a、b的初值分別為4'b1110和4'b0000,則?!a?=?0,!b?=?1,a&&b?=?0,a?||?b?=?1。需注意的是,若操作數(shù)中存在不定態(tài)x,并且其他位都是0,則邏輯運算的結(jié)果也是不定態(tài),例如:a的初值為4'b1100,b的初值為4'b00x0,則?!a?=?0,!b?=?x,a&&b?=?x,a?||?b?=?1。5.按位運算符數(shù)字邏輯電路中,信號與信號之間的運算稱為位運算。VerilogHDL提供了五種類型的位運算符:按位取反(~)、按位與(&)、按位或(|)、按位異或(^)、按位同或(^~)。按位運算符對其自變量的每一位進行操作。例如:表達式A|B的結(jié)果是A和B的對應(yīng)位相或的值。表2.1-13~表2.1-15給出了按位與、按位或和按位異或運算符的真值表。需要注意的是,兩個不同長度的數(shù)進行位運算時,會自動地將兩個操作數(shù)按右端對齊,位數(shù)少的操作數(shù)會在高位用0補齊;然后逐位進行運算,運算結(jié)果的位寬與操作數(shù)中的位寬較大者相同。6.歸約運算符歸約運算符按位進行邏輯運算,屬于單目運算符。由于這一類運算符運算的結(jié)果是產(chǎn)生1位邏輯值,因而被形象地稱為縮位運算符。VerilogHDL中,縮位運算符包括?&(與)、|(或)、^(異或)以及相應(yīng)的非操作?~&、~|、~^、^~。歸約運算符的操作數(shù)只有一個。歸約運算符的運算過程是:設(shè)a是一個4位的寄存器型變量,它的4位分別是a[0]、a[1]、a[2]?和a[3]。當(dāng)對a進行縮位運算時,先對a[0]?和a[1]?進行縮位運算,產(chǎn)生1位的結(jié)果,再將這個結(jié)果與a[2]?進行縮位運算,接著是a[3],最后產(chǎn)生1位的操作結(jié)果。7.移位運算符移位運算符有兩種:左移位運算符(<<)和右移位運算符(>>)。移位運算過程是將左邊(右邊)的操作數(shù)向左(右)移,所移動的位數(shù)由右邊的操作數(shù)來決定,然后用0來填補移出的空位。

8.條件運算符條件運算符(??:)是VerilogHDL里唯一的三目運算符,它根據(jù)條件表達式的值來選擇應(yīng)執(zhí)行的表達式,其表達形式如下:<條件表達式>?<表達式1>:<表達式2>其中,條件表達式的運算結(jié)果有真(1)、假(0)和不定態(tài)(x)三種。當(dāng)條件表達式的結(jié)果為真時,執(zhí)行表達式1;當(dāng)條件表達式的結(jié)果為假時,執(zhí)行表達式2。如果條件表達式的運算結(jié)果為不定態(tài)x,則模擬器將按位對表達式1的值與表達式2的值進行比較,位與位的比較按表2.1-16的規(guī)則產(chǎn)生每個結(jié)果位,從而構(gòu)成條件表達式的結(jié)果。9.連接和復(fù)制運算符VerilogHDL中還有兩個特殊的運算符:連接運算符({})和復(fù)制運算符({{}})。連接運算符是把位于大括號({})中的兩個或兩個以上信號或數(shù)值用逗號(?,?)分隔的小表達式按位連接在一起,最后用大括號括起來表示一個整體信號或數(shù)值,形成一個大的表達式。其格式如下:{信號1的某幾位,信號2的某幾位,…,信號n的某幾位}復(fù)制運算符({{}})將一個表達式放入雙重花括號中,復(fù)制因子放在第一層括號中。它為復(fù)制一個常量或變量提供了一種簡便的方法。2.2模

塊本課件是可編輯的正常PPT課件模塊(module)是VerilogHDL的基本單元,它代表一個基本的功能塊,用于描述某個設(shè)計的功能或結(jié)構(gòu),以及與其他模塊通信的外部端口。一個電路的設(shè)計不是一個模塊的設(shè)計,而是多個模塊的組合,因此一個模塊的設(shè)計只是一個系統(tǒng)設(shè)計中某個層次的設(shè)計。圖2.2-1是一個基本的模塊結(jié)構(gòu)組成。從圖2.2-1中可以看出,一個模塊主要包括模塊的開始與結(jié)束、模塊端口定義、模塊數(shù)據(jù)類型說明和模塊邏輯功能描述幾個基本部分。(1)模塊的開始與結(jié)束:模塊在語言形式上是以關(guān)鍵詞module開始、以關(guān)鍵詞endmodule結(jié)束的一段程序,其中模塊開始語句必須以分號結(jié)束。模塊的開始部分包括模塊名(name)和端口列表(port_list),模塊名是模塊唯一的標(biāo)識符,而端口列表是由模塊各個輸入、輸出和雙向端口變量組成的一張列表,這些端口用來與其他模塊進行連接(不妨理解為集成電路的引腳)。(2)模塊端口定義:定義端口列表里的變量哪些是輸入(input)、輸出(output)和雙向端口(inout)以及位寬。(3)模塊數(shù)據(jù)類型說明:包括wire、reg、memory和parameter等數(shù)據(jù)類型,以說明模塊中所用到的內(nèi)部信號、調(diào)用模塊等的聲明語句和功能定義語句。一般來說,module的input缺省定義為wire類型;output信號可以是wire類型,也可以是reg類型(條件是在always或initial語句塊中被賦值);inout一般為tri(三態(tài)線)類型,表示有多個驅(qū)動源。(4)模塊邏輯功能描述:產(chǎn)生各種邏輯(主要是組合邏輯和時序邏輯),主要包括initial語句、always語句、其他子模塊實例化語句、門實例化語句、用戶自定義原語(UDP)實例化語句、連續(xù)賦值語句(assign)、函數(shù)(function)和任務(wù)(task)。由上述模塊的結(jié)構(gòu)組成可以看出,模塊在概念上可等同于一個器件,比如通用器件(與門、三態(tài)門等)或通用宏單元(計數(shù)器、ALU、CPU)等。一個模塊可在另一個模塊中被調(diào)用,一個模塊代表了一個特定功能塊。一個電路設(shè)計可由多個模塊組合而成,因此一個模塊的設(shè)計只是一個系統(tǒng)設(shè)計中某個層次的設(shè)計。模塊設(shè)計可采用多種建模方式,一般包括行為描述方式、結(jié)構(gòu)描述方式以及混合描述方式(混合使用結(jié)構(gòu)描述和行為描述)。通過下例的VerilogHDL設(shè)計的簡單模塊,可結(jié)合模塊結(jié)構(gòu)體會VerilogHDL代碼和電路圖的含義。2.3端

口本課件是可編輯的正常PPT課件端口是模塊與外界或其他模塊溝通的信號線。模塊的端口可以是輸入端口(input)、輸出端口(output)或輸入/輸出(雙向)端口(inout)。缺省狀態(tài)下,端口類型都默認(rèn)為wire類型。需要注意的是,在某一端口的類型聲明中,類型聲明的長度必須和端口聲明的長度一致。一個模塊往往具有多個端口,它們是本模塊和其他模塊進行聯(lián)系的標(biāo)志。在模塊定義格式中,“模塊端口列表”列出了模塊具有的外部可見端口,該“模塊端口列表”內(nèi)的每一個端口項都代表著一個模塊端口。VerilogHDL中有如下三種端口聲明方式。輸入端口:input[信號位寬-1:0]端口名1;輸出端口:output[信號位寬-1:0]端口名1;輸入/輸出端口:inout[信號位寬-1:0]端口名1;端口聲明語句的作用對象必須是與模塊端口相連的模塊內(nèi)部變量,而不能是端口名(端口名和內(nèi)部變量標(biāo)識符同名的情況除外)。模塊內(nèi)部對端口進行的輸入/輸出操作是通過端口表達式中出現(xiàn)的內(nèi)部變量進行的(這些變量與對應(yīng)的端口相連),所以在模塊內(nèi)部必須對這些內(nèi)部變量的輸入/輸出特性進行說明。當(dāng)模塊被引用時,在引用的模塊中,有些信號需要輸入到被引用的模塊中,有些信號需要從被引用的模塊中取出。在引用模塊時其端口可以用如下兩種方法連接。(1)在引用時,嚴(yán)格按照模塊定義的端口順序來連接,不用標(biāo)明源模塊定義時規(guī)定的端口名。其格式如下:模塊名(連接端口1信號名,連接端口2信號名,…);(2)在引用時用“.”標(biāo)明源模塊定義時規(guī)定的端口名。其格式如下:模塊名(.端口1名(連接信號1名),.端口2名(連接信號2名),…);這樣表示的好處在于可以用端口名與被引用模塊的端口對應(yīng),不必嚴(yán)格按端口順序?qū)?yīng),提高了程序的可讀性和可移植性。3.1數(shù)據(jù)流建模

3.2行為級建模

3.3結(jié)構(gòu)化建模3.1數(shù)據(jù)流建模在數(shù)字電路中,輸入信號經(jīng)過組合邏輯電路傳送到輸出端類似于數(shù)據(jù)流動,而不會在其中存儲。通過連續(xù)賦值語句可以對這種特性進行建模,這種建模方式通常稱為數(shù)據(jù)流建模。VerilogHDL中的數(shù)據(jù)流建模方式是比較簡單的行為建模,它只有一種描述方式,即通過連續(xù)賦值語句進行邏輯描述。其最基本的語句是由關(guān)鍵詞assign引導(dǎo)的。對于連續(xù)賦值語句,只要輸入端操作數(shù)的值發(fā)生變化,該語句就重新計算并刷新賦值結(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ù)賦值語句只能用來對連線型變量進行驅(qū)動,而不能對寄存器型變量進行賦值,它可以采取顯式連續(xù)賦值語句和隱式連續(xù)賦值語句兩種賦值方式。1.顯式連續(xù)賦值語句顯式連續(xù)賦值語句的語法格式如下:<net_declaration><range><name>;assign#<delay><name>=assignmentexpression;這種格式的連續(xù)賦值語句包含兩條語句:第一條語句是對連線型變量進行類型說明的語句;第二條語句是對這個連線型變量進行連續(xù)賦值的賦值語句。賦值語句是由關(guān)鍵詞assign引導(dǎo)的,它能夠用來驅(qū)動連線型變量,而且只能對連線型變量進行賦值,主要用于對wire型變量進行賦值。2.隱式連續(xù)賦值語句隱式連續(xù)賦值語句的語法格式如下:<net_declaration><drive_strength><range>#<delay><name>=assignmentexpression;這種格式的連續(xù)賦值語句把連線型變量的說明語句以及對該連線型變量進行連續(xù)賦值的語句結(jié)合到同一條語句內(nèi)。利用它可以在對連線型變量進行類型說明的同時實現(xiàn)連續(xù)賦值。上述兩種格式中:·“net_declaration(連線型變量類型)”可以是除了trireg類型外的任何一種連線型數(shù)據(jù)類型?!ぁ皉ange(變量位寬)”指明了變量數(shù)據(jù)類型的寬度,格式為[msb:lab],缺省時為1位?!ぁ癲rive_strength(賦值驅(qū)動強度)”是可選的,它只能在“隱式連續(xù)賦值語句”格式中指定。它用來對連線型變量受到的驅(qū)動強度進行指定。它是由“對1驅(qū)動強度”和“對0驅(qū)動強度”兩項組成的。驅(qū)動強度的概念在上一章的數(shù)據(jù)類型中已經(jīng)說明,比如語句“wire(weak0,strong1)out=in1&in2;”內(nèi)的“(weak0,strong1)”就表示該語句指定的連續(xù)賦值對連線型變量“out”的驅(qū)動強度是:賦“0”值時的驅(qū)動強度為“弱(weak)”,而賦“1”值時的驅(qū)動強度為“強(strong)”。如果在格式中缺省了“賦值驅(qū)動強度”這一項,則驅(qū)動強度默認(rèn)為(strong1,strong0)?!ぁ癲elay(延時量)”項也是可選的,它指定了賦值表達式內(nèi)信號發(fā)生變化時刻到連線型變量取值被更新時刻之間的延遲時間量。其語法格式如下:#(delay1,delay2,delay3)其中,delay1、delay2、delay3都是一個數(shù)值,“delay1”指明了連線型變量轉(zhuǎn)移到“1”狀態(tài)時的延時值(稱為上升延時);“delay2”指明了連線型變量轉(zhuǎn)移到“0”狀態(tài)時的延時值(稱為下降延時);“delay3”指明了連線型變量轉(zhuǎn)移到“高阻Z”狀態(tài)時的延時值(稱為關(guān)閉延時)。如果沒有定義delay,則缺省值為0。3.連續(xù)賦值語句使用中的注意事項(1)賦值目標(biāo)只能是線網(wǎng)類型(wire)。(2)在連續(xù)賦值中,只要賦值語句右邊表達式的任何一個變量有變化,表達式立即被計算,計算的結(jié)果立即賦給左邊的信號(若沒有定義延時量)。(3)連續(xù)賦值語句不能出現(xiàn)在過程塊中。(4)多個連續(xù)賦值語句之間是并行關(guān)系,因此與位置順序無關(guān)。(5)連續(xù)賦值語句中的延時具有硬件電路中慣性延時的特性,任何小于其延時量的信號變化脈沖都將被濾除掉,不會出現(xiàn)在輸出端口。

3.2行

模VerilogHDL支持設(shè)計者從電路外部行為的角度對其進行描述,因此行為級建模是從一個層次很高的抽象角度來表示電路的。其目標(biāo)不是對電路的具體硬件結(jié)構(gòu)進行說明,它是為了綜合以及仿真的目的而進行的。在這個層次上,設(shè)計數(shù)字電路更類似于使用一些高級語言(如C語言)進行編程,而且VerilogHDL行為級建模的語法結(jié)構(gòu)與C語言也非常相似。VerilogHDL提供了許多行為級建模語法結(jié)構(gòu),為設(shè)計者的使用提供了很大的靈活性。行為描述常常用于復(fù)雜數(shù)字邏輯系統(tǒng)的頂層設(shè)計中,也就是通過行為級建模把一個復(fù)雜的系統(tǒng)分解成可操作的若干個模塊,每個模塊之間的邏輯關(guān)系通過行為模塊的仿真加以驗證。這樣就能把一個大的系統(tǒng)合理地分解為若干個較小的子系統(tǒng),然后再將每個子系統(tǒng)用可綜合風(fēng)格的VerilogHDL模塊(門級結(jié)構(gòu)或RTL級、算法級、系統(tǒng)級的模塊)加以描述。同時,行為級建模也可以用來生成仿真測試信號,對已設(shè)計的模塊進行檢測。本節(jié)將詳細(xì)介紹行為級建模結(jié)構(gòu)以及各種高級語句的語法格式和用法。圖3.2-1給出了VerilogHDL行為描述中模塊的構(gòu)成框架。3.2.1過程語句

VerilogHDL中的過程塊是由過程語句組成的。過程語句有兩種,即initial過程語句和always過程語句。1.initial過程語句initial過程語句的語法格式是:

initial過程語句在進行仿真時從模擬0時刻開始執(zhí)行,它在仿真過程中只執(zhí)行一次,在執(zhí)行完一次后該initial過程語句就被掛起,不再執(zhí)行。如果一個模塊中存在多個initial過程語句,則每個initial過程語句都是同時從0時刻開始并行執(zhí)行的。initial過程語句內(nèi)的多條行為語句可以是順序執(zhí)行的,也可以是并行執(zhí)行的。initial過程語句通常用于仿真模塊中對激勵向量的描述,或用于給寄存器變量賦初值。2.a(chǎn)lways過程語句從語法描述角度而言,相對于initial過程語句,always過程語句的觸發(fā)狀態(tài)是一直存在的,只要滿足always后面的敏感事件列表,就執(zhí)行語句塊。其語法格式如下:always@(<敏感事件列表>)

語句塊;其中,敏感事件列表就是觸發(fā)條件,只有當(dāng)觸發(fā)條件滿足時,其后的語句塊才能被執(zhí)行。也就是說,只要該列表中變量的值發(fā)生改變,就會引發(fā)塊內(nèi)語句的執(zhí)行。因此,敏感事件列表中應(yīng)列出影響塊內(nèi)取值的所有信號。若有兩個或兩個以上信號,則它們之間可以用“or”連接,也可以用逗號“,”連接。敏感信號可以分為兩種類型:一種為邊沿敏感型,一種為電平敏感型。對于時序電路,事件通常是由時鐘邊沿觸發(fā)的。為表達邊沿這個概念,VerilogHDL提供了posedge和negedge兩個關(guān)鍵字分別描述信號的上升沿和下降沿。3.過程語句使用中的注意事項過程語句具有很強的功能,VerilogHDL的大多數(shù)高級程序語句都是在過程中使用的。它既可以描述時序邏輯電路,也可以描述組合邏輯電路。采用過程語句進行程序設(shè)計時,VerilogHDL有一定的設(shè)計要求和規(guī)范。在信號的形式定義方面,無論是對時序邏輯電路還是對組合邏輯電路進行描述,VerilogHDL都要求在過程語句(initial和always)中被賦值信號必須定義為reg類型。敏感事件列表是VerilogHDL中的一個關(guān)鍵性設(shè)計,如何選取敏感事件作為過程的觸發(fā)條件,在VerilogHDL程序中有一定的設(shè)計要求:(1)采用過程語句對組合電路進行描述時,需要把全部的輸入信號列入敏感事件列表。(2)采用過程語句對時序電路進行描述時,需要把時間信號和部分輸入信號列入敏感事件列表。應(yīng)當(dāng)注意的是,不同的敏感事件列表會產(chǎn)生不同的電路形式。

3.2.2語句塊在VerilogHDL過程語句的使用中,當(dāng)語句數(shù)超過一條時,需要采用語句塊。語句塊就是由塊標(biāo)識符begin-end或fork-join界定的一組行為描述語句。語句塊就相當(dāng)于給塊中的一組行為描述語句進行打包,使之在形式上類似于一條語句。語句塊的具體功能是通過語句塊中所包含的描述語句的執(zhí)行而得以實現(xiàn)的。當(dāng)語句塊中只包含一條語句時,可以直接寫這條語句,此時塊標(biāo)識符可以缺省。語句塊包括串行語句塊(begin-end)和并行語句塊(fork-join)兩種。1.串行語句塊串行語句塊采用的是關(guān)鍵字“begin”和“end”,其中的語句按串行方式順序執(zhí)行,可以用于可綜合電路程序和仿真測試程序。其語法格式是:其中,塊名即該塊的名字,當(dāng)塊內(nèi)有變量時必須有塊名,否則在編譯時將出現(xiàn)語法錯誤。塊內(nèi)聲明語句是可選的,可以是參數(shù)說明語句、integer型變量聲明語句、reg型變量聲明語句、time型變量聲明語句和事件(event)說明語句。串行語句塊的特點:(1)串行語句塊中的每條語句依據(jù)塊中的排列次序逐條執(zhí)行。塊中每條語句給出的延遲時間都是相對于前一條語句執(zhí)行結(jié)束的相對時間。(2)串行語句塊的起始執(zhí)行時間就是串行語句塊中第一條語句開始執(zhí)行的時間;串行語句塊的結(jié)束時間就是塊中最后一條語句執(zhí)行結(jié)束的時間。2.并行語句塊并行語句塊采用的是關(guān)鍵字“fork”和“join”,其中的語句按并行方式執(zhí)行,只能用于仿真測試程序,不能用于可綜合電路程序。其語法格式是:并行語句塊的特點:(1)塊內(nèi)語句是同時執(zhí)行的,即程序流程控制指令一進入到該并行語句塊,塊內(nèi)語句就同時開始執(zhí)行。(2)塊內(nèi)每條語句的延遲時間是相對于程序流程控制指令進入到塊內(nèi)的仿真時間。3.語句塊的使用例3.2-6分別采用串行語句塊和并行語句塊產(chǎn)生圖3.2-3所示的信號波形。(1)采用串行語句塊的VerilogHDL程序代碼如下:(2)采用并行語句塊的VerilogHDL程序代碼如下:從該例可以看到,采用串行語句塊和并行語句塊都可以產(chǎn)生相同的測試信號,具體采用哪種語句進行設(shè)計主要取決于設(shè)計者的習(xí)慣。需要說明的是,在對于電路的描述性設(shè)計中,部分綜合工具不支持并行語句塊,因此主要采用串行語句塊進行設(shè)計。

表3.2-1對比了串行語句塊和并行語句塊,用以幫助讀者理解二者的區(qū)別和聯(lián)系。3.2.3過程賦值語句過程塊中的賦值語句稱為過程賦值語句。過程性賦值是在initial語句或always語句內(nèi)的賦值,它只能對寄存器數(shù)據(jù)類型的變量賦值。對于多位寬的寄存器變量(矢量),還可以只對其中的某一位或某幾位進行賦值。對于存儲器類型的,則只能通過選定的地址單元,對某個單元進行賦值。還可以將前述各類變量用連接符拼接起來,構(gòu)成一個整體,作為過程賦值語句的左端。過程賦值語句有阻塞賦值語句和非阻塞賦值語句兩種。1.阻塞賦值語句阻塞賦值語句的操作符號為“=”,其語法格式是:變量?=?表達式;例如:b=a;當(dāng)一個語句塊中有多條阻塞賦值語句時,如果前面的賦值語句沒有完成,則后面的語句就不能被執(zhí)行,仿佛被阻塞了一樣,因此稱為阻塞賦值方式。阻塞賦值語句的特點:(1)在串行語句塊中,各條阻塞賦值語句將按照排列順序依次執(zhí)行;在并行語句塊中的各條阻塞賦值語句則同時執(zhí)行,沒有先后之分。(2)執(zhí)行阻塞賦值語句的順序是,先計算等號右端表達式的值,然后立刻將計算的值賦給左邊的變量,與仿真時間無關(guān)。2.非阻塞賦值語句非阻塞賦值語句的操作符號為“<=”,其語法格式是:變量<=表達式;例如:b?<=a;如果在一個語句塊中有多條非阻塞賦值語句,則后面語句的執(zhí)行不會受到前面語句的限制,因此稱為非阻塞賦值方式。非阻塞賦值語句的特點:(1)在串行語句塊中,各條非阻塞賦值語句的執(zhí)行沒有先后之分,排在前面的語句不會影響到后面語句的執(zhí)行,各條語句并行執(zhí)行。(2)執(zhí)行非阻塞賦值語句的順序是,先計算右端表達式的值,然后待延遲時間的結(jié)束后,再將計算的值賦給左邊的變量。阻塞賦值語句和非阻塞賦值語句可以用于數(shù)字邏輯電路設(shè)計和測試仿真程序中。在數(shù)字邏輯電路設(shè)計中,阻塞賦值語句和非阻塞賦值語句對于電路的描述差別很大,使

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論