FPGA設(shè)計(jì)與VHDL實(shí)現(xiàn) 課件 第3-5章 Quartus Prime使用指南、VHDL設(shè)計(jì)初步、VHDL結(jié)構(gòu)與要素_第1頁
FPGA設(shè)計(jì)與VHDL實(shí)現(xiàn) 課件 第3-5章 Quartus Prime使用指南、VHDL設(shè)計(jì)初步、VHDL結(jié)構(gòu)與要素_第2頁
FPGA設(shè)計(jì)與VHDL實(shí)現(xiàn) 課件 第3-5章 Quartus Prime使用指南、VHDL設(shè)計(jì)初步、VHDL結(jié)構(gòu)與要素_第3頁
FPGA設(shè)計(jì)與VHDL實(shí)現(xiàn) 課件 第3-5章 Quartus Prime使用指南、VHDL設(shè)計(jì)初步、VHDL結(jié)構(gòu)與要素_第4頁
FPGA設(shè)計(jì)與VHDL實(shí)現(xiàn) 課件 第3-5章 Quartus Prime使用指南、VHDL設(shè)計(jì)初步、VHDL結(jié)構(gòu)與要素_第5頁
已閱讀5頁,還剩106頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

FPGA設(shè)計(jì)與VHDL實(shí)現(xiàn)QuartusPrime使用指南第三章英特爾FPGA中國創(chuàng)新中心系列叢書普通高等教育”十三五”規(guī)劃教材01QuartusPrime原理圖設(shè)計(jì)QuartusPrime原理圖設(shè)計(jì)半加器原理圖設(shè)計(jì)輸入1.輸入源設(shè)計(jì)文件選擇菜單File--New,在彈出的New對話框中選擇源文件的類型,本例選擇BlockDiagram/SchematicFile類型。在原理圖中調(diào)入與門(and2)、異或門(xor)、輸入引腳(input)、輸出引腳(output)等元件,并將這些元件連線,最終構(gòu)成半加器電路。1QuartusPrime原理圖設(shè)計(jì)半加器原理圖設(shè)計(jì)輸入2.創(chuàng)建工程每個(gè)設(shè)計(jì)都是一項(xiàng)工程(Project),所以還必須創(chuàng)建工程。這里利用NewProjectWizard建立工程,在此過程中要設(shè)定工程名、目標(biāo)器件、選用的綜合器和仿真器等。1QuartusPrime原理圖設(shè)計(jì)1位全加器設(shè)計(jì)輸入1.將半加器創(chuàng)建成一個(gè)元件符號選擇菜單File-Create/Update-CreateSymbolFilesforCurrentFile。2.全加器原理圖輸入(1)創(chuàng)建一個(gè)新的原理圖文件。(2)選擇菜單Edit-InsertSymbolC或者雙擊圖中空白處),出現(xiàn)Symbol元器件輸入對話框。(3)在原理圖中繼續(xù)調(diào)入或門(OR2),輸入引腳(INPUT)、輸出引腳(OUTPUT)等元件,將這些元件連線,構(gòu)成1位全加器。2QuartusPrime原理圖設(shè)計(jì)1位全加器的編譯完成了工程文件的創(chuàng)建和源文件的輸入,即可對設(shè)計(jì)進(jìn)行編譯。在編譯前,必須進(jìn)行必要的設(shè)置。1.編譯模式的設(shè)置可以設(shè)置編譯模式。選擇菜單Assignments-Settings,在如圖3.16所示的Settings窗口中,單擊左邊的CompilationProcessSettings項(xiàng),在右邊出現(xiàn)的CompilationProcessSettings窗口中,選擇使能UseSmartcompilation和Preservefewernodenrunestosave小skspace等選項(xiàng)。3QuartusPrime原理圖設(shè)計(jì)1位全加器的編譯2.編譯選擇菜單Project-SetasTop-LevelEntity,將全加器fulladder.bdf設(shè)為頂層實(shí)體,對其進(jìn)行編譯。QuartusPrime編譯器是由幾個(gè)處理模塊構(gòu)成的,分別對設(shè)計(jì)文件進(jìn)行分析檢錯(cuò)、綜合、適配等,并產(chǎn)生多種輸出文件,如定時(shí)分析文件、器件編程文件、各種報(bào)告文件等。3QuartusPrime原理圖設(shè)計(jì)1位全加器的仿真1.建立QuartusPrime和Modelsim的鏈接如果是第次使用ModelSim-Altera,需建立QuartusPrime和Modelsim的鏈接。在QuartusPrime主界面執(zhí)行Tools-Options命令,彈出Options對話框,在Options頁面的Category欄中選中EDAToolOptions,在右邊的ModelSim-Altera欄中指定ModelSim-Altera10.4d的安裝路徑,本例中為C:\intelFPGA\17.0\modelsim_ase\win32aloem。4QuartusPrime原理圖設(shè)計(jì)1位全加器的仿真3.建立測試腳本(TestBench)建立測試腳本文件(TestBench),TestBench可以自己寫,也可以由QuartusPrime自動(dòng)生成,不過生成的只是模板,核心功能語句還需自己添加。在QuartusPrime主界面中選擇菜單Processing--+Start-+StartTestBenchTemplateWriter,會(huì)自動(dòng)生成TestBench模板文件。4QuartusPrime原理圖設(shè)計(jì)1位全加器的仿真4.為TestBench文件添加核心功能語句打開自動(dòng)生成的TestBench模板文件,在其中添加測試的核心功能語句,存盤退出。4QuartusPrime原理圖設(shè)計(jì)1位全加器的下載1.器件和引腳的鎖定2.復(fù)用引腳的設(shè)置3.未用引腳狀態(tài)的設(shè)置4.選擇配置方式和配置器件5.更多編程文件格式的生成6.重新編譯7.編程下載8.觀察下載效果5QuartusPrime原理圖設(shè)計(jì)配置數(shù)據(jù)固化與脫機(jī)運(yùn)行如果需要將配置數(shù)據(jù)固化,可以將配置數(shù)據(jù)燒寫至EPCS芯片中,可達(dá)到脫機(jī)獨(dú)立運(yùn)行的目的,仍以AIGO_C4開發(fā)板為目標(biāo)板說明配置數(shù)據(jù)固化的步驟。I.將.sof在線配置文件轉(zhuǎn)換為燒寫配置芯片的.jic編程文件2.燒寫.jic文件602基于IP核的設(shè)計(jì)基于IP核的設(shè)計(jì)用LPM_COUNTER設(shè)計(jì)模24方向可控計(jì)數(shù)器QuartusPrime軟件為設(shè)計(jì)者提供了豐富的IP核,包括參數(shù)化宏功能模塊(LibraryParameterizedMegafunction,LPM)、MegaCore等,這些IP核均針對Altera的FPGA器件做了優(yōu)化,基于IP核完成設(shè)計(jì)可極大提高電路設(shè)計(jì)的效率與可靠性。1基于IP核的設(shè)計(jì)用LPM_COUNTER設(shè)計(jì)模24方向可控計(jì)數(shù)器選擇菜單Tools-IPCatalog,在QuartusPr皿e界面中會(huì)出現(xiàn)1P核目錄OPCatalog)窗口,自動(dòng)將目標(biāo)器件支持的IP核列出來。CycloneIVE器件支待的IP核目錄,包括基本功能類(BasicFunctions)、數(shù)字信號處理類(DSP)、接口協(xié)議類(InterfaceProtocols)等,每一類又包括若干子類。1基于IP核的設(shè)計(jì)用LPM_COUNTER設(shè)計(jì)模24方向可控計(jì)數(shù)器在QuartusPrime軟件中,用IP目錄(IpCatalog)和參數(shù)編輯器(ParameterEditor)代替QuartusII中的theMegaWizardPlug-InManager,用ParameterEditor可定制IP核的端口(Ports)和參數(shù)(Parameters);Qsys則用千系統(tǒng)級的IP集成,連接IP核和各子系統(tǒng),提高FPGA設(shè)計(jì)的效率。1基于IP核的設(shè)計(jì)用LPM_COUNTER設(shè)計(jì)模24方向可控計(jì)數(shù)器1.創(chuàng)建工程,定制LPM_COUNTER模塊參照上節(jié)的內(nèi)容,利用NewProjectWizard建立工程,本例中設(shè)立的工程名為count24。在QuartusPrime主界面的IPCatalog欄中,在BasicFunctions的Arithmetic目錄下找到LPM_COUNTER模塊,雙擊該模塊,出現(xiàn)SaveIPVariation對話框。1基于IP核的設(shè)計(jì)用LPM_COUNTER設(shè)計(jì)模24方向可控計(jì)數(shù)器2.編譯單擊Finish按鈕完成counter24模塊的設(shè)置后會(huì)自動(dòng)出現(xiàn)QuartusPrimeIPFiles對話框,單擊Yes按鈕選擇將生成的counter24.qip文件加入到當(dāng)前工程中。選擇菜單Project-SetasTop-LevelEntity,將counter24.qip設(shè)為頂層實(shí)體(或者將前面生成的counter24.vhd設(shè)置為頂層實(shí)體亦可),選擇菜單Processing-StartCompilation,或者單擊P按鈕,對工程進(jìn)行編譯。1基于IP核的設(shè)計(jì)用LPM_COUNTER設(shè)計(jì)模24方向可控計(jì)數(shù)器3.仿真參照3.1.4節(jié)的內(nèi)容用ModelSim-Altera對計(jì)數(shù)器進(jìn)行仿真,過程不再重復(fù)。在QuartusPrime主界面中選擇菜單Processing-Start-StartTestBenchTemplateWriter,自動(dòng)生成TestBench文件,在當(dāng)前工程所在的C:\VHDL\counter\simulation\modelsim目錄下打開自動(dòng)生成的TestBench文件(counter24.vht),在其中添加激勵(lì)語句。1基于IP核的設(shè)計(jì)用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器1.定制LPM_ROM模塊2.原理圖輸入3.mif文件的生成4.編譯5.仿真2基于IP核的設(shè)計(jì)用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器1.定制LPM_ROM模塊在IPCatalog---DeviceFamily-InstalledIP-Library-BasicFunctions的OnChipMemory目錄下找到lpm_rom宏模塊,雙擊該模塊,出現(xiàn)SaveIPVariation對話框。單擊OK按鈕,啟動(dòng)MegaWizardPlug-InManager,對lpm_rom模塊進(jìn)行參數(shù)設(shè)置。2基于IP核的設(shè)計(jì)用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器界面中設(shè)置芯片的系列、數(shù)據(jù)線和存儲(chǔ)單元數(shù)目(地址線寬度),本例中數(shù)據(jù)線寬度設(shè)為8bits,存儲(chǔ)單元的數(shù)目為256。在Whatshouldthememoryblocktypebe?欄中選擇以何種方式實(shí)現(xiàn)存儲(chǔ)器,由于芯片的不同,選擇也會(huì)不同,一般按照默認(rèn)選擇Auto即可。在最下面的Whatclockingmethodwouldyouliketouse?欄中選擇時(shí)鐘方式,可以使用2基于IP核的設(shè)計(jì)用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器界面中設(shè)置芯片的系列、數(shù)據(jù)線和存儲(chǔ)單元數(shù)目(地址線寬度),本例中數(shù)據(jù)線寬度設(shè)為8bits,存儲(chǔ)單元的數(shù)目為256。在Whatshouldthememoryblocktypebe?欄中選擇以何種方式實(shí)現(xiàn)存儲(chǔ)器,由于芯片的不同,選擇也會(huì)不同,一般按照默認(rèn)選擇Auto即可。在最下面的Whatclockingmethodwouldyouliketouse?欄中選擇時(shí)鐘方式,可以使用2基于IP核的設(shè)計(jì)用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器2.原理圖輸入選擇菜單氏le_.New,在彈出的New對話框中,選擇源文件的類型為BlockDiagram/SchematicFile,新建一個(gè)原理圖文件。在原理圖中調(diào)入剛定制好的my_rom模塊,再調(diào)入input、output等元件,連線(注意總線型連線的網(wǎng)表命名方法),完成原理圖設(shè)計(jì),如圖3.53所示是基千LPM_ROM實(shí)現(xiàn)的4x4無符號數(shù)乘法器原理圖,將該原理圖存盤(本例為C:\VHDL\mult—rom\mult_ip.bdf)。2基于IP核的設(shè)計(jì)用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器3.mif文件的生成ROM存儲(chǔ)器的內(nèi)容存儲(chǔ)在*.mif文件中,生成*.mif文件的步驟如下:在QuartusPrime軟件中,選擇菜單File-New,在New對話框中選擇MemoryFiles下的MemoryInitializationFile,單擊OK按鈕,在對話框中填寫ROM的大小為256,數(shù)據(jù)位寬取8,單擊OK按鈕,將出現(xiàn)空的mif數(shù)據(jù)表格,如圖3.56所示,可直接將乘法結(jié)果填寫到表中,填好后保存文件,取名為mult—rom.mif.2基于IP核的設(shè)計(jì)用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器4.編譯至此已完成源文件輸入,參照前面的例子,利用NewProjectWizard建立工程,本例中設(shè)立的工程名為design,選擇菜單Project-SetasTop-LevelEntity,將mult_ip.bdf設(shè)為頂層實(shí)體,選擇菜單Processing-StartCompilation(或者單擊I>按鈕),對設(shè)計(jì)進(jìn)行編譯??梢园l(fā)現(xiàn),本例只使用了2056(8x256)bits的存儲(chǔ)器構(gòu)成,沒有用到LE單元。2基于IP核的設(shè)計(jì)用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器5.仿具本例的TestBench激勵(lì)文件如例3.4所示。2基于IP核的設(shè)計(jì)用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器2基于IP核的設(shè)計(jì)用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器2基于IP核的設(shè)計(jì)用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器203SignalTapII的使用方法SignalTapII的使用方法用LPM_COUNTER設(shè)計(jì)模24方向可控計(jì)數(shù)器QuartusPrime的嵌入式邏輯分析儀Signa!TapII為設(shè)計(jì)者提供了種方便高效的硬件測試手段,它可以隨設(shè)計(jì)文件起下載到目標(biāo)芯片中,捕捉目標(biāo)芯片內(nèi)信號節(jié)點(diǎn)或總線上的數(shù)據(jù),將這些數(shù)據(jù)暫存于目標(biāo)芯片的嵌入式RAM中,然后通過器件的JTAG端口將采到的信息和數(shù)據(jù)送到計(jì)算機(jī)進(jìn)行顯示,供用戶分析。本節(jié)以正弦波信號產(chǎn)生器為例,介紹嵌入式邏輯分析儀SignalTapII的使用方法。正弦信號產(chǎn)生器的源程序如例3.5所示。1SignalTapII的使用方法用LPM_COUNTER設(shè)計(jì)模24方向可控計(jì)數(shù)器1SignalTapII的使用方法用LPM_COUNTER設(shè)計(jì)模24方向可控計(jì)數(shù)器1SignalTapII的使用方法用LPM_COUNTER設(shè)計(jì)模24方向可控計(jì)數(shù)器1SignalTapII的使用方法用LPM_COUNTER設(shè)計(jì)模24方向可控計(jì)數(shù)器1SignalTapII的使用方法用LPM_COUNTER設(shè)計(jì)模24方向可控計(jì)數(shù)器1SignalTapII的使用方法用LPM_COUNTER設(shè)計(jì)模24方向可控計(jì)數(shù)器在使用邏輯分析儀之前,需要鎖定芯片和些關(guān)鍵的引腳,本例中,需要鎖定外部時(shí)鐘輸入(elk)、復(fù)位(cir)兩個(gè)引腳,為邏輯分析儀提供時(shí)鐘源,否則將得不到邏輯分析的結(jié)果。本例的引腳鎖定基于DE2-115(也可改為其他目標(biāo)板,如C4_MB)'先指定芯片為EP4CEll5F29C7,再將elk引腳鎖定為PIN—Y2(50MHz時(shí)鐘頻率輸入)。1SignalTapII的使用方法用LPM_COUNTER設(shè)計(jì)模24方向可控計(jì)數(shù)器完成引腳鎖定并通過編譯后,就進(jìn)入嵌入式邏輯分析儀SignalTapII的使用階段,分為新建SignalTapII文件、調(diào)入節(jié)點(diǎn)信號、SignalTapII參數(shù)設(shè)置、文件存盤編譯、下載和運(yùn)行分析等步驟。104QuartusPrime的優(yōu)化設(shè)置與時(shí)序分析SignalTapII的使用方法用LPM_COUNTER設(shè)計(jì)模24方向可控計(jì)數(shù)器1.編譯設(shè)置選擇菜單Assignments----Settings,在Settings對話框中,選擇CompilerSettings,在此頁面中,可以指定編譯器高層優(yōu)化的策略(Specifyhigh-leveloptimizationsettingsfortheCompiler)。2.網(wǎng)表查看器(NetlistViewer)工程編譯后,可以使用網(wǎng)表查看器(NetlistViewer)查看綜合后的網(wǎng)表結(jié)構(gòu),分析綜合結(jié)果是否與設(shè)想的一致。1SignalTapII的使用方法用LPM_COUNTER設(shè)計(jì)模24方向可控計(jì)數(shù)器3.ChipPlanner(器件規(guī)劃圖)工程編譯后,還可以使用ChipPlanner工具查看布局布線的詳細(xì)信息,顯示各個(gè)功能模塊間的布線資源,查看各個(gè)LUT的Fan-In、Fan-Out,布局連線的疏密程度,各模塊的位置,路徑延時(shí),等等。1SignalTapII的使用方法用LPM_COUNTER設(shè)計(jì)模24方向可控計(jì)數(shù)器4.器件資源利用報(bào)告編譯后,還可以查看器件資源利用信息,這些信息對分析設(shè)計(jì)中的布局布線問題有時(shí)非常必要。要確定資源使用情況,可查看CompilationReport中的FlowSummary,得到邏輯資源利用百分比,用了多少LE單元、引腳、存儲(chǔ)器、乘法器、鎖相環(huán)等。1SignalTapII的使用方法用LPM_COUNTER設(shè)計(jì)模24方向可控計(jì)數(shù)器5.設(shè)計(jì)可靠性檢查選擇菜單Assignments-Settings,在Settings對話框的Category中選中DesignAssistant,然后在右邊的對話框中使能RunDesignAssistantduringcompilation選項(xiàng),對工程編譯后,可在CompilationReport中查看DesignAssistant報(bào)告。1感謝觀看,再見!FPGA設(shè)計(jì)與VHDL實(shí)現(xiàn)英特爾FPGA中國創(chuàng)新中心系列叢書普通高等教育”十三五”規(guī)劃教材FPGA設(shè)計(jì)與VHDL實(shí)現(xiàn)VHDL設(shè)計(jì)初步第四章英特爾FPGA中國創(chuàng)新中心系列叢書普通高等教育”十三五”規(guī)劃教材01VHDL簡介VHDL簡介VHDL是種標(biāo)準(zhǔn)化程度較高的硬件描述語言,它源于美國國防部CDOD)提出的超高速集成電路計(jì)劃,其目的是為了在各個(gè)承擔(dān)國防部訂貨的集成電路廠商間建立個(gè)統(tǒng)的設(shè)計(jì)數(shù)據(jù)和文檔交換格式,其名字的全稱是超高速集成電路硬件描述語言。VHDL簡介?1983年VHDL語言正式提出。?1987年IEEE將VHDL采納為標(biāo)準(zhǔn),即"IEEEStd1076-987",從而使VHDL成為硬件描述語言的業(yè)界標(biāo)準(zhǔn)之一,各EDA公司相繼推出自己的VHDL設(shè)計(jì)環(huán)境,或宣布自己的設(shè)計(jì)工具支持VHDL。?1993年,IEEE對VHDL做了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展了VHDL的功能,公布了新版本的VHDL標(biāo)準(zhǔn),即"IEEEStd1076一1993"版本。?1997年,VHDL綜合程序包"IEEEStd1076.3-1997"發(fā)布。VHDL簡介?2002年IEEE公布了更新的VHDL標(biāo)準(zhǔn)版本,即"IEEEStd1076VHDL的出現(xiàn)是為了適應(yīng)數(shù)字系統(tǒng)設(shè)計(jì)日益復(fù)雜的需求,以及設(shè)計(jì)者在設(shè)計(jì)可重用、可移植性方面提出的更高的要求,目前VHDL已被廣泛用于電路與系統(tǒng)設(shè)計(jì)、數(shù)字邏輯綜合、電路仿真等領(lǐng)域,可勝任數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能描述。同時(shí),隨著技術(shù)和工藝的進(jìn)步,VHDL語言也不斷更新,以跟上時(shí)代的發(fā)展和進(jìn)步。VHDL簡介概括地說,VHDL語言具有以下特點(diǎn)。1.語法嚴(yán)謹(jǐn),結(jié)構(gòu)規(guī)范,移植性強(qiáng)。VHDL語言是種被IEEE標(biāo)準(zhǔn)化的硬件描述語言,幾乎被所有的EDA工具所支持,可移植性強(qiáng),便于多人合作進(jìn)行大規(guī)模復(fù)雜電路的設(shè)計(jì);VHDL語言語法嚴(yán)謹(jǐn)、規(guī)范,具備強(qiáng)大的電路行為描述能力,尤其擅長于復(fù)雜的多層次結(jié)構(gòu)的數(shù)字系統(tǒng)設(shè)計(jì)。VHDL簡介2.數(shù)據(jù)類型豐富:VHDL有整型、布爾型、字符型、位型(B心、位矢掀型(Bit_Vector)、時(shí)間型(Time)等數(shù)據(jù)類型,這些數(shù)據(jù)類型具有鮮明的物理意義,VHDL也允許設(shè)計(jì)者自己定義數(shù)據(jù)類型,自己定義的數(shù)據(jù)類型可以是標(biāo)準(zhǔn)數(shù)據(jù)類型復(fù)合而成的枚舉、數(shù)組或記錄(Record)等類型。VHDL簡介3.支持層次結(jié)構(gòu)設(shè)計(jì):VHDL適于采用Top-down的設(shè)計(jì)方法,對系統(tǒng)進(jìn)行分模塊、分層次描述,同樣也適于Bottom-up的設(shè)計(jì)思路;在對數(shù)字系統(tǒng)建模時(shí)支持結(jié)構(gòu)描述、數(shù)據(jù)流描述和行為描述,可以像軟件程序那樣描述模塊的行為特征,這時(shí)設(shè)計(jì)者注意力可以集中在模塊的功能上,而不是具體實(shí)現(xiàn)結(jié)構(gòu)上。設(shè)計(jì)人員可根據(jù)需要靈活地運(yùn)用不同的設(shè)計(jì)風(fēng)格。VHDL簡介4.獨(dú)立于器件和設(shè)計(jì)平臺(tái):V印衛(wèi),具有很好的適應(yīng)性,其設(shè)計(jì)獨(dú)立于器件和平臺(tái),可迅速移植到其他平臺(tái)或其他器件,用戶在設(shè)計(jì)時(shí)對器件結(jié)構(gòu)與細(xì)節(jié)可不用考慮。VHDL簡介5.便于設(shè)計(jì)復(fù)用:VHDL提供了豐富的庫、程序包,便于設(shè)計(jì)復(fù)用,還提供了配置、子程序、函數(shù)、過程等結(jié)構(gòu)便于設(shè)計(jì)者構(gòu)建自己的設(shè)計(jì)庫。VHDL簡介VHDL的出現(xiàn)是為了適應(yīng)數(shù)字系統(tǒng)設(shè)計(jì)日益復(fù)雜的需求,以及設(shè)計(jì)者在設(shè)計(jì)可重用、可移植性方面提出的更高的要求,目前VHDL已被廣泛用于電路與系統(tǒng)設(shè)計(jì)、數(shù)字邏輯綜合、電路仿真等領(lǐng)域,可勝任數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能描述。同時(shí),隨著技術(shù)和工藝的進(jìn)步,VHDL語言也不斷更新,以跟上時(shí)代的發(fā)展和進(jìn)步。02VHDL組臺(tái)電路設(shè)計(jì)VHDL組臺(tái)電路設(shè)計(jì)1.用VHDL設(shè)計(jì)三人表決電路電路表示的邏輯函數(shù)可表示為:f=ab+be+ac。2.用VHDL設(shè)計(jì)二進(jìn)制加法器加法器也是常用的組合邏輯電路。3.用VHDL設(shè)計(jì)BCD碼加法器BCD碼加法器,采用的是逄十進(jìn)一的規(guī)則。VHDL組臺(tái)電路設(shè)計(jì)從書寫形式看VHDL程序具有以下特點(diǎn)。1.VHDL每個(gè)語句的最后一般用分號(;)結(jié)束。2.VHDL程序書寫格式自由,可通過增加空格、轉(zhuǎn)行等提高程序的可讀性。3.以“一“開始的語句為注釋語句,用來增強(qiáng)程序的可讀性和可維護(hù)性,注釋語句不參與編譯。4.VHDL關(guān)鍵字(或稱為保留字)對大小寫不敏感(大寫、小寫均可)。VHDL組臺(tái)電路設(shè)計(jì)有關(guān)的VHDL語法如下。1.INTEGER數(shù)據(jù)類型。將輸入數(shù)據(jù)a、b,輸出數(shù)據(jù)sum定義為INTEGER(整數(shù))數(shù)據(jù)類型,INTEGER型數(shù)據(jù)是VHDL的10種標(biāo)準(zhǔn)數(shù)據(jù)類型之一,不須做任何聲明即可使用。INTEGER型的數(shù)可包括正整數(shù)、負(fù)整數(shù)和零。在可綜合的設(shè)計(jì)中,要求用RANGE語句限定其取值范圍,這樣綜合器會(huì)根據(jù)所限定的范圍來決定表示此信號或變量的二進(jìn)制位數(shù)。比如在上面的例子中,a、b(RANGEOTO16)會(huì)用4位二進(jìn)制數(shù)表示,sum(RANGEOTO32)會(huì)用5位二進(jìn)制數(shù)表示。03VHDL時(shí)序電路設(shè)計(jì)VHDL組臺(tái)電路設(shè)計(jì)1.用VHDL設(shè)計(jì)D觸發(fā)器

時(shí)序電路最基本的器件是觸發(fā)器,。2.用VHDL設(shè)計(jì)計(jì)數(shù)器計(jì)數(shù)器是另一種典型的時(shí)序邏輯電路,用VHDL能夠非常方便地描述各種功能的計(jì)數(shù)器電路。感謝觀看,再見!FPGA設(shè)計(jì)與VHDL實(shí)現(xiàn)英特爾FPGA中國創(chuàng)新中心系列叢書普通高等教育”十三五”規(guī)劃教材FPGA設(shè)計(jì)與VHDL實(shí)現(xiàn)VHDL結(jié)構(gòu)與要素第五章英特爾FPGA中國創(chuàng)新中心系列叢書普通高等教育”十三五”規(guī)劃教材01實(shí)體實(shí)體程序通常包含實(shí)體(ENTITY)、結(jié)構(gòu)體(ARCHITECTURE)、配置(CONFIGURATION)、程序包(PACKAGE)和庫(LIBRARY)五個(gè)部分。其中,實(shí)體和結(jié)構(gòu)體是每個(gè)程序必備的,是最基本的VHDL程序組成部分。實(shí)體名可自己命名,般根據(jù)模塊的功能或特點(diǎn)取名;GENERIC類屬說明語句用于定義類屬參數(shù);PORT語句用于定義模塊端口信息;方括號內(nèi)的語句可選,只在需要時(shí)加上。實(shí)體類屬參數(shù)說明用類屬說明語句可指定參數(shù),如總線寬度等,它以關(guān)鍵詞GENERIC引導(dǎo)個(gè)類屬參量表,在表中提供時(shí)間參數(shù)或總線寬度等信息,通過參數(shù)傳遞,很容易改變一個(gè)設(shè)計(jì)實(shí)體內(nèi)部電路規(guī)模。采用類屬說明語句定義了加法器操作數(shù)的數(shù)據(jù)寬度,如果要改變加法器的規(guī)模,比如改為8位、32位的加法器,只需改變類屬參量width的賦值即可。1實(shí)體端口說明端口是實(shí)體與外部進(jìn)行通信的接口,類似于電路圖符號的引腳。端口說明語句由PORT引導(dǎo),包括端口名、端口模式、數(shù)據(jù)類型等。端口名是賦予每個(gè)實(shí)體外部引腳的名稱,通常用英文字母,或者英文字母加數(shù)字命名,如dO、sel、qO等。202結(jié)構(gòu)體實(shí)體類屬參數(shù)說明結(jié)構(gòu)體(ARCHITECTURE)也稱為構(gòu)造體,結(jié)構(gòu)體是對實(shí)體功能的具體描述。它可以描述實(shí)體的邏輯行為、功能,也可以描述實(shí)體的內(nèi)部構(gòu)造、所用元件及內(nèi)部連接關(guān)系。1實(shí)體類屬參數(shù)說明1.結(jié)構(gòu)體名結(jié)構(gòu)體名可自行定義,"OF"后面的實(shí)體名指明了該結(jié)構(gòu)體對應(yīng)的實(shí)體。2.結(jié)構(gòu)體說明語句結(jié)構(gòu)體說明語句用于對結(jié)構(gòu)體內(nèi)部將要使用的信號、常數(shù)、數(shù)據(jù)類型、元件、函數(shù)和過程等加以說明,結(jié)構(gòu)體說明語句必須放在關(guān)鍵詞ARCHITECTURE和BEGIN之間。1實(shí)體類屬參數(shù)說明3.結(jié)構(gòu)體功能描述語句結(jié)構(gòu)體功能描述語旬位于BEGIN和END之間,具體描述結(jié)構(gòu)體的行為、功能或者連接關(guān)系。1實(shí)體列出了5種功能描述語句。塊語句:塊語旬是由一系列并行語句構(gòu)成的組合體,其功能是將結(jié)構(gòu)體中的并行語句組成一個(gè)或多個(gè)子模塊。進(jìn)程語句:進(jìn)程由順序語句組成,用以將從外部獲得的信號值或內(nèi)部運(yùn)算數(shù)據(jù)賦值給其他的信號。實(shí)體信號賦值語句:將設(shè)計(jì)實(shí)體內(nèi)的處理結(jié)果賦值給定義的信號或界面端口。子程序調(diào)用語句:可以調(diào)用進(jìn)程或參數(shù),并將獲得的結(jié)果賦值給信號。元件例化語句:將其他的設(shè)計(jì)實(shí)體打包成元件,調(diào)用元件并將元件的端口與其他元件、信號或高層實(shí)體的界面端口進(jìn)行連接。實(shí)體4.結(jié)構(gòu)體描述方式結(jié)構(gòu)體主要有3種描述方式,即行為描述、數(shù)據(jù)流描述和結(jié)構(gòu)描述。我們給結(jié)構(gòu)體命名時(shí)通常用不同的名字來區(qū)分這3種描述方式,比如用behavior、dataflow和structural分別表示行為、數(shù)據(jù)流和結(jié)構(gòu)描述,這樣可使我們在閱讀VHDL程序時(shí),能更清楚地了解設(shè)計(jì)者采用的描述方式。03VHDL庫和程序包VHDL庫和程序包庫庫(LIBRARY)是已編譯數(shù)據(jù)的集合,存放程序包定義、實(shí)體定義、結(jié)構(gòu)體定義和配置定義,庫以VHDL源文件的形式存在,在綜合時(shí)綜合器可隨時(shí)讀入使用,便于設(shè)計(jì)者共享己編譯過的設(shè)計(jì)結(jié)果。1VHDL庫和程序包庫常用的VHDL庫有:STD庫、WORK庫、IEEE庫、ASIC庫和用戶自定義庫等。1VHDL庫和程序包庫一般在基于FPGA/CPLD的開發(fā)中,打開IEEE庫中的STD_LOGIC_ll64、STD_LOGIC_ARITH、STD_LOGIC_SIGNED和STD_LOGIC_UNSIGNED這4個(gè)程序包基本夠用,需注意的是在使用前,必須書寫聲明語句。除STD庫和WORK庫外,其他庫在使用前都必須顯式地聲明,另外,還需使用USE語句指明庫中的程序包。1VHDL庫和程序包庫在實(shí)際設(shè)計(jì)中,若用USE語句直接指定該項(xiàng)目名,可節(jié)省綜合器綜合時(shí)從程序包中查找相關(guān)項(xiàng)目與元件的時(shí)間。在VHDL中,庫的說明語句總是放在實(shí)體單元前面。這樣,在實(shí)體中就可以任意使用庫中的數(shù)據(jù)和文件。由此可見,庫的用處在于使設(shè)計(jì)者共享已經(jīng)完成的設(shè)計(jì)成果。VHDL允許在同一個(gè)實(shí)體中同時(shí)打開多個(gè)不同的庫,但庫之間必須是相互獨(dú)立的。1VHDL庫和程序包庫在實(shí)際設(shè)計(jì)中,若用USE語句直接指定該項(xiàng)目名,可節(jié)省綜合器綜合時(shí)從程序包中查找相關(guān)項(xiàng)目與元件的時(shí)間。在VHDL中,庫的說明語句總是放在實(shí)體單元前面。這樣,在實(shí)體中就可以任意使用庫中的數(shù)據(jù)和文件。由此可見,庫的用處在于使設(shè)計(jì)者共享已經(jīng)完成的設(shè)計(jì)成果。VHDL允許在同一個(gè)實(shí)體中同時(shí)打開多個(gè)不同的庫,但庫之間必須是相互獨(dú)立的。2VHDL庫和程序包庫程序包(PACKAGE)主要用來存放各個(gè)設(shè)計(jì)能夠共享的信號說明、常瘟定義、數(shù)據(jù)類型、子程序說明、屬性說明和元件說明等部分。如果要使用程序包中的某些說明和定義,設(shè)計(jì)者只要用USE語句聲明下即可。程序包由兩個(gè)部分組成的:程序包首和程序包體。程序包首部分主要對數(shù)據(jù)類型、子程序、常暈、信號、元件、屬性和屬性指定等進(jìn)行說明,所有說明語句是對外可見的,這一點(diǎn)與實(shí)體說明部分相似。104配置配置配置主要用于指定實(shí)體和結(jié)構(gòu)體之間的對應(yīng)關(guān)系。一個(gè)實(shí)體可以有多個(gè)結(jié)構(gòu)體,每個(gè)結(jié)構(gòu)體對應(yīng)著實(shí)體的一種實(shí)現(xiàn)方案,但在每次綜合時(shí),綜合器只能接受一個(gè)結(jié)構(gòu)體,通過配置語句可以為實(shí)體指定或配置一個(gè)結(jié)構(gòu)體;仿真時(shí),可通過配置使仿真器為同實(shí)體配置不同的結(jié)構(gòu)體,從而使設(shè)計(jì)者比較不同結(jié)構(gòu)體的仿真差別。配置也可以用于指定元件和設(shè)計(jì)實(shí)體之間的對應(yīng)關(guān)系,或者為例化的各元件實(shí)體指定結(jié)構(gòu)體,從而形成個(gè)所希望的例化元件層次構(gòu)成的設(shè)計(jì)。05子程序子程序過程過程由過程首和過程體構(gòu)成,過程首不是必需的,如果僅僅在個(gè)結(jié)構(gòu)體中定義并調(diào)用過程,是不需要定義過程首的,只需要定義過程體;只有當(dāng)想要將所定義的過程打包成程序包入庫時(shí),才需要定義過程首,這樣,這個(gè)過程就可以在任何設(shè)計(jì)中被調(diào)用。過程體由順序語句組成,調(diào)用過程即啟動(dòng)了過程體順序語句的執(zhí)行。過程體中的說明語句是局部的,其有效范圍只限于該過程體內(nèi)部。1子程序函數(shù)函數(shù)與過程的定義有類似的地方,也有明顯的區(qū)別。函數(shù)也由函數(shù)首和函數(shù)體構(gòu)成,函數(shù)首不是必需的,可以只使用函數(shù)體,如果僅僅在個(gè)結(jié)構(gòu)體中定義并調(diào)用函數(shù),則不需要定義函數(shù)首,只需要定義函數(shù)體即可。在將所定義的函數(shù)打包成程序包入庫時(shí),則需要定義函數(shù)首,這樣,這個(gè)函數(shù)就可以在任意設(shè)計(jì)中被調(diào)用。函數(shù)首由函數(shù)名、參數(shù)表和返回值的數(shù)據(jù)類型組成,而函數(shù)的具體功能在函數(shù)體中定義。206VHDL文字規(guī)則VHDL文字規(guī)則標(biāo)識(shí)符標(biāo)識(shí)符用來命名和區(qū)分端口、信號、變址或參數(shù)等,它表現(xiàn)為用26個(gè)大寫和小寫的英文,字符、0~9Clo個(gè)數(shù)字)和下畫線("_")組成的字符串。標(biāo)識(shí)符的書寫有兩個(gè)規(guī)范,VHDL'87規(guī)范和VHDL'93規(guī)范。一般將VHDL'87標(biāo)準(zhǔn)中定義的標(biāo)識(shí)符稱為短標(biāo)識(shí)符,將VHDL'93標(biāo)準(zhǔn)中定義的標(biāo)識(shí)符稱為擴(kuò)展標(biāo)識(shí)符。1VHDL文字規(guī)則標(biāo)識(shí)符VHDL'93標(biāo)準(zhǔn)中,擴(kuò)展標(biāo)識(shí)符的命名必須遵循下列規(guī)則:1.擴(kuò)展標(biāo)識(shí)符用反斜杠來分隔,例如:\addr_bus\。2.擴(kuò)展標(biāo)識(shí)符中允許包含圖形符號和空格等,例如:\addr&_bus\,\addr_bus\。3.擴(kuò)展標(biāo)識(shí)符的兩個(gè)反斜杠之間可以使用保留字,例如:\begin\。4.擴(kuò)展標(biāo)識(shí)符中允許多個(gè)下畫線相連。5.同名的擴(kuò)展標(biāo)識(shí)符和短標(biāo)識(shí)符不同,例如:\data\與data是不同的。6擴(kuò)展標(biāo)識(shí)符區(qū)分大小寫,例如:\data\與\DATA\是不同的標(biāo)識(shí)符。7.若擴(kuò)展標(biāo)識(shí)符中含有一個(gè)反斜杠,則應(yīng)該用兩個(gè)相鄰的反斜杠來代替。1VHDL文字規(guī)則數(shù)字VHDL中的數(shù)字主要表現(xiàn)為整數(shù)、實(shí)數(shù)和物理量文字三種形式。2VHDL文字規(guī)則字符串字符是用單引號括起的ASCII字符,可以是數(shù)值,也可以是符號或字母。字符串是一維的字符數(shù)組,須放在雙引號中。字符串可分為兩種,即文字字符串和數(shù)位字符串。307數(shù)據(jù)對象數(shù)據(jù)對象常量常量或稱為常數(shù),是定義后其值不再改變的數(shù)據(jù)對象,可在實(shí)體、結(jié)構(gòu)體、程序包、子程序和進(jìn)程中定義,具有全局性。常量在使用前必須進(jìn)行說明,只有進(jìn)行說明之后的常量才能在VHDL程序中使用。1數(shù)據(jù)對象變量變量只能在進(jìn)程和子程序(函數(shù)和過程)中定義和使用,是一個(gè)局部量。在仿真過程中,它不像信號那樣,到了規(guī)定的仿真時(shí)間才進(jìn)行賦值,變量的賦值是立即生效的。變量的主要作用是在進(jìn)程中作為臨時(shí)性的數(shù)據(jù)存儲(chǔ)單元。2數(shù)據(jù)對象變量在變暈定義語句中可以定義初始值,這是一個(gè)與變晝具有相同數(shù)據(jù)類型的常數(shù)值,初始值的定義不是必需的,并且只在仿真中有效,在綜合時(shí),綜合器并不支持初始值設(shè)置。變盆作為局部晝,其有效范圍僅限于定義了變蜇的進(jìn)程或子程序中,另外,變盤的值將隨變云賦值語句先后順序的改變而改變,因此,變暈賦值語句與軟件語言中的串行語句類似。2數(shù)據(jù)對象信號信號常用來表示電路節(jié)點(diǎn)或內(nèi)部連線。信號通常在結(jié)構(gòu)體、程序包和實(shí)體中說明。信號和變量在賦值符號、適用范圍和行為特性等方面都是有明顯區(qū)別的。在進(jìn)程中,信號在進(jìn)程結(jié)束時(shí)賦值才起作用,而變量賦值是立即起作用的。3數(shù)據(jù)對象文件對文件進(jìn)行說明的一般格式為:FILE文件變量:TEXTIS方向“文件名“;從文件中讀出一行的格式是:READ蕁NE(文件變量,行變量);408VHDL數(shù)據(jù)類型VHDL數(shù)據(jù)類型VHDL中的信號、常量、常數(shù)等都要指定數(shù)據(jù)類型,VHDL提供了多種標(biāo)準(zhǔn)的數(shù)據(jù)類型,為方便設(shè)計(jì),還可以由用戶自己定義數(shù)據(jù)類

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論