版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第5章
組合電路的自動化設(shè)計與分析
第5章組合電路的自動化設(shè)計與分析2主要參考書目
1.
EDA技術(shù)實用教程(第4版)VerilogHDL,潘明,清華大學(xué)
2.FPGA系統(tǒng)設(shè)計與實踐黃智偉等電子工業(yè)出版社2主要參考書目5.1手工數(shù)字技術(shù)存在的問題設(shè)計方法的選擇使用EDA工具設(shè)計集成電路5.1手工數(shù)字技術(shù)存在的問題設(shè)計方法的選擇使用EDA工手工數(shù)字技術(shù)存在的問題一.傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計技術(shù)基于SSI、MSI、LSI、VLSI集成電路的設(shè)計。系統(tǒng)方案器件選擇畫電路圖布線制版系統(tǒng)調(diào)試定型生產(chǎn)修改純硬件邏輯設(shè)計(試湊法)手工數(shù)字技術(shù)存在的問題一.傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計技術(shù)基于SSI組合電路的自動化設(shè)計與分析手工數(shù)字技術(shù)存在的問題1.低速。2.設(shè)計規(guī)模小。3.分析技術(shù)無法適應(yīng)需要。4.設(shè)計效率低成本高。5.可靠性低。6.體積大功耗大。7.功能有限。8.無法實現(xiàn)功能升級。9.知識產(chǎn)權(quán)不易保護。
問題◆
現(xiàn)代的設(shè)計方法:硬件設(shè)計+軟件設(shè)計從上至下的設(shè)計方法出現(xiàn)HardwareDescriptionLanguage,HDL手工數(shù)字技術(shù)存在的問題1.低速。問題◆現(xiàn)代的設(shè)計二.現(xiàn)代的數(shù)字系統(tǒng)設(shè)計技術(shù)基于EDA技術(shù)及大規(guī)模可編程邏輯器件的系統(tǒng)設(shè)計。工程師利用EDA工具完成的數(shù)字系統(tǒng)設(shè)計,最終要下載到PLD內(nèi)部完成布局布線才能實現(xiàn)真正的功能。大規(guī)??删幊踢壿嬈骷≒LD——ProgrammableLogicDevice)的出現(xiàn),引起了數(shù)字系統(tǒng)設(shè)計領(lǐng)域的革命性變革。PLD已成為現(xiàn)代數(shù)字系統(tǒng)的物理載體,設(shè)計師在實驗室就可以設(shè)計出芯片系統(tǒng),并立即投入實際應(yīng)用。1.PLD已成為現(xiàn)代數(shù)字系統(tǒng)的物理載體二.現(xiàn)代的數(shù)字系統(tǒng)設(shè)計技術(shù)基于EDA技術(shù)及大規(guī)??删幊踢壿嬈?/p>
PLD是廠家作為一種通用性器件生產(chǎn)的半定制電路。其特點是:(1)用戶通過對器件的編程實現(xiàn)所需要的邏輯功能;(2)PLD是一種用戶可配置的邏輯器件;(3)成本低、使用靈活、設(shè)計周期短、可靠性高、風(fēng)險小?,F(xiàn)場可編程門陣列PLD是廠家作為一種通用性器件生產(chǎn)的半定制電2.
EDA技術(shù)日趨完善現(xiàn)代EDA技術(shù)的主要特征是:●引入硬件描述語言;●支持高層次的抽象設(shè)計;●具有邏輯綜合、行為綜合、系統(tǒng)綜合能力。EDA技術(shù):
EDA—ElectronicDesignAutomation是電子設(shè)計自動化的英文縮寫。它以功能強大的計算機為工具,在EDA工具軟件平臺上,根據(jù)設(shè)計者描述的源文件(原理圖、硬件描述語言、波形圖等),自動完成編譯、仿真、優(yōu)化、綜合、適配(布局布線)以及下載,實現(xiàn)既定的電子線路系統(tǒng)功能。設(shè)計者的主要任務(wù):完成系統(tǒng)硬件功能的描述。2.EDA技術(shù)日趨完善現(xiàn)代EDA技術(shù)的主要特征是:EDA10典型的EDA工具通常包括:設(shè)計輸入、仿真、綜合、適配和下載。
綜合工具的功能是將設(shè)計者在EDA平臺上完成的某系統(tǒng)的設(shè)計文件由較高層次的描述轉(zhuǎn)換到較低層次描述的過程。綜合工具是軟件描述和硬件實現(xiàn)的一座橋梁。
適配工具的功能是將綜合器產(chǎn)生的網(wǎng)表文件安排在指定的器件中,產(chǎn)生最終的下載文件。
10典型的EDA工具通常包括:綜合工具的功能是將設(shè)計者在ED11設(shè)計文件
process(clk)
beginif(clk’eventandclk=‘1’)thenif(reset)thenbeginout<=0;cont<=0;endelsif(load)thencont<=in;elsif(enable)thenbegincasecontis when”000”=>cont<=“001”;when”001”=>cont<=“010”;when”010”=>cont<=“011”;when”011”=>cont<=“100”;when”100”=>cont<=“000”;whenothers=>cont<=“000”;endcaseendendend
仿真綜合
適配EDA軟件下載硬件電路11設(shè)計文件仿真綜合適配EDA軟件下
總之,PLD器件的出現(xiàn)和EDA技術(shù)發(fā)展,使數(shù)字系統(tǒng)設(shè)計的設(shè)計方法和設(shè)計技術(shù)都發(fā)生了深刻的變化,稱之為基于EDA和PLD的現(xiàn)代數(shù)字系統(tǒng)設(shè)計方法。設(shè)計者通過設(shè)計芯片來實現(xiàn)各種不同的數(shù)字系統(tǒng)功能,即設(shè)計者可以自己定義器件的內(nèi)部邏輯和管腳。增加了設(shè)計的自由度,提高了設(shè)計效率,減少芯片的種類和數(shù)量,縮小體積,降低功耗,節(jié)約成本,提高可靠性??傊?,PLD器件的出現(xiàn)和EDA技術(shù)發(fā)展,使數(shù)設(shè)計方法的改變:采用硬件描述語言建模設(shè)計方法的改變:采用硬件描述語言建模
硬件描述語言HDL(HardwareDescriptionLanguage)是用于設(shè)計硬件電子系統(tǒng)的計算機語言,它描述系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接方式,是EDA技術(shù)應(yīng)用中最主要的設(shè)計輸入方法之一。
設(shè)計者利用這種語言可以從上層到下層(從抽象到具體),逐層描述自己的設(shè)計思想,用一系列分層次的模塊來表示極其復(fù)雜的數(shù)字系統(tǒng)。借助EDA仿真工具逐層進行仿真驗證。
通過EDA綜合工具將需要物理實現(xiàn)的模塊組合轉(zhuǎn)換成門級電路網(wǎng)表。
利用芯片廠家提供自動布線布局工具(適配器)將網(wǎng)表映射為具體器件的布線結(jié)構(gòu),最后編程下載到PLD器件。三.硬件描述語言硬件描述語言HDL(HardwareDes★
硬件描述語言
◆
ABEL◆
AHDL
◆
VerilogHDL◆
VHDL
HDL概述IEEE標(biāo)準(zhǔn)1987年,由美國國防部組織開發(fā)的VHDL成為IEEE國際標(biāo)準(zhǔn)。1995年,由一個民間公司的私有財產(chǎn)轉(zhuǎn)化而來的VerilogHLD也正式成為IEEE國際標(biāo)準(zhǔn)。
本課程主要介紹如何用VerilogHDL描述基本的組合邏輯電路和基本的同步時序邏輯電路,為今后進行數(shù)字系統(tǒng)設(shè)計打基礎(chǔ)?!镉布枋稣Z言HDL概述IEEE標(biāo)準(zhǔn)19問題的提出設(shè)計一個數(shù)字鐘,使之完成以下功能:實現(xiàn)時、分、秒的計時;時可采取12小時計時也可采取24小時計時;具有異步清零和啟動/停止功能;并可調(diào)整時間。用數(shù)碼管顯示時分秒;具有整點報時功能;可繼續(xù)設(shè)計日、星期、月、年等其他萬年歷功能??稍O(shè)計秒表功能,鬧鐘功能。5.2數(shù)字技術(shù)自動設(shè)計與分析流程
問題的提出設(shè)計一個數(shù)字鐘,使之完成以下功能:5.2數(shù)字技術(shù)解決方案1——傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計方法1.根據(jù)設(shè)計要求劃分功能模塊;2.確定輸入和輸出的關(guān)系,畫出真值表,寫出邏輯表達式;4.利用公式或卡諾圖進行人工化簡;5.根據(jù)化簡后的邏輯表達式畫出電路原理圖;6.在面包板上進行實驗,驗證電路的正確性;7.若無錯誤,再在透明薄膜上用貼圖符號貼PCB圖;8.檢查后送制板廠制板;9.對PCB板進行安裝、調(diào)試,若有大的錯誤,修改設(shè)計,重復(fù)以上過程,重新制板。搭積木的方式!基于電路板的設(shè)計方法——采用固定功能的器件(通用型器件),通過設(shè)計電路板來實現(xiàn)系統(tǒng)功能解決方案1——傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計方法1.根據(jù)設(shè)計要求劃分功傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計方法特點采用自下而上(BottomUp)的設(shè)計方法采用通用型邏輯器件搭積木式的方式在系統(tǒng)硬件設(shè)計的后期進行仿真和調(diào)試主要設(shè)計文件是電路原理圖
傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計方法特點采用自下而上(BottomUp)傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計方法的缺點效率低下——所有這一切,幾乎都是手工完成!設(shè)計周期很長;容易出錯;芯片種類多,數(shù)量大,受市場的限制;設(shè)計靈活性差;產(chǎn)品體積大。傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計方法的缺點效率低下——所有這一切,幾乎都是解決方案2——現(xiàn)代的數(shù)字系統(tǒng)設(shè)計方法首先在計算機上安裝EDA軟件,它們能幫助設(shè)計者自動完成幾乎所有的設(shè)計過程;再選擇合適的PLD芯片,可以在一片芯片中實現(xiàn)整個數(shù)字系統(tǒng)?;谛酒脑O(shè)計方法——采用PLD(可編程邏輯器件),利用EDA開發(fā)工具,通過芯片設(shè)計來實現(xiàn)系統(tǒng)功能。EDA軟件空白PLD+數(shù)字系統(tǒng)編程解決方案2——現(xiàn)代的數(shù)字系統(tǒng)設(shè)計方法首先在計算機上安裝EDA現(xiàn)代的數(shù)字系統(tǒng)設(shè)計方法(續(xù)1)1.根據(jù)設(shè)計要求劃分功能模塊2.PLD開發(fā)(利用EDA工具)(1)設(shè)計輸入:采用原理圖或硬件描述語言(HDL),描述出輸入和輸出的邏輯關(guān)系,將整個原理圖或程序輸入到計算機中;(2)設(shè)計的編譯:EDA工具可自動進行邏輯綜合,將功能描述轉(zhuǎn)換為門級描述,或轉(zhuǎn)換成具體PLD的網(wǎng)表文件,將網(wǎng)表文件自動適配到具體芯片中進行布局布線;(3)功能仿真和時序仿真;(4)編程下載到實際芯片中,在實驗臺上進行驗證;(5)在每一階段若有問題,可在計算機上直接修改設(shè)計,重復(fù)以上過程?,F(xiàn)代的數(shù)字系統(tǒng)設(shè)計方法(續(xù)1)1.根據(jù)設(shè)計要求劃分功能模塊
數(shù)字技術(shù)自動設(shè)計與分析流程
數(shù)字技術(shù)自動設(shè)計與分析流程
邏輯綜合邏輯綜合現(xiàn)代的數(shù)字系統(tǒng)設(shè)計方法(續(xù)2)3.設(shè)計包含PLD芯片的電路板(1)在計算機上利用EDA軟件畫電路原理圖;(2)進行電氣規(guī)則檢查無誤后,自動生成網(wǎng)表文件;(3)利用EDA軟件畫PCB圖,自動布線;(4)自動進行設(shè)計規(guī)則檢查,無誤后輸出文件,制板。
優(yōu)點:效率高——所有這一切,幾乎都是借助計算機利用EDA軟件自動完成!容易檢查錯誤,便于修改;設(shè)計周期短、成功率很高;產(chǎn)品體積小?,F(xiàn)代的數(shù)字系統(tǒng)設(shè)計方法(續(xù)2)3.設(shè)計包含PLD芯片的電路現(xiàn)代的數(shù)字系統(tǒng)設(shè)計方法通常采用自上而下(TopDown)的設(shè)計方法采用可編程邏輯器件在系統(tǒng)硬件設(shè)計的早期進行仿真主要設(shè)計文件是用硬件描述語言編寫的源程序降低了硬件電路設(shè)計難度特點自行定義器件內(nèi)部的邏輯和引腳寫出真值表或狀態(tài)表→EDA開發(fā)工具自動進行邏輯綜合→模擬仿真→編程下載到PLD中基于芯片——采用PLD,利用EDA開發(fā)工具,通過芯片設(shè)計來實現(xiàn)系統(tǒng)功能?,F(xiàn)代的數(shù)字系統(tǒng)設(shè)計方法通常采用自上而下(TopDown)的什么是EDA技術(shù)?EDA(ElectronicDesignAutomation,電子設(shè)計自動化)是在計算機的輔助下完成電子產(chǎn)品設(shè)計的一種先進的硬件設(shè)計技術(shù)!是立足于計算機工作平臺開發(fā)出來的一整套先進的設(shè)計電子系統(tǒng)的軟件工具。計算機并口器件編程接口PCBBoardPLD編程目標(biāo)文件什么是EDA技術(shù)?EDA(ElectronicDesignEDA技術(shù)的范疇IC版圖設(shè)計PLD設(shè)計電路設(shè)計PCB設(shè)計模擬電路數(shù)字電路混合電路設(shè)計輸入邏輯綜合仿真編程下載本課程內(nèi)容!EDA技術(shù)的范疇IC版圖設(shè)計PLD設(shè)計電路設(shè)計PCB設(shè)傳統(tǒng)設(shè)計方法vsEDA設(shè)計方法
傳統(tǒng)設(shè)計方法EDA設(shè)計方法自底向上手動設(shè)計軟硬件分離原理圖設(shè)計方式系統(tǒng)功能固定不易仿真難測試修改模塊難移植共享設(shè)計周期長自頂向上自動設(shè)計打破軟硬件屏障原理圖、HDL等設(shè)計方式系統(tǒng)功能易改易仿真易測試修改模塊可移植共享設(shè)計周期短傳統(tǒng)設(shè)計方法vsEDA設(shè)計方法傳統(tǒng)設(shè)計方法EDA設(shè)計29本課程要學(xué)習(xí)的PLD設(shè)計EDA工具軟件
QuartusⅡ美國Altera公司自行設(shè)計的第四代PLD開發(fā)軟件可以完成PLD的設(shè)計輸入、邏輯綜合、布局與布線、仿真、時序分析、器件編程的全過程同時還支持SOPC(可編程片上系統(tǒng))設(shè)計開發(fā)5.3原理圖輸入法邏輯電路設(shè)計5.3.1QuartusII軟件簡介
29本課程要學(xué)習(xí)的PLD設(shè)計EDA工具軟件QuartusQuartusⅡ簡介
QuartusⅡ提供了方便的設(shè)計輸入方式、快速的編譯和直接易懂的器件編程。能夠支持邏輯門數(shù)在百萬門以上的邏輯器件的開發(fā),并且為第三方工具提供了無縫接口。QuartusⅡ支持的器件有:StratixⅡ、StratixGX、Stratix、Mercury、MAX3000A、MAX7000B、MAX7000S、MAX7000AE、MAXⅡ、FLEX6000、FLEX10K、FLEX10KA、FLEX10KE、Cyclone、CycloneⅡ、APEXⅡ、APEX20KC、APEX20KE和ACEX1K系列。QuartusⅡ軟件包的編程器是系統(tǒng)的核心,提供功能強大的設(shè)計處理,設(shè)計者可以添加特定的約束條件來提高芯片的利用率。QuartusⅡ簡介QuartusⅡ提供了方便的設(shè)QuartusⅡ主界面QuartusⅡ主界面QuartusⅡ主界面的一個實例QuartusⅡ主界面的一個實例原理圖輸入法邏輯電路設(shè)計原理圖輸入法邏輯電路設(shè)計設(shè)計流程1、建立一個新工程,并指定對象器件。2、設(shè)計輸入:
編輯HDL文件
原理圖3、功能模擬:
編譯(分析和綜合)生成網(wǎng)表文件建立波形文件4、物理設(shè)計引腳分配
完整編譯后時序模擬5、器件編程:下載
設(shè)計流程1、建立一個新工程,并指定對象器件。進入原理圖編輯器從元件庫中調(diào)入元件符號繪制原理圖將設(shè)計項目設(shè)置成可調(diào)用的元件設(shè)計頂層文件將設(shè)計設(shè)置成工程5.3.2電路原理圖編輯輸入進入原理圖編輯器進入原理圖編輯器5.3.2電路原理圖編輯輸入進入原理圖進入原理圖編輯器File->NewBlockDiagram/SchematicFile進入原理圖編輯器File->New原理圖編輯器窗口原理圖編輯器窗口原理圖設(shè)計方法
元件輸入對話框
從元件庫中調(diào)入元件符號
原理圖設(shè)計方法元件輸入對話框從元件庫中調(diào)入元件符號電路原理圖編輯輸入電路原理圖編輯輸入電路原理圖編輯輸入(1)新建一個文件夾。
(2)打開原理圖編輯窗。(3)文件存盤。
電路原理圖編輯輸入(1)新建一個文件夾。(2)打開原理圖5.3.3創(chuàng)建工程
(1)打開建立新工程管理窗。新建工程工作目錄的路徑新建的工程名稱工程的頂層設(shè)計實體名稱5.3.3創(chuàng)建工程(1)打開建立新工程管理窗。新建工創(chuàng)建工程
(2)將設(shè)計文件加入工程中。創(chuàng)建工程(2)將設(shè)計文件加入工程中。創(chuàng)建工程
(3)選擇目標(biāo)芯片。
(4)工具設(shè)置。
選擇對象器件EP1C12Q240C8創(chuàng)建工程(3)選擇目標(biāo)芯片。(4)工具設(shè)置。選擇對象器創(chuàng)建工程
(5)結(jié)束設(shè)置。創(chuàng)建工程(5)結(jié)束設(shè)置。創(chuàng)建工程
(6)編輯構(gòu)建電路圖。
創(chuàng)建工程(6)編輯構(gòu)建電路圖。5.3.4功能簡要分析5.3.4功能簡要分析5.3.5編譯前設(shè)置
(1)選擇FPGA目標(biāo)芯片。選擇對象器件EP1C12Q240C85.3.5編譯前設(shè)置(1)選擇FPGA目標(biāo)芯片。選擇編譯前設(shè)置(2)選擇配置器件的工作方式。
(3)選擇配置器件和編程方式。編譯前設(shè)置(2)選擇配置器件的工作方式。(3)選擇配置器件編譯前設(shè)置編譯前設(shè)置(4)雙功能輸入輸出端口設(shè)置。(5)選擇目標(biāo)器件閑置引腳的狀態(tài)。
編譯前設(shè)置編譯前設(shè)置(4)雙功能輸入輸出端口設(shè)置。(5)選5.3.6全程編譯processing->startcompilationprocessing->start菜單編譯器窗口5.3.6全程編譯processing->start編譯結(jié)果的報告編譯結(jié)果的報告5.3.7時序仿真測試電路功能
選擇編輯矢量波形文件,打開波形編輯器(1)打開波形編輯器建立波形文件File->New->VectorWaveformFile5.3.7時序仿真測試電路功能選擇編輯矢量波形文件,打使用波形編輯器繪制測試向量波形波形編輯器窗口使用波形編輯器繪制測試向量波形波形編輯器窗口時序仿真測試電路功能
(1)打開波形編輯器。(2)設(shè)置仿真時間區(qū)域。
(3)波形文件存盤。Edit->EndTime指定模擬終止時間時序仿真測試電路功能(1)打開波形編輯器。(2)設(shè)置仿真(4)將工程top的端口信號名選入波形編輯器中(1)選擇Pins:all(2)點擊List(4)將工程top的端口信號名選入波形編輯器中(1)選擇Pi(5)編輯輸入波形(輸入激勵信號)(1)按住鼠標(biāo)左鍵并拖動鼠標(biāo),選擇一個時間段(2)在工具條中選擇一個值,給信號賦值(5)編輯輸入波形(輸入激勵信號)(1)按住鼠標(biāo)左鍵并拖動(6)仿真器參數(shù)設(shè)置(6)仿真器參數(shù)設(shè)置(7)啟動仿真器。模擬器窗口Processing->Simulatortool或Processing->StartSimulator(7)啟動仿真器。模擬器窗口(8)觀察分析仿真結(jié)果。時延(8)觀察分析仿真結(jié)果。時延5.4引腳鎖定和編程下載
5.4.1引腳鎖定(1)打開工程。
5.4引腳鎖定和編程下載5.4.1引腳鎖定(1)引腳鎖定(2)雙擊“TO”欄的《new》,即出現(xiàn)一按鈕,點擊此按鈕,并選擇出現(xiàn)的菜單中的NodeFinder項。(3)最后保存這些引腳鎖定的信息后,必須再編譯(啟動StartCompilation)一次,才能將引腳鎖定信息編譯進編程下載文件中。
引腳鎖定(2)雙擊“TO”欄的《new》,即出現(xiàn)一按鈕,點擊5.4.2配置文件下載
(1)打開編程窗。
5.4.2配置文件下載(1)打開編程窗。5.4引腳鎖定和編程下載
5.4.2配置文件下載
(2)設(shè)置編程器。(3)測試JTAG口。
(4)硬件測試。5.4引腳鎖定和編程下載5.4.2配置文件下載(25.4引腳鎖定和編程下載
5.4.3JTAG間接模式編程配置器件1.將SOF文件轉(zhuǎn)化為JTAG間接配置文件。
5.4引腳鎖定和編程下載5.4.3JTAG間接模式編5.4引腳鎖定和編程下載
5.4.3JTAG間接模式編程配置器件2.下載JTAG間接配置文件。5.4引腳鎖定和編程下載5.4.3JTAG間接模式編補充:第一節(jié)VerilogHDL基礎(chǔ)知識一.Verilog模塊的結(jié)構(gòu)VerilogHDL以模塊集合的形式來描述數(shù)字系統(tǒng)?!澳K”(module)是Verilog程序的基本設(shè)計單元,用于描述某個設(shè)計的功能、結(jié)構(gòu)、與其他模塊通信的外部端口。
先通過三個簡單的Verilog程序,直觀地認識Verilog模塊的結(jié)構(gòu)。補充:第一節(jié)VerilogHDL基礎(chǔ)知識一.Ve例1:根據(jù)電路結(jié)構(gòu)建模&&moduleMUX2-1(out,a,b,sel);outputout;Inputa,b,sel;wirea,b,sel,out;wirea1,b1,sel-;notu1(sel-,sel);andu2(a1,a,sel-);andu3(b1,b,sel);oru4(out,a1,b1);endmodule//模塊名、端口列表//聲明out為輸出端口//聲明a,b,sel為輸入端口//定義端口信號的數(shù)據(jù)類型//定義內(nèi)部節(jié)點信號(連線)//調(diào)用內(nèi)置“非”門元件//調(diào)用內(nèi)置“與”門元件//調(diào)用內(nèi)置“與”門元件//調(diào)用內(nèi)置“或”門元件例1:&&moduleMUX2-1(out,a,b,例2:根據(jù)邏輯表達式建模moduleMUX2-1(out,a,b,sel);outputout;Inputa,b,sel;wirea,b,sel,out;endmoduleassignout=((~sel)&a)|(sel&b);定義同上采用邏輯表達式進行邏輯功能的描述&&例2:根據(jù)邏輯表達式建模moduleMUX2-1(out,例3:根據(jù)電路行為建模moduleMUX2-1(out,a,b,sel);outputout;Inputa,b,sel;wirea,b,sel;regout;endmodulealways@(seloraorb)if(!sel)out=a;elseout=b;定義always中的賦值變量
只要信號sel、a、b中有一個發(fā)生變化,就執(zhí)行下面的語句。在這里已看不出電路的結(jié)構(gòu),而是一種電路行為的描述。&&例3:根據(jù)電路行為建模moduleMUX2-1(out,aVerilog模塊基本結(jié)構(gòu)module模塊名(端口列表);端口定義input輸入端口output輸出端口……數(shù)據(jù)類型說明wireregparameter……邏輯功能定義assignalways語言內(nèi)置門元件調(diào)用…endmoduleVerilog模塊基本結(jié)構(gòu)module模塊名(端口1.模塊聲明Verilog模塊結(jié)構(gòu)完全包含在module和endmodule關(guān)鍵字之間。模塊聲明的格式:module模塊名(端口1,端口2、….);……endmodule1.模塊聲明Verilog模塊結(jié)構(gòu)完全包含module(模塊)module能夠表示:物理塊,如IC或ASIC單元邏輯塊,如一個CPU設(shè)計的ALU部分整個系統(tǒng)每一個模塊的描述從關(guān)鍵詞module開始,有一個名稱(如SN74LS74,DFF,ALU等等),由關(guān)鍵詞endmodule結(jié)束。module是層次化設(shè)計的基本構(gòu)件邏輯描述放在module內(nèi)部module(模塊)module能夠表示:module是層次2.端口(Port)定義
端口是模塊與外界或其他模塊進行連接和通信的信號線,對模塊的輸入、輸出端口要進行明確的定義,格式如下:input〈[向量位寬]〉
端口名1,端口名2,……端口名n;output〈[向量位寬]〉
端口名1,端口名2,……端口名n;定義輸入定義輸出2.端口(Port)定義端口是模塊與外界或其模塊端口(moduleports)端口在模塊名字后的括號中列出端口可以說明為input,output及inout端口等價于硬件的引腳(pin)注意模塊的名稱DFF,端口列表及說明模塊通過端口與外部通信模塊端口(moduleports)端口在模塊名字后的括號中3.數(shù)據(jù)類型和信號類型的聲明
每個端口除聲明為輸入、輸出,還要聲明其數(shù)據(jù)類型是連線型(wire)還是寄存器型(reg),若沒有聲明,綜合器默認為是wire型。
模塊中用到的節(jié)點信號(連線)也必須進行數(shù)據(jù)類型的定義。用wire將信號定義為連線型;用reg將信號定義為寄存器型;用parameter定義符號常量。特別提示:輸入不能聲明為reg型!3.數(shù)據(jù)類型和信號類型的聲明每個端口除聲明4.邏輯功能定義
模塊中最核心的部分是邏輯功能定義。下面介紹幾種基本方法。(1)用“assign”持續(xù)賦值語句進行邏輯功能的定義例如:assignF=~((A&B)|(C&D));“assign”語句一般用于組合邏輯的賦值,稱為持續(xù)賦值方式。是一種基于邏輯表達式的邏輯功能描述方式。在前面的例2中,就是采用這種方式建立電路模型。4.邏輯功能定義模塊中最核心的部分是邏輯功(2)
調(diào)用內(nèi)置元件(元件例化)描述電路結(jié)構(gòu)調(diào)用VerilogHDL中提供的動態(tài)元件“畫”電路圖。例如:andmyand3(out,a,b,c);調(diào)用門元件,構(gòu)造一個名為myand3的三輸入與門。andc1(F,in1,in2);調(diào)用門元件,構(gòu)造一個名為c1的二輸入與門。
前面例1中,通過調(diào)用門元件,進行信號的相互連接,構(gòu)造電路的模型。(2)調(diào)用內(nèi)置元件(元件例化)描述電路結(jié)構(gòu)調(diào)用Verilo模塊實例化(moduleinstances)moduleDFF(d,clk,clr,q,qb);....endmodulemoduleREG4(d,clk,clr,q,qb);output[3:0]q,qb;input[3:0]d;inputclk,clr;DFFd0(d[0],clk,clr,q[0],qb[0]);DFFd1(d[1],clk,clr,q[1],qb[1]);DFFd2(d[2],clk,clr,q[2],qb[2]);DFFd3(d[3],clk,clr,q[3],qb[3]);endmodule模塊實例化(moduleinstances)module(3)
用“always”過程塊描述電路的邏輯功能moduleMUX2_1(out,a,b,sel);//Portdeclarationsoutputout;inputa,b,sel;wireout,a,b,sel;wiresel_,a1,b1;//Thenetlistnot(sel_,sel);and(a1,a,sel_);and(b1,b,sel);or(out,a1,b1);endmodule注釋行已定義的Verilog基本單元的實例a,b,sel是輸入端口,out是輸出端口。所有信號通過這些端口從模塊輸入/輸出。另一個模塊可以通過模塊名及端口說明使用多路器。實例化多路器時不需要知道其實現(xiàn)細節(jié)。這正是自上而下設(shè)計方法的一個重要特點。模塊的實現(xiàn)可以是行為級也可以是門級,但并不影響高層次模塊對它的使用。多路器由關(guān)鍵詞module和endmodule開始及結(jié)束。(3)用“always”過程塊描述電路的邏輯功能modu小結(jié)●VerilogHDL程序是由模塊構(gòu)成的●模塊是可以進行層次嵌套的●上層模塊可以通過模塊調(diào)用構(gòu)成更大的邏輯系統(tǒng)●Verilog模塊分為邏輯綜合模塊和邏輯模擬模塊●每個模塊由模塊聲明、端口定義、數(shù)據(jù)類型說明、邏輯功能定義四部分構(gòu)成●VerilogHDL程序的書寫格式自由,一行可寫多個語句,一個語句也可分寫多行。●除endmodule外,每個語句和數(shù)據(jù)定義的最后必須有分號●可用/*…*/和//…進行多行、單行注釋(綠色),增強程序的可讀性小結(jié)二.VerilogHDL中的數(shù)字(數(shù)值)常量VerilogHDL有下列四種基本的邏輯狀態(tài):0:低電平、邏輯0或“假”1:高電平、邏輯1或“真”x或X:不確定或未知的邏輯狀態(tài)z或Z:高阻狀態(tài)VerilogHDL中的常量是有這四類基本值組成的。二.VerilogHDL中的數(shù)字(數(shù)值)常量Verilo
±<size>′<base_format><number>位寬:對應(yīng)二進制數(shù)的寬度,省缺為32位。當(dāng)指定進制格式時,不能省略數(shù)值采用的進制格式b或B:二進制d或D或缺省:十進制h或H:十六進制o或O:八進制基于進制的數(shù)字序列VerilogHDL可綜合模塊中常用的整數(shù)型常量的書寫格式:正、負號±<size>′<base_format例:
659//簡單的十進制表示′h837FF/*省缺位寬的十六進制數(shù),位寬大于實際位數(shù),數(shù)值高位是
0或1,高位補0;數(shù)值高位是x或z,高位補x或z。*/′o7460//省缺位寬的八進制數(shù)4AF//非法的整數(shù)表示,十六進制需要′hb001//非法的整數(shù)表示,不能省略′4′b0010//四位的二進制數(shù)5′D3//五位的十進制數(shù)8′b0100_1010//使用下劃線增加可讀性
±<size>′<base_format><number>例:±<size>′<base_forma三.VerilogHDL中的標(biāo)識符由字母、數(shù)字以及符號“$”、“_”(下劃線)組成。●標(biāo)識符必須以字母或下劃線開頭●標(biāo)識符是區(qū)分大小寫的合法標(biāo)識符舉例:countCOUNT_A1_d2不正確的標(biāo)識符:30countOut*$123標(biāo)識符常用于“模塊名”或“變量名”三.VerilogHDL中的標(biāo)識符由字母、數(shù)字以及符號“四.VerilogHDL中的關(guān)鍵字
關(guān)鍵字也稱為保留字,是VerilogHDL語言內(nèi)部的專用詞,用于組織語言結(jié)構(gòu),全部采用小寫形式(藍色)。例如:module、endmodule、begin、end、always、and、or、if、else、wire、reg、input、output、……
請同學(xué)們在后續(xù)課程學(xué)習(xí)時,關(guān)注、總結(jié)VerilogHDL中的關(guān)鍵字,從現(xiàn)在開始熟悉掌握。請注意:ALWAYS是標(biāo)識符(黑色),與關(guān)鍵字always是不同的。四.VerilogHDL中的關(guān)鍵字關(guān)鍵字五.VerilogHDL中的數(shù)據(jù)(變量)類型
在硬件描述語言中,數(shù)據(jù)類型用來表示數(shù)字電路中的物理連線、數(shù)據(jù)存儲和傳送單元。VerilogHDL中共有19種數(shù)據(jù)類型,分為連線型(NetType)和寄存器型(RegisterType)。在可綜合模塊中,最常用的是這兩類中的wire型、reg型、integer型和parameter型。1.連線型(NetType)變量
連線型變量一般用來描述硬件電路中的各種物理連線。其特點是輸出始終跟隨輸入的變化而變化。對連線型變量有兩種驅(qū)動方式,一種是在結(jié)構(gòu)描述中將其連接到一個邏輯門或模塊的輸出端;另一種是用assign語句進行賦值。五.VerilogHDL中的數(shù)據(jù)(變量)類型類型功能說明wire,tri常用連線類型wor,trior具有線或特性的連線wand,triand具有線與特性的連線tri1,tri0上拉電阻,下拉電阻supply1,supply0電源(邏輯1),地(邏輯0)VerilogHDL提供了多種連線型變量重點介紹在可綜合模塊中最常用的是wire型變量類型功能說明wire,tri常用連線類型wor,triorwire型變量常用來表示通過assign語句賦值的組合邏輯信號。Verilog模塊中的輸入、輸出端口的信號類型說明省缺時,自動定義為wire型。wire型變量可用于任何表達式的輸入assign語句的輸出實例元件的輸出對綜合器而言,其取值0,1,x,z其他模塊的輸出wire型變量常用來表示通過assignwire型變量的定義格式
wire〈[向量位寬]〉數(shù)據(jù)名1,數(shù)據(jù)名2,……數(shù)據(jù)名n;關(guān)鍵字n-1:0或n:1時,定義多位wire型向量;省略時,定義一位的wire型變量。wire型變量的定義格式關(guān)鍵字n-1:0或n:例如,wire型變量或向量的定義:
wirea,b;//定義兩個1位wire型變量a,bwire[7:0]databus;//定義一個8位寬的向量(數(shù)據(jù)總線)
wire[20:1]addrbus;//定義20位寬的地址總線例如,wire型向量的全域使用……wire[7:0]in,out;//定義兩個8位wire型向量in,outassignout=in;//按位對應(yīng)賦值……例如,wire型變量或向量的定義:例如,wire型向量的全域例如,對wire型向量可選域使用……wire[7:0]out;wire[3:0]in;assignout[5:2]=in;//in的0-3位賦值給out的2-5位……等效于:assignout[5]=in[3];assignout[4]=in[2];assignout[3]=in[1];assignout[2]=in[0];例如,對wire型向量可選域使用等效于:assigno2.寄存器型(RegisterType)變量
寄存器型變量對應(yīng)的是具有狀態(tài)保持作用的電路元件。例如:觸發(fā)器,寄存器。
寄存器型變量的特點是必須進行明確的賦值,并且在被重新賦值前一直保持原值。register型變量與net型變量的根本區(qū)別在于:register型變量能夠保持最后一次的賦值;net型變量需要有持續(xù)的驅(qū)動。
在設(shè)計中必須將寄存器型變量放在過程塊語句(initial,always)中,通過過程賦值語句賦值。即:initial,always過程塊內(nèi)被賦值的每一個信號,都必須定義為register型變量。2.寄存器型(RegisterType)變量VerilogHDL中也提供了多種寄存器型變量,在可綜合模塊中常用的是integer型和reg型。
integer寄存器型變量是一種純數(shù)學(xué)的抽象描述,它雖然能定義帶符號的32位整型寄存器變量,但不對應(yīng)任何具體的硬件電路。
reg<[向量位寬]>數(shù)據(jù)名1,數(shù)據(jù)名2,……數(shù)據(jù)名n;reg型變量的定義格式:關(guān)鍵字n-1:0或n:1時,定義多位reg型向量;省略時,定義一位的reg型變量。VerilogHDL中也提供了多種寄存器型例如,reg型變量、向量的定義
rega,b;//定義兩個寄存器型變量a,b。位寬為1。
reg[7:0]data;//定義位寬為8的寄存器型變量data。
reg[8:1]data;//等效。例如,reg型變量、向量的定義例如:……reg[7:0]a,b;reg[3:0]c;regd;……d=a[7]&b[7];//位選擇c=a[7:4]+b[3:0];//域選擇……
在表達式中,可任意使用reg型變量中的一位或相鄰幾位,分別稱為位選擇和域選擇。例如:……在表達式中,可任意使用reg型變量中例:parametersel=8,code=8′ha3;//定義sel為常數(shù)8(十進制),code為常數(shù)a3(十六進制)parameterdata=8,addr=data*2;//data為8,addr為16,用常數(shù)表達式賦值。3.parameter型數(shù)據(jù)
在VerilogHDL中,用parameter定義符號常量,即定義一個標(biāo)識符代表一個常量。定義格式如下:
parameter參數(shù)名1=表達式1,參數(shù)名2=表達式2,……;例:3.parameter型數(shù)據(jù)在Ver六.VerilogHDL中的運算符按功能分成九大類:關(guān)系運算符算術(shù)運算符邏輯運算符等式運算符縮減運算符條件運算符拼接運算符移位運算符位運算符按運算符所帶的操作數(shù)區(qū)分:單目運算符(unaryoperator),帶一個操作數(shù)。雙目運算符(binaryoperator),帶兩個操作數(shù)。三目運算符(ternaryoperator),帶三個操作數(shù)。六.VerilogHDL中的運算符按功能分成九大類:關(guān)系運算術(shù)運算符+加-減*乘/除%模運算符(對兩個整型數(shù)據(jù)進行求余運算)均為雙目運算符。在進行整數(shù)除法運算時,結(jié)果略去小數(shù)。取模運算時,結(jié)果符號與第一操作數(shù)相同。當(dāng)兩操作數(shù)中有一個為x,則結(jié)果就為x。10%3,結(jié)果為1;12%4,結(jié)果為0;-10%3,結(jié)果為-1;11%-3,結(jié)果為2算術(shù)運算符+加均為雙邏輯運算符&&邏輯與,雙目運算‖邏輯或,雙目運算!邏輯非,單目運算當(dāng)進行邏輯運算時:●若操作數(shù)是一位的,則邏輯運算真值表如下:aba&&ba||b!a!b00001010100010111100邏輯運算符&&邏輯與,雙目運算當(dāng)進行邏●當(dāng)操作數(shù)由多位組成,則將操作數(shù)作為一個整體處理,即如操作數(shù)所有位都是“0”,則整體作為邏輯“0”;只要其中有一位是“1”,則整體作為邏輯“1”。●若操作數(shù)中有x,則結(jié)果也可能是x。例如:設(shè)a=2b=0c=4′hxa&&b邏輯與,1&&0,結(jié)果為0a‖b邏輯或,1‖0,結(jié)果為1!a邏輯非,!1,結(jié)果為0a&&c邏輯與,1&&x,結(jié)果為xa‖c邏輯或,1‖x,結(jié)果為1!c邏輯非,!X,結(jié)果為x●當(dāng)操作數(shù)由多位組成,則將操作數(shù)作為一個整體處理,即如操作位運算符~按位非(按位取反),單目運算。&按位與︱按位或^按位異或^~,~^按位異或非(按位同或)●將操作數(shù)按位對應(yīng),進行邏輯運算。●兩個不同長度的數(shù)據(jù)進行位運算時,按右對齊,位數(shù)少的在高位補“0”。●注意x對運算結(jié)果的影響位運算符~按位位運算符應(yīng)用舉例:若A=5′B11001,B=5′b101x1,則
~A=5′b00110A&B=5′b10001A︱B=5′b111x1A^B=5′b011x0位運算符應(yīng)用舉例:關(guān)系運算符<小于<=小于或等于>大于>=大于或等于
比較兩個操作數(shù)的大小關(guān)系,如果比較關(guān)系成立,則返回邏輯“1”;否則,返回邏輯“0”。如果兩個操作數(shù)中有一個為x,則返回值是x。例:A=2,B=5,D=4′hx則:A<B返回邏輯“1”A>B返回邏輯“0”B<=D返回值是x關(guān)系運算符<小于等式運算符==等于!=不等于===全等!==不全等
雙目運算,運算的結(jié)果是1位的邏輯值。兩個操作數(shù)逐位相等,返回邏輯1;否則,返回邏輯0。若任何一個操作數(shù)中某位是x或z,則返回x。對操作數(shù)中的x和z也進行比較,逐位一致,返回邏輯1;否則,返回邏輯0。例:a=5′b11x01,c=5′b11x01,則
a==c得到的結(jié)果是xa===c得到的結(jié)果是1等式運算符==等于歸約運算符又稱為“縮減運算符”,是單目運算符。&歸約與~&歸約與非︱歸約或~︱歸約或非^歸約異或~^,^~歸約異或非(歸約同或)對單個操作數(shù)進行歸約的遞推運算,運算結(jié)果是1位二進制數(shù)。過程:先將操作數(shù)的第1位與第2位進行歸約運算,運算結(jié)果再與第3位進行歸約運算,依此類推,直到最后一位。歸約運算符又稱為“縮減運算符”,是單目運算符。&…reg[3:0]a;b=&a;//等效于b=((a[0]&a[1])&a[2])&a[3])…歸約運算符舉例若A=5′b11001則
&A歸約運算結(jié)果是0,只有各位均為1,結(jié)果才為1。
︱A歸約運算結(jié)果是1,只有各位均為0,結(jié)果才為0^A歸約運算結(jié)果是1,奇數(shù)個1,結(jié)果為1?!瓪w約運算符舉例若A=5′b11001移位運算符>>邏輯右移<<邏輯左移
雙目運算,將運算符左邊的操作數(shù)左移或右移運算符右邊的操作數(shù)指定的位數(shù),空位補0。即:A>>n或A<<n。例如:A=6′b110010則A>>2的結(jié)果是6′b001100A<<2的結(jié)果是6′b001000移位運算符>>邏輯右移條件運算符
?:三目運算符應(yīng)用方式
signal=condition
?
true-expression:false-expression;信號=條件?表達式1:
表達式2;當(dāng)條件成立時,信號取表達式1的值,反之取表達式2的值。條件運算符條件運算符舉例
moduleadd_subtract(a,b,op,result);parameterADD=1′b0;//定義字符常量
input [3:0]a,b;//定義a,b為4位輸入向量
input op;//定義op為1位輸入變量
output[3:0]result;//定義result為4位輸出向量
assignresult=(op==ADD)?a+b:a-b;endmodule當(dāng)op為0,做a+b當(dāng)op為1,做a-b條件運算符舉例當(dāng)op為0,做a+b拼接運算符{}
將兩個或多個信號的某些位拼接起來。用法如下:{信號1的某幾位,信號2的某幾位,……信號n的某幾位}示例:a=1′b1b=2′b00c=6′b101001則:{a,b}產(chǎn)生一個3位數(shù)3′b100{c[5:3],a}產(chǎn)生一個4位數(shù)4′b1011嵌套使用,進行常量或變量的復(fù)制以及簡化書寫。例如:{3{a,b}}等同于{{a,b},{a,b},{a,b}}
也等同于{a,b,a,b,a,b}拼接運算符{}將兩個七.運算符的優(yōu)先級運算符優(yōu)先級!~高低*/%+–<<>><<=>>===!====!==&~&^^~|~|&&||?:
不同的綜合開發(fā)工具在執(zhí)行這些優(yōu)先級時會有微小的差異,建議養(yǎng)成用括號控制優(yōu)先級的習(xí)慣。七.運算符的優(yōu)先級運算符優(yōu)先級!~高*/%+–<<第二節(jié)VerilogHDL的行為描述模塊一.行為描述
邏輯電路的結(jié)構(gòu)描述側(cè)重于表示一個電路由哪些基本元件組成,以及這些基本元件的相互連接關(guān)系。
邏輯電路的數(shù)據(jù)流描述側(cè)重于邏輯表達式以及VerilogHDL中運算符的靈活運用。
行為描述關(guān)注邏輯電路輸入、輸出的因果關(guān)系(行為特性),即在何種輸入條件下,產(chǎn)生何種輸出(操作),并不關(guān)心電路的內(nèi)部結(jié)構(gòu)。EDA的綜合工具能自動將行為描述轉(zhuǎn)換成電路結(jié)構(gòu),形成網(wǎng)表文件。
顯然,當(dāng)電路的規(guī)模較大或時序關(guān)系較復(fù)雜時,通常采用行為描述方式進行設(shè)計。第二節(jié)VerilogHDL的行為描述模塊一.行為描述二.VerilogHDL行為描述模塊的設(shè)計模型Verilog行為描述模塊基本結(jié)構(gòu)module模塊名(端口列表);端口定義input輸入端口output輸出端口數(shù)據(jù)類型說明
regparameter邏輯功能定義always@(敏感事件列表)begin阻塞、非阻塞、if-else、case、for等行為語句endendmodule二.VerilogHDL行為描述模塊的設(shè)計模型Veril三.行為描述中的always進程應(yīng)用模板always@(<敏感信號表達式>)begin//過程賦值語句
//if-else,case,casex,casez選擇語句
//for循環(huán)語句
end
一般情況下,always進程帶有觸發(fā)條件,這些觸發(fā)條件列在敏感信號表達式中,只有當(dāng)觸發(fā)條件滿足時,begin-end塊語句才被執(zhí)行。
在一個VerilogHDL模塊中可以有多個always進程,它們是并發(fā)執(zhí)行的。三.行為描述中的always進程應(yīng)用模板always@
敏感信號表達式
又稱敏感事件列表。當(dāng)該表達式中任意一個信號(變量)的值改變時,就會引發(fā)塊內(nèi)語句的執(zhí)行。因此,應(yīng)將所有影響塊內(nèi)取值的信號(變量)列入。多個敏感信號用“or”或“,”連接。例如:@(a)//當(dāng)信號a的值發(fā)生改變時@(a,b)//當(dāng)信號a或信號b的值發(fā)生改變時
這里a和b稱為電平敏感型信號,代表的觸發(fā)事件是,信號除了保持穩(wěn)定狀態(tài)以外的任意一種變化過程。
這種電平敏感型信號列表常用在組合邏輯的描述中,以體現(xiàn)輸入隨時影響輸出的組合邏輯特性。敏感信號表達式又稱敏感事件列表。當(dāng)該表達式
再例如:@(posedgeclock)//當(dāng)clock的上升沿到來時@(negedgeclock)//當(dāng)clock的下降沿到來時@(posedgeclockornegedgereset)//當(dāng)clock的上升沿到來或當(dāng)reset的下降沿到來時
這里的clock和reset信號稱為邊沿敏感型信號,posedge描述對信號的上升沿敏感;negedge描述對信號的下降沿敏感。顯然,這種邊沿敏感型信號列表適合描述同步時序電路,以體現(xiàn)同步時序電路的特點——在統(tǒng)一時鐘作用下改變電路的狀態(tài)。再例如:這里的clock和reset信號稱
posedge——代表的觸發(fā)事件是,信號發(fā)生了正跳變。
0→x,0→z,0→1,x→1,z→1negedge——代表的觸發(fā)事件是,信號發(fā)生了負跳變。
1→x,1→z,1→0,x→0,z→0
在每一個always過程語句中,最好只使用一種類型的敏感信號列表,不要混合使用。以避免使用不同的綜合工具時發(fā)生錯誤。posedge——代表的觸發(fā)事件是,信號發(fā)生了正跳變四.串行塊
由關(guān)鍵字begin-end界定的一組語句。串行塊的特點:●一般情況下,塊內(nèi)語句順序執(zhí)行,前面一條語句執(zhí)行畢后,才開始執(zhí)行下一條語句。●模塊運行時,遇到串行塊,塊內(nèi)第一條語句即開始執(zhí)行,最后一條執(zhí)行完畢,串行塊結(jié)束?!裾麄€串行塊執(zhí)行時間等于塊內(nèi)各條語句執(zhí)行時間的總和。begin
語句1
語句2……end四.串行塊由關(guān)鍵字begin-end界定的一moduleff_1(A,B,C,D,F);inputA,B,C,D;outputF;wirew1,w2;
assignw1=A&B;assignw2=~(C&D);assignF=w1|w2;endmodulemoduleff_1(A,B,C,D,F);inputA,B,C,D;outputF;regF,w1,w2;always@(AorBorCorD)
begin
w1=A&B;w2=~(C&D);F=w1|w2;endendmodule行為描述串行塊只應(yīng)用在always進程中:多條語句;順序執(zhí)行。moduleff_1(A,B,C,D,F);module
過程賦值語句必須放在always進程中,分為阻塞型和非阻塞型,其基本格式為:
〈被賦值變量〉〈賦值操作符〉〈賦值表達式〉●reg或integer類型變量;●寄存器向量的某一位或某幾位;●用拼接符{}拼接起來的寄存器。=阻塞賦值操作符<=非阻塞賦值操作符任意合法表達式五.過程賦值語句過程賦值語句必須放在always進程中,分為//過程賦值語句的目標(biāo)變量形式……rega;reg[7:0]b;integeri;always@(敏感事件列表)begin
a=0;i=356;b[2]=1′b1;b[3:0]=4′b1111;{a,b}=9′b101110110;end……//過程賦值語句的目標(biāo)變量形式過程賦值語句阻塞型過程賦值非阻塞型過程賦值操作符“=”在前面討論中,用到的賦值語句都是阻塞型過程賦值語句●串行塊(begin-end)內(nèi)各條阻塞型過程賦值語句按順序依次執(zhí)行。下一條語句的執(zhí)行被阻塞,等本條語句的賦值操作完成后,才開始執(zhí)行。●阻塞型過程賦值語句的執(zhí)行過程:先計算“賦值表達式”的值,然后立即賦值給“=”左邊的“被賦值變量”。過程賦值語句阻塞型過程賦值非阻塞型過程賦值操作符“=”在前面過程賦值語句非阻塞型過程賦值阻塞型過程賦值操作符“<=”特點:●在begin-eng串行塊語句中,各條非阻塞過程賦值語句對應(yīng)的“賦值表達式”同時開始計算。●在過程塊結(jié)束時,才將結(jié)果賦值給各個“被賦值變量”?!窨衫斫鉃橄韧瑫r采樣,最后一起賦值。過程賦值語句非阻塞型過程賦值阻塞型過程賦值操作符特點:……beginA<=B;//S1B<=A;//S2end……這里,S1、S2語句均為非阻塞賦值,立即開始計算B和A值(上次的值)。在過程塊結(jié)束時,進行賦值操作,將計算得到的B,A的值賦給變量A,B。(實現(xiàn)A,B交換)
如果不能很好地理解阻塞賦值與非阻塞賦值的區(qū)別,往往給設(shè)計帶來麻煩,特別是在可綜合邏輯模塊中,不易把握reg型變量的賦值過程。建議同學(xué)在編寫模塊時,只采用一種過程賦值方式,并且最好不要將輸出再次作為輸入使用?!@里,S1、S2語句均為非阻塞賦值,立即開始計算B和
為了更好地理解阻塞賦值與非阻塞賦值的區(qū)別,我們觀察下面的示例。//例1:非阻塞賦值modulen_block(c,b,a,clk);outputc,b;inputclk,a;regb,c;always@(posedgeclk)beginb<=a;c<=b;endendmodule//例2:阻塞賦值moduleblock(c,b,a,clk);outputc,b;inputclk,a;regb,c;always@(posedgeclk)beginb=a;c=b;endendmodule結(jié)果:b更新為a的值,c為上個時鐘周期b的值。結(jié)果:b、c都更新為a的值。為了更好地理解阻塞賦值與非阻塞賦值的區(qū)別,我們這兩個程序進行邏輯綜合后的結(jié)果如下:>DQ>DQclkabc>DQclkacb例1非阻塞賦值綜合結(jié)果例2阻塞賦值綜合結(jié)果這兩個程序進行邏輯綜合后的結(jié)果如下:>>clkabc>clk
阻塞賦值與非阻塞賦值是學(xué)習(xí)VerilogHDL的難點之一,應(yīng)仔細體會。阻塞賦值與非阻塞賦值是學(xué)習(xí)Verilog高級程序語句if-else條件分支語句case分支控制語句(1)if-else條件分支語句格式1if(<條件表達式>)語句或語句塊;格式2if(<條件表達式>)語句或語句塊1;
else語句或語句塊2;格式3if(<條件表達式1>)語句或語句塊1;
elseif(<條件表達式2>)語句或語句塊2;
……elseif(<條件表達式n>)語句或語句塊n;
else語句或語句塊n+1;兩路分支選擇控制多路分支選擇控制六.條件語句高級程序語句if-else條件分支語句(1)if-e
三種格式中的<條件表達式>,一般為邏輯表達式或關(guān)系表達式,也可以是一位的變量。系統(tǒng)對<條件表達式>的值進行判斷,若為0、x、z,按“假”處理;若為1,按“真”處理,執(zhí)行指定語句。語句可以是單句,也可以是多句,多句時用begin-end括起來。
為了清晰表達if和else的匹配關(guān)系,建議最好用begin-end將“指定語句”括起來。三種格式中的<條件表達式>,一般為邏輯表達式//if-else條件分支語句應(yīng)用舉例
modulesel-from-three(q,sela,selb,a,b,c);inputsela,selb,a,b,c;outputq;regq;always@(selaorselboraorborc)beginif(sela)q=a;
溫馨提示
- 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國互聯(lián)網(wǎng)+掃地機器人行業(yè)全景評估及投資規(guī)劃建議報告
- 2025年中國農(nóng)業(yè)保險行業(yè)市場調(diào)查研究及投資潛力預(yù)測報告
- 2025年中國雙嘧達莫片行業(yè)市場深度評估及投資戰(zhàn)略規(guī)劃報告
- 2025年中國榨油機行業(yè)市場全景分析及投資前景展望報告
- 房屋買賣條件協(xié)議書(2篇)
- 2019-2025年中國草鞋行業(yè)競爭格局分析及投資戰(zhàn)略咨詢報告
- 2024-2025年中國電力網(wǎng)絡(luò)攝像頭行業(yè)市場全景評估及發(fā)展趨勢研究預(yù)測報告
- 2025年軸軌項目可行性研究報告-20250102-163447
- 2025年金屬框木牌項目投資可行性研究分析報告
- 2025年污水處理用鐵粉項目投資可行性研究分析報告
- 開展課外讀物負面清單管理的具體實施舉措方案
- 2025年云南中煙工業(yè)限責(zé)任公司招聘420人高頻重點提升(共500題)附帶答案詳解
- 《AM聚丙烯酰胺》課件
- 系統(tǒng)動力學(xué)課件與案例分析
- 《智能網(wǎng)聯(lián)汽車智能傳感器測試與裝調(diào)》電子教案
- 客戶分級管理(標(biāo)準(zhǔn)版)課件
- 2023年江蘇省南京市中考化學(xué)真題
- 供電副所長述職報告
- 校園欺凌問題成因及對策分析研究論文
- 技術(shù)支持資料投標(biāo)書
- 老年人意外事件與與預(yù)防
評論
0/150
提交評論