教學課件·硬件描述語言與FPGA設計技術_第1頁
教學課件·硬件描述語言與FPGA設計技術_第2頁
教學課件·硬件描述語言與FPGA設計技術_第3頁
教學課件·硬件描述語言與FPGA設計技術_第4頁
教學課件·硬件描述語言與FPGA設計技術_第5頁
已閱讀5頁,還剩297頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第1章 EDA技術概述 EDA技術概述EDA技術概述EDA技術概述1.1硬件描述語言1.1硬件描述語言1.1硬件描述語言1.2 EDA設計流程EDA設計流程既是自頂向下設計方法的具體實施途徑,也是EDA工具軟件本身的組成結構。 1.2 EDA設計流程 1.2.1設計輸入1.2.1設計輸入1.2.2綜合與適配1.2.2綜合與適配1.2.3時序仿真與功能仿真 1.2.3時序仿真與功能仿真1.2.4編程下載與器件測試 1.2.4編程下載與器件測試1.3 Quartus II 設計環(huán)境1.3 Quartus II 設計環(huán)境1.4 EDA技術開發(fā)中的IP核1.4 EDA技術開發(fā)中的IP核1.4 EDA技

2、術開發(fā)中的IP核1.4 EDA技術開發(fā)中的IP核第2章 可編程邏輯器件硬件基礎 2.1 PLD可編程器件結構 2.2 可編程邏輯器件分類 2.3 PLD電路表示 2.3 PLD電路表示 2.2.1 邏輯元件符號表示 2.4 GAL器件結構原理 2.4 GAL器件結構原理2.4 GAL器件結構原理2.5 CPLD的結構原理 2.5 CPLD的結構原理 1. 邏輯陣列塊LAB 2. 宏單元 3. 擴展乘積項 2.5 CPLD的結構原理 4. 可編程連線陣列PIA 2.5 CPLD的結構原理 5. I/O控制塊 2.6 FPGA的結構原理 2.6.1 查找表邏輯結構 2.6.2 Cyclone II

3、I系列器件 的結構原理 2.4.2 Cyclone III系列器件的結構原理 2.6.2 Cyclone III系列器件的結構原理 2.6.2 Cyclone III系列器件的結構原理 2.4 FPGA的結構原理 2.4.2 Cyclone III系列器件的結構原理 2.6.2 Cyclone III的結構原理 Cyclone III系列器件的結構原理 2.6 .2 Cyclone III系列器件的結構原理 2.6 .2 Cyclone III系列器件的結構原理 2.7 CPLD/FPGA的編程與配置目前常見的大規(guī)??删幊踢壿嬈骷木幊坦に囉腥N:基于電可擦除存儲單元的EEPROM或Flash

4、技術。CPLD般使用此技術進行編程?;赟RAM查找表的編程單元。對該類器件,編程信息是保存在SRAM中的,SRAM在掉電后編程信息立即丟失,在下次上電后,還需要重新載入編程信息。因此該類器件的編程一般稱為配置。大部分FPGA采用該種編程工藝?;谝淮涡钥删幊谭慈劢z編程單元。Actel的部分FPGA采用這種結構。 2.7 CPLD/FPGA的編程與配置 (1)基于電可擦除存儲單元的EEPROM或Flash技術。 ( 2)基于SRAM查找表的編程單元。 (3)基于一次性可編程反熔絲編程單元。 2.7.1 CPLD在系統(tǒng)編程JTAG邊界掃描 2.7.1 CPLD在系統(tǒng)編程2.7.2 FPGA的配置

5、方式 用JTAG進行FPGA的配置 2.7 CPLD/FPGA的編程與配置 FPGA專用配置器件 2.7 CPLD/FPGA的編程與配置 FPGA配置時序2.7 CPLD/FPGA的編程與配置 使用單片機配置FPGA 第3章 VHDL組合電路設計 3.1 多路選擇器及其VHDL描述 圖3-3 max21a電路時序圖3.1 多路選擇器及其VHDL描述 3.1 多路選擇器及其VHDL描述電路的VHDL描述由三大部分組成:1使用庫和程序包的聲明:LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;2以關鍵詞ENTITY引導,END ENTITY mux21a結尾的語

6、句部分,稱為實體。VHDL的實體描述了電路器件的外部情況及各信號端口的基本性質,如信號流動的方向,流動在其上的信號結構方式和數據類型等。圖3-1可以認為是實體的圖形表達。3以關鍵詞ARCHITECTURE引導,END ARCHITECTURE one結尾的語句部分,稱為結構體。結構體負責描述電路器件的內部邏輯功能或電路結構。圖3-2是此結構體的某種可能的原理圖表達。3.1 多路選擇器及其VHDL描述3.1 多路選擇器及其VHDL描述3.1 多路選擇器及其VHDL描述例3-1中的邏輯描述是用WHEN_ELSE結構的并行語句表達的。它的含義是,當滿足條件s=0,即s為低電平時,a輸入端的信號傳送至

7、y,否則(即s為高電平時)b 輸入端的信號傳送至y。也可以用其他的語句形式來描述以上相同的邏輯行為。例3-2中的功能描述語句都用了并行語句,是用布爾方程表達式來描述的。其中的AND、OR、NOT分別是與、或、非的邏輯操作符號。例3-3則給出了用順序語句IF_THEN_ELSE表達的功能描述。 3.2 IEEE庫預定義標準邏輯位與矢量數據類型 BIT 數據類型定義:TYPE BIT IS ( 0 , 1 ); -只有兩種取值STD_LOGIC 標準邏輯位數據類型定義:TYPE STD_LOGIC IS ( U , X , 0, 1,Z, W, L, H, -); -有九種取值STD_LOGIC所

8、定義的九種數據的含義是:U表示未初始化的;X表示強未知的;0表強邏輯0;1表示強邏輯1;Z表示高阻態(tài);W表示弱未知的;L表示弱邏輯0;H表示弱邏輯1;-表示忽略。 3.2 IEEE庫預定義標準邏輯位與矢量數據類型STD_LOGIC_VECTOR標準邏輯矢量數據類型STD_LOGIC_VECTOR被定義為標準一維數組,數組中的每一個元素的數據類型都是標準邏輯位STD_LOGIC 使用STD_LOGIC_ VECTOR可以表達電路中并列的多通道端口或節(jié)點,或者總線BUS。在使用STD_LOGIC_ VECTOR中,必須注明其數組寬度(位寬),如:B:OUT STD_LOGIC_VECTOR (7

9、DOWNTO 0);-B是8位位寬的矢量或總線端口信號 3.2 IEEE庫預定義標準邏輯位與矢量數據類型B的賦值方式如下:B = 01100010 ; -B(7)為0B (4 DOWNTO 1) = 1101 ; - B(4)為1 3.3設計庫和標準程序包 使用庫和程序包的一般定義表達式如下:LIBRARY ;USE .ALL ;STD_LOGIC與STD_LOGIC_VECTOR數據類型定義在被稱為STD_LOGIC_1164的程序包中,此包由IEEE 定義,而且此程序包所在的程序庫的庫名被取名為IEEE。 3.3設計庫和標準程序包由于IEEE庫不屬于VHDL 標準庫,所以在使用其庫中內容前

10、,必須事先給予聲明。一般地,VHDL程序開始的兩句語句可以是:LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;3.3設計庫和標準程序包LIBRARY是關鍵詞,LIBRARY IEEE表示打開IEEE庫;第二句的USE 和ALL是關鍵詞,USE IEEE.STD_LOGIC_1164.ALL表示允許使用IEEE庫中STD_LOGIC_1164程序包中的所有內容(.ALL),如類型定義、函數、過程、常量等。 3.4 ENTITY(實體)語句結構和語法含義 實體描述的是電路器件的端口構成和信號屬性,其最簡表達式一般為:ENTITY e_name ISPORT (

11、 p_name : port_m data_type;p_namei : port_mi data_type );END ENTITY e_name; 3.4.1實體名e_name是實體名,是標識符,具體取名由設計者自定。由于實體名實際上表達的是該設計電路的器件名,所以最好根據相應電路的功能來確定 3.4.2端口語句和端口信號名 描述電路的端口及其端口信號必須用端口語句PORT引導,并在語句結尾處加分號“;”。p_name是端口信號名, 3.4.3端口模式 IN:輸入端口,定義的通道為單向只讀模式。規(guī)定數據只能通過此端口被讀入實體中。OUT:輸出端口,定義的通道為單向輸出模式。規(guī)定數據只能通過

12、此端口從實體向外流出,或者說可以將實體中的數據向此端口賦值。INOUT:定義的通道確定為輸入輸出雙向端口。 3.4.4數據類型VHDL數據類型有INTEGER類型、BOOLEAN類型、STD_LOGIC類型和BIT類型等 3.5 ARCHITECTURE(結構體)語句結構和語法含義 結構體的一般表達下:ARCHITECTURE arch_name OF e_name IS 說明語句BEGIN(功能描述語句)END ARCHITECTURE arch_name ; 3.5 ARCHITECTURE(結構體)語句結構和語法含義arch_name是結構體名,是標識符。說明語句包括在結構體中,用以說明

13、和定義數據對象、數據類型、元件調用聲明等。說明語句并非是必須的,功能描述語句則不同,結構體中必須給出相應的電路功能描述語句,可以是并行語句、順序語句或它們的混合。 3.5.1 賦值符號和數據比較符號 表達式y(tǒng)= a表示輸入端口 a的數據向輸出端口 y傳輸;y= a也可以解釋為信號a向信號y賦值。VHDL要求賦值符兩邊的信號的數據類型必須一致。3.5.1 賦值符號和數據比較符號條件判斷語句WHEN_ELSE通過測定表達式s=0的比較結果,以確定由哪一端口向y賦值。條件語句WHEN_ELSE的判定依據是s=0輸出的結果。表達式中的等號沒有賦值的含義,只是一種數據比較符號。其輸出結果的數據類型是布爾

14、數據類型BOOLEAN,此類型的取值分別是:true(真)和false(偽) 3.5.2 邏輯操作符3.5.3 條件語句 順序語句描述2選1多路選譯器電路行為,其結構描述部分為: ARCHITECTURE one OF mux21a IS BEGINPROCESS ( a, b , s ) BEGINIF s = 0 THENy = a ; ELSEy = b ;END IF;END PROCESS;END ARCHITECTURE one ;3.5.3 條件語句結構體中IF_THEN_ELSE是VHDL順序語句,首先判斷如果s 為低電平,則執(zhí)行y=a語句,否則(當s為高電平),執(zhí)行語句y=b

15、。由此可見VHDL的順序語句同樣能描述并行運行的組合電路。IF語句必須以語句END IF結束。 3.5.4進程語句和順序語句 由PROCESS引導的語句稱為進程語句。順序語句IF_THEN_ELSE_ENDIF是放在由PROCESSEND PROCESS引導的語句中的。在VHDL中,所有合法的順序描述語句都必須放在進程語句中。 3.5.4進程語句和順序語句PROCESS語句結構的一般表達格式如下 進程標號: PROCESS ( 敏感信號參數表 ) IS進程說明部分 BEGIN 順序描述語句END PROCESS 進程標號;3.5.4進程語句和順序語句PROCESS(a,b,s)括號內容為進程的

16、敏感信號表,通常要求將進程中所有的輸入信號都放在敏感信號表中。 PROCESS語句的執(zhí)行依賴于敏感信號的變化(或稱發(fā)生事件),當某一敏感信號(如a)從原來的1跳變到0,或者從原來的0跳變到1時,就將啟動此進程語句 3.5.4進程語句和順序語句在一個結構體中可以包含任意個進程語句結構,所有的進程語句都是并行語句,由任一進程PROCESS引導的語句(包含在其中的語句)結構屬于順序語句。 3.5.4進程語句和順序語句3.5.5 IF語句 IF語句是VHDL設計中最重要和最常用的順序語句,IF語句的語法結構有以下4種(1)IF 條件句 THEN 順序語句 END IF;(2)IF 條件句 THEN 順

17、序語句 ELSE 順序語句 END IF; 3.5.5 IF語句(3)IF 條件句 THEN 順序語句 IF 條件句 THEN END IF; END IF;(4)IF 條件句 THEN 順序語句 ELSIF 條件句 THEN 順序語句 ELSE 順序語句 END IF;3.6 8-3線優(yōu)先編碼器VHDL設計 8-3線優(yōu)先編碼器真值表 3.6 8-3線優(yōu)先編碼器VHDL設計例3-5正是利用了IF語句中各條件向上相與這一功能,以簡潔的描述完成了一個8-3優(yōu)先編碼器的設計3.7文件保存與文件名 3.8 1位二進制全加器的VHDL描述 通過一個全加器的設計流程,給出含有層次結構的VHDL程序,其中包

18、含兩個重要的語句:元件調用聲明語句和元件例化語句。 3.8 1位二進制全加器的VHDL描述圖3-4 全加器f_adder電路圖及其實體模塊 3.8.1半加器的VHDL描述 3.8.1半加器的VHDL描述 3.8.1半加器的VHDL描述3.8.2 CASE語句 3.8.3 并置操作符&3.8.4全加器VHDL描述3.8.4全加器VHDL描述3.8.4全加器VHDL描述3.8.5元件例化語句 3.8.5元件例化語句3.9 硬件乘法器VHDL設計 3.9 硬件乘法器VHDL設計統(tǒng)計輸入8位矢量中含1的個數的VHDL描述。其中新的語法現象是:變量及循環(huán)語句 將變量與信號作一比較 3.9.1變量VARI

19、ABLE 3.9.2信號SIGNAL 3.9. 3進程中的信號與變量賦值特點 信號SIGNAL變量VARIABLE基本用法用于作為電路中的信號連線用于作為進程中局部數據存儲單元適用范圍在整個結構體內都能適用只能在所定義的進程中使用行為特性在進程的最后才對信號賦值立即賦值3.9.4 FOR_LOOP循環(huán)語句 3.9.4 FOR_LOOP循環(huán)語句硬件乘法器的VHDL程序乘法器仿真圖 3.10參數傳遞說明語句 3.11整數類型 3.12 VHDL操作符算術操作符3.12.1移位操作符3.12.1移位操作符3.12.2省略賦值操作符 3.12.3邏輯操作符 VHDL操作符優(yōu)先級3.12.4關系操作符

20、3.12.5求和操作符 3.12.6求積操作符 3.12.7符號操作符 3.12.8混合操作符 3.13 數據類型轉換函數3.14參數傳遞映射語句 3.14參數傳遞映射語句第4章 VHDL時序電路設計 4.1 基本時序元件的VHDL表述 【例4-1】D觸發(fā)器的VHDL描述 4.1.1上升沿檢測表達式和信號屬性函數EVENT 例4-1中的條件語句的判斷表達式:CLKEVENT AND CLK=1是用于檢測時鐘信號CLK的上升沿的,即如果檢測到CLK的上升沿,此表達式將輸出“true”。關鍵詞EVENT是信號屬性函數,用來獲得信號行為信息的函數稱為信號屬性函數。VHDL通過以下表達式來測定某信號的

21、跳變情況: EVENT4.1.2不完整條件語句與時序電路4.1.3 VHDL實現時序電路的其他表述方法 4.2 計數器的VHDL設計 4.2.1 16進制加法計數器4.2.1 16進制加法計數器16進制加法計數器時序圖4.2.2 10進制加法計數器 4.2.2 10進制加法計數器4.2.2 10進制加法計數器10進制計數器的時序仿真波形 4.3 移位寄存器的VHDL設計 4.3 移位寄存器的VHDL設計4.3 移位寄存器的VHDL設計 移位寄存器時序仿真波形 4.4、移位相加乘法器VHDL設計 4.4、移位相加乘法器VHDL設計4.4、移位相加乘法器VHDL設計4.4、移位相加乘法器VHDL設

22、計4.4、移位相加乘法器VHDL設計4.4、移位相加乘法器VHDL設計4.4、移位相加乘法器VHDL設計4.4、移位相加乘法器VHDL設計乘法操作時序仿真圖 4.5屬性描述與定義語句 4.5.1信號類屬性 4.5.2數據區(qū)間類屬性 4.5.3數值類屬性 4.5.3數值類屬性4.5.4數組屬性 4.5.5用戶定義屬性 4.5.5用戶定義屬性第5章 FPGA開發(fā)環(huán)境Quartus應用基礎5.1 Quartus II文本輸入設計方法 5.1.1 編輯和輸入設計文件 新建一個文件夾。 輸入源程序。 5.1 Quartus II文本輸入設計方法5.1.1 編輯和輸入設計文件 新建一個文件夾。 輸入源程序

23、。 文件存盤。 5.1 Quartus II文本輸入設計方法5.1.2 創(chuàng)建工程 打開并建立新工程管理窗口。 將設計文件加入工程中。 5.1 Quartus II文本輸入設計方法5.1.2 創(chuàng)建工程 選擇目標芯片。 工具設置。 結束設置。 5.1 Quartus II文本輸入設計方法5.1.3 全程編譯前約束項目設置 選擇FPGA目標芯片。 5.1 Quartus II文本輸入設計方法5.1.3 全程編譯前約束項目設置 選擇配置器件的工作方式。 選擇配置器件和編程方式。 選擇目標器件引腳端口狀態(tài)。 對雙功能引腳進行設置。 5.1 Quartus II文本輸入設計方法5.1.4 全程綜合與編譯

24、5.1 Quartus II文本輸入設計方法5.1 Quartus II文本輸入設計方法5.1.5 仿真測試 打開波形編輯器。 5.1 Quartus II文本輸入設計方法5.1.5 仿真測試 設置仿真時間區(qū)域。 5.1 Quartus II文本輸入設計方法5.1.5 仿真測試 波形文件存盤。 將工程MULT4B的端口信號節(jié)點選入波形編輯器中。 5.1.5 仿真測試 總線數據格式設置和參數設置。 5.1 Quartus II文本輸入設計方法5.1 Quartus II文本輸入設計方法5.1.5 仿真測試 編輯輸入波形數據(輸入激勵信號)。 5.1 Quartus II文本輸入設計方法5.1.5

25、 仿真測試 仿真器參數設置。 啟動仿真器。 觀察仿真結果。 5.1 Quartus II文本輸入設計方法5.1.6 RTL圖觀察器應用 5.2 器件引腳鎖定與程序下載 5.2.1 引腳鎖定 5.2 器件引腳鎖定與程序下載5.2.1 引腳鎖定 5.2 器件引腳鎖定與程序下載5.2.2 編譯文件下載 (1)打開編程窗和配置文件。 5.2 器件引腳鎖定與程序下載5.2.2 編譯文件下載 (2)設置編程器。 (3)硬件測試。 5.2 器件引腳鎖定與程序下載5.2 器件引腳鎖定與程序下載5.2.3 JTAG間接編程模式 1. 將SOF文件轉化為JTAG間接配置文件 5.2 器件引腳鎖定與程序下載5.2.

26、3 JTAG間接編程模式 1. 將SOF文件轉化為JTAG間接配置文件 5.2 器件引腳鎖定與程序下載5.2.3 JTAG間接編程模式 2. 下載JTAG間接配置文件。 5.2 器件引腳鎖定與程序下載5.2.4 USB-Blaster驅動程序安裝方法 5.4 嵌入式邏輯分析儀使用方法5.4 嵌入式邏輯分析儀使用方法5.4 嵌入式邏輯分析儀使用方法5.4 嵌入式邏輯分析儀使用方法5.4 嵌入式邏輯分析儀使用方法5.4 嵌入式邏輯分析儀使用方法5.4 嵌入式邏輯分析儀使用方法5.5 Quartus II原理圖輸入設計方法 1. 建立原理圖文件工程和仿真 5.5 Quartus II原理圖輸入設計方

27、法1. 建立原理圖文件工程和仿真 5.5 Quartus II原理圖輸入設計方法2. 將設計項目設置成可調用的元件 5.5 Quartus II原理圖輸入設計方法3. 設計全加器頂層文件 5.5 Quartus II原理圖輸入設計方法4. 對設計項目進行時序仿真 5. 硬件測試 實 驗 7段數碼顯示譯碼器設計 實 驗 4十六進制7段數碼顯示譯碼器設計 第6章 宏功能模塊與IP應用LPM是Library of Parameterized Modules( 參數可設置模塊庫)的縮寫,Altera提供的可參數化宏功能模塊和LPM函數均基于Altera器件的結構做了優(yōu)化設計。在許多實際情況中,必須利用

28、宏功能模塊才可以使用一些Altera特定器件的硬件功能。例如各類片上存儲器、DSP模塊、LVDS驅動器、嵌入式PLL以及SERDES和DDIO 電路模塊等。這些可以以圖形或硬件描述語言模塊形式方便調用的宏功能塊,使得基于EDA技術的電子設計的效率和可靠性有了很大的提高。 6.1 LPM存儲器設計接下頁6.1.1 ROM模塊設計1建立初始化數據文件 初始化數據文件即寫入ROM中的波形數據文件。QuartusII能接受的LPM_ROM模塊中的初始化數據文件的格式有兩種:Memory Initialization File(.mif)格式Hexadecimal (Intel-Format)File(

29、.hex)格式。 實際應用中只要使用其中一種格式的文件即可。 (1)建立.mif格式文件 Quartus II mif文件編輯器 mif文件 2. LPM_ROM設計LPM_ROM設計首先利用 MegaWizard Plug-In Manager定制正弦信號數據ROM宏功能塊,并將以上的波形數據加載于此ROM中。設計步驟如下: (1)打開MegaWizard Plug-In Manager初始對話框。(2)選擇ROM控制線、地址線和數據線。 (3)選擇指定路徑上的文件sin2.mif。在圖 6-8 的 “Do you want to.” 欄選擇 “Yes,use this file for t

30、he memory content data” 項,并按Browse鈕,選擇指定路徑上的文件sin2.mif。設計完成的LPM_ROM模塊 6.1.2 RAM模塊設計選擇LPM_RAM宏功能塊并指定存放路徑和文件名 RAM模塊的仿真波形 6.1.3 FIFO(先進先出存儲器)模塊設計首先新建目錄,然后編輯FIFO模塊 定制完成后,直接測試可進行以下操作退出定制界面,file-new,調入定制的文本文件(VHDL)-save as(這樣可方便生成工程) -產生工程,以下過程與新建project相同 FIFO模塊的仿真波形 6.2 DSP模塊構建乘法器乘法器仿真波形 6.3 正弦信號發(fā)生器設計作為

31、LPM_ROM的應用實例,利用前面設計完成的LPM_ROM構成一個正弦信號發(fā)生器。正弦信號發(fā)生器的結構由四個部分組成:(1)計數器或地址發(fā)生器(這里選擇7位)。(2)正弦信號數據ROM(7位地址線,8位數據線),含有128個8位數據(一個正弦周期)。(3)電路頂層設計模塊。(4)8位D/A(硬件系統(tǒng)中可用DAC0832模數轉換器件)。正弦信號發(fā)生器結構圖 正弦信號發(fā)生器頂層模塊 電路模塊仿真波形 6.3.2使用嵌入式邏輯分析儀測試數據波形用嵌入式邏輯分析儀SignalTap II對FPGA內部信號進行分析測試。這里SignalTap II的參數設置為:采樣深度是4K;采用時鐘是信號源的時鐘 C

32、LK;觸發(fā)信號是計數時鐘使能信號CLK_EN,觸發(fā)模式是E=1上升沿觸發(fā)采樣。 SignalTap II 實時測試輸出數據 SignalTap II測試正弦信號發(fā)生器波形 6.4在系統(tǒng)存儲器數據讀寫編輯器應用利用Quartus II的在系統(tǒng)(In-System)讀寫編輯器,對于CycloneII/III等系列的FPGA,只要對使用的LPM_ROM或LPM_RAM模塊適當設置,就能直接通過JTAG口讀取或改寫 FPGA內處于工作狀態(tài)的存儲器中的數據,讀取過程不影響FPGA的正常工作。 6.4.1打開在系統(tǒng)存儲單元編輯窗口6.4.2讀取ROM中的波形數據 從FPGA中ROM讀取的波形數據 6.4.

33、3 ROM寫入數據ROM數據修改后SignalTap II的釆樣波形 6.5 IP核NCO數控振蕩器設計基于Quartus II和DSP Builder的MegaCore有多種,如FIR數字濾波器、FFT離散 信號快速傅里葉變換器、NCO數控振蕩器(可作為實現DSP、數字調制解調器、FSK 的重要部件),PCI總線核、CSC色彩格式變換器核(用于電視與VGA色彩編碼方式相 互變換)、Viterbi譯碼器(最大相似譯碼器,用于對卷積碼的解碼)IP核等。下面以數控振蕩器NCO(Numerically Controlled Oscillators)核的設置使用為例,介紹利用Quartus II使用I

34、P核的方法。 IP核NCO選擇界面 IP核NCO選擇界面 NCO參數設置窗 NCO Implementation參數設置窗 6.5.4生成仿真文件6.5.5加入IP授權文件加入NCO授權文件和Quartus II授權文件。這里設授權文件位置路徑:C:altera90license.DAT。有了授權文件,在Option對話框的Licensed AMPP/MegaCore functions 欄中可以看到FIR、PCI、NCO等IP的授權碼,這樣就可以編譯出能夠寫Flash的SOF文件。也可以先轉變?yōu)殚g接配置編程文件寫入EPCS Flash。 6.5.6編譯與功能檢測 NCO32模塊的測試電路 嵌

35、入式邏輯分析儀測試波形 6.6 LPM嵌入式鎖相環(huán)設計 Altera 的FPGA器件CycloneII/III/IV及StraixII/III/IV等系列中含有高性能的嵌入式模擬鎖相環(huán),其性能遠優(yōu)于普通數字鎖相環(huán)。這些鎖相環(huán)PLL可以與一輸入的時鐘信號同步,并以其作為參考信號實現鎖相,從而輸出一至多個同步倍頻或分頻的片內時鐘,以供邏輯系統(tǒng)應用。與直接來自外部的時鐘相比,這種片內時鐘可以減少時鐘延時和時鐘變形,減少片外干擾;還可以改善時鐘的建立時間和保持時間,是系統(tǒng)穩(wěn)定工作的保證。 6.6.1建立嵌入式鎖相環(huán)元件設置鎖相環(huán)輸入參考時鐘inclk0為20MHz選擇控制信號 選擇輸出頻率c0為0.0

36、0258MHz 嵌入式鎖相環(huán)時鐘正弦信號發(fā)生器電路 6.6.2鎖相環(huán)仿真測試和硬件特性 鎖相環(huán)仿真波形 部分Cyclone系列FPGA的下限至上限的頻率范圍: Cyclone系列FPGA的PLL:20MHz至270MHz;CycloneII系列FPGA的PLL:10MHz至400MHz;CycloneIII系列FPGA的PLL:2KHz至1300MHz;CycloneIV系列FPGA的PLL:2KHz至1000MHz。其中從CycloneIII系列FPGA起,嵌入式PLL的輸出頻域大幅度擴展,為高質量的數字系統(tǒng)設計提供了很好的支持。 6.7 8051單片機IP軟核應用已經廣為熟悉的89C51或

37、與其兼容的單片機基本配置有ROM和RAM。在FPGA中,調用8051軟核并接上ROM和RAM后就成為一個完整的51單片機,本節(jié)以此為例介紹8051軟核在FPGA中的設計與使用方法。 基本8051CPU核應用電路 LPM_RAM參數設置 LPM_ROM設置 單片機雙向端口電路 設置FPGA的總線口輸出為上拉 LPM_ROM初始化文件路徑 6.8 LPM模塊的文本調用 參數設置好的LPM宏功能模塊可以在圖形方式中調用,也可以采用文本方式調用,這就是宏功能模塊進行例化。 6.8.1在Quartus II中對宏功能模塊進行例化對宏功能模塊例化的途徑有多種,如可以在Block Editor中直接例化;在

38、HDL代碼中例化(通過端口和參數定義例化,或使用MegaWizard Plug-In Manager對宏功能模塊進 行參數化并建立包裝文件),也可以通過界面,在Quartus II中對Altera宏功能模塊和LPM 函數進行例化。6.8.2 LPM模塊的VHDL文本方式調用可以使用MegaWizard Plug-In Manager建立宏功能模塊或自定義宏功能模塊變量。 再利用MegaWizard Plug-In Manager建立包含宏功能模塊實例的VerilogHDL或VHDL 包裝文件,然后,可以在設計中使用此文件。對于VHDL宏功能模塊,MegaWizard Plug-In anage

39、r還建立組件申明文件。可以提供使用端口和參數定義,采用或調用任何其他模塊或組件相類似方法調用函數,直接在VerilogHDL或 VHDL設計中對宏功能模塊進行例化。在VHDL中,還需要使用組件申明。在VHDL 中例化方法如下: 1.打開LPM模塊文本并測試定制好LPM模塊后應將其設置成工程進行仿真測試,以確保其功能的可靠,并熟悉該元件的時序情況。對于LPM_ROM應當通過仿真了解數據文件是否己被加載進去?!纠?-2】正弦波形數據ROM文件LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.altera

40、_mf_components.all; -使用宏功能庫中的所有元件ENTITY sin2_rom ISPORT (address : IN STD_LOGIC_VECTOR (5 DOWNTO 0); inclock : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );END sin2_rom;ARCHITECTURE SYN OF sin2_rom ISSIGNAL sub_wire0: STD_LOGIC_VECTOR (7 DOWNTO 0);COMPONENT altsyncram -例化altsyncram元件,調用了LPM

41、模塊altsyncram GENERIC ( -參數傳遞語句intended_device_family: STRING; -類屬參量數據類型定義 width_a: NATURAL; widthad_a: NATURAL;numwords_a: NATURAL; operation_mode: STRING;outdata_reg_a: STRING; address_aclr_a: STRING;outdata_aclr_a: STRING; width_byteena_a: NATURAL;init_file: STRING; lpm_hint: STRING;lpm_type: STRI

42、NG);PORT (clock0: IN STD_LOGIC ; -altsyncram元件接口聲明 address_a: IN STD_LOGIC_VECTOR (5 DOWNTO 0); q_a: OUT STD_LOGIC_VECTOR (7 DOWNTO 0) ); END COMPONENT;BEGINq Cyclone, -參數傳遞映射 width_a = 8, -數據線寬度8widthad_a = 6, -地址線寬度6numwords_a = 64, -數據數量64operation_mode = ROM, -LPM模式ROMoutdata_reg_a = UNREGISTERE

43、D, -輸出無鎖存address_aclr_a = NONE, -無異步地址清0outdata_aclr_a = NONE, -無輸出鎖存異步清0width_byteena_a = 1, - byteena_a輸入口寬度1init_file = ./wave_edit/SIN2.mif, -ROM初始化數據文件lpm_hint = ENABLE_RUNTIME_MOD=YES, INSTANCE_NAME=NONE, lpm_type = altsyncram ) -LPM類型PORT MAP ( clock0 = inclock, address_a = address,q_a = sub_

44、wire0 ); END SYN; 2.編寫VHDL頂層設計文件并仿真LIBRARY IEEE; -正弦信號發(fā)生器源文件USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SIN_LPM_ROM IS PORT ( CLK : IN STD_LOGIC; -信號源時鐘 DOUT : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );-8位波形數據輸出END;ARCHITECTURE BHV OF SIN_LPM_ROM ISCOMPONENT sin2_rom -調用波形數據存儲器LPM_R

45、OM文件:data_rom.vhd聲明 PORT(address : IN STD_LOGIC_VECTOR (6 DOWNTO 0);-7位地址信號 inclock : IN STD_LOGIC ;-地址鎖存時鐘 q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);END COMPONENT; SIGNAL Q1 : STD_LOGIC_VECTOR (6 DOWNTO 0); -設定內部節(jié)點作為地址計數器 BEGINPROCESS(CLK ) -LPM_ROM地址發(fā)生器進程 BEGINIF CLKEVENT AND CLK = 1 THEN Q1Q1, q = DO

46、UT,inclock=CLK);-例化END; 正弦波數據仿真結果 第7章 狀態(tài)機設計數字系統(tǒng)設計中的重要內容之一是有限狀態(tài)機FSM(Finite State Machine)理論及其設計技術。狀態(tài)機是實現高效率高可靠邏輯控制的重要途徑。 7.1數字系統(tǒng)中的狀態(tài)機應用特性7.2 有限狀態(tài)機的設計 狀態(tài)機在VHDL設計中可以不同表達方式實現不同的實用功能,然而它們都有相對固定的語句和程序表達方式,只要掌握了這些固定的語句表達部分,就能根據實際需要設計出各種不同風格和面向不同實用目的的VHDL狀態(tài)機。 7.2.1數據類型定義語句自定義數據類型是用類型定義語句TYPE和子類型定義語句SUBTYPE實

47、現的。TYPE語句的用法如下:TYPE 數據類型名 IS 數據類型定義 OF 基本數據類型;或:TYPE 數據類型名 IS 數據類型定義;下面的例子說明了兩種不同的定義方式:TYPE st1 IS ARRAY (0 TO 15) OF STD_LOGIC;TYPE week IS (sun, mon, tue, wed, thu, fri, sat);7.2.2有限狀態(tài)機的設計VHDL狀態(tài)機可以有多種形式,從狀態(tài)機的信號輸出方式上分有Mealy型和 Moore型兩種狀態(tài)機;從結構上分,有單進程狀態(tài)機和多進程狀態(tài)機;從狀態(tài)表達方式上分有符號化狀態(tài)機和確定狀態(tài)編碼的狀態(tài)機;從編碼方式上分有順序編碼

48、狀態(tài)機、一位熱碼編碼狀態(tài)機或其他編碼方式狀態(tài)機。常用的狀態(tài)機通常包含數據類型定義、時序進程、組合進程等部分。(1)數據類型定義: 數據類型定義一般放在結構體的ARCHITECTURE和BEGIN之間,例如:ARCHITECTURE . ISTYPE FSM_ST IS (s0,sl,s2,s3);SIGNAL current_state, next_state: FSM_ST;其中新定義的數據類型名是“FSM_ST”,其類型的元素分別為s0、sl、s2、s3,表達狀態(tài)機的四個狀態(tài)。定義為信號SIGNAL的狀態(tài)變量是current_state和 next_state,它們的數據類型被定義為FSM

49、_ST。 (2)時序進程: 時序進程是使狀態(tài)機運轉和在時鐘驅動下進行狀態(tài)轉換的進程。狀態(tài)機是隨外部時鐘信號、以同步時序方式工作的。因此,狀態(tài)機中必須包含一個對工作時鐘信號敏感的進程。當時鐘發(fā)生有效跳變時,狀態(tài)機的狀態(tài)才發(fā)生變化。狀態(tài)機向下一狀態(tài)(包括再次進入本狀態(tài))轉換的實現僅僅取決于時鐘信號的到來。 (2)時序進程: 一般地,時序進程不提供下一狀態(tài)的具體狀態(tài)取值,如s0、si、s2、S3中的某一狀態(tài)值。當時鐘的有效跳變到來時,時序進程只是機械地將代表次態(tài)的信號next_state中的內容送入現態(tài)的信號current_state中,而信號next_state中的內容完全由其他的進程根據實際情況

50、來決定,當然時序進程中也可以放置一些同步或異步清零或置位方面的控制信號。 (3)組合進程: 組合進程是根據當前狀態(tài)的狀態(tài),或/和外部輸入的控制信號,確定下一狀態(tài)取值內容(如取next_state=s1等),并確定對外輸出或對內部其他組合或時序進程輸出控制信號的內容。這里的外部輸入控制信號包括來自狀態(tài)機外部的信號和來自狀態(tài)機內部其他非主控的組合或時序進程的信號。組合進程又稱為狀態(tài)譯碼進程。狀態(tài)機應用1:ADC0809采樣控制器設計ADC0809器件引腳及時序圖 ADC0809采樣控制狀態(tài)圖 采樣控制狀態(tài)機電路結構圖 ADC080采樣控制VHDL程序library ieee;use ieee.st

51、d_logic_1164.all;entity adciny is port ( data_in : in std_logic_vector(7 downto 0); clock1:in std_logic; end_conv : in std_logic; lock1: out std_logic; add_lock: out std_logic; adc_start: out std_logic; output_en: out std_logic; add_sel : out std_logic; data_out : out std_logic_vector(7 downto 0);st

52、ate:out std_logic_vector(3 downto 0);end adciny;architecture behav of adciny istype states is (t0,t1,t2,t3,t4); signal next_state: states :=t0; signal regl :std_logic_vector(7 downto 0); signal data_lock :std_logic; begin add_sel = 1; data_out =regl;lock1 add_lock = 0;adc_start=0; output_en =0;data_

53、lock = 0; state=0000;next_state add_lock = 1;adc_start=1; output_en =0;data_lock = 0; state=0001;next_state add_lock = 0;adc_start=0; output_en =0;data_lock = 0; if (end_conv=1)then state=0011;next_state = t3; else state=0010;next_state add_lock=0;adc_start=0;data_lock=0;output_en=1; state=0100;next

54、_state add_lock=0;adc_start=0;data_lock=1;output_en=1;next_state state=0000;next_state = t0; end case;end process com;reg: process(clock1) begin if(clock1event and clock1=1) then s= next_state; end if; end process reg;reg: process(clock1) begin if(clock1event and clock1=1) then s= next_state; end if

55、; end process reg;采樣控制狀態(tài)機時序仿真圖 2. 狀態(tài)機應用2:序列檢測器設計 序列檢測器可用于檢測一組或多組由二進制碼組成的脈沖序列信號,當序列檢測器連續(xù)收到一組串行二進制碼后,如果這組碼與檢測器中預先設置的碼相同,則輸出C,否則輸出F由于這種檢測的關鍵在于正確碼的收到必須是連續(xù)的,這就要求檢測器必須記住前一次的正確碼及正確序列,直到在連續(xù)的檢測中所收到的每一位碼都與預置數的對應碼相同。 序列檢測器 VHDL程序library ieee;use ieee.std_logic_1164.all;entity psdet is port(din,clk,RST : in std

56、_logic; c_f : out std_logic_vector(3 downto 0);end psdet;architecture behav of psdet is type st is (s0,s1,s2,s3,s4,s5,s6,s7,s8); signal cst,nst : st:=s0; signal d : std_logic_vector(7 downto 0);begin d if din = d(7) then nst=s1; else nst if din = d(6) then nst=s2; else nst if din = d(5) then nst=s3;

57、 else nst if din = d(4) then nst=s4; else nst if din = d(3) then nst=s5; else nst if din = d(2) then nst=s6; else nst if din = d(1) then nst=s7; else nst if din = d(0) then nst=s8; else nst if din = d(5) then nst=s3; else nst nst = s0; end case; end process;REG: process(clk,RST) begin if RST=1 then cst=S0; elsif clkevent and clk=1 then cst=nst; end if; end process

溫馨提示

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

評論

0/150

提交評論