版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章
組合電路的自動(dòng)化設(shè)計(jì)與分析
第5章組合電路的自動(dòng)化設(shè)計(jì)與分析2主要參考書目
1.
EDA技術(shù)實(shí)用教程(第4版)VerilogHDL,潘明,清華大學(xué)
2.FPGA系統(tǒng)設(shè)計(jì)與實(shí)踐黃智偉等電子工業(yè)出版社2主要參考書目5.1手工數(shù)字技術(shù)存在的問題設(shè)計(jì)方法的選擇使用EDA工具設(shè)計(jì)集成電路5.1手工數(shù)字技術(shù)存在的問題設(shè)計(jì)方法的選擇使用EDA工手工數(shù)字技術(shù)存在的問題一.傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)技術(shù)基于SSI、MSI、LSI、VLSI集成電路的設(shè)計(jì)。系統(tǒng)方案器件選擇畫電路圖布線制版系統(tǒng)調(diào)試定型生產(chǎn)修改純硬件邏輯設(shè)計(jì)(試湊法)手工數(shù)字技術(shù)存在的問題一.傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)技術(shù)基于SSI組合電路的自動(dòng)化設(shè)計(jì)與分析手工數(shù)字技術(shù)存在的問題1.低速。2.設(shè)計(jì)規(guī)模小。3.分析技術(shù)無法適應(yīng)需要。4.設(shè)計(jì)效率低成本高。5.可靠性低。6.體積大功耗大。7.功能有限。8.無法實(shí)現(xiàn)功能升級(jí)。9.知識(shí)產(chǎn)權(quán)不易保護(hù)。
問題◆
現(xiàn)代的設(shè)計(jì)方法:硬件設(shè)計(jì)+軟件設(shè)計(jì)從上至下的設(shè)計(jì)方法出現(xiàn)HardwareDescriptionLanguage,HDL手工數(shù)字技術(shù)存在的問題1.低速。問題◆現(xiàn)代的設(shè)計(jì)二.現(xiàn)代的數(shù)字系統(tǒng)設(shè)計(jì)技術(shù)基于EDA技術(shù)及大規(guī)模可編程邏輯器件的系統(tǒng)設(shè)計(jì)。工程師利用EDA工具完成的數(shù)字系統(tǒng)設(shè)計(jì),最終要下載到PLD內(nèi)部完成布局布線才能實(shí)現(xiàn)真正的功能。大規(guī)??删幊踢壿嬈骷≒LD——ProgrammableLogicDevice)的出現(xiàn),引起了數(shù)字系統(tǒng)設(shè)計(jì)領(lǐng)域的革命性變革。PLD已成為現(xiàn)代數(shù)字系統(tǒng)的物理載體,設(shè)計(jì)師在實(shí)驗(yàn)室就可以設(shè)計(jì)出芯片系統(tǒng),并立即投入實(shí)際應(yīng)用。1.PLD已成為現(xiàn)代數(shù)字系統(tǒng)的物理載體二.現(xiàn)代的數(shù)字系統(tǒng)設(shè)計(jì)技術(shù)基于EDA技術(shù)及大規(guī)??删幊踢壿嬈?/p>
PLD是廠家作為一種通用性器件生產(chǎn)的半定制電路。其特點(diǎn)是:(1)用戶通過對(duì)器件的編程實(shí)現(xiàn)所需要的邏輯功能;(2)PLD是一種用戶可配置的邏輯器件;(3)成本低、使用靈活、設(shè)計(jì)周期短、可靠性高、風(fēng)險(xiǎn)小。現(xiàn)場(chǎng)可編程門陣列PLD是廠家作為一種通用性器件生產(chǎn)的半定制電2.
EDA技術(shù)日趨完善現(xiàn)代EDA技術(shù)的主要特征是:●引入硬件描述語言;●支持高層次的抽象設(shè)計(jì);●具有邏輯綜合、行為綜合、系統(tǒng)綜合能力。EDA技術(shù):
EDA—ElectronicDesignAutomation是電子設(shè)計(jì)自動(dòng)化的英文縮寫。它以功能強(qiáng)大的計(jì)算機(jī)為工具,在EDA工具軟件平臺(tái)上,根據(jù)設(shè)計(jì)者描述的源文件(原理圖、硬件描述語言、波形圖等),自動(dòng)完成編譯、仿真、優(yōu)化、綜合、適配(布局布線)以及下載,實(shí)現(xiàn)既定的電子線路系統(tǒng)功能。設(shè)計(jì)者的主要任務(wù):完成系統(tǒng)硬件功能的描述。2.EDA技術(shù)日趨完善現(xiàn)代EDA技術(shù)的主要特征是:EDA10典型的EDA工具通常包括:設(shè)計(jì)輸入、仿真、綜合、適配和下載。
綜合工具的功能是將設(shè)計(jì)者在EDA平臺(tái)上完成的某系統(tǒng)的設(shè)計(jì)文件由較高層次的描述轉(zhuǎn)換到較低層次描述的過程。綜合工具是軟件描述和硬件實(shí)現(xiàn)的一座橋梁。
適配工具的功能是將綜合器產(chǎn)生的網(wǎng)表文件安排在指定的器件中,產(chǎn)生最終的下載文件。
10典型的EDA工具通常包括:綜合工具的功能是將設(shè)計(jì)者在ED11設(shè)計(jì)文件
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è)計(jì)文件仿真綜合適配EDA軟件下
總之,PLD器件的出現(xiàn)和EDA技術(shù)發(fā)展,使數(shù)字系統(tǒng)設(shè)計(jì)的設(shè)計(jì)方法和設(shè)計(jì)技術(shù)都發(fā)生了深刻的變化,稱之為基于EDA和PLD的現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)方法。設(shè)計(jì)者通過設(shè)計(jì)芯片來實(shí)現(xiàn)各種不同的數(shù)字系統(tǒng)功能,即設(shè)計(jì)者可以自己定義器件的內(nèi)部邏輯和管腳。增加了設(shè)計(jì)的自由度,提高了設(shè)計(jì)效率,減少芯片的種類和數(shù)量,縮小體積,降低功耗,節(jié)約成本,提高可靠性。總之,PLD器件的出現(xiàn)和EDA技術(shù)發(fā)展,使數(shù)設(shè)計(jì)方法的改變:采用硬件描述語言建模設(shè)計(jì)方法的改變:采用硬件描述語言建模
硬件描述語言HDL(HardwareDescriptionLanguage)是用于設(shè)計(jì)硬件電子系統(tǒng)的計(jì)算機(jī)語言,它描述系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接方式,是EDA技術(shù)應(yīng)用中最主要的設(shè)計(jì)輸入方法之一。
設(shè)計(jì)者利用這種語言可以從上層到下層(從抽象到具體),逐層描述自己的設(shè)計(jì)思想,用一系列分層次的模塊來表示極其復(fù)雜的數(shù)字系統(tǒng)。借助EDA仿真工具逐層進(jìn)行仿真驗(yàn)證。
通過EDA綜合工具將需要物理實(shí)現(xiàn)的模塊組合轉(zhuǎn)換成門級(jí)電路網(wǎng)表。
利用芯片廠家提供自動(dò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年,由一個(gè)民間公司的私有財(cái)產(chǎn)轉(zhuǎn)化而來的VerilogHLD也正式成為IEEE國際標(biāo)準(zhǔn)。
本課程主要介紹如何用VerilogHDL描述基本的組合邏輯電路和基本的同步時(shí)序邏輯電路,為今后進(jìn)行數(shù)字系統(tǒng)設(shè)計(jì)打基礎(chǔ)?!镉布枋稣Z言HDL概述IEEE標(biāo)準(zhǔn)19問題的提出設(shè)計(jì)一個(gè)數(shù)字鐘,使之完成以下功能:實(shí)現(xiàn)時(shí)、分、秒的計(jì)時(shí);時(shí)可采取12小時(shí)計(jì)時(shí)也可采取24小時(shí)計(jì)時(shí);具有異步清零和啟動(dòng)/停止功能;并可調(diào)整時(shí)間。用數(shù)碼管顯示時(shí)分秒;具有整點(diǎn)報(bào)時(shí)功能;可繼續(xù)設(shè)計(jì)日、星期、月、年等其他萬年歷功能。可設(shè)計(jì)秒表功能,鬧鐘功能。5.2數(shù)字技術(shù)自動(dòng)設(shè)計(jì)與分析流程
問題的提出設(shè)計(jì)一個(gè)數(shù)字鐘,使之完成以下功能:5.2數(shù)字技術(shù)解決方案1——傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)方法1.根據(jù)設(shè)計(jì)要求劃分功能模塊;2.確定輸入和輸出的關(guān)系,畫出真值表,寫出邏輯表達(dá)式;4.利用公式或卡諾圖進(jìn)行人工化簡(jiǎn);5.根據(jù)化簡(jiǎn)后的邏輯表達(dá)式畫出電路原理圖;6.在面包板上進(jìn)行實(shí)驗(yàn),驗(yàn)證電路的正確性;7.若無錯(cuò)誤,再在透明薄膜上用貼圖符號(hào)貼PCB圖;8.檢查后送制板廠制板;9.對(duì)PCB板進(jìn)行安裝、調(diào)試,若有大的錯(cuò)誤,修改設(shè)計(jì),重復(fù)以上過程,重新制板。搭積木的方式!基于電路板的設(shè)計(jì)方法——采用固定功能的器件(通用型器件),通過設(shè)計(jì)電路板來實(shí)現(xiàn)系統(tǒng)功能解決方案1——傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)方法1.根據(jù)設(shè)計(jì)要求劃分功傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)方法特點(diǎn)采用自下而上(BottomUp)的設(shè)計(jì)方法采用通用型邏輯器件搭積木式的方式在系統(tǒng)硬件設(shè)計(jì)的后期進(jìn)行仿真和調(diào)試主要設(shè)計(jì)文件是電路原理圖
傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)方法特點(diǎn)采用自下而上(BottomUp)傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)方法的缺點(diǎn)效率低下——所有這一切,幾乎都是手工完成!設(shè)計(jì)周期很長;容易出錯(cuò);芯片種類多,數(shù)量大,受市場(chǎng)的限制;設(shè)計(jì)靈活性差;產(chǎn)品體積大。傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)方法的缺點(diǎn)效率低下——所有這一切,幾乎都是解決方案2——現(xiàn)代的數(shù)字系統(tǒng)設(shè)計(jì)方法首先在計(jì)算機(jī)上安裝EDA軟件,它們能幫助設(shè)計(jì)者自動(dòng)完成幾乎所有的設(shè)計(jì)過程;再選擇合適的PLD芯片,可以在一片芯片中實(shí)現(xiàn)整個(gè)數(shù)字系統(tǒng)?;谛酒脑O(shè)計(jì)方法——采用PLD(可編程邏輯器件),利用EDA開發(fā)工具,通過芯片設(shè)計(jì)來實(shí)現(xiàn)系統(tǒng)功能。EDA軟件空白PLD+數(shù)字系統(tǒng)編程解決方案2——現(xiàn)代的數(shù)字系統(tǒng)設(shè)計(jì)方法首先在計(jì)算機(jī)上安裝EDA現(xiàn)代的數(shù)字系統(tǒng)設(shè)計(jì)方法(續(xù)1)1.根據(jù)設(shè)計(jì)要求劃分功能模塊2.PLD開發(fā)(利用EDA工具)(1)設(shè)計(jì)輸入:采用原理圖或硬件描述語言(HDL),描述出輸入和輸出的邏輯關(guān)系,將整個(gè)原理圖或程序輸入到計(jì)算機(jī)中;(2)設(shè)計(jì)的編譯:EDA工具可自動(dòng)進(jìn)行邏輯綜合,將功能描述轉(zhuǎn)換為門級(jí)描述,或轉(zhuǎn)換成具體PLD的網(wǎng)表文件,將網(wǎng)表文件自動(dòng)適配到具體芯片中進(jìn)行布局布線;(3)功能仿真和時(shí)序仿真;(4)編程下載到實(shí)際芯片中,在實(shí)驗(yàn)臺(tái)上進(jìn)行驗(yàn)證;(5)在每一階段若有問題,可在計(jì)算機(jī)上直接修改設(shè)計(jì),重復(fù)以上過程?,F(xiàn)代的數(shù)字系統(tǒng)設(shè)計(jì)方法(續(xù)1)1.根據(jù)設(shè)計(jì)要求劃分功能模塊
數(shù)字技術(shù)自動(dòng)設(shè)計(jì)與分析流程
數(shù)字技術(shù)自動(dòng)設(shè)計(jì)與分析流程
邏輯綜合邏輯綜合現(xiàn)代的數(shù)字系統(tǒng)設(shè)計(jì)方法(續(xù)2)3.設(shè)計(jì)包含PLD芯片的電路板(1)在計(jì)算機(jī)上利用EDA軟件畫電路原理圖;(2)進(jìn)行電氣規(guī)則檢查無誤后,自動(dòng)生成網(wǎng)表文件;(3)利用EDA軟件畫PCB圖,自動(dòng)布線;(4)自動(dòng)進(jìn)行設(shè)計(jì)規(guī)則檢查,無誤后輸出文件,制板。
優(yōu)點(diǎn):效率高——所有這一切,幾乎都是借助計(jì)算機(jī)利用EDA軟件自動(dòng)完成!容易檢查錯(cuò)誤,便于修改;設(shè)計(jì)周期短、成功率很高;產(chǎn)品體積小?,F(xiàn)代的數(shù)字系統(tǒng)設(shè)計(jì)方法(續(xù)2)3.設(shè)計(jì)包含PLD芯片的電路現(xiàn)代的數(shù)字系統(tǒng)設(shè)計(jì)方法通常采用自上而下(TopDown)的設(shè)計(jì)方法采用可編程邏輯器件在系統(tǒng)硬件設(shè)計(jì)的早期進(jìn)行仿真主要設(shè)計(jì)文件是用硬件描述語言編寫的源程序降低了硬件電路設(shè)計(jì)難度特點(diǎn)自行定義器件內(nèi)部的邏輯和引腳寫出真值表或狀態(tài)表→EDA開發(fā)工具自動(dòng)進(jìn)行邏輯綜合→模擬仿真→編程下載到PLD中基于芯片——采用PLD,利用EDA開發(fā)工具,通過芯片設(shè)計(jì)來實(shí)現(xiàn)系統(tǒng)功能?,F(xiàn)代的數(shù)字系統(tǒng)設(shè)計(jì)方法通常采用自上而下(TopDown)的什么是EDA技術(shù)?EDA(ElectronicDesignAutomation,電子設(shè)計(jì)自動(dòng)化)是在計(jì)算機(jī)的輔助下完成電子產(chǎn)品設(shè)計(jì)的一種先進(jìn)的硬件設(shè)計(jì)技術(shù)!是立足于計(jì)算機(jī)工作平臺(tái)開發(fā)出來的一整套先進(jìn)的設(shè)計(jì)電子系統(tǒng)的軟件工具。計(jì)算機(jī)并口器件編程接口PCBBoardPLD編程目標(biāo)文件什么是EDA技術(shù)?EDA(ElectronicDesignEDA技術(shù)的范疇IC版圖設(shè)計(jì)PLD設(shè)計(jì)電路設(shè)計(jì)PCB設(shè)計(jì)模擬電路數(shù)字電路混合電路設(shè)計(jì)輸入邏輯綜合仿真編程下載本課程內(nèi)容!EDA技術(shù)的范疇IC版圖設(shè)計(jì)PLD設(shè)計(jì)電路設(shè)計(jì)PCB設(shè)傳統(tǒng)設(shè)計(jì)方法vsEDA設(shè)計(jì)方法
傳統(tǒng)設(shè)計(jì)方法EDA設(shè)計(jì)方法自底向上手動(dòng)設(shè)計(jì)軟硬件分離原理圖設(shè)計(jì)方式系統(tǒng)功能固定不易仿真難測(cè)試修改模塊難移植共享設(shè)計(jì)周期長自頂向上自動(dòng)設(shè)計(jì)打破軟硬件屏障原理圖、HDL等設(shè)計(jì)方式系統(tǒng)功能易改易仿真易測(cè)試修改模塊可移植共享設(shè)計(jì)周期短傳統(tǒng)設(shè)計(jì)方法vsEDA設(shè)計(jì)方法傳統(tǒng)設(shè)計(jì)方法EDA設(shè)計(jì)29本課程要學(xué)習(xí)的PLD設(shè)計(jì)EDA工具軟件
QuartusⅡ美國Altera公司自行設(shè)計(jì)的第四代PLD開發(fā)軟件可以完成PLD的設(shè)計(jì)輸入、邏輯綜合、布局與布線、仿真、時(shí)序分析、器件編程的全過程同時(shí)還支持SOPC(可編程片上系統(tǒng))設(shè)計(jì)開發(fā)5.3原理圖輸入法邏輯電路設(shè)計(jì)5.3.1QuartusII軟件簡(jiǎn)介
29本課程要學(xué)習(xí)的PLD設(shè)計(jì)EDA工具軟件QuartusQuartusⅡ簡(jiǎn)介
QuartusⅡ提供了方便的設(shè)計(jì)輸入方式、快速的編譯和直接易懂的器件編程。能夠支持邏輯門數(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)的核心,提供功能強(qiáng)大的設(shè)計(jì)處理,設(shè)計(jì)者可以添加特定的約束條件來提高芯片的利用率。QuartusⅡ簡(jiǎn)介QuartusⅡ提供了方便的設(shè)QuartusⅡ主界面QuartusⅡ主界面QuartusⅡ主界面的一個(gè)實(shí)例QuartusⅡ主界面的一個(gè)實(shí)例原理圖輸入法邏輯電路設(shè)計(jì)原理圖輸入法邏輯電路設(shè)計(jì)設(shè)計(jì)流程1、建立一個(gè)新工程,并指定對(duì)象器件。2、設(shè)計(jì)輸入:
編輯HDL文件
原理圖3、功能模擬:
編譯(分析和綜合)生成網(wǎng)表文件建立波形文件4、物理設(shè)計(jì)引腳分配
完整編譯后時(shí)序模擬5、器件編程:下載
設(shè)計(jì)流程1、建立一個(gè)新工程,并指定對(duì)象器件。進(jìn)入原理圖編輯器從元件庫中調(diào)入元件符號(hào)繪制原理圖將設(shè)計(jì)項(xiàng)目設(shè)置成可調(diào)用的元件設(shè)計(jì)頂層文件將設(shè)計(jì)設(shè)置成工程5.3.2電路原理圖編輯輸入進(jìn)入原理圖編輯器進(jìn)入原理圖編輯器5.3.2電路原理圖編輯輸入進(jìn)入原理圖進(jìn)入原理圖編輯器File->NewBlockDiagram/SchematicFile進(jìn)入原理圖編輯器File->New原理圖編輯器窗口原理圖編輯器窗口原理圖設(shè)計(jì)方法
元件輸入對(duì)話框
從元件庫中調(diào)入元件符號(hào)
原理圖設(shè)計(jì)方法元件輸入對(duì)話框從元件庫中調(diào)入元件符號(hào)電路原理圖編輯輸入電路原理圖編輯輸入電路原理圖編輯輸入(1)新建一個(gè)文件夾。
(2)打開原理圖編輯窗。(3)文件存盤。
電路原理圖編輯輸入(1)新建一個(gè)文件夾。(2)打開原理圖5.3.3創(chuàng)建工程
(1)打開建立新工程管理窗。新建工程工作目錄的路徑新建的工程名稱工程的頂層設(shè)計(jì)實(shí)體名稱5.3.3創(chuàng)建工程(1)打開建立新工程管理窗。新建工創(chuàng)建工程
(2)將設(shè)計(jì)文件加入工程中。創(chuàng)建工程(2)將設(shè)計(jì)文件加入工程中。創(chuàng)建工程
(3)選擇目標(biāo)芯片。
(4)工具設(shè)置。
選擇對(duì)象器件EP1C12Q240C8創(chuàng)建工程(3)選擇目標(biāo)芯片。(4)工具設(shè)置。選擇對(duì)象器創(chuàng)建工程
(5)結(jié)束設(shè)置。創(chuàng)建工程(5)結(jié)束設(shè)置。創(chuàng)建工程
(6)編輯構(gòu)建電路圖。
創(chuàng)建工程(6)編輯構(gòu)建電路圖。5.3.4功能簡(jiǎn)要分析5.3.4功能簡(jiǎn)要分析5.3.5編譯前設(shè)置
(1)選擇FPGA目標(biāo)芯片。選擇對(duì)象器件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é)果的報(bào)告編譯結(jié)果的報(bào)告5.3.7時(shí)序仿真測(cè)試電路功能
選擇編輯矢量波形文件,打開波形編輯器(1)打開波形編輯器建立波形文件File->New->VectorWaveformFile5.3.7時(shí)序仿真測(cè)試電路功能選擇編輯矢量波形文件,打使用波形編輯器繪制測(cè)試向量波形波形編輯器窗口使用波形編輯器繪制測(cè)試向量波形波形編輯器窗口時(shí)序仿真測(cè)試電路功能
(1)打開波形編輯器。(2)設(shè)置仿真時(shí)間區(qū)域。
(3)波形文件存盤。Edit->EndTime指定模擬終止時(shí)間時(shí)序仿真測(cè)試電路功能(1)打開波形編輯器。(2)設(shè)置仿真(4)將工程top的端口信號(hào)名選入波形編輯器中(1)選擇Pins:all(2)點(diǎn)擊List(4)將工程top的端口信號(hào)名選入波形編輯器中(1)選擇Pi(5)編輯輸入波形(輸入激勵(lì)信號(hào))(1)按住鼠標(biāo)左鍵并拖動(dòng)鼠標(biāo),選擇一個(gè)時(shí)間段(2)在工具條中選擇一個(gè)值,給信號(hào)賦值(5)編輯輸入波形(輸入激勵(lì)信號(hào))(1)按住鼠標(biāo)左鍵并拖動(dòng)(6)仿真器參數(shù)設(shè)置(6)仿真器參數(shù)設(shè)置(7)啟動(dòng)仿真器。模擬器窗口Processing->Simulatortool或Processing->StartSimulator(7)啟動(dòng)仿真器。模擬器窗口(8)觀察分析仿真結(jié)果。時(shí)延(8)觀察分析仿真結(jié)果。時(shí)延5.4引腳鎖定和編程下載
5.4.1引腳鎖定(1)打開工程。
5.4引腳鎖定和編程下載5.4.1引腳鎖定(1)引腳鎖定(2)雙擊“TO”欄的《new》,即出現(xiàn)一按鈕,點(diǎn)擊此按鈕,并選擇出現(xiàn)的菜單中的NodeFinder項(xiàng)。(3)最后保存這些引腳鎖定的信息后,必須再編譯(啟動(dòng)StartCompilation)一次,才能將引腳鎖定信息編譯進(jìn)編程下載文件中。
引腳鎖定(2)雙擊“TO”欄的《new》,即出現(xiàn)一按鈕,點(diǎn)擊5.4.2配置文件下載
(1)打開編程窗。
5.4.2配置文件下載(1)打開編程窗。5.4引腳鎖定和編程下載
5.4.2配置文件下載
(2)設(shè)置編程器。(3)測(cè)試JTAG口。
(4)硬件測(cè)試。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間接模式編補(bǔ)充:第一節(jié)VerilogHDL基礎(chǔ)知識(shí)一.Verilog模塊的結(jié)構(gòu)VerilogHDL以模塊集合的形式來描述數(shù)字系統(tǒng)?!澳K”(module)是Verilog程序的基本設(shè)計(jì)單元,用于描述某個(gè)設(shè)計(jì)的功能、結(jié)構(gòu)、與其他模塊通信的外部端口。
先通過三個(gè)簡(jiǎn)單的Verilog程序,直觀地認(rèn)識(shí)Verilog模塊的結(jié)構(gòu)。補(bǔ)充:第一節(jié)VerilogHDL基礎(chǔ)知識(shí)一.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為輸入端口//定義端口信號(hào)的數(shù)據(jù)類型//定義內(nèi)部節(jié)點(diǎn)信號(hào)(連線)//調(diào)用內(nèi)置“非”門元件//調(diào)用內(nèi)置“與”門元件//調(diào)用內(nèi)置“與”門元件//調(diào)用內(nèi)置“或”門元件例1:&&moduleMUX2-1(out,a,b,例2:根據(jù)邏輯表達(dá)式建模moduleMUX2-1(out,a,b,sel);outputout;Inputa,b,sel;wirea,b,sel,out;endmoduleassignout=((~sel)&a)|(sel&b);定義同上采用邏輯表達(dá)式進(jìn)行邏輯功能的描述&&例2:根據(jù)邏輯表達(dá)式建模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中的賦值變量
只要信號(hào)sel、a、b中有一個(gè)發(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單元邏輯塊,如一個(gè)CPU設(shè)計(jì)的ALU部分整個(gè)系統(tǒng)每一個(gè)模塊的描述從關(guān)鍵詞module開始,有一個(gè)名稱(如SN74LS74,DFF,ALU等等),由關(guān)鍵詞endmodule結(jié)束。module是層次化設(shè)計(jì)的基本構(gòu)件邏輯描述放在module內(nèi)部module(模塊)module能夠表示:module是層次2.端口(Port)定義
端口是模塊與外界或其他模塊進(jìn)行連接和通信的信號(hào)線,對(duì)模塊的輸入、輸出端口要進(jìn)行明確的定義,格式如下:input〈[向量位寬]〉
端口名1,端口名2,……端口名n;output〈[向量位寬]〉
端口名1,端口名2,……端口名n;定義輸入定義輸出2.端口(Port)定義端口是模塊與外界或其模塊端口(moduleports)端口在模塊名字后的括號(hào)中列出端口可以說明為input,output及inout端口等價(jià)于硬件的引腳(pin)注意模塊的名稱DFF,端口列表及說明模塊通過端口與外部通信模塊端口(moduleports)端口在模塊名字后的括號(hào)中3.數(shù)據(jù)類型和信號(hào)類型的聲明
每個(gè)端口除聲明為輸入、輸出,還要聲明其數(shù)據(jù)類型是連線型(wire)還是寄存器型(reg),若沒有聲明,綜合器默認(rèn)為是wire型。
模塊中用到的節(jié)點(diǎn)信號(hào)(連線)也必須進(jìn)行數(shù)據(jù)類型的定義。用wire將信號(hào)定義為連線型;用reg將信號(hào)定義為寄存器型;用parameter定義符號(hào)常量。特別提示:輸入不能聲明為reg型!3.數(shù)據(jù)類型和信號(hào)類型的聲明每個(gè)端口除聲明4.邏輯功能定義
模塊中最核心的部分是邏輯功能定義。下面介紹幾種基本方法。(1)用“assign”持續(xù)賦值語句進(jìn)行邏輯功能的定義例如:assignF=~((A&B)|(C&D));“assign”語句一般用于組合邏輯的賦值,稱為持續(xù)賦值方式。是一種基于邏輯表達(dá)式的邏輯功能描述方式。在前面的例2中,就是采用這種方式建立電路模型。4.邏輯功能定義模塊中最核心的部分是邏輯功(2)
調(diào)用內(nèi)置元件(元件例化)描述電路結(jié)構(gòu)調(diào)用VerilogHDL中提供的動(dòng)態(tài)元件“畫”電路圖。例如:andmyand3(out,a,b,c);調(diào)用門元件,構(gòu)造一個(gè)名為myand3的三輸入與門。andc1(F,in1,in2);調(diào)用門元件,構(gòu)造一個(gè)名為c1的二輸入與門。
前面例1中,通過調(diào)用門元件,進(jìn)行信號(hào)的相互連接,構(gòu)造電路的模型。(2)調(diào)用內(nèi)置元件(元件例化)描述電路結(jié)構(gòu)調(diào)用Verilo模塊實(shí)例化(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模塊實(shí)例化(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基本單元的實(shí)例a,b,sel是輸入端口,out是輸出端口。所有信號(hào)通過這些端口從模塊輸入/輸出。另一個(gè)模塊可以通過模塊名及端口說明使用多路器。實(shí)例化多路器時(shí)不需要知道其實(shí)現(xiàn)細(xì)節(jié)。這正是自上而下設(shè)計(jì)方法的一個(gè)重要特點(diǎn)。模塊的實(shí)現(xiàn)可以是行為級(jí)也可以是門級(jí),但并不影響高層次模塊對(duì)它的使用。多路器由關(guān)鍵詞module和endmodule開始及結(jié)束。(3)用“always”過程塊描述電路的邏輯功能modu小結(jié)●VerilogHDL程序是由模塊構(gòu)成的●模塊是可以進(jìn)行層次嵌套的●上層模塊可以通過模塊調(diào)用構(gòu)成更大的邏輯系統(tǒng)●Verilog模塊分為邏輯綜合模塊和邏輯模擬模塊●每個(gè)模塊由模塊聲明、端口定義、數(shù)據(jù)類型說明、邏輯功能定義四部分構(gòu)成●VerilogHDL程序的書寫格式自由,一行可寫多個(gè)語句,一個(gè)語句也可分寫多行?!癯齟ndmodule外,每個(gè)語句和數(shù)據(jù)定義的最后必須有分號(hào)●可用/*…*/和//…進(jìn)行多行、單行注釋(綠色),增強(qiáng)程序的可讀性小結(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>位寬:對(duì)應(yīng)二進(jìn)制數(shù)的寬度,省缺為32位。當(dāng)指定進(jìn)制格式時(shí),不能省略數(shù)值采用的進(jìn)制格式b或B:二進(jìn)制d或D或缺?。菏M(jìn)制h或H:十六進(jìn)制o或O:八進(jìn)制基于進(jìn)制的數(shù)字序列VerilogHDL可綜合模塊中常用的整數(shù)型常量的書寫格式:正、負(fù)號(hào)±<size>′<base_format例:
659//簡(jiǎn)單的十進(jìn)制表示′h837FF/*省缺位寬的十六進(jìn)制數(shù),位寬大于實(shí)際位數(shù),數(shù)值高位是
0或1,高位補(bǔ)0;數(shù)值高位是x或z,高位補(bǔ)x或z。*/′o7460//省缺位寬的八進(jìn)制數(shù)4AF//非法的整數(shù)表示,十六進(jìn)制需要′hb001//非法的整數(shù)表示,不能省略′4′b0010//四位的二進(jìn)制數(shù)5′D3//五位的十進(jìn)制數(shù)8′b0100_1010//使用下劃線增加可讀性
±<size>′<base_format><number>例:±<size>′<base_forma三.VerilogHDL中的標(biāo)識(shí)符由字母、數(shù)字以及符號(hào)“$”、“_”(下劃線)組成?!駱?biāo)識(shí)符必須以字母或下劃線開頭●標(biāo)識(shí)符是區(qū)分大小寫的合法標(biāo)識(shí)符舉例:countCOUNT_A1_d2不正確的標(biāo)識(shí)符:30countOut*$123標(biāo)識(shí)符常用于“模塊名”或“變量名”三.VerilogHDL中的標(biāo)識(shí)符由字母、數(shù)字以及符號(hào)“四.VerilogHDL中的關(guān)鍵字
關(guān)鍵字也稱為保留字,是VerilogHDL語言內(nèi)部的專用詞,用于組織語言結(jié)構(gòu),全部采用小寫形式(藍(lán)色)。例如:module、endmodule、begin、end、always、and、or、if、else、wire、reg、input、output、……
請(qǐng)同學(xué)們?cè)诤罄m(xù)課程學(xué)習(xí)時(shí),關(guān)注、總結(jié)VerilogHDL中的關(guān)鍵字,從現(xiàn)在開始熟悉掌握。請(qǐng)注意:ALWAYS是標(biāo)識(shí)符(黑色),與關(guān)鍵字always是不同的。四.VerilogHDL中的關(guān)鍵字關(guān)鍵字五.VerilogHDL中的數(shù)據(jù)(變量)類型
在硬件描述語言中,數(shù)據(jù)類型用來表示數(shù)字電路中的物理連線、數(shù)據(jù)存儲(chǔ)和傳送單元。VerilogHDL中共有19種數(shù)據(jù)類型,分為連線型(NetType)和寄存器型(RegisterType)。在可綜合模塊中,最常用的是這兩類中的wire型、reg型、integer型和parameter型。1.連線型(NetType)變量
連線型變量一般用來描述硬件電路中的各種物理連線。其特點(diǎn)是輸出始終跟隨輸入的變化而變化。對(duì)連線型變量有兩種驅(qū)動(dòng)方式,一種是在結(jié)構(gòu)描述中將其連接到一個(gè)邏輯門或模塊的輸出端;另一種是用assign語句進(jìn)行賦值。五.VerilogHDL中的數(shù)據(jù)(變量)類型類型功能說明wire,tri常用連線類型wor,trior具有線或特性的連線wand,triand具有線與特性的連線tri1,tri0上拉電阻,下拉電阻supply1,supply0電源(邏輯1),地(邏輯0)VerilogHDL提供了多種連線型變量重點(diǎn)介紹在可綜合模塊中最常用的是wire型變量類型功能說明wire,tri常用連線類型wor,triorwire型變量常用來表示通過assign語句賦值的組合邏輯信號(hào)。Verilog模塊中的輸入、輸出端口的信號(hào)類型說明省缺時(shí),自動(dòng)定義為wire型。wire型變量可用于任何表達(dá)式的輸入assign語句的輸出實(shí)例元件的輸出對(duì)綜合器而言,其取值0,1,x,z其他模塊的輸出wire型變量常用來表示通過assignwire型變量的定義格式
wire〈[向量位寬]〉數(shù)據(jù)名1,數(shù)據(jù)名2,……數(shù)據(jù)名n;關(guān)鍵字n-1:0或n:1時(shí),定義多位wire型向量;省略時(shí),定義一位的wire型變量。wire型變量的定義格式關(guān)鍵字n-1:0或n:例如,wire型變量或向量的定義:
wirea,b;//定義兩個(gè)1位wire型變量a,bwire[7:0]databus;//定義一個(gè)8位寬的向量(數(shù)據(jù)總線)
wire[20:1]addrbus;//定義20位寬的地址總線例如,wire型向量的全域使用……wire[7:0]in,out;//定義兩個(gè)8位wire型向量in,outassignout=in;//按位對(duì)應(yīng)賦值……例如,wire型變量或向量的定義:例如,wire型向量的全域例如,對(duì)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];例如,對(duì)wire型向量可選域使用等效于:assigno2.寄存器型(RegisterType)變量
寄存器型變量對(duì)應(yīng)的是具有狀態(tài)保持作用的電路元件。例如:觸發(fā)器,寄存器。
寄存器型變量的特點(diǎn)是必須進(jìn)行明確的賦值,并且在被重新賦值前一直保持原值。register型變量與net型變量的根本區(qū)別在于:register型變量能夠保持最后一次的賦值;net型變量需要有持續(xù)的驅(qū)動(dòng)。
在設(shè)計(jì)中必須將寄存器型變量放在過程塊語句(initial,always)中,通過過程賦值語句賦值。即:initial,always過程塊內(nèi)被賦值的每一個(gè)信號(hào),都必須定義為register型變量。2.寄存器型(RegisterType)變量VerilogHDL中也提供了多種寄存器型變量,在可綜合模塊中常用的是integer型和reg型。
integer寄存器型變量是一種純數(shù)學(xué)的抽象描述,它雖然能定義帶符號(hào)的32位整型寄存器變量,但不對(duì)應(yīng)任何具體的硬件電路。
reg<[向量位寬]>數(shù)據(jù)名1,數(shù)據(jù)名2,……數(shù)據(jù)名n;reg型變量的定義格式:關(guān)鍵字n-1:0或n:1時(shí),定義多位reg型向量;省略時(shí),定義一位的reg型變量。VerilogHDL中也提供了多種寄存器型例如,reg型變量、向量的定義
rega,b;//定義兩個(gè)寄存器型變量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];//域選擇……
在表達(dá)式中,可任意使用reg型變量中的一位或相鄰幾位,分別稱為位選擇和域選擇。例如:……在表達(dá)式中,可任意使用reg型變量中例:parametersel=8,code=8′ha3;//定義sel為常數(shù)8(十進(jìn)制),code為常數(shù)a3(十六進(jìn)制)parameterdata=8,addr=data*2;//data為8,addr為16,用常數(shù)表達(dá)式賦值。3.parameter型數(shù)據(jù)
在VerilogHDL中,用parameter定義符號(hào)常量,即定義一個(gè)標(biāo)識(shí)符代表一個(gè)常量。定義格式如下:
parameter參數(shù)名1=表達(dá)式1,參數(shù)名2=表達(dá)式2,……;例:3.parameter型數(shù)據(jù)在Ver六.VerilogHDL中的運(yùn)算符按功能分成九大類:關(guān)系運(yùn)算符算術(shù)運(yùn)算符邏輯運(yùn)算符等式運(yùn)算符縮減運(yùn)算符條件運(yùn)算符拼接運(yùn)算符移位運(yùn)算符位運(yùn)算符按運(yùn)算符所帶的操作數(shù)區(qū)分:?jiǎn)文窟\(yùn)算符(unaryoperator),帶一個(gè)操作數(shù)。雙目運(yùn)算符(binaryoperator),帶兩個(gè)操作數(shù)。三目運(yùn)算符(ternaryoperator),帶三個(gè)操作數(shù)。六.VerilogHDL中的運(yùn)算符按功能分成九大類:關(guān)系運(yùn)算術(shù)運(yùn)算符+加-減*乘/除%模運(yùn)算符(對(duì)兩個(gè)整型數(shù)據(jù)進(jìn)行求余運(yùn)算)均為雙目運(yùn)算符。在進(jìn)行整數(shù)除法運(yùn)算時(shí),結(jié)果略去小數(shù)。取模運(yùn)算時(shí),結(jié)果符號(hào)與第一操作數(shù)相同。當(dāng)兩操作數(shù)中有一個(gè)為x,則結(jié)果就為x。10%3,結(jié)果為1;12%4,結(jié)果為0;-10%3,結(jié)果為-1;11%-3,結(jié)果為2算術(shù)運(yùn)算符+加均為雙邏輯運(yùn)算符&&邏輯與,雙目運(yùn)算‖邏輯或,雙目運(yùn)算!邏輯非,單目運(yùn)算當(dāng)進(jìn)行邏輯運(yùn)算時(shí):●若操作數(shù)是一位的,則邏輯運(yùn)算真值表如下:aba&&ba||b!a!b00001010100010111100邏輯運(yùn)算符&&邏輯與,雙目運(yùn)算當(dāng)進(jìn)行邏●當(dāng)操作數(shù)由多位組成,則將操作數(shù)作為一個(gè)整體處理,即如操作數(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ù)作為一個(gè)整體處理,即如操作位運(yùn)算符~按位非(按位取反),單目運(yùn)算。&按位與︱按位或^按位異或^~,~^按位異或非(按位同或)●將操作數(shù)按位對(duì)應(yīng),進(jìn)行邏輯運(yùn)算?!駜蓚€(gè)不同長度的數(shù)據(jù)進(jìn)行位運(yùn)算時(shí),按右對(duì)齊,位數(shù)少的在高位補(bǔ)“0”?!褡⒁鈞對(duì)運(yùn)算結(jié)果的影響位運(yùn)算符~按位位運(yùn)算符應(yīng)用舉例:若A=5′B11001,B=5′b101x1,則
~A=5′b00110A&B=5′b10001A︱B=5′b111x1A^B=5′b011x0位運(yùn)算符應(yīng)用舉例:關(guān)系運(yùn)算符<小于<=小于或等于>大于>=大于或等于
比較兩個(gè)操作數(shù)的大小關(guān)系,如果比較關(guān)系成立,則返回邏輯“1”;否則,返回邏輯“0”。如果兩個(gè)操作數(shù)中有一個(gè)為x,則返回值是x。例:A=2,B=5,D=4′hx則:A<B返回邏輯“1”A>B返回邏輯“0”B<=D返回值是x關(guān)系運(yùn)算符<小于等式運(yùn)算符==等于!=不等于===全等!==不全等
雙目運(yùn)算,運(yùn)算的結(jié)果是1位的邏輯值。兩個(gè)操作數(shù)逐位相等,返回邏輯1;否則,返回邏輯0。若任何一個(gè)操作數(shù)中某位是x或z,則返回x。對(duì)操作數(shù)中的x和z也進(jìn)行比較,逐位一致,返回邏輯1;否則,返回邏輯0。例:a=5′b11x01,c=5′b11x01,則
a==c得到的結(jié)果是xa===c得到的結(jié)果是1等式運(yùn)算符==等于歸約運(yùn)算符又稱為“縮減運(yùn)算符”,是單目運(yùn)算符。&歸約與~&歸約與非︱歸約或~︱歸約或非^歸約異或~^,^~歸約異或非(歸約同或)對(duì)單個(gè)操作數(shù)進(jìn)行歸約的遞推運(yùn)算,運(yùn)算結(jié)果是1位二進(jìn)制數(shù)。過程:先將操作數(shù)的第1位與第2位進(jìn)行歸約運(yùn)算,運(yùn)算結(jié)果再與第3位進(jìn)行歸約運(yùn)算,依此類推,直到最后一位。歸約運(yùn)算符又稱為“縮減運(yùn)算符”,是單目運(yùn)算符。&…reg[3:0]a;b=&a;//等效于b=((a[0]&a[1])&a[2])&a[3])…歸約運(yùn)算符舉例若A=5′b11001則
&A歸約運(yùn)算結(jié)果是0,只有各位均為1,結(jié)果才為1。
︱A歸約運(yùn)算結(jié)果是1,只有各位均為0,結(jié)果才為0^A歸約運(yùn)算結(jié)果是1,奇數(shù)個(gè)1,結(jié)果為1?!瓪w約運(yùn)算符舉例若A=5′b11001移位運(yùn)算符>>邏輯右移<<邏輯左移
雙目運(yùn)算,將運(yùn)算符左邊的操作數(shù)左移或右移運(yùn)算符右邊的操作數(shù)指定的位數(shù),空位補(bǔ)0。即:A>>n或A<<n。例如:A=6′b110010則A>>2的結(jié)果是6′b001100A<<2的結(jié)果是6′b001000移位運(yùn)算符>>邏輯右移條件運(yùn)算符
?:三目運(yùn)算符應(yīng)用方式
signal=condition
?
true-expression:false-expression;信號(hào)=條件?表達(dá)式1:
表達(dá)式2;當(dāng)條件成立時(shí),信號(hào)取表達(dá)式1的值,反之取表達(dá)式2的值。條件運(yùn)算符條件運(yùn)算符舉例
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條件運(yùn)算符舉例當(dāng)op為0,做a+b拼接運(yùn)算符{}
將兩個(gè)或多個(gè)信號(hào)的某些位拼接起來。用法如下:{信號(hào)1的某幾位,信號(hào)2的某幾位,……信號(hào)n的某幾位}示例:a=1′b1b=2′b00c=6′b101001則:{a,b}產(chǎn)生一個(gè)3位數(shù)3′b100{c[5:3],a}產(chǎn)生一個(gè)4位數(shù)4′b1011嵌套使用,進(jìn)行常量或變量的復(fù)制以及簡(jiǎn)化書寫。例如:{3{a,b}}等同于{{a,b},{a,b},{a,b}}
也等同于{a,b,a,b,a,b}拼接運(yùn)算符{}將兩個(gè)七.運(yùn)算符的優(yōu)先級(jí)運(yùn)算符優(yōu)先級(jí)!~高低*/%+–<<>><<=>>===!====!==&~&^^~|~|&&||?:
不同的綜合開發(fā)工具在執(zhí)行這些優(yōu)先級(jí)時(shí)會(huì)有微小的差異,建議養(yǎng)成用括號(hào)控制優(yōu)先級(jí)的習(xí)慣。七.運(yùn)算符的優(yōu)先級(jí)運(yùn)算符優(yōu)先級(jí)!~高*/%+–<<第二節(jié)VerilogHDL的行為描述模塊一.行為描述
邏輯電路的結(jié)構(gòu)描述側(cè)重于表示一個(gè)電路由哪些基本元件組成,以及這些基本元件的相互連接關(guān)系。
邏輯電路的數(shù)據(jù)流描述側(cè)重于邏輯表達(dá)式以及VerilogHDL中運(yùn)算符的靈活運(yùn)用。
行為描述關(guān)注邏輯電路輸入、輸出的因果關(guān)系(行為特性),即在何種輸入條件下,產(chǎn)生何種輸出(操作),并不關(guān)心電路的內(nèi)部結(jié)構(gòu)。EDA的綜合工具能自動(dòng)將行為描述轉(zhuǎn)換成電路結(jié)構(gòu),形成網(wǎng)表文件。
顯然,當(dāng)電路的規(guī)模較大或時(shí)序關(guān)系較復(fù)雜時(shí),通常采用行為描述方式進(jìn)行設(shè)計(jì)。第二節(jié)VerilogHDL的行為描述模塊一.行為描述二.VerilogHDL行為描述模塊的設(shè)計(jì)模型Verilog行為描述模塊基本結(jié)構(gòu)module模塊名(端口列表);端口定義input輸入端口output輸出端口數(shù)據(jù)類型說明
regparameter邏輯功能定義always@(敏感事件列表)begin阻塞、非阻塞、if-else、case、for等行為語句endendmodule二.VerilogHDL行為描述模塊的設(shè)計(jì)模型Veril三.行為描述中的always進(jìn)程應(yīng)用模板always@(<敏感信號(hào)表達(dá)式>)begin//過程賦值語句
//if-else,case,casex,casez選擇語句
//for循環(huán)語句
end
一般情況下,always進(jìn)程帶有觸發(fā)條件,這些觸發(fā)條件列在敏感信號(hào)表達(dá)式中,只有當(dāng)觸發(fā)條件滿足時(shí),begin-end塊語句才被執(zhí)行。
在一個(gè)VerilogHDL模塊中可以有多個(gè)always進(jìn)程,它們是并發(fā)執(zhí)行的。三.行為描述中的always進(jìn)程應(yīng)用模板always@
敏感信號(hào)表達(dá)式
又稱敏感事件列表。當(dāng)該表達(dá)式中任意一個(gè)信號(hào)(變量)的值改變時(shí),就會(huì)引發(fā)塊內(nèi)語句的執(zhí)行。因此,應(yīng)將所有影響塊內(nèi)取值的信號(hào)(變量)列入。多個(gè)敏感信號(hào)用“or”或“,”連接。例如:@(a)//當(dāng)信號(hào)a的值發(fā)生改變時(shí)@(a,b)//當(dāng)信號(hào)a或信號(hào)b的值發(fā)生改變時(shí)
這里a和b稱為電平敏感型信號(hào),代表的觸發(fā)事件是,信號(hào)除了保持穩(wěn)定狀態(tài)以外的任意一種變化過程。
這種電平敏感型信號(hào)列表常用在組合邏輯的描述中,以體現(xiàn)輸入隨時(shí)影響輸出的組合邏輯特性。敏感信號(hào)表達(dá)式又稱敏感事件列表。當(dāng)該表達(dá)式
再例如:@(posedgeclock)//當(dāng)clock的上升沿到來時(shí)@(negedgeclock)//當(dāng)clock的下降沿到來時(shí)@(posedgeclockornegedgereset)//當(dāng)clock的上升沿到來或當(dāng)reset的下降沿到來時(shí)
這里的clock和reset信號(hào)稱為邊沿敏感型信號(hào),posedge描述對(duì)信號(hào)的上升沿敏感;negedge描述對(duì)信號(hào)的下降沿敏感。顯然,這種邊沿敏感型信號(hào)列表適合描述同步時(shí)序電路,以體現(xiàn)同步時(shí)序電路的特點(diǎn)——在統(tǒng)一時(shí)鐘作用下改變電路的狀態(tài)。再例如:這里的clock和reset信號(hào)稱
posedge——代表的觸發(fā)事件是,信號(hào)發(fā)生了正跳變。
0→x,0→z,0→1,x→1,z→1negedge——代表的觸發(fā)事件是,信號(hào)發(fā)生了負(fù)跳變。
1→x,1→z,1→0,x→0,z→0
在每一個(gè)always過程語句中,最好只使用一種類型的敏感信號(hào)列表,不要混合使用。以避免使用不同的綜合工具時(shí)發(fā)生錯(cuò)誤。posedge——代表的觸發(fā)事件是,信號(hào)發(fā)生了正跳變四.串行塊
由關(guān)鍵字begin-end界定的一組語句。串行塊的特點(diǎn):●一般情況下,塊內(nèi)語句順序執(zhí)行,前面一條語句執(zhí)行畢后,才開始執(zhí)行下一條語句?!衲K運(yùn)行時(shí),遇到串行塊,塊內(nèi)第一條語句即開始執(zhí)行,最后一條執(zhí)行完畢,串行塊結(jié)束?!裾麄€(gè)串行塊執(zhí)行時(shí)間等于塊內(nèi)各條語句執(zhí)行時(shí)間的總和。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進(jìn)程中:多條語句;順序執(zhí)行。moduleff_1(A,B,C,D,F);module
過程賦值語句必須放在always進(jìn)程中,分為阻塞型和非阻塞型,其基本格式為:
〈被賦值變量〉〈賦值操作符〉〈賦值表達(dá)式〉●reg或integer類型變量;●寄存器向量的某一位或某幾位;●用拼接符{}拼接起來的寄存器。=阻塞賦值操作符<=非阻塞賦值操作符任意合法表達(dá)式五.過程賦值語句過程賦值語句必須放在always進(jìn)程中,分為//過程賦值語句的目標(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í)行過程:先計(jì)算“賦值表達(dá)式”的值,然后立即賦值給“=”左邊的“被賦值變量”。過程賦值語句阻塞型過程賦值非阻塞型過程賦值操作符“=”在前面過程賦值語句非阻塞型過程賦值阻塞型過程賦值操作符“<=”特點(diǎn):●在begin-eng串行塊語句中,各條非阻塞過程賦值語句對(duì)應(yīng)的“賦值表達(dá)式”同時(shí)開始計(jì)算?!裨谶^程塊結(jié)束時(shí),才將結(jié)果賦值給各個(gè)“被賦值變量”?!窨衫斫鉃橄韧瑫r(shí)采樣,最后一起賦值。過程賦值語句非阻塞型過程賦值阻塞型過程賦值操作符特點(diǎn):……beginA<=B;//S1B<=A;//S2end……這里,S1、S2語句均為非阻塞賦值,立即開始計(jì)算B和A值(上次的值)。在過程塊結(jié)束時(shí),進(jìn)行賦值操作,將計(jì)算得到的B,A的值賦給變量A,B。(實(shí)現(xiàn)A,B交換)
如果不能很好地理解阻塞賦值與非阻塞賦值的區(qū)別,往往給設(shè)計(jì)帶來麻煩,特別是在可綜合邏輯模塊中,不易把握reg型變量的賦值過程。建議同學(xué)在編寫模塊時(shí),只采用一種過程賦值方式,并且最好不要將輸出再次作為輸入使用?!@里,S1、S2語句均為非阻塞賦值,立即開始計(jì)算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為上個(gè)時(shí)鐘周期b的值。結(jié)果:b、c都更新為a的值。為了更好地理解阻塞賦值與非阻塞賦值的區(qū)別,我們這兩個(gè)程序進(jìn)行邏輯綜合后的結(jié)果如下:>DQ>DQclkabc>DQclkacb例1非阻塞賦值綜合結(jié)果例2阻塞賦值綜合結(jié)果這兩個(gè)程序進(jìn)行邏輯綜合后的結(jié)果如下:>>clkabc>clk
阻塞賦值與非阻塞賦值是學(xué)習(xí)VerilogHDL的難點(diǎn)之一,應(yīng)仔細(xì)體會(huì)。阻塞賦值與非阻塞賦值是學(xué)習(xí)Verilog高級(jí)程序語句if-else條件分支語句case分支控制語句(1)if-else條件分支語句格式1if(<條件表達(dá)式>)語句或語句塊;格式2if(<條件表達(dá)式>)語句或語句塊1;
else語句或語句塊2;格式3if(<條件表達(dá)式1>)語句或語句塊1;
elseif(<條件表達(dá)式2>)語句或語句塊2;
……elseif(<條件表達(dá)式n>)語句或語句塊n;
else語句或語句塊n+1;兩路分支選擇控制多路分支選擇控制六.條件語句高級(jí)程序語句if-else條件分支語句(1)if-e
三種格式中的<條件表達(dá)式>,一般為邏輯表達(dá)式或關(guān)系表達(dá)式,也可以是一位的變量。系統(tǒng)對(duì)<條件表達(dá)式>的值進(jìn)行判斷,若為0、x、z,按“假”處理;若為1,按“真”處理,執(zhí)行指定語句。語句可以是單句,也可以是多句,多句時(shí)用begin-end括起來。
為了清晰表達(dá)if和else的匹配關(guān)系,建議最好用begin-end將“指定語句”括起來。三種格式中的<條件表達(dá)式>,一般為邏輯表達(dá)式//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等.壓縮文件請(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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024網(wǎng)絡(luò)安全防護(hù)技術(shù)合同
- 二零二五年度綠色環(huán)保安置房交易合同范本3篇
- 2025年度能源項(xiàng)目居間合作合同范本3篇
- 2025年房屋交換與回遷協(xié)議3篇
- 2024版中外合資企業(yè)運(yùn)營管理合同書版B版
- 2024版政維護(hù)合同范本
- 中信證券2024年證券交易服務(wù)協(xié)議版A版
- 二零二五年度機(jī)場(chǎng)擴(kuò)建項(xiàng)目吊車租賃合同及吊機(jī)操作資質(zhì)要求3篇
- 事業(yè)單位2024版臨時(shí)聘用人員協(xié)議樣本版B版
- 二零二五年度專業(yè)攝影棚場(chǎng)地租賃服務(wù)協(xié)議2篇
- 開展課外讀物負(fù)面清單管理的具體實(shí)施舉措方案
- 中國骨關(guān)節(jié)炎診療指南(2024版)解讀
- 2025年內(nèi)蒙古包鋼集團(tuán)公司招聘筆試參考題庫含答案解析
- 企業(yè)內(nèi)訓(xùn)師培訓(xùn)師理論知識(shí)考試題庫500題(含各題型)
- 2025年云南中煙工業(yè)限責(zé)任公司招聘420人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年山西省晉中市公開招聘警務(wù)輔助人員(輔警)筆試專項(xiàng)訓(xùn)練題試卷(2)含答案
- 2023九年級(jí)歷史上冊(cè) 第二單元 5《羅馬城邦和羅馬帝國》教學(xué)實(shí)錄 新人教版
- 教育綜合體項(xiàng)目策劃書
- 軟件開發(fā)項(xiàng)目服務(wù)方案
- 2024版質(zhì)量管理培訓(xùn)
- 2024年廣東省公務(wù)員錄用考試《行測(cè)》真題及答案解析
評(píng)論
0/150
提交評(píng)論