電子教案-EDA技術與VHDL程序開發教程_第1頁
電子教案-EDA技術與VHDL程序開發教程_第2頁
電子教案-EDA技術與VHDL程序開發教程_第3頁
電子教案-EDA技術與VHDL程序開發教程_第4頁
電子教案-EDA技術與VHDL程序開發教程_第5頁
已閱讀5頁,還剩354頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第一章EDA開發技術基礎概論EDA技術以計算機為工具,設計者在對應的集成開發環境中,用硬件描述語言完成設計文件,然后由計算機自動地完成邏輯編譯、綜合、優化、布局、布線和仿真等,并且對于特定目標芯片進行適配編譯、邏輯映射和編程下載等工作。本章將介紹EDA開發技術的基礎知識。1.1EDA技術基礎1.2EDA技術涉及的內容1.3硬件描述語言(HDL)介紹1.4EDA的集成開發環境1.5使用EDA技術進行數據系統開發1.1EDA技術基礎1.1.1EDA技術簡介1.1.2EDA技術的發展1.1.1EDA技術簡介EDA是電子設計自動化(ElectronicDesignAutomation)的縮寫,是在20世紀60年代中期從計算機輔助設計(CAD)、計算機輔助制造(CAM)、計算機輔助測試(CAT)和計算機輔助工程(CAE)的概念發展而來的。EDA技術的特點用軟件的方式設計硬件。用軟件方式設計的系統到硬件系統的轉換是由相關軟件自動完成的。在設計過程中可以用軟件進行各種仿真進行驗證。現代EDA工具具有高層綜合和優化功能,能夠在系統級進行綜合、優化和方針,從而縮短設計周期,提高工作效率。系統可以現場編程,在線升級。整個系統易集成、體積小、功耗低且可靠性高。帶有嵌入IP核的ASIC設計,提供軟硬件協同設計。提供開放和標準化的操作環境,容易實現資源共享和設計移植。支持并行設計,適合團隊協作,分工設計。1.1.2EDA技術的發展20世紀70年代,CAD工具。20世紀80年代,CAE工具。20世紀90年代,EDA工具。21世紀~1.2EDA技術涉及的內容1.2.1可編程邏輯器件1.2.2硬件描述語言1.2.3集成開發環境1.2.4實驗室開發環境1.2.1可編程邏輯器件可編程邏輯陣列PLD(ProgrammableLogicDevice)是一種通過用戶編程來實現某種邏輯功能的新型邏輯器件。經過近三十年的發展,可編程邏輯器件已經從最初簡單PLA、PAL、GAL發展到目前應用最為廣泛的CPLD/FPGA(ComplexProgrammableLogicDevice復雜的可編程邏輯器件以及FieldProgrammableGateArray現場可編程門陣列)。1.2.2硬件描述語言硬件描述語言HDL(HardwareDescriptionLanguage)是一種對于數字電路和系統進行性能描述和模擬的語言,即利用高級語言來描述硬件電路的功能、信號連接關系以及各器件間的時序關系。其設計理念是將硬件設計軟件化,即采用軟件的方式來描述硬件電路。數字電路和數字系統設計者利用這種語言來描述自己的設計思想,然后利用電子設計自動化工具進行仿真、綜合,最后利用專用集成電路或可編程邏輯器件來實現其設計功能。1.2.3集成開發環境EDA技術的綜合應用設計離不開EDA軟件的支持。目前比較流行的、主流廠家的EDA集成開發環境有Altera公司的MAX+plusⅡ、QuartusⅡ,Lattice公司的ispDesignExpERT,XiLinx公司的FoundationSeries、ISE/ISE-WebPACKSeries。業界最流行的第三方EDA工具中,邏輯綜合性能最好的是Synplify,仿真功能最強大的是ModelSim。1.2.4實驗室開發環境除了EDA集成開發環境等,EDA實驗中還需要用到其他一些外圍資源,以共同完成完整的EDA設計開發。例如計算機輔助分析軟件MATLAB、印刷電路板PCB設計軟件PROTEL、各類基本信號發生模塊、CPLD/FPGA目標芯片和編程下載電路等。1.3硬件描述語言(HDL)介紹1.3.1AHDL語言1.3.2VerilogHDL語言1.3.3VHDL語言1.3.1AHDL語言AHDL語言(AlteraHHDL)是Altera公司發明的HDL語言,其優點是非常易學易用,學過高級語言的人可以在很短的時間內掌握;其缺點是移植性不好,通常只用于Altera自己的開發系統。1.3.2VerilogHDL語言VerilogHDL語言是在C語言的基礎上發展起來的一種硬件描述語言,它是由GDA(GatewayDesignAutomation)公司的PhilMoorby在1983年末首創的,VerilogHDL的最大特點是和C語言有很多共通的地方,包括語法、書寫習慣和風格等。1.3.3VHDL語言VHDL是VeryHighSpeedIntegratedCircuitHDL(超高速集成電路硬件描述語言)的縮寫,是在ADA語言的基礎上發展起來的硬件描述語言。相對于VerilogHDL而言,VHDL在語法上更嚴謹一些,其在門級電路描述方面不如VerilogHDL,但在系統級抽象描述方面具有很大優勢。VHDL作為一種通用的硬件描述語言,具有以下基本特點:支持結構化和自頂向下的設計方法,這樣非常便于設計的模塊化。設計者從系統整體要求出發,自上而下將系統內容細化,最后將模塊組合完成系統的整體設計。具有多層次描述和仿真系統硬件功能的能力,可以從系統級到門級電路不同層次對數字進行建模和描述,不同的描述還可以混合使用,大大簡化了硬件設計任務,提高了設計效率和可靠性,縮短產品開發周期。是一種工業標準語言,設計者、EDA開發工具的供應商和IC芯片生產商都要遵循這一標準,因此它具有設計與開發環境、具體電路實現工藝以及采用的實現芯片無關的特點,設計成果便于移植、交流和二次開發。另外由于其語法嚴格,是強類型語言,因此設計安全性好,也便于閱讀和修改。既支持傳輸延時也支持慣性延時,不僅可以很好的描述系統和電路的邏輯功能,也可以真實的反映系統和電路的時間特性。可以支持各種不同類型的數字電路和系統的設計。既支持同步電路、也支持異步電路,既支持TTL電路,也支持CMOS電路;既可以采用CPLD芯片實現,也可以采用FPGA芯片實現。1.4EDA的集成開發環境EDA的集成開發環境除了給用戶提供一個硬件描述語言的編輯環境之外,通常還集成了編譯、仿真、下載等功能,用戶可以在集成開發環境中完成整個項目的設計。目前比較流行集成開發環境主要包括Altera公司的QuartusII、Xilinx公司的Foundation和ISE以及Lattice公司的ispDesignEXPERT和ispLEVER。QuartusII集成開發環境1.5使用EDA技術進行數字系統開發1.5.1數字系統的設計模型1.5.2數字系統的設計方法1.5.3使用VHDL語言進行數字系統開發流程1.5.1數字系統的設計模型數字系統指的是交互式的、以離散形式表示的,具有存儲、傳輸、信息處理能力的邏輯子系統的集合。1.5.2數字系統的設計方法數字系統設計的方法有很多,如模塊設計法、自頂向下設計法和自底向上設計法等。而基于EDA技術的設計思路則是采用“自頂向下”(Top-Down)。自頂向下設計方法的優點可以歸納為以下幾點:作為一種模塊化設計方法,自頂向下的設計方法對設計的描述從上到下、從粗略到詳細,符合常規的邏輯思維習慣。對數字系統的設計采用硬件描述語言,使得設計可以在各種集成電路工藝或可編程器件之間移植。自頂向下的設計方法使得高層設計完全獨立于目標器件的結構,在設計的初級階段,設計人員可以擺脫芯片結構的束縛,將精力集中在可以規避傳統設計方法中的再設計風險的環節,縮短了產品的開發周期。自頂向下的設計方法便于對設計任務進行合理分配,通過科學的系統工程管理方法,由多個設計者同時進行設計,通過分工協作完成任務。1.5.3使用VHDL語言進行數字系統開發的流程使用VHDL語言進行數字系統開發設計流程主要包括設計輸入、綜合、仿真、適配、下載、硬件測試等步驟。思考和練習——填空題1、EDA是____的縮寫。2、目前應用最為廣泛的可編程邏輯器件是____和____。3、硬件描述語言HDL(HardwareDescriptionLanguage)是一種____。4、MAX+plusⅡ和QuartusⅡ集成開發環境是____公司的產品。5、VHDL是____的縮寫,是在____語言的基礎上發展起來的硬件描述語言。6、相對于VerilogHDL而言,VHDL在語法上更____一些。7、數字系統指的是交互式的、以離散形式表示的,____的邏輯子系統的集合。8、所謂仿真是指在集成開發環境中對用戶的設計進行____以得到一個預期結果的過程。思考和練習——綜述題1、EDA主要涉及那四個方面的內容?2、硬件描述語言HDL和傳統原理圖設計方法比較有那些優點?3、VHDL語言有哪些基本特點?4、請簡述一種普遍采用的數字系統模型。5、請簡述使用VHDL語言來進行數字系統開發的步驟。第二章QuartusII集成開發環境概論Altera公司的QuartusⅡ集成開發環境根據設計者的需求提供了一個完整的多平臺開發環境,其包含了整個可編程邏輯器件設計階段的所有解決方案,提供了完整的圖形用戶界面可以完成可編程片上系統的整個開發流程的各個階段,包括輸入、綜合、仿真等,在其中設計者可以方便的完成數字系統設計的全過程。本章將介紹如何在QuartusII集成開發環境應用VHDL語言進行數字系統的開發。2.1QuartusII應用基礎2.2在QuartusⅡ集成開發環境中進行VHDL語言開發2.1QuartusII應用基礎2.1.1使用圖形用戶界面2.1.2使用EDA工具設計界面2.1.3使用命令行可執行界面2.1.4QuartusII集成開發環境的應用流程2.1.5QuartusII的常用窗口介紹QuartusII的使用流程:2.1.1QuartusII用戶界面功能描述QuartusII集成開發環境圖形用戶界面的功能描述:2.1.2使用EDA工具設計界面QuartusII集成開發環境能夠在可編程片上系統的開發流程的不同階段使用其他的第三方EDA工具,并可以把這些第三方工具和QuartusII集成開發環境的圖形用戶界面或QuartusII的命令行可執行文件一起使用。2.1.3使用命令行可執行界面QuartusII集成開發環境提供完整的命令行界面解決方案,它允許設計者使用命令行可執行文件和選項完成設計流程的每個階段,使用命令行可執行文件可以降低內存的要求,并可以使用腳本或者標準的命令行選項和命令(包括TCL腳本命令)控制QuartusII集成開發環境和建立Makefile。2.1.4QuartusII集成開發環境的應用流程2.1.5QuartusII的常用窗口介紹2.2在QuartusⅡ集成開發環境中進行VHDL語言開發2.2.1編輯設計文件2.2.2創建工程2.2.3設置工程屬性2.2.4編譯項目2.2.5仿真2.2.6觀察RTL電路2.2.7其他2.2.1編輯設計文件建立一個VHDL語言文件并且編寫對應代碼。新建一個文件夾用于存放項目的相關文件。新建一個VHDL文件。在VHDL文本編輯窗口中輸入VHDL代碼。保存文件。2.2.2創建工程創建一個工程打開工程設置對話框并且設置工程所在的文件夾。將設計文件加入工程。選擇工程的目標芯片。選擇工程的綜合器和仿真器。完成工程設置,檢查工程設置統計。2.2.3設置工程屬性主要是選擇目標芯片、選擇器件的編程配置方式、選擇輸出配置和選擇目標器件閑置引腳的狀態。2.2.4編譯項目編譯并且修改錯誤。QuartusⅡ集成開發環境的編譯器是由一系列處理模塊構成的,這些模塊負責對設計項目的檢錯、邏輯綜合、結構綜合、輸出結果的編輯配置,以及時序分析。2.2.5仿真可以分為功能仿真和時序仿真。功能仿真只測試設計項目的邏輯行為,而時序仿真則既測試邏輯行為,也測試實際器件在最差條件下設計項目真實運行情況。仿真的步驟新建一個波形文件(VectorWaveformFile)。設置合理的仿真時間,包括時間間隔和時間長度。選擇需要觀察的電路節點(輸入引腳、輸出引腳、內部節點等)并且將其添加到波形文件中。編輯輸入信號的波形(激勵信號)。設置仿真器的參數。仿真并且觀察輸出。2.2.6觀察RTL電路RTL電路觀察,RTL級是寄存器傳輸級的簡稱,在RTL圖形觀察器可以看到寄存器級別的生成電路。2.2.7其他操作為了能對設計的數字系統進行硬件測試,還應將系統的輸入輸出信號鎖定在芯片確定的引腳上。將引腳鎖定后應再編譯一次,把引腳信息一同編譯進配置文件中,最后就可以把配置文件下載到目標器件中。當硬件測試完成之后,還必須對配置芯片進行編程,最終完成系統的開發。思考和練習——填空題1、在QuartusII集成開發環境和第三方EDA工具配合使用時,需要使用第三方EDA綜合工具綜合設計工程文件,并生成____文件或____文件。2、ProjectNavigator窗口中的Files面板用于顯示設計項目的____文件和____文件。3、在QuartusII集成開發環境中,圖形編輯器窗口由于可以用于原理圖和結構圖的形式輸入,所以又被稱為____。4、仿真可分為____仿真和____仿真5、RTL是____的簡稱。思考和練習——綜述題1、請簡述使用QuartusII的文本編輯器建立一個VHDL語言文件并且編寫對應代碼的步驟。2、請簡述使用QuartusII創建一個工程的步驟。3、功能仿真和時序仿真的區別是什么?4、請簡述使用QuartusII進行仿真的步驟。第三章VHDL語言基礎概論VHDL語言的應用程序都是由幾個固定的部分組成的,通常來說缺一不可,并且其代碼會具有一些固定的樣式即描述風格。本章以一個使用VHDL語言來實現三態門的簡單實例來介紹VHDL語言程序的一些基礎知識,包括VHDL語言的組成,VHDL語言的實體,VHDL語言的結構體和VHDL語言的描述風格等。3.1VHDL語言的結構3.2VHDL語言的實體3.3VHDL語言的結構體3.4VHDL語言的描述風格3.1VHDL語言程序的結構一個三態門的實例可以看到一個VHDL語言的基礎構成如下:庫(LIBRARY)實體(ENTITY)結構體(ARCHITECTURE)一個完整的VHDL語言描述是以對一個功能元件的完整描述為基礎的。3.2VHDL語言的實體3.2.1實體說明3.2.2實體的類屬說明3.2.3實體的端口說明3.2.1實體說明實體作為一個設計實體的基本組成部分,主要描述了這個設計實體與外部電路的接口,相當于電路圖中一個器件符號。實體說明結構:3.2.2實體的類屬說明類屬表(GENERIC)一般放在實體說明的頭部,用于設計實體和外部環境通信的參數,傳遞靜態信息,特別是用來規定一個實體的端口大小、元件的數量、實體的物理特性如延時等。3.2.3實體的端口說明端口說明(PORT)是對設計實體與外部接口的描述,也可以說是設計實體的外部引腳的名稱,它為實體與外部環境的動態通信提供通道。端口說明的標準調用格式:VHDL語言在IEEE中定義了四種端口模式:IN:輸入。OUT:輸出。INOUT:雙向,輸入輸出。BUFFER:緩沖,其實質也是雙向的,但是只能接受一個驅動源。3.3VHDL語言的結構體結構體作為VHDL語言設計實體另一基本組成部分,一般放在實體說明的后面,主要描述了這個設計實體的內部結構或設計實體的行為,即設計實體的不可視部分,從功能上描述了設計實體。結構體是實體的具體實現,因此一個實體可以有多個結構體,即采用不同的實現方案和結構來實現一個功能模塊或功能器件。3.3VHDL語言的結構體3.3.1結構體的說明語句3.3.2結構體的信號定義3.3.3結構體的功能性描述語句3.3.1結構體的說明語句結構體必須以“ARCHITECTURE結構體名OF實體名IS”開始,以“ENDARCHITECTURE結構體名”結束,標準調用格式如下:3.3.2結構體的信號定義結構體的說明語句用于對結構體內部使用的信號、常數、數據類型、函數、過程和元件等進行定義,加以說明。一個結構體說明語句的示例:3.3.3結構體的功能性描述語句結構體中的功能性描述語句位于“BEGIN”和“ENDARCHITECTURE結構體名”之間,具體描述了結構體的行為及其連接關系,它可以含有5種不同類型的并行語句結構:塊語句。進程語句。子程序調用語句。信號賦值語句。元件例化語句。3.4VHDL語言的描述風格3.4.1行為描述3.4.2數據流描述3.4.3結構描述3.4.4混合描述3.4.1行為描述行為描述(behavioraldescription):如果VHDL語言程序的結構體只描述了所期望電路的功能或稱行為,即電路輸入與輸出間轉換的行為,而沒有包含任何實現這些功能的硬件結構信息,包括硬件電路的連接結構、元件或其他功能單元的層次結構等,這種描述風格稱為行為描述。行為描述是一種高層次的描述方式,設計者只需要關注設計實體即功能單元正確的行為即可,即編程和硬件無關,這種風格更類似于高級編程語言的編程方式。將VHDL語言的行為描述語句轉換為門級描述由VHDL開發工具自動完成,是VHDL綜合器的任務,不同的綜合器對于相同的行為描述,有時綜合出的結果有較大差別。3.4.2數據流描述數據流描述(dataflowdescription):也稱為RTL(寄存器傳輸級)描述方式,它類似于布爾方程,它既表示某種行為,又隱含結構信息,主要指非結構化的并行語句描述。這種描述主要是反映數據經過一定的邏輯運算后在輸入和輸出間的傳遞,可以清楚的看到數據流出的方向、路徑和結果。3.4.3結構描述

結構描述(structuraldescription):結構描述方式主要以元件或已完成的功能模塊為基礎,應用于采用元件例化的VHDL程序設計中。通過描述元件及它們之間的相互連接關系,利用各種簡單或復雜的功能子模塊,就像搭積木式的,將它們層次的互相連接起來以構成一個更為復雜的功能模塊或系統,常用于層次式的設計。結構描述最能提高設計效率,因為它可以將已有的設計成果方便的應用到新設計中去,且結構清晰。結構描述的缺點是程序表示的是電路的結構連接關系,不能直觀的得到設計電路的邏輯功能。3.4.4混合描述混合描述:在實際應用中,通常根據設計實體的資源及性能要求,靈活的選用上述三種描述方式的組合即為混合描述。思考和練習——填空題1、一個標準的VHDL語言程序由____、____和____組成。2、個完整的VHDL語言描述是以對一個____的完整描述為基礎的3、實體相當于電路圖中一個____。4、端口說明(PORT)是對設計實體與外部接口的描述,也可以說是設計實體的____的名稱,它為實體與外部環境的動態通信提供通道5、緩沖(BUFFER)端口描述模式和INOUT雙向模式的區別在于只能接受____,不允許____。6、VHDL語言的結構體的這些子結構互相之間是____的。7、將VHDL語言的行為描述語句轉換為門級描述由VHDL開發工具自動完成,是VHDL語言____的任務。8、數據流描述也稱為____描述方式,它類似于____,它既表示某種行為,又隱含結構信息,主要指非結構化的并行語句描述。9、在結構描述中,元件間的連接是通過定義的____來實現的。10、結構描述的缺點是程序表示的是電路的____,不能直觀的得到設計電路的____。思考和練習——綜述題1、寫出實體的結構。2、在IEEE庫中定義了哪四種VHDL語言的端口模式?3、寫出結構體的結構。4、寫出結構體的功能性描述語句的5種子結構。5、VHDL語言有哪四種描述風格?第四章VHDL語言的基本要素概論VHDL語言也有自己的文字規則,作為編程語句的基本單元,VHDL語言的語言要素反映了其最重要的語言特點,能夠正確理解VHDL語言的文字規則和熟練掌握VHDL語言要素的基本含義及用法,是利用VHDL硬件描述語言進行數字系統設計的基礎4.1VHDL語言文字的命名規范4.2VHDL語言的標識符4.3VHDL語言的下標和下標段名4.4VHDL語言的注釋4.5VHDL語言的數據對象4.6VHDL語言的數據類型4.7VHDL語言的操作符4.1VHDL語言文字的命名規范4.1.1數值型文字4.1.2字符串型文字4.1.1數值型文字數值型文字主要有如下幾種表達方式:整數型文字,如:1,123,518E2,12_345_678。實數型文字,如:12.3,6.5E-2,12_23.45_32。以數字基數表示的文字,如:10#158#2。物理量文字,如:60s,1km。4.1.2字符串型文字字符是用單引號引起來的ASCII字符,既可以是字符,也可以是符號或字母,如:‘A’、‘c’、‘$’、‘*’等。字符串是一維的字符數組,必須用雙引號括起來。在VHDL中,字符串分兩中類型,分別是文字字符串和數位字符串:文字字符串:這是用雙引號引起來的一串文字。數位字符串:也稱位矢量,是預定義的數據類型Bit的一維數組,所代表的是二進制、八進制或十六進制的數組。它們的位矢量的長度即為等值的二進制數的位數。4.2VHDL語言的標識符4.2.1短標識符4.2.2擴展標識符4.2.1短標識符在VHDL語言中,短標識符的書寫規范用于規定VHDL語言中符號書寫的一般規則。其必須遵循以下規則:有效字符:英文字母('A'-'Z','a'-'z')、數字('0'-'9')及下劃線“_”。必須以英文字母打頭。使用下劃線只能是單一的下劃線,不能下劃線相鄰,且它的前后都必須有英文字母或數字。短標識符的字母不區分大小寫。4.2.2擴展標識符在‘VHDL語言的’93標準中,用戶還可以使用擴展標識符,其語法規則如下:擴展標識符以反斜杠來界定,且反斜杠之間的文字可以用數字打頭允許包含圖形符號和空格符,但是沒有任何意義。反斜杠之間的文字可以和VHDL的保留字相同。擴展標識符中允許多個下劃線相鄰。擴展標識符區分大小寫。擴展標識符與基本標識符不同。擴展標識符中如果有一個反斜杠,則用相鄰的兩個反斜杠來代替它。4.3VHDL語言的下標和下標段名下標用于指示數組型變量或信號的某一個元素,下標語句的書寫格式一般是:下標段名用于指示數組型變量或信號的某一段元素。下標段名語句的書寫格式一般是:4.4VHDL語言的注釋為了VHDL語言程序的可讀性,可以在程序中添加注釋行,VHDL語言中的注釋以字符“--”標識到本行末尾的文字。注釋的內容不參加程序編譯,僅僅為了對程序進行說明和解釋。4.5VHDL語言的數據對象4.5.1常量4.5.2變量4.5.3信號4.5.4文件4.5.1常量常量是設計者為了使設計實體中的常數更容易閱讀和修改而定義的一種數據對象,如模塊中需要多次使用某一個固定值,就可以定義一個常量,當設計者想改變這個固定值時,只需要修改常量定義這一處,然后重新編譯程序即可方便的改變設計實體的硬件結構。要聲明一個常量,應該使用關鍵字CONSTANT,其標準定義格式如下:定義過的常量使用中需注意如下規則:常量必須在程序包、實體、結構體、塊、子程序或進程的說明區域定義。在程序包中定義的常量可以按照前面的格式進行定義,也可以先不設定具體數值,而在程序包體中設定。程序包中定義的常量可以在調用此程序包的所有設計實體(包括實體和結構體)中使用,具有最大的全局特征。4.5.2變量變量是一個在程序中數值可以改變的數據對象,主要用于進程和子程序中,進行暫時信息的存儲,它是一個局部量,對變量的賦值是立即生效的。要聲明一個變量,應該使用關鍵字VARIABLE,其標準定義格式如下:4.5.3信號信號是VHDL語言特有的數據對象,它更多的對應于硬件結構,主要應用于實體、結構體或設計實體之間的信息交流,相當于原理圖或電路板上的連接元件的導線。信號一般在程序包、實體和結構體中說明使用,不能在進程和子程序中定義信號。要聲明一個信號,應該使用關鍵字SIGNAL,其標準定義格式如下:定義過的信號在使用中需要注意以下規則:與變量不同,信號具有全局性的特征,在程序包中定義的信號對于所有調用此程序包的設計實體都是有效的或稱可視的,可以直接使用。在實體中定義的信號,對于此實體對應的所有的結構體中都是可視的。在結構體中定義的信號對于整個結構體所有子結構是可視的。對信號進行賦初值使用符號“:=”,這種賦值沒有延時。在信號使用時的賦值語句中使用符號“<=”,這種賦值方式允許產生延時,延時僅僅在功能仿真中有意義。在同一進程中,允許對同一信號多次賦值,這種情況下只有最后一次賦值語句有效,進行賦值操作。4.5.4文件文件是VHDL’93標準中通過的一種數據對象,它是傳輸大量數據的數據對象,實際上是變量對象的一些集合。文件通常使用FILE關鍵字來定義,其標準定義格式如下:4.6VHDL語言的數據類型4.6.1VHDL語言數據類型的按性質分類4.6.2VHDL語言數據類型的按數據來源分類4.6.3VHDL語言的數據類型介紹4.6.4VHDL語言的數據類型轉換4.6.1VHDL語言數據類型的性質分類VHDL語言支持的數據類型按照性質可以分為4大類,其中標量類型又可以分為4小類:標量類型(ScalarType)實數類型。整數類型。布爾類型。物理類型。復合類型(CompositeType)存取類型(AccessType)文件類型(FilesType)4.6.2VHDL語言數據類型的按數據來源分類VHDL語言的數據類型按照數據來源來分,可以分為VHDL語言預定義的標準數據類型和用戶自定義的數據類型。4.6.3VHDL語言的數據類型介紹VHDL語言標準以及IEEE庫中預定義的數據類型包括:整數類型(INTEGER)。實數類型(REAL)。位類型(BIT)。位矢量類型(BIT_VECTOR)。字符類型(CHARACTER)。字符串類型(STRING)。布爾類型(BOOLEAN)。時間類型(TIME)。錯誤等級類型(SEVERITYLEVEL)。標準邏輯位類型(STD_LOGIC)。標準邏輯位矢量類型(STD_LOGIC_VECTOR)。用戶可以自行定義的數據類型包括:枚舉類型(ENUMERATED)、數組類型(ARRAY)記錄類型(RECODE)存取類型(ACESS)文件類型(FILE)整數類型、實數類型的一些子集或子類型。整數類型的對象與普通代數中的算術整數類似,通常所有預先定義的算術函數如加、減、乘、除都適用于整數類型,VHDL語言中預定義的整數范圍為-(231-1)到(231-1)。整數不能被看做矢量進行按位操作。VARIABLEa:INTERGER:=-27;SIGNALi0:INTERGERRANGE0TO255;實數類型也稱為浮點類型(FLOATPOINT),其定義的數據對象與普通代數中的實數類似,預定義的實數的取值范圍為-1.0E38到+1.0E38。VHDL綜合器不支持實數類型,因為實數類型的硬件實現非常復雜。在綜合中將實數轉換成相應大小的整數,然后將正整數編碼為二進制原碼,負整數編碼為二進制補碼。VARIABLEa:REAL:=-3.264;SIGNALi1:REALRANGE-2.5TO2.5;位類型實際上是一個二值枚舉型數據類型,只有兩個可能的取值:0和1,用于表示邏輯0和邏輯1。位類型支持邏輯運算,運算結果仍然是位類型。VARIABLEa,b,c:BIT;VARIABLEq:BIT;位矢量是基于位類型的數據類型,它是一個由位類型數據元素構成的數組,在使用時要注明數組長度和方向。VARIABLEa:BIT_VECTOR(3DOWNTO0);標準邏輯位類型是對標準位數據類型(BIT)的擴展,為了與實際數字系統可能出現的邏輯狀態相對應,共定義了9種取值:U(未初始化的)、X(強未知的)、0(強0)、1(強1)、Z(高阻態)、W(弱未知的)、L(弱0)、H(弱1)、-(忽略)。SIGNALa:STD_LOGIC;標準邏輯位矢量是基于標準邏輯位類型的數據類型,它是一個由標準邏輯位類型數據元素構成的數組,在使用時要注明數組長度和方向。SIGNALb:STD_LOGIC_VECTOR(0TO7);字符類型也是一種枚舉值,一般用單引號引起來并且區分大小寫。VARIABLEtmp:CHARACTER:='A';字符串類型是由字符類型構成的數組,字符串一般用雙引號引起來。VARIABLEstr1:STRING(0TO3):="howa";布爾類型和位類型類似,實際上是一個二值枚舉型數據類型,有兩個可能的取值:TRUE(真)和FALSE(假)。VHDL語言中唯一預定義的物理類型就是時間類型。物理類型常用于測量,有相應的量綱和數值。CONSTANTt1:TIME:=20ns;其他類型的物理量如距離、電壓、電流等需要設計者預先定義后才能使用,使用規范和時間類型一樣。物理類型定義格式如下:錯誤等級類型是一種特殊的數據類型,有四種可能的取值:NOTE(注意)、WARNING(警告)、ERROR(錯誤)和FAILURE(失敗),常用于斷言語句的報告中來指示系統的工作狀態。ASSERT(ERROR_FLAG=‘1’)REPORT“Therewasanerror.”存取類型實際上是指針類型或稱尋址類型。VHDL語言標準中定義了一個存取類型LINE,只有變量才能被聲明為存取類型,只能用于仿真而不能用于綜合。文件類型所聲明的對象是一個文件,在VHDL’93標準中定義的文件操作函數有:FILE_OPEN(f,fname,fmode)。FILE_OPEN(status,f,fname,fmode)。FILE_CLOSE(f)、READ(f,object)。WRITE(f,object)。ENDFILE(f)。枚舉類型也是VHDL語言中一種特殊的數據類型,用符號來代替數字的數據類型,是可以由用戶自行定義的數據類型。數組類型是將相同類型的數據集合在一起構成的新的復合數據類型。它可以是一維的,如數字和字符列表,也可以是多維的,如數值表格,但是多維數組不能生成邏輯電路,只能用于生成仿真圖形及硬件的抽象模型。記錄類型是將不同類型的數據集合在一起構成的新的復合數據類型。記錄中的各個元素的數據類型可以是基本類型,也可以是其他復合類型,包括已定義好的記錄類型。其他類型:在VHDL語言IEEE庫的程序包STD_LOGIC_SIGNED、STD_LOGIC_UNSIGNED和STD_LOGIC_ARITH中還預定義了無符號數、有符號數、小整型等數據類型及與這些數據類型相對應的算術運算操作符等,在使用前必須聲明對應的程序包。4.6.4VHDL語言的數據類型轉換VHDL語言是一種強類型語言,對于數據類型要求非常嚴格,不同數據類型的數據之間不能進行直接運算或代入賦值等操作,需要對數據對象的數據類型進行轉換。VHDL語言的類型轉換方法包括了用類型標記實現類型轉化和用類型轉換函數來實現類型轉換兩種。4.7VHDL語言的操作符4.7.1VHDL語言的操作符種類和優先級4.7.2VHDL語言的算術操作符4.7.3VHDL語言的關系操作符4.7.4VHDL語言的邏輯操作符4.7.5VHDL語言的重載操作符4.7.1VHDL語言的操作符種類和優先級VHDL語言中表達式與其他編程語言一樣,都是由運算符和各種運算對象連接而成的式子。其中運算符也稱為操作符,運算對象也稱為操作數。VHDL語言中主要有3類運算符:算術運算符(ARITHMETICOPERATOR)關系運算符(RELATIONOPERATOR)邏輯運算符(LOGICOPERATOR)4.7.2VHDL語言的算術操作符VHDL中共有4種算術操作符,其分別說明如下:求和操作符(ADDINGOPERATORS),包括:“+”(加)、“-”(減)以及“&”(并置運算符)。求積操作符(MULTIPLYINGOPERATORS),包括:“*”(算術乘)、“/”(算術除)、“MOD”(取模)以及“REM”(取余)運算符。符號操作符(SIGNOPERATORS),包括:“+”(正號)和“-”(負號)運算符。其它操作符如指數運算符“**”、絕對值運算符“ABS”及移位運算符等。4.7.3VHDL語言的關系操作符VHDL中共有6種關系操作符:“=”(等于)、“/=”(不等于)、“<”(小于)、“<=”(小于或等于)、“>”(大于)和“>=”(大于或等于)。關系操作符用于對兩個具有相同數據類型的數據對象進行比較運算,關系運算表達式的結果數據類型為布爾類型,即只有TURE和FALSE兩種結果。4.7.4VHDL語言的邏輯操作符VHDL共有7種邏輯運算符:AND(邏輯與)、OR(邏輯或)、NAND(邏輯與非)、NOR(邏輯或非)、XOR(異或)、XNOR(同或)和NOT(邏輯非)。邏輯運算符的功能就是對操作數進行邏輯運算。4.7.5VHDL語言的重載操作符如果將以上介紹的操作符稱為基本操作符,則重載操作符可以認為是用戶定義的操作符。VHDL允許用戶對原有的基本操作符重新定義,賦予新的含義和功能,從而建立一種新的操作符,這就是重載操作符。定義這種操作符的函數稱為重載函數。事實上,在程序包STD_LOGIC_UNSIGNED中已定義了多種可供不同數據類型間操作的算符重載函數。思考和練習——填空題1、VHDL語言的文字(Literal)主要包括____和____。2、在VHDL語言的以數字基數表示的文字中,十進制計數的1582的表示方法是____。3、在數位字符串中,B為____基數符號;O為____基數符號;X為____基數符號。4、下標用于指示____變量或信號的某一個元素。5、VHDL語言的注釋以____來表示。6、VHDL語言中主要有4類基本的數據對象:____、____、____和____。7、在對信號進行賦初值時,使用____表示沒有延時,使用____表示有延時。8、VHDL是一種強類型語言,要求每一個數據對象必須具有確定的____的數據類型,而且只有____相同的量才能互相傳遞和作用。9、VHDL語言的數據類型按照數據來源來分,可以分為VHDL語言預定義的____和____類型。10、位類型實際上是一個二值枚舉型數據類型,只有兩個可能的取值:____,用于表示____和____。11、標準邏輯位類型是在IEEE的____程序包中定義的。12、布爾類型和位類型類似,實際上是一個二值枚舉型數據類型,有兩個可能的取值:____和____。13、VHDL語言中主要有4類操作符:____、____、____和____。思考和練習——綜述題1、VHDL語言的數字型文字主要有哪幾種表達方式,并且舉例。2、VHDL語言標識符有哪些書寫規范?3、在VHDL語言中定義常量需要符合那些規則?4、定義過的信號在使用過程中需要注意哪些規則?第五章VHDL語言的順序描述語句概論從執行順序上劃分,VHDL語言可以分為順序描述語句(SequentialStatements)和并行描述語句(ConcurrentStatements)兩大類,前者在執行過程中是按照書寫順序依次執行的,而后者則是在同一時間同步執行的,在本章將詳細地介紹順序描述語句,包括其特點和分類以及賦值語句、代入語句和流程控制語句等順序描述語句的使用方法。5.1順序描述語句的特點和分類5.2賦值語句介紹5.3代入語句介紹5.4賦值語句和代入語句進階5.5流程控制語句介紹5.6WAIT語句介紹5.7空操作語句介紹5.8報告語句介紹5.9斷言語句介紹5.10其他語句5.1順序描述語句的特點和分類順序描述語句是相對于并行語句而言的,其最大的特點是:每一條語句在行為仿真中的順序與他們在代碼中的書寫順序相同,且只出現在進程或者子程序(包括過程和函數)中。VHDL語言中的順序描述語句主要包括:賦值語句(變量賦值語句)、代入語句(信號賦值語句)、流程控制語句、等待語句、子程序調用語句、返回語句和空操作語句等。5.2賦值語句賦值語句用于將一個值或者一個表達式的運算結果傳遞給變量或者變量數組,其標準格式如下:目的變量<=表達式;temp0:=cvolt;--變量直接賦值temp1:=(cvolt+1.8)*ccurrent;--變量表達式賦值5.3代入語句代入語句和賦值語句類似,用于將一個值或者一個表達式的運算結果傳遞給信號或者信號數組,所以又被稱為信號賦值語句,其標準調用格式如下:目的信號量<=信號量表達式;temp4<=(cORd)NAND(eORf);temp5<=aXORbXORcXORdXOReXORf;5.4賦值語句和代入語句進階5.4.1賦值語句和代入語句的區別5.4.2賦值語句和代入語句的賦值對象5.4.1賦值語句和代入語句的區別賦值語句與代入語句的區別在于,變量具有局部特征,它的有效性只局限于所定義的一個進程中,或一個子程序中,它是一個局部的暫時性數據對象(在某些情況下)。對于它的賦值是立即發生的(假設進程已啟動),是一種時間延遲為零的賦值行為。信號則不同,信號具有全局性特征,它不但可以作為一個設計實體內部各單元之間數據傳送的載體,而且可以與其它的實體進行通信(端口本質上也是一種信號)。信號的賦值并不是立即發生的。它發生在一個進程結束時。當在同一進程中,同一信號目標有多個賦值源時,信號賦值對象只能被最后一個賦值源賦值,前面的任何賦值都不會改變賦值對象的值。5.4.2賦值語句和代入語句的賦值對象賦值和代入語句的賦值目標(也稱賦值對象),主要有四種類型:標識符賦值目標:以簡單的標識符作為被賦值的信號或變量名。數組單元素賦值目標:以數組中的單個元素為被賦值的信號或變量名。段下標元素賦值目標:以段中下標元素為被賦值的信號或變量名。集合塊賦值目標:以一個集合的方式來賦值,有位置關聯賦值方式和名字關聯賦值方式兩種方式。5.5流程控制語句5.5.1IF語句介紹5.5.2CASE語句介紹5.5.3LOOP語句介紹5.5.4NEXT語句介紹5.5.5EXIT語句5.5.1IF語句介紹IF語句:VHDL語言中的IF語句和其他高級語言中的IF語句一樣,是選擇分支語句,用來判斷給定的條件是否滿足,并根據判斷結果的真或假來決定執行哪個程序段。一般有三種形式的IF語句:單IF語句。二選擇的IF語句。多選擇的IF語句。5.5.2CASE語句介紹CASE語句:其是VHDL語言的一種分支控制語句,它根據滿足的條件直接選擇多項順序描述語句中的一項執行,可以用來描述總線或編碼、譯碼的行為。CASE語句在功能上與IF語句十分相似,但可讀性比IF語句要強得多,用戶可以很容易地找到條件表達式和順序執行語句的對應關系。CASE語句中的條件表達式可以有如下4種表示形式:單個普通數值,如7。數值選擇范圍,如(1TO3),表示取值為1~3這個連續的取值范圍。并列數值,如1|3,表示多個值相或,或者取1、或者取3。混合方式,即上述三種方式的混合形式。在使用CASE語句需注意以下幾點:條件句中的選擇值必在表達式的取值范圍內。除非所有條件句中的選擇值能完整覆蓋CASE語句中表達式的取值,否則最末一個條件句中的選擇必須用關鍵字OTHERS表示,它代表已給的所有條件句中未能列出的其它可能的取值。OTHERS只能出現一次,且只能作為最后一種條件取值使用。CASE語句中每一條件句的選擇值只能出現一次,不能有相同選擇值的條件語句出現。CASE語句執行中必須選中,且只能選中所列條件語句中的一條。這表明CASE語句中至少要包含一個條件語句。幾個CASE語句的常見錯誤5.5.3LOOP語句介紹LOOP語句:其是循環語句的一種,可以使所包含的一組順序描述語句被循環執行,其執行次數由設定的循環參數決定,包括如下三種使用方法:單個LOOP語句。FOR_LOOP語句。WHILE_LOOP語句。5.5.4NEXT語句介紹NEXT語句:主要在FOR_LOOP和WHILE_LOOP循環語句中進行有條件的或無條件的轉向控制,用于跳出本次循環,而執行下一次新的循環,是一種循環內部的控制語句。5.5.5EXIT語句介紹EXIT語句:主要用于在FOR_LOOP和WHILE_LOOP循環語句中跳出循環,即提前結束循環,接著執行循環后面的語句,它和NEXT語句一樣,也是一種循環內部的控制語句。5.6WAIT語句介紹5.6.1WAIT語句的無限等待5.6.2WAIT語句的條件滿足5.6.3WAITUNTIL語句5.6.4WAITFOR語句5.6.5多條件WAIT語句5.6.1WAIT語句的無限等待WAIT語句:一旦進程在執行中遇到WAIT語句,運行的程序將被掛起,直到滿足此語句設置的結束掛起條件后,方才重新開始執行進程中的程序。在已列出敏感表的進程中不能使用任何形式的WAIT語句。5.6.2WAIT語句的條件滿足WAIT等待語句可以設置成4種不同的條件:無限等待、時間到、條件滿足、敏感信號發生變化。這些條件可以并列使用,其標準調用格式說明如下:WAIT;----無限等待WAITON信號;----信號滿足WAITUNTIL條件表達式;----時間到WAITFOR信號表;----敏感信號發生變化5.6.3WAITUNTIL語句“WAITUNTIL”語句又稱為條件等待語句,后面跟的表達式是條件表達式,也即布爾表達式。“WAITUNTIL”語句表明,當進程執行到該語句時就被掛起,并運算該條件表達式,直到表達式的值為TRUE時,進程才結束掛起狀態,再繼續開始執行WAITUNTIL語句后面的語句。5.6.4WAITFOR語句WAITFOR語句后面的時間表達式是一個物理量,它即表示需要等待的時間,當進程執行到該等待語句時,進程就被掛起,直到指定的等待時間到,進程再繼續開始執行WAITFOR語句后面的語句。5.6.5多條件WAIT語句前面介紹的四種形式的WAIT語句也能同時使用,構成多條件WAIT語句。當多個條件同時出現時,只要其中的一個成立,則終止掛起5.8報告語句介紹REPORT語句:用于程序運行過程中向用編程人員報告程序的運行狀態。REPORT語句不增加硬件的任何負擔,僅僅在仿真時提高程序的可讀性。REPORT語句提供了4級錯誤等級:FAILURE(失敗):用于發生在仿真必須立即停止出現致命錯誤的時候。ERROR(錯誤):用在仿真過程已經無法繼續執行的時候。WARNING(警告):用于非正常的情況,此時結果可能是未知的。NOTE(注意):用于在仿真時傳遞信息。

5.7空操作語句介紹NULL語句:又被稱為空操作語句,其執行一個空操作,或者為對應的信號賦一個空值,其功能是使邏輯運行流程跨入下一步語句并執行5.9斷言語句(ASSERT)斷言語句:和REPORT語句十分相似,區別是ASSERT語句是有條件的。ASSERT語句也具有以下四種錯誤等級:FAILURE(失敗)、ERROR(錯誤)、WARNING(警告)、NOTE(注意)。5.10其他語句VHDL語言還提供了子程序調用、過程調用、函數調用等其他和子模塊相關的順序描述語句。思考和練習——填空題1、從執行順序上劃分,VHDL語言可以分為____和____兩大類,前者在執行過程中是按照書寫順序依次執行的,而后者則是在同一時間同步執行的,2、順序描述語句是相對于并行語句而言的,其只出現在____或者____中。3、標識符賦值目標是以____作為被賦值的信號或變量名4、流程控制語句又稱為____,其特點是通過____,決定是否執行或者重復執行或者跳過一條或幾條語句。5、VHDL語言的IF語句是____語句。6、CASE語句根據滿足的條件直接選擇____順序描述語句中的____執行,可以用來描述總線或編碼、譯碼的行為。7、LOOP語句是循環語句的一種,可以使所包含的一組順序描述語句被循環執行,其執行次數由設定的____決定。8、由于進程的執行是由敏感信號列表來觸發的,因此VHDL語言規定在已列出敏感表的進程中不能使用任何形式的____。9、____語句用于程序運行過程中向用編程人員報告程序的運行狀態。10、REPORT語句提供了4級出錯等級,包括____、____、____、____。思考和練習——綜述題1、簡述賦值語句和代入語句的主要區別。2、VHDL語言的流程控制語句包括哪幾種?3、使用CASE語句的時候有那些注意事項?4、寫出WAIT語句的4中不同條件下的標準調用格式。第六章VHDL語言的并行描述語句概論在實際的數字系統中,很多操作是互相獨立,可以并行(在同一時間執行)的;在VHDL語言中使用并行描述語言來對這些操作進實現,這些并行語句可以是結構性的,也可以是行為性的,其是硬件描述語言特有的,其在系統的某一時刻同時執行,不因編程的語句順序而影響執行的先后。本章介紹了VHDL語言中的并行描述語句的使用方法,包括并發信號代入語句(ConcurrentSignalAssignment)、進程語句(PROCESS)、元件調用語句(COMPONENT)、端口映射語句(PORTMAP)等。6.1并發信號代入語句6.2進程語句6.3元件調用語句6.4端口映射語句6.5類屬參數傳遞語句6.6塊語句6.7過程語句6.8函數語句6.9返回語句6.10生成語句6.11延時語句6.1并發信號代入語句6.1.1并發信號代入語句基礎6.1.2條件信號代入語句6.1.3選擇信號代入語句6.1.1并發信號代入語句基礎并發信號代入語句主要是強調該語句的并發性,其在仿真時刻同時運行,其表示可編程邏輯器件上的各個獨立的硬件模塊的各自獨立操作,包括了基礎并發信號代入語句、條件信號代入語句和選擇信號代入語句。基礎并發信號代入語句:q0<=data1+data2;--描述加法器行為q1<=data3*data4;--描述乘法器行為等效于6.1.1條件信號代入語句條件信號代入語句是一個與IF語句功能類似的分支型并發語句,可用于進程之外。它可以根據不同條件把不同的表達式值代入目的信號量。6.1.2選擇信號代入語句選擇信號代入語句是一個與CASE語句功能類似的分支控制型并發語句,可用于進程之外。它對選擇條件表達式進行測試,當選擇條件表達式取值不同時,將把不同的信號量表達式值代入目的信號量。6.2進程語句進程(PROCESS)把整個系統分成若干個功能獨立的進程來描述,也即一個構造體中可以包含多個進程語句,各個進程語句是并行執行的,進程之間通過信號量來通信。6.2進程語句進程語句不是一條單純的程序語句,而是一個程序結構,該程序結構起始于進程的標識符,終止于“ENDPROCESS”。進程程序段描述了一個電路模塊的工作過程,該電路模塊可以反復執行,靠敏感信號量列表來驅動。進程語句中的信號量列表也稱為該進程的敏感信號列表,進程就是通過檢測這些敏感信號的變化來觸發、啟動進程的執行。當任意一個敏感信號量發生變化時,進程就會啟動,并把進程所包含的程序順序執行一遍,然后又回到進程的開始處,等待敏感信號列表的變化,準備再一次啟動進程。在進程語句中可以定義變量(VARIABLE)而不能定義信號量(SIGNAL),變量說明等效于開辟了一個存儲空間,在進程中對變量的讀寫等效于對這個存儲空間的訪問。在VHDL語言里,進程結構中的程序語句是按順序一條一條往下執行的,進程語句中的敏感信號列表必須是若干個信號量,不能是變量,它們可以觸發、啟動該進程,如果進程中沒有敏感信號列表,那么在該進程的程序中必須要用WAIT語句來描述進程的啟動信號。進程語句中不能同時包含敏感信號列表和WAIT語句。在同一個構造體中可以有多個進程存在,而且各個進程之間可以一邊通信,一邊并行地同步執行。6.3元件調用語句元件調用語句(COMPONENT)是構造體的結構描述中的一個基本的描述語句。該語句指定了本構造體中所調用的是元件庫中哪一個現成的邏輯描述模塊。GENERIC語句進行元件的參數說明。PORT語句進行元件的端口說明。GENERIC說明語句通常用于該元件的可變參數的代入或賦值,而PORT說明語句則描述了該元件的輸入和輸出端COMPONENT語句可以在ARCHITECTURE、PACKAGE和BLOCK語句結構的說明部分使用。6.4端口映射語句端口映射語句(PORTMAP)也稱為元件例化語句(COMPONENTINSTANT),其把庫中現成元件的端口信號映射成高層次設計電路中的信號。端口映射有兩種方法,端口位置映射和端口名稱映射。

端口位置映射:在下一層的元件的端口說明中,其信號列表的書寫順序位置和PORTMAP語句中指定的實際信號列表的書寫順序位置是一一對應的。端口名稱映射:把已經存在于庫中的下一層的元件的端口名稱賦予程序設計中的模塊的信號名。6.5類屬參數傳遞語句類屬參數傳遞語句(GENERIC)常常用于不同層次設計模塊之間的信息傳遞和參數的傳遞,可以用于位矢量的長度、數組的長度、器件的延時時間等參數的傳遞。類屬語句所涉及的均為整數類型,其他數據類型不能使用,也不能進行邏輯綜合,所以該語句主要用于構造體的行為描述方式。6.6塊語句6.6.1普通塊語句6.6.2衛式塊語句6.6.1普通塊語句塊語句也不是一條單純的程序語句,而是一個程序結構,該程序結構起始于塊的標識符BLOCK,終止于“ENDBLOCK”,其標準調用格式如下:6.6.2衛式塊語句衛式塊語句:可以對塊的執行進行控制,只有當條件成立時塊語句才被執行,其標準調用格式如下:6.7過程語句6.7.1子程序和包集合6.7.2過程語句的定義和使用6.7.3并發過程調用語句6.7.1子程序和包集合在VHDL語言程序中,子程序有兩種:一是過程(PROCEDURE),二是函數(FUNCTION)。子程序就是在主程序調用它之后,能夠把處理結果返回主程序的程序模塊,VHDL語言中的子程序概念和其它高級語言中的子程序概念相當,可以被反復調用6.7.2過程語句的定義與使用過程語句(PROCEDURE)結構相當于其他高級語言中的子程序,其標準調用格式如下:6.7.3并發過程調用語句并發過程調用語句:如果過程是在一個進程中被調用的,此時它屬于順序執行語句,如果調用出現在進程之外、構造體之內,這樣的過程調用就稱為并發過程調用語句(ConcurrentProcedureCall)。6.8函數語句函數(FUNCTION)語句結構也是子程序的一種,其與過程的最主要區別是可以帶一個返回值,其標準調用個如下:6.9返回語句返回語句:返回語句(RETURN)用于結束一段子程序并返回主程序,其標準調用格式說明如下:返回語句用于函數和過程中來結束最內層的函數或者過程的執行,過程中的返回語句必須是無條件的,而函數中的返回語句必須有表達式。6.10生成語句生成語句(GENERATE)用來產生多個相同的電路結構,它的典型的應用場合是生成存儲器陣列和寄存器陣列等,另一種應用是用于仿真狀態的編譯。生成語句有兩種結構形式:“FOR-GENERATE”結構形式。“IF-GENERATE”結構形式。在“FOR-GENERATE”結構語句中所列舉的都是并發處理語句,其標準調用格式如下:“IF-GENERATE”語句:通常為了解決不規則電路的統一描述方法,其標準調用格式如下:6.11延時語句延時語句:用于給信號量一個延時,可以分為慣性延時和傳輸延時。慣性延時的標準調用格式:傳輸延時的標準調用格式:思考和練習——填空題1、VHDL語言的并行語句可以是____的,也可以是____的,其是硬件描述語言特有的,其在系統的某一時刻同時執行,不因編程的語句順序而影響執行的先后。2、條件信號代入語句是不能嵌套的,不能把自身值代入目的信號自身,所以不能用條件信號代入語句設計____。3、選擇信號代入語句的并發操作可以在進程外實現進程內的____語句的功能。4、PROCESS語句不是一條單純的程序語句,而是一個程序結構,該程序結構起始于進程的標識符,終止于____。5、在進程語句中可以定義____而不能定義____,其等效于開辟了一個____,6、如果進程中既沒有敏感信號列表,又沒有WAIT語句,那么該進程將陷入____中。7、元件調用語句(COMPONENT)語句的結構中,____語句進行元件的參數說明,____語句進行元件的端口說明8、端口映射有兩種方法:____和____。9、塊(BLOCK)語句可以分為____和____。10、在VHDL語言程序中,子程序有兩種:一是____,二是____。11、過程語句和函數語句的最主要的區別是函數語句可以有____。12、在VHDL語言中信號的延遲分兩種模型,____和____。思考和練習——綜述題1、在一個構造體中塊結構和進程結構的區別是什么?2、簡述什么叫并發過程調用語句以及其使用要點。第七章使用VHDL語言來設計組合邏輯電路概論常見的數字系統可以分組合邏輯電路和時序邏輯電路兩大部分,組合邏輯電路是指在任何時刻,輸出狀態只決定于同一時刻各輸入狀態的組合,而與電路以前狀態無關,而與其他時間的狀態無關的電路,本章將詳細介紹使用VHDL語言來設計組合邏輯電路的方法。7.1組合邏輯電路設計基礎7.2組合邏輯的基本電路設計7.3譯碼器設計7.4編碼器設計7.5數據選擇器設計7.6比較器設計7.7加法器設計7.8減法器設計7.9乘法器設計7.10奇偶檢驗電路設計7.11其他邏輯電路設計7.1組合邏輯電路設計基礎7.1.1邏輯代數基礎7.1.2邏輯函數的表示方法7.1.3邏輯代數的定理和規則7.1.4組合邏輯電路的設計過程7.1.5組合邏輯電路中的競爭和冒險7.1.6組合邏輯電路的設計模式方法7.1.1邏輯代數基礎邏輯代數又稱布爾代數,是19世紀英國數學家布爾首先提出來的,是研究數字邏輯電路的基本工具和理論基礎。邏輯代數是用來處理邏輯運算的代數。參與邏輯運算的變量稱為邏輯變量,它一般只有0、1兩種取值,稱為“邏輯0”和“邏輯1”。邏輯代數中,最基本的邏輯運算是“與”、“或”、“非”三種。7.1.2邏輯函數的表示方法邏輯函數(logicalfunction)是數字電路的特點及描述工具,其輸入、輸出量是高、低電平,可以用二元常量(0,1)來表示,輸入量和輸出量之間的關系是一種邏輯上的因果關系,數字電路可以用邏輯函數的的數學工具來描述。邏輯函數的表示方法有多種:如邏輯表達式、真值表、邏輯圖、波形圖等。7.1.3邏輯代數的定理和規則基本定律代入規則:任何一個含有某變量的邏輯等式,如果將等式中所有出現該變量的位置均代之以一個邏輯函數,則等式仍然成立。反演規則:任何一個邏輯函數式F,如果將式中所有的“·”變為“+”,“+”變為“·”,“0”變為“1”,“1”變為“0”,“原變量”變為“反變量”,“反變量”變為“原變量”,運算順序不變,則可以得到函數F的反函數。對偶規則:任何一個邏輯函數式F,如果將式中所有的“·”變為“+”,“+”變為“·”,“0”變為“1”,“1”變為“0”,而所有的變量和運算順序不變,所得到的新的邏輯函數稱為F的對偶式,用Fd來表示。7.1.4組合邏輯電路設計過程組合邏輯電路的分析:根據已知的邏輯電路,找到輸入、輸出信號之間的關系,進而判斷電路的邏輯功能。組合邏輯電路的綜合是組合邏輯電路分析的逆過程,其根據預定的已知的邏輯功能要求,設計出能夠實現此邏輯功能的的邏輯電路圖。7.1.5組合邏輯電路中的競爭與冒險由于邏輯器件存在一定的延遲時間,且各器件的延遲時間也不盡相同,各信號到達某一會合點經過的路徑不同,不同路徑上門級數的不同或者門電路的延遲時間的差異,會使信號到達的時間有先有后,這種現象稱為電路產生了競爭。由于競爭的存在,當輸入信號發生變化時,在輸出跟隨輸入信號變化的過程中,電路輸出發生瞬間錯誤的現象稱為組合邏輯電路產生了冒險。消除競爭冒險的方法主要有以下幾種:修改邏輯設計加濾波電容加取樣脈沖7.1.6組合邏輯電路的設計模式和方法組合邏輯電路有行為描述模式、數據流描述模式和結構描述三種設計模式組合邏輯電路的設計方法:在借助真值表設計:使用VHDL語言進行描述無需簡化的真值表即可,不需要進行簡化。借助邏輯表達式設計:直接使用VHDL語言的邏輯符號替換布爾表達式中的邏輯符號即可。借助算術表達式設計:直接使用VHDL語言的算術符號替換算術表達式中的算術符號即可。7.2組合邏輯的基本電路設計7.2.1與門設計7.2.2非門設計7.2.3或門設計7.2.4與非門設計7.2.5三態門設計7.2.1與門設計與門又被稱為“與電路”,其邏輯表達式如下與門的真值表如下:7.2.2非門設計非門又被稱反相器,其邏輯表達式如下:非門的真值表如下:7.2.3或門設計或門可以有2個或者多個輸入端,但是只有一個輸出端。只要輸入中有一個為“1”電平時,輸出就為“1”電平,只有當所有的輸入全為“0”電平時,輸出才為“0”電平。或門的真值表:7.2.4與非門設計與非門是與門和非門的結合,其邏輯表達式如下:與非門的真值表如下:7.2.5異或門設計異或門是用于實現異或邏輯的電路,其邏輯表達式如下:異或門的真值表如下:7.2.6三

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論