第四章 VHDL語(yǔ)言與FPGA設(shè)計(jì)_第1頁(yè)
第四章 VHDL語(yǔ)言與FPGA設(shè)計(jì)_第2頁(yè)
第四章 VHDL語(yǔ)言與FPGA設(shè)計(jì)_第3頁(yè)
第四章 VHDL語(yǔ)言與FPGA設(shè)計(jì)_第4頁(yè)
第四章 VHDL語(yǔ)言與FPGA設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩65頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、電子系統(tǒng)電子系統(tǒng)EDAEDA技術(shù)技術(shù)2022-4-12Page 2 FPGA FPGA設(shè)計(jì)初步設(shè)計(jì)初步4.1對(duì)對(duì)VHDLVHDL和原理圖的混合設(shè)計(jì)與仿真和原理圖的混合設(shè)計(jì)與仿真4.2Protel DXPProtel DXP和和Altera FPGAAltera FPGA接口接口4.3實(shí)例講解實(shí)例講解4.4本章小結(jié)本章小結(jié)4.52022-4-12Page 3 FPGA FPGA設(shè)計(jì)初步設(shè)計(jì)初步4.1對(duì)對(duì)VHDLVHDL和原理圖的混合設(shè)計(jì)與仿真和原理圖的混合設(shè)計(jì)與仿真4.2Protel DXPProtel DXP和和Altera FPGAAltera FPGA接口接口4.3實(shí)例講解實(shí)例講解4.4本

2、章小結(jié)本章小結(jié)4.5v FPGA是現(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate Array)的簡(jiǎn)稱,它具有體系結(jié)構(gòu)和邏輯單元靈活、集成度高及適用范圍寬的特點(diǎn),兼容了PLD和通用門陣列的特點(diǎn),同一片F(xiàn)PGA通過不同的編程數(shù)據(jù)可以產(chǎn)生不同的電路功能,因此可以實(shí)現(xiàn)大規(guī)模的集成電路設(shè)計(jì)。在進(jìn)行FPGA項(xiàng)目設(shè)計(jì)之前,首先要了解FPGA設(shè)計(jì)的相關(guān)基礎(chǔ)知識(shí),包括基本概念、設(shè)計(jì)流程等。v 4.1.1 FPGA的基本概念v 4.1.2 FPGA設(shè)計(jì)流程v 4.1.3 VHDL語(yǔ)言簡(jiǎn)介2022-4-12Page 4v FPGA是現(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate

3、Array)的簡(jiǎn)稱,通常包含三類可編程資源:可編程邏輯功能塊、可編程I/O塊和可編程內(nèi)部互連。v 可編程邏輯功能塊:可編程邏輯功能塊:它是實(shí)現(xiàn)用戶功能的基本單元,它們通常排列成一個(gè)陣列,散布于整個(gè)芯片;v 可編程可編程I/O塊:塊:用于完成芯片上邏輯與外部封裝腳的接口,常圍繞著陣列排列于芯片四周;v 可編程內(nèi)部互連:可編程內(nèi)部互連:它包括各種長(zhǎng)度的連線線段和一些可編程連接開關(guān),它們將各個(gè)可編程邏輯塊或I/O塊連接起來,構(gòu)成特定功能的電路。2022-4-12Page 5v FPGA內(nèi)部多采用查找表的結(jié)構(gòu)。v 查找表簡(jiǎn)稱為L(zhǎng)UT (Look-Up-Table),LUT本質(zhì)上就是一個(gè)RAM。目前FP

4、GA中多使用4輸入的LUT,所以每一個(gè)LUT都可以看成一個(gè)具有4位地址線的161的RAM。v 基于查找表(LUT)的FPGA的結(jié)構(gòu)v 采用這種查找表結(jié)構(gòu)的FPGA有Altera的ACEX和APEX系列及Xilinx的Spartan和Virtex系列等。v 查找表結(jié)構(gòu)的FPGA邏輯實(shí)現(xiàn)原理2022-4-12Page 6v 1創(chuàng)建FPGA項(xiàng)目v 2設(shè)置FPGA項(xiàng)目的屬性v 創(chuàng)建好FPGA項(xiàng)目之后,還需要對(duì)相關(guān)屬性,如錯(cuò)誤報(bào)告、比較器、綜合和仿真等進(jìn)行設(shè)置,以幫助項(xiàng)目的設(shè)計(jì)和優(yōu)化。v 3VHDL編譯環(huán)境v 在已創(chuàng)建的FPGA項(xiàng)目中,執(zhí)行菜單命令【文件】【創(chuàng)建】【VHDL文件】,在項(xiàng)目文件夾中將自動(dòng)生

5、成一個(gè)VHDLl.Vhd文件VHDLl.Vhd文件。同時(shí),此文件在主窗口中被打開,處于文本編輯器狀態(tài)。2022-4-12Page 7v 目前最主要的硬件描述語(yǔ)言是VHDL和Verilog HDL。v VHDL是超高速集成電路硬件描述語(yǔ)言(Very High Speed Integrated Circuit Hardware Description Language)的簡(jiǎn)稱,它發(fā)展得較早,語(yǔ)法嚴(yán)格;v Verilog HDL是在C語(yǔ)言的基礎(chǔ)上發(fā)展起來的一種硬件描述語(yǔ)言,語(yǔ)法較自由。v 一個(gè)完整的VHDL程序包括實(shí)體(entity)、結(jié)構(gòu)體(architecture)、配置(configurati

6、on)、包 ( package)、庫(kù)(library)5個(gè)部分。其中,前4個(gè)部分是可分別編譯的源設(shè)計(jì)單元。VHDL程序結(jié)構(gòu)可以用圖11-10表示。2022-4-12Page 82022-4-12Page 9圖4-1 VHDL程序結(jié)構(gòu)v 1.實(shí)體說明v 實(shí)體說明是一個(gè)器件的外觀視圖,即從外部看到的器件外貌,包括端口等。實(shí)體說明也可以定義參數(shù),并把參數(shù)從外部傳入模塊內(nèi)部。任何一個(gè)基本設(shè)計(jì)單元的實(shí)體說明都具有如下結(jié)構(gòu): ENTITY實(shí)體名IS GENERIC(類屬表); PORT(端口表); 實(shí)體說明部分; BEGIN 實(shí)體語(yǔ)句部分; END ENTITY實(shí)體名; 中的內(nèi)容是可選的,即可以沒有這部分

7、內(nèi)容。2022-4-12Page 1011設(shè)計(jì)實(shí)體設(shè)計(jì)實(shí)體 提供設(shè)計(jì)模塊的公共信息,是提供設(shè)計(jì)模塊的公共信息,是VHDL設(shè)計(jì)電設(shè)計(jì)電 路的最基本部分。路的最基本部分。一個(gè)模塊中僅有一個(gè)設(shè)計(jì)實(shí)體一個(gè)模塊中僅有一個(gè)設(shè)計(jì)實(shí)體ENTITY mux21a IS PORT( a, b : IN BIT; s : IN BIT; y : OUT BIT ) ;END ENTITY mux21a ;實(shí)體名實(shí)體名端口名端口名端口模式端口模式端口數(shù)據(jù)類型端口數(shù)據(jù)類型實(shí)體名實(shí)體名: :不應(yīng)用數(shù)字或中文定義實(shí)體名不應(yīng)用數(shù)字或中文定義實(shí)體名, ,也不能用元件也不能用元件 名命名名命名, ,且不能用數(shù)字起頭且不能用數(shù)字起

8、頭. .v 2端口說明v 端口說明是對(duì)設(shè)計(jì)實(shí)體與外部接口的描述,也可以說是對(duì)外部引腳信號(hào)的名稱、數(shù)據(jù)類型和輸入輸出方向的描述。端口為設(shè)計(jì)實(shí)體和其外部環(huán)境通信的動(dòng)態(tài)信息提供通道,其功能對(duì)應(yīng)于電路圖符號(hào)的一個(gè)引腳。實(shí)體說明中的每一個(gè)I/O信號(hào)被稱為一個(gè)端口,一個(gè)端口就是一個(gè)數(shù)據(jù)對(duì)象。每個(gè)端口必須有一個(gè)名字、一個(gè)通信模式和一個(gè)數(shù)據(jù)類型。是實(shí)體的重要組成部分。端口說明的一般格式為:Port(端口名:模式 數(shù)據(jù)類型名; 端口名:模式 數(shù)據(jù)類型名);2022-4-12Page 12端口模式端口模式INOUTINOUTBUFFER數(shù)據(jù)類型數(shù)據(jù)類型VHDL語(yǔ)言的IEEE1076/93標(biāo)準(zhǔn)規(guī)定,EDA綜合工具提

9、供的數(shù)據(jù)類型為布爾型(Boolean)、位型(Bit)、位矢量型(Bit-Vector)和整數(shù)型(Interger)。v 3結(jié)構(gòu)體v 結(jié)構(gòu)體是次級(jí)設(shè)計(jì)單元,具體指明了該設(shè)計(jì)實(shí)體的結(jié)構(gòu)或行為,定義了該設(shè)計(jì)實(shí)體的功能,規(guī)定了該設(shè)計(jì)實(shí)體的數(shù)據(jù)流程,指定了該實(shí)體中內(nèi)部元器件的連接關(guān)系,把一個(gè)設(shè)計(jì)的輸入和輸出之間的關(guān)系建立起來。由于結(jié)構(gòu)體是對(duì)實(shí)體功能的具體描述,因此一定要跟在實(shí)體的后面。v 一個(gè)結(jié)構(gòu)體的一般書寫格式為:ARCHITECTURE 結(jié)構(gòu)體名 OR 實(shí)體名 IS定義語(yǔ)句BEGIN并行處理語(yǔ)句進(jìn)程語(yǔ)句 -器件的功能實(shí)現(xiàn)部分END結(jié)構(gòu)體名; 2022-4-12Page 142022-4-12Pag

10、e 14VHDL結(jié)構(gòu)中用于描述邏輯功能和電路結(jié)結(jié)構(gòu)中用于描述邏輯功能和電路結(jié)構(gòu)的語(yǔ)句:順序語(yǔ)句和并行語(yǔ)句。構(gòu)的語(yǔ)句:順序語(yǔ)句和并行語(yǔ)句。2022-4-12Page 15v 4.描述風(fēng)格v 描述風(fēng)格也就是建模方法。v 用VHDL語(yǔ)言描述結(jié)構(gòu)體有4種方法。v (1)行為描述法:采用進(jìn)程語(yǔ)句,順序描述被稱為設(shè)計(jì)實(shí)體的行為。v (2)數(shù)據(jù)流描述法:采用類似于布爾方程的并行信號(hào)賦值語(yǔ)句進(jìn)行描述。v (3)結(jié)構(gòu)描述法:采用元件例化語(yǔ)句描述設(shè)計(jì)實(shí)體內(nèi)的結(jié)構(gòu)組織和元件互連關(guān)系。v (4)混合描述法:采用多個(gè)進(jìn)程(process)、多個(gè)模塊(blocks)、多個(gè)子程序(subprograms)的子結(jié)構(gòu)方式,是將

11、前三種基本的描述方法組合起來。2022-4-12Page 16三種描述方式的比較三種描述方式的比較描述方式描述方式優(yōu)點(diǎn)優(yōu)點(diǎn)缺點(diǎn)缺點(diǎn)適用場(chǎng)合適用場(chǎng)合結(jié)構(gòu)化描結(jié)構(gòu)化描述述連接關(guān)系清連接關(guān)系清晰,電路模晰,電路模塊化清晰塊化清晰繁瑣、復(fù)雜繁瑣、復(fù)雜層次化設(shè)計(jì)層次化設(shè)計(jì)數(shù)據(jù)流描數(shù)據(jù)流描述述布爾函數(shù)定布爾函數(shù)定義明白義明白邏輯方程邏輯方程難以獲得難以獲得小門數(shù)設(shè)計(jì)小門數(shù)設(shè)計(jì)行為描述行為描述邏輯關(guān)系描邏輯關(guān)系描述清晰述清晰不一定能綜合不一定能綜合系統(tǒng)建模、復(fù)系統(tǒng)建模、復(fù)雜的電路雜的電路2022-4-12Page 17功能描述語(yǔ)句結(jié)構(gòu)功能描述語(yǔ)句結(jié)構(gòu)進(jìn)程語(yǔ)句進(jìn)程語(yǔ)句信號(hào)賦值語(yǔ)句信號(hào)賦值語(yǔ)句子程序調(diào)用語(yǔ)句子程

12、序調(diào)用語(yǔ)句元件例化語(yǔ)句元件例化語(yǔ)句2022-4-12Page 18例:用條件信號(hào)賦值語(yǔ)句設(shè)計(jì)四選一電路模塊Library ieee;Use ieee.std_logic_1164.all;Entitu mux4 isPort(d0,d1,d2,d3,a,b : in std_logic; q: out std_logic);End mux4;Architecture arch of mux4 is signal sel: std_logic_vector(1 downto 0);Begin sel=b&a; qzzzznull; end case; end process; end b

13、ehav;library ieee;use ieee.std_logic_1164.all;entity mux4 isport(s1,s2: in std_logic; a,b,c,d : in std_logic; z : out std_logic);end entity mux4;architecture behav of mux4 is signal s : std_logic_vector(1 downto 0);begin s=s1&s2;CASE語(yǔ)句描述的語(yǔ)句描述的4選一數(shù)據(jù)選擇器選一數(shù)據(jù)選擇器21或門或門庫(kù)文件庫(kù)文件實(shí)實(shí)體體元件定元件定義義元件元件例化例化連接連接說明

14、說明v Protel DXP不僅支持原理圖的輸入方法和VHDL輸入方法,還支持VHDL和原理圖混合輸入方法,該方法在適合用VHDL的地方用VHDL,適合用原理圖的地方用原理圖,既增強(qiáng)了電路的可移植性,又減輕了設(shè)計(jì)者的設(shè)計(jì)壓力,提高了設(shè)計(jì)效率。2022-4-12Page 22圖4-2 采用VHDL和原理圖相結(jié)合的輸入方法設(shè)計(jì)流程v Protel DXP支持幾乎所有的Altera的元件集成庫(kù),如表4-1所示。2022-4-12Page 23型號(hào)FPGA庫(kù)StratixAltera FPGAApex 20k/20kE/20KC/IIAltera FPGAFlex 10K/A/B/EAltera FP

15、GAFlex 6000/8000Altera FPGAAcex 1kAltera FPGAMax3000A/5000A/9000AAltera FPGAMax7000/A/E/S/AEAltera FPGAClassicAltera FPGAMercuryAltera FPGA表4-1Protel DXP支持的Altera庫(kù)2022-4-12Page 24【實(shí)例實(shí)例11-111-1】 VHDL VHDL與原理圖的混合設(shè)計(jì)與原理圖的混合設(shè)計(jì)本實(shí)例中,要求利用VHDL和原理圖的混合輸入方法,設(shè)計(jì)一個(gè)2位的十進(jìn)制計(jì)數(shù)器。計(jì)數(shù)器的VHDL和原理圖的混合設(shè)計(jì)原理圖如圖4-3所示。圖4-3 連接好的頂層原

16、理圖的設(shè)計(jì)v - BCD.VHDv - Binary Coded Decimal Counter (0-9) with RCOv library IEEE;v use IEEE.STD_LOGIC_1164.all;v use ieee.std_logic_unsigned.all;v -BCD-v entity BCD isv port(CLEAR,CLOCK,ENABLE: in std_logic;v RCO: out std_logic;v OCD: out std_logic_vector(3 downto 0);v end;十進(jìn)制計(jì)數(shù)器十進(jìn)制計(jì)數(shù)器VHDL語(yǔ)言語(yǔ)言2022-4-12

17、Page 25v architecture RTL of BCD isv signal CURRENT_COUNT,NEXT_COUNT: std_logic_vector(3 downto 0);v beginv REGISTER_BLOCK: process (CLEAR,CLOCK,NEXT_COUNT)v beginv if (CLEAR=1) thenv CURRENT_COUNT=x0;v elsif (CLOCK=1 and CLOCKevent) thenv CURRENT_COUNT=NEXT_COUNT;v end if;v end process;2022-4-12Pag

18、e 26v - Binary Coded Decimal generator combinational logic blockv BCD_GENERATOR: process (CURRENT_COUNT,ENABLE)v beginv if (CURRENT_COUNT=x9) and (ENABLE=1) thenv NEXT_COUNT=x0;v RCO = 1;v elsev if (ENABLE=1) thenv NEXT_COUNT = CURRENT_COUNT + 1;v elsev NEXT_COUNT = CURRENT_COUNT;v end if;v RCO = 0;

19、v end if;v end process;v OCD = CURRENT_COUNT;v end;v -鎖存器鎖存器VHDL語(yǔ)言語(yǔ)言v library IEEE;v use IEEE.std_logic_1164.all;v entity BUFGS isv port(I : in std_logic;v O : out std_logic);v end BUFGS;v architecture RTL of BUFGS isv beginv O = I;v end;2022-4-12Page 29奇偶校驗(yàn)器奇偶校驗(yàn)器VHDL語(yǔ)言語(yǔ)言v -v library IEEE;v use IEEE

20、.STD_LOGIC_1164.all;v package UTILITY ISv function fparity (vtctp : std_logic_vector) return std_logic;v end Utility;2022-4-12Page 30v -v library IEEE;v use IEEE.STD_LOGIC_1164.all;v package body UTILITY isv function fparity (vtctp : std_logic_vector) return std_logic isv variable respar : std_logic

21、;v beginv respar := 0;v for i in 0 to vtctplength - 1 loopv if vtctp(i) = 1 thenv respar := not respar;v end if;v end loop;v return respar;v end function fparity;v end package body UTILITY;v -v Library IEEE;v Use IEEE.std_logic_1164.all;v Use WORK.utility.all;v entity PARITYC isv portv (v L : in STD

22、_LOGIC_VECTOR(3 downto 0);v U : in STD_LOGIC_VECTOR(3 downto 0);v P : out STD_LOGICv );v end PARITYC;v architecture PARITY_Arch of PARITYC isv signal VTC : STD_LOGIC_VECTOR(7 downto 0);v beginv VTC(7 downto 4) = U;v VTC(3 downto 0) = L;v P Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q = XFF; End Case; End Process

23、;End RTL; 44 結(jié)果如圖7所示圖7 VHDL輸入45v 8.在原理圖編輯界面下,選擇菜單DesignCreate Sheet Symbol From Sheet,然后在彈出的窗口中選擇Tset1.VHDL,然后點(diǎn)擊OK。見圖見圖8圖8 將VHDL產(chǎn)生圖表符46v 生成如圖9所示的圖表符,圖9 將VHDL產(chǎn)生圖表符47v 9.按圖10將圖表符連接好圖10 連接圖表符48v 10.給各元件加上標(biāo)注,選擇菜單ToolsAnnotate quiet,在彈出的對(duì)話框中選擇ok,原理圖中的元件就自動(dòng)排列完成了。圖11 自動(dòng)標(biāo)注元件49v 11.添加配置文件,選擇ProjectConfigurat

24、ion Manager,在彈出的窗口(圖14)的左下角Configurations選項(xiàng)點(diǎn)擊ADD,在新彈出的窗口中輸入新的配置名Test,點(diǎn)擊ok,然后在Constraints Files選項(xiàng)點(diǎn)擊ADD,彈出對(duì)話框如圖圖12所示,選擇該軟件安裝目錄下Altium Designer Winter 09LibraryFpga,選擇NB1_6_EP1C12Q240(取決于設(shè)計(jì)中用到的子板或FPGA器件),點(diǎn)擊打開,打開,結(jié)果見圖13,選中Test下的復(fù)選框。最后點(diǎn)擊Ok。配置文件便添加到了設(shè)計(jì)中,見圖15。圖12 添加約束文件50圖13 添加配置51圖14 配置窗口52圖15 配置文件53v 12.

25、保存項(xiàng)目文件,原理圖文件及VHDL文件,選擇ProjectRecompile FPGA Project Test.PRJFPG,在原理圖編輯環(huán)境下點(diǎn)擊窗口底部的System選項(xiàng),選擇Messages如圖16所示,查看是否有錯(cuò)誤發(fā)生,檢查修改完畢后,可以開始進(jìn)行嵌入式軟件設(shè)計(jì)了。圖16 檢查錯(cuò)誤信息54基于FPGA的嵌入式軟件設(shè)計(jì)55v 1.選擇菜單FileNewEmbedded Project , 在工程欄中將會(huì)顯示新建的Embedded 工程名,選擇菜單FileSave Project ,在對(duì)話框中修改工程名稱為Test,然后Save。在工程欄中選擇File View 選項(xiàng),在工程中將會(huì)列出

26、所有屬于當(dāng)前工程的文件。 圖17 新建嵌入式工程56v 2.右鍵點(diǎn)擊嵌入式工程,在彈出窗口中選擇Add New To ProjectC File,如圖如圖18所示所示圖18 新建嵌入式文件編輯57基于基于FPGA的嵌入式軟件設(shè)計(jì)的嵌入式軟件設(shè)計(jì)v 將文件以Test文件名保存,然后在編輯界面下輸入C語(yǔ)言代碼,如圖19圖19 C語(yǔ)言輸入58v 代碼如下:v void main(void)v unsigned char x=0;v unsigned short i;v for(;)v P1=x+;v for(i=0;i0 xFFff;i+)v v _asm(nop);v v v 59v 3.保存Te

27、st.C文件,在C語(yǔ)言編輯界面下選擇菜單ProjectProject Options,在彈出的窗口中選擇Configuration項(xiàng),在下拉菜單中選擇Tasking 8051,其余選項(xiàng)按默認(rèn)處理,完成后,點(diǎn)擊Ok。圖20 編譯器選項(xiàng)60v 4.右鍵點(diǎn)擊Test.PRJEMB工程,在彈出窗口中選擇Recompile Embedded Project Test.PRJEMB,編譯無誤后即可進(jìn)行系統(tǒng)級(jí)設(shè)置。圖21 編譯結(jié)果61系統(tǒng)級(jí)設(shè)置及下載系統(tǒng)級(jí)設(shè)置及下載62v 以上介紹了基于FPGA的硬件設(shè)計(jì)和嵌入式軟件設(shè)計(jì)步驟,下面來介紹系統(tǒng)級(jí)的設(shè)計(jì)和調(diào)試。v 1.在原理圖編輯界面下,雙擊元件TSK51A_D ,在彈出的器件屬性窗口中,在右側(cè)的Parameters for U1-TSK51A_D一欄,將ChildCore1的Value值設(shè)置為設(shè)計(jì)中用到的RAMS_8x1K的標(biāo)注U4

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論