北航NIOS教程_第1頁(yè)
北航NIOS教程_第2頁(yè)
北航NIOS教程_第3頁(yè)
北航NIOS教程_第4頁(yè)
北航NIOS教程_第5頁(yè)
已閱讀5頁(yè),還剩114頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、12第第7 7章章 Nios Nios 嵌入式處理器設(shè)計(jì)嵌入式處理器設(shè)計(jì)7.1 Nios 嵌入式處理器簡(jiǎn)介嵌入式處理器簡(jiǎn)介7.2 Nios 嵌入式處理器軟、硬件開(kāi)發(fā)流程嵌入式處理器軟、硬件開(kāi)發(fā)流程7.3 Nios 嵌入式處理器系統(tǒng)的開(kāi)發(fā)嵌入式處理器系統(tǒng)的開(kāi)發(fā)7.4 Nios 嵌入式處理器外圍接口嵌入式處理器外圍接口7.5 HAL系統(tǒng)庫(kù)系統(tǒng)庫(kù)7.6 設(shè)計(jì)實(shí)例設(shè)計(jì)實(shí)例電子鐘電子鐘37.1 7.1 Nios 嵌入式處理器簡(jiǎn)介嵌入式處理器簡(jiǎn)介一、第一代一、第一代NiosNios嵌入式處理器嵌入式處理器二、第二代二、第二代NiosNios嵌入式處理器嵌入式處理器三、可配置的軟核嵌入式處理器的優(yōu)勢(shì)三、可配

2、置的軟核嵌入式處理器的優(yōu)勢(shì)47.1 7.1 Nios 嵌入式處理器簡(jiǎn)介嵌入式處理器簡(jiǎn)介一、第一代一、第一代NiosNios嵌入式處理器嵌入式處理器 2000年,年,Altera發(fā)布了發(fā)布了Nios處理器,這是第一款可處理器,這是第一款可用于可編程邏輯器件的可配置的軟核處理器。用于可編程邏輯器件的可配置的軟核處理器?;诨赗ISC技術(shù)技術(shù)16位指令集位指令集16/32位數(shù)據(jù)通道位數(shù)據(jù)通道5級(jí)流水線(xiàn)級(jí)流水線(xiàn)在一個(gè)時(shí)鐘周期內(nèi)完成一條指令的處理在一個(gè)時(shí)鐘周期內(nèi)完成一條指令的處理具有一種基于具有一種基于JTAG的的OCI(片上儀器)芯核(片上儀器)芯核57.1 7.1 Nios 嵌入式處理器簡(jiǎn)介嵌入式

3、處理器簡(jiǎn)介 2003年,年,Altera發(fā)布了發(fā)布了Nios3.0處理器,它有處理器,它有16位和位和32位兩個(gè)版本,能在低成本的位兩個(gè)版本,能在低成本的Cyclone和高性能的和高性能的Stratrix芯片上實(shí)現(xiàn)。芯片上實(shí)現(xiàn)。 主要特性:主要特性:更多的可配置寄存器更多的可配置寄存器極大的靈活性和可擴(kuò)展性極大的靈活性和可擴(kuò)展性功能強(qiáng)大的開(kāi)發(fā)工具(功能強(qiáng)大的開(kāi)發(fā)工具(SOPC Builder)第一代第一代NiosNios處理器的處理器的缺點(diǎn)缺點(diǎn)沒(méi)有提供軟件開(kāi)發(fā)的集成環(huán)境,用戶(hù)需要在沒(méi)有提供軟件開(kāi)發(fā)的集成環(huán)境,用戶(hù)需要在Nios SDK ShellNios SDK Shell中以命令行的形式執(zhí)行

4、軟件的編譯、運(yùn)行、調(diào)試。程序的編中以命令行的形式執(zhí)行軟件的編譯、運(yùn)行、調(diào)試。程序的編輯、編譯、運(yùn)行都是分離的。輯、編譯、運(yùn)行都是分離的。不支持對(duì)項(xiàng)目的編譯。不支持對(duì)項(xiàng)目的編譯。67.1 7.1 Nios 嵌入式處理器簡(jiǎn)介嵌入式處理器簡(jiǎn)介二、第二代二、第二代NiosNios嵌入式處理器嵌入式處理器2004年月年月,Altera繼在全球推出繼在全球推出Cyclone和和Stratrix器件系列后,又推出支持這些新款芯片器件系列后,又推出支持這些新款芯片的的Nios嵌入式處理器。嵌入式處理器。 與第一代與第一代NiosNios相比,相比,最大處理性能提高了最大處理性能提高了3 3倍,倍,CPUCPU

5、內(nèi)核部分的面積最大可縮小內(nèi)核部分的面積最大可縮小1/21/2(3232位位Nios Nios 處理處理器占用器占用15001500個(gè)個(gè)LELE, Nios II Nios II 最少只占用最少只占用600600個(gè)個(gè)LELE)。)。廣泛應(yīng)用于嵌入式系統(tǒng)的設(shè)計(jì)中。廣泛應(yīng)用于嵌入式系統(tǒng)的設(shè)計(jì)中。 77.1 7.1 Nios 嵌入式處理器簡(jiǎn)介嵌入式處理器簡(jiǎn)介種類(lèi)種類(lèi)特性特性CPU結(jié)構(gòu)結(jié)構(gòu)32Bit指令集指令集32Bit數(shù)據(jù)寬度線(xiàn)數(shù)據(jù)寬度線(xiàn)32個(gè)通用寄存器個(gè)通用寄存器2G Byte尋址空間尋址空間片內(nèi)調(diào)試片內(nèi)調(diào)試基于邊界掃描測(cè)試基于邊界掃描測(cè)試(JTAG)的調(diào)試邏輯,支的調(diào)試邏輯,支持硬件斷點(diǎn)、數(shù)據(jù)觸發(fā)

6、以及片外和片內(nèi)的調(diào)持硬件斷點(diǎn)、數(shù)據(jù)觸發(fā)以及片外和片內(nèi)的調(diào)試跟蹤試跟蹤定制指令定制指令最多達(dá)到最多達(dá)到256個(gè)用戶(hù)定義的個(gè)用戶(hù)定義的CPU指令指令軟件開(kāi)發(fā)工具軟件開(kāi)發(fā)工具NiosIDE(集成開(kāi)發(fā)環(huán)境)(集成開(kāi)發(fā)環(huán)境)基于基于GNU的編譯器的編譯器硬件輔助的調(diào)試模塊硬件輔助的調(diào)試模塊表表7-1Nios 系列處理器的特性系列處理器的特性87.1 7.1 Nios 嵌入式處理器簡(jiǎn)介嵌入式處理器簡(jiǎn)介 Nios II提供提供3種種不同的內(nèi)核,以滿(mǎn)足系統(tǒng)對(duì)不同性能和成本的需求。不同的內(nèi)核,以滿(mǎn)足系統(tǒng)對(duì)不同性能和成本的需求。最高性能的優(yōu)化最高性能的優(yōu)化平衡性能和尺寸平衡性能和尺寸最小邏輯占用的優(yōu)化最小邏輯占用

7、的優(yōu)化表表7-2Nios 系列處理器的成員系列處理器的成員97.1 7.1 Nios 嵌入式處理器簡(jiǎn)介嵌入式處理器簡(jiǎn)介Nios vs Nios Nios Nios Pipelined RISC Architecture32-Bit InstructionsFlat Register File32-Bit Data Path32 Prioritized InterruptsOptional Instruction & Data CacheCustom Instructions Branch Prediction Nios NiosPipelined RISC Architecture16

8、-Bit InstructionsWindowed Register File16 -Bit or 32-Bit Data Path64 Prioritized InterruptsOptional Instruction & Data CacheCustom Instructions 107.1 7.1 Nios 嵌入式處理器簡(jiǎn)介嵌入式處理器簡(jiǎn)介Nios : Faster & Smaller(Nios /f)117.1 7.1 Nios 嵌入式處理器簡(jiǎn)介嵌入式處理器簡(jiǎn)介Nios : Faster & Smaller (Nios /s)127.1 7.1 Nios 嵌入

9、式處理器簡(jiǎn)介嵌入式處理器簡(jiǎn)介Nios : Faster & Smaller (Nios /e)137.1 7.1 Nios 嵌入式處理器簡(jiǎn)介嵌入式處理器簡(jiǎn)介High-Performance Interconnect 采用內(nèi)部采用內(nèi)部Avlon總線(xiàn),連接總線(xiàn),連接主從構(gòu)件,并進(jìn)行主從構(gòu)件間的通信。主從構(gòu)件,并進(jìn)行主從構(gòu)件間的通信。 主外設(shè)主外設(shè)從外設(shè)從外設(shè)147.1 7.1 Nios 嵌入式處理器簡(jiǎn)介嵌入式處理器簡(jiǎn)介Some Important Peripherals for Nios II System ID PeripheralUsed to Ensure Hardware/Soft

10、ware Version SynchronizationSimple 2 read-only register peripheral containing hardware ID tags.Register 1 contains random numberRegister 2 contains time and date when system was generated in SOPC BuilderCan be checked at runtime to ensure that the software to be downloaded matches the hardware image

11、 Memory InterfacesEPCS Serial Flash ControllerOn-ChipRAM, ROMOff-ChipSRAMCFI Flash157.1 7.1 Nios 嵌入式處理器簡(jiǎn)介嵌入式處理器簡(jiǎn)介Other Important Peripherals for Nios II LCD Display JTAG UART Single JTAG Connection For: Device ConfigurationCode DownloadDebugTarget STDIO (printing)Flash Programming Compact Flash Inte

12、rface Mass Storage SupportTrue IDE ModeCompact Flash ModeSoftware SupportsLow-Level APIMicroC/OS- File System SupportCLinux File System167.1 7.1 Nios 嵌入式處理器簡(jiǎn)介嵌入式處理器簡(jiǎn)介New Peripherals for Nios II 5.0 SSRAM ControllerCypress CY7C1380C Sync SRAM controller Provided to support SSRAM component on Cyclone

13、II dev kit board Not a fully configurable general purpose controller Support for DDR/DDR2 in SOPC Builder GUIWith burst adapter Sequential master to interleaved slave enhancementSeparate READ/Write duplex slaves Automatically matches address of read/write slaves Arbitration logic connects read/write

14、 masters to both slaves Support for PCI and Bursting DMA in SOPC Builder GUIHigher bandwidth transfers through PCI177.1 7.1 Nios 嵌入式處理器簡(jiǎn)介嵌入式處理器簡(jiǎn)介Example of a Nios Processor System處理器內(nèi)核處理器內(nèi)核內(nèi)部總線(xiàn)內(nèi)部總線(xiàn)定時(shí)器定時(shí)器外設(shè)接口外設(shè)接口187.1 7.1 Nios 嵌入式處理器簡(jiǎn)介嵌入式處理器簡(jiǎn)介Nios II: Hard Numbers197.1 7.1 Nios 嵌入式處理器簡(jiǎn)介嵌入式處理器簡(jiǎn)介三、可配置的

15、軟核嵌入式處理器的優(yōu)勢(shì)三、可配置的軟核嵌入式處理器的優(yōu)勢(shì)1. 1. 合理的性能組合合理的性能組合使用使用Nios嵌入式處理器和嵌入式處理器和FPGA,用戶(hù)可以實(shí),用戶(hù)可以實(shí)現(xiàn)在處理器、外設(shè)、存儲(chǔ)器和現(xiàn)在處理器、外設(shè)、存儲(chǔ)器和I/O接口方面的合理接口方面的合理組合。組合。3種處理器內(nèi)核種處理器內(nèi)核6060余種余種SOPC BuilderSOPC Builder配備的配備的IP核核 無(wú)限的無(wú)限的DMADMA通道組合通道組合可配置的硬件及軟件調(diào)試特性可配置的硬件及軟件調(diào)試特性207.1 7.1 Nios 嵌入式處理器簡(jiǎn)介嵌入式處理器簡(jiǎn)介2. 2. 提升系統(tǒng)的性能提升系統(tǒng)的性能 NiosNios系統(tǒng)的

16、性能可根據(jù)應(yīng)用來(lái)裁減,與固定系統(tǒng)的性能可根據(jù)應(yīng)用來(lái)裁減,與固定的處理器相比,在較低的時(shí)鐘速率下具備更高的處理器相比,在較低的時(shí)鐘速率下具備更高的性能。的性能。多多CPU內(nèi)核內(nèi)核:可選擇最快的內(nèi)核,或在一片F(xiàn)PGA內(nèi)采用多個(gè)內(nèi)核支持的支持的FPGA系列系列:Stratix,Stratix, Stratix GX,Cyclone,Cyclone,HardCopy Stratix定制指令定制指令:把用戶(hù)自定義的功能直接添加到Nios處理器的ALU中,加快專(zhuān)項(xiàng)任務(wù)的執(zhí)行,以提高系統(tǒng)的性能硬件加速硬件加速:專(zhuān)用的硬件加速器添加到FPGA中作為CPU的協(xié)處理器217.1 7.1 Nios 嵌入式處理器簡(jiǎn)介

17、嵌入式處理器簡(jiǎn)介3. 3. 降低系統(tǒng)成本降低系統(tǒng)成本 主要途徑主要途徑: 更大規(guī)模的系統(tǒng)集成更大規(guī)模的系統(tǒng)集成優(yōu)化優(yōu)化FPGA/CPU的選擇的選擇:選擇經(jīng)濟(jì)型內(nèi)核應(yīng)用于低成本、低性能系統(tǒng),或者在單個(gè)FPGA上使用多個(gè)內(nèi)核更好的庫(kù)存管理更好的庫(kù)存管理4. 4. 延長(zhǎng)產(chǎn)品的生命周期延長(zhǎng)產(chǎn)品的生命周期加快產(chǎn)品上市時(shí)間:加快產(chǎn)品上市時(shí)間:FPGA可編程、可隨時(shí)驗(yàn)證修改 建立有競(jìng)爭(zhēng)性的優(yōu)勢(shì)建立有競(jìng)爭(zhēng)性的優(yōu)勢(shì):硬件加速、定制指令、定制外設(shè)延長(zhǎng)了產(chǎn)品的生存時(shí)間延長(zhǎng)了產(chǎn)品的生存時(shí)間:可對(duì)硬件和軟件及時(shí)進(jìn)行升級(jí)在產(chǎn)品產(chǎn)量增加的情況下減少成本在產(chǎn)品產(chǎn)量增加的情況下減少成本:可將FPGA設(shè)計(jì)無(wú)縫移植到Altera的

18、HardCopy器件(一種結(jié)構(gòu)化的ASIC)中227.2 7.2 Nios 嵌入式處理器軟、硬件開(kāi)發(fā)流程嵌入式處理器軟、硬件開(kāi)發(fā)流程一、硬件開(kāi)發(fā)流程一、硬件開(kāi)發(fā)流程二、軟件開(kāi)發(fā)流程二、軟件開(kāi)發(fā)流程237.2 7.2 Nios 嵌入式處理器軟、硬件開(kāi)發(fā)流程嵌入式處理器軟、硬件開(kāi)發(fā)流程N(yùn)ios Design FlowSOPC Builder GUIConnect BlocksProcessor LibraryCustom InstructionsPeripheral LibrarySelect & Configure Peripherals, IPIP ModulesConfigure P

19、rocessorGeneratenEDIF NetlistnHDL Source FilesnTestbenchSynthesis &Fitter nUser DesignnOther IP BlocksHardware DevelopmentQuartus IIOn-ChipDebugSoftware TraceHard BreakpointsSignalTap IIAlteraPLD JTAG,Serial, orEthernetExecutableCodeHardwareConfigurationFileVerification& Debug(1 1)(2 2)(3 3)

20、(4 4)nC Header filesnCustom LibrarynPeripheral DriversCompiler,Linker, DebuggerSoftware DevelopmentnUser CodenLibrariesnRTOSGNU ToolsNios II IDE247.2 7.2 Nios 嵌入式處理器軟、硬件開(kāi)發(fā)流程嵌入式處理器軟、硬件開(kāi)發(fā)流程一、硬件開(kāi)發(fā)流程一、硬件開(kāi)發(fā)流程 下載完硬件配置文件后,軟件開(kāi)發(fā)者就可以把此開(kāi)發(fā)板作下載完硬件配置文件后,軟件開(kāi)發(fā)者就可以把此開(kāi)發(fā)板作為軟件開(kāi)發(fā)的初期硬件平臺(tái)進(jìn)行軟件功能的開(kāi)發(fā)驗(yàn)證了。為軟件開(kāi)發(fā)的初期硬件平臺(tái)進(jìn)行軟件功能的開(kāi)發(fā)

21、驗(yàn)證了。(1 1)定義定義Nios嵌入式處理器系統(tǒng):嵌入式處理器系統(tǒng):使用使用SOPC Builder系統(tǒng)綜合軟系統(tǒng)綜合軟件選取合適的件選取合適的CPU、存儲(chǔ)器以及外圍器件,并定制其功能。、存儲(chǔ)器以及外圍器件,并定制其功能。(2)指定目標(biāo)器件、分配引腳、編譯硬件指定目標(biāo)器件、分配引腳、編譯硬件:使用:使用Quartus選取選取Altera器件系列,并對(duì)器件系列,并對(duì)SOPC Builder生成的生成的HDL設(shè)計(jì)文件進(jìn)行布設(shè)計(jì)文件進(jìn)行布局布線(xiàn);再選取目標(biāo)器件,分配管腳,進(jìn)行硬件編譯選項(xiàng)或時(shí)序局布線(xiàn);再選取目標(biāo)器件,分配管腳,進(jìn)行硬件編譯選項(xiàng)或時(shí)序約束的設(shè)置。編譯,生成網(wǎng)表文件和配置文件。約束的設(shè)

22、置。編譯,生成網(wǎng)表文件和配置文件。(3)硬件下載:硬件下載:使用使用Quartus軟件和下載電纜,將配置文件下載到軟件和下載電纜,將配置文件下載到開(kāi)發(fā)板上的開(kāi)發(fā)板上的FPGA中。當(dāng)校驗(yàn)完當(dāng)前硬件設(shè)計(jì)后,還可再次將新中。當(dāng)校驗(yàn)完當(dāng)前硬件設(shè)計(jì)后,還可再次將新的配置文件下載到開(kāi)發(fā)板上的非易失存儲(chǔ)器里。的配置文件下載到開(kāi)發(fā)板上的非易失存儲(chǔ)器里。 257.2 7.2 Nios 嵌入式處理器軟、硬件開(kāi)發(fā)流程嵌入式處理器軟、硬件開(kāi)發(fā)流程二、軟件開(kāi)發(fā)流程二、軟件開(kāi)發(fā)流程(1 1)在使用)在使用SOPC BuilderSOPC Builder進(jìn)行硬件設(shè)計(jì)的同時(shí),就可以開(kāi)始編寫(xiě)?yīng)毩⑦M(jìn)行硬件設(shè)計(jì)的同時(shí),就可以開(kāi)始編

23、寫(xiě)?yīng)毩⒂谄骷挠谄骷腃/C+C/C+軟件,比如算法或控制程序。用戶(hù)可以使用現(xiàn)成軟件,比如算法或控制程序。用戶(hù)可以使用現(xiàn)成的軟件庫(kù)和開(kāi)放的操作系統(tǒng)內(nèi)核來(lái)加快開(kāi)發(fā)過(guò)程。的軟件庫(kù)和開(kāi)放的操作系統(tǒng)內(nèi)核來(lái)加快開(kāi)發(fā)過(guò)程。(2 2)在)在NiosIDENiosIDE中建立新的軟件工程時(shí),中建立新的軟件工程時(shí),IDEIDE會(huì)根據(jù)會(huì)根據(jù)SOPC BuilderSOPC Builder對(duì)系統(tǒng)的硬件配置自動(dòng)生成一個(gè)定制對(duì)系統(tǒng)的硬件配置自動(dòng)生成一個(gè)定制HAL(HAL(硬件抽象層硬件抽象層) )系統(tǒng)庫(kù)。系統(tǒng)庫(kù)。這個(gè)庫(kù)能為程序和底層硬件的通信提供接口驅(qū)動(dòng)程序。這個(gè)庫(kù)能為程序和底層硬件的通信提供接口驅(qū)動(dòng)程序。(3 3)使

24、用)使用NiosIDENiosIDE對(duì)軟件工程進(jìn)行編譯、調(diào)試。對(duì)軟件工程進(jìn)行編譯、調(diào)試。(4 4)將硬件設(shè)計(jì)下載到開(kāi)發(fā)板后,就可以將軟件下載到開(kāi)發(fā)板上并)將硬件設(shè)計(jì)下載到開(kāi)發(fā)板后,就可以將軟件下載到開(kāi)發(fā)板上并在硬件上運(yùn)行。在硬件上運(yùn)行。267.3 7.3 Nios 嵌入式處理器系統(tǒng)的開(kāi)發(fā)嵌入式處理器系統(tǒng)的開(kāi)發(fā)一、一、Nios Nios 集成開(kāi)發(fā)環(huán)境(集成開(kāi)發(fā)環(huán)境(IDEIDE)介紹)介紹二、二、Nios Nios 嵌入式處理器系統(tǒng)設(shè)計(jì)過(guò)程嵌入式處理器系統(tǒng)設(shè)計(jì)過(guò)程277.3 7.3 Nios 嵌入式處理器系統(tǒng)的開(kāi)發(fā)嵌入式處理器系統(tǒng)的開(kāi)發(fā) Nios IDE是是Nios系列嵌入式處理器的基本軟件開(kāi)系

25、列嵌入式處理器的基本軟件開(kāi)發(fā)工具,包括程序的編輯、編譯、調(diào)試和下載運(yùn)行。發(fā)工具,包括程序的編輯、編譯、調(diào)試和下載運(yùn)行。 Nios IDE使用方法和使用方法和Visual C+類(lèi)似。在類(lèi)似。在7.6節(jié)中會(huì)節(jié)中會(huì)結(jié)合示例進(jìn)行講解。結(jié)合示例進(jìn)行講解。 Nios IDE為軟件開(kāi)發(fā)提供了為軟件開(kāi)發(fā)提供了4個(gè)功能:個(gè)功能:工程管理器;工程管理器;編輯器和編譯器;編輯器和編譯器;調(diào)試器;調(diào)試器;閃存編程器。閃存編程器。一、一、NiosNios集成開(kāi)發(fā)環(huán)境(集成開(kāi)發(fā)環(huán)境(IDEIDE)介紹)介紹287.3 7.3 Nios 嵌入式處理器系統(tǒng)的開(kāi)發(fā)嵌入式處理器系統(tǒng)的開(kāi)發(fā)(1 1)新工程向?qū)В┬鹿こ滔驅(qū)ё詣?dòng)建立自

26、動(dòng)建立C/C+C/C+應(yīng)用程序工程和系統(tǒng)庫(kù)工程。應(yīng)用程序工程和系統(tǒng)庫(kù)工程。(2 2)軟件工程模板)軟件工程模板提供軟件代碼實(shí)例,幫助用戶(hù)盡快推出可運(yùn)行的提供軟件代碼實(shí)例,幫助用戶(hù)盡快推出可運(yùn)行的系統(tǒng)系統(tǒng)(3 3)軟件組件(系統(tǒng)軟件)軟件組件(系統(tǒng)軟件)Nios Nios 運(yùn)行庫(kù)(或稱(chēng)為硬件抽象層運(yùn)行庫(kù)(或稱(chēng)為硬件抽象層HALHAL););輕量級(jí)輕量級(jí)IP TCP/IPIP TCP/IP庫(kù);庫(kù);C/OS C/OS 實(shí)時(shí)操作系統(tǒng)(實(shí)時(shí)操作系統(tǒng)(RTOSRTOS););AlteraAltera壓縮文件系統(tǒng)。壓縮文件系統(tǒng)。1. 1. 工程管理器工程管理器297.3 7.3 Nios 嵌入式處理器系統(tǒng)的

27、開(kāi)發(fā)嵌入式處理器系統(tǒng)的開(kāi)發(fā)(1 1)文本編輯器)文本編輯器全功能源文件編輯器:全功能源文件編輯器: 語(yǔ)法高亮顯示語(yǔ)法高亮顯示C/C+C/C+程序代碼;程序代碼; 全面的搜索工具;全面的搜索工具; 文件管理;文件管理; 快速定位及自動(dòng)糾錯(cuò);快速定位及自動(dòng)糾錯(cuò); 內(nèi)置調(diào)試功能等內(nèi)置調(diào)試功能等(2 2) C/C+C/C+編譯器編譯器提供圖形化用戶(hù)界面;提供圖形化用戶(hù)界面;提供按鈕式流程;提供按鈕式流程;自動(dòng)生成一個(gè)基于特定用戶(hù)配置的自動(dòng)生成一個(gè)基于特定用戶(hù)配置的makefilemakefile。2. 2. 編輯器和編譯器編輯器和編譯器307.3 7.3 Nios 嵌入式處理器系統(tǒng)的開(kāi)發(fā)嵌入式處理器系

28、統(tǒng)的開(kāi)發(fā)(1 1)基本調(diào)試功能)基本調(diào)試功能運(yùn)行控制;運(yùn)行控制;調(diào)用堆棧查看;調(diào)用堆棧查看;軟件斷點(diǎn);軟件斷點(diǎn);反匯編代碼查看;反匯編代碼查看;調(diào)試信息查看;調(diào)試信息查看;指令集仿真器。指令集仿真器。(2 2) 高級(jí)調(diào)試功能高級(jí)調(diào)試功能硬件斷點(diǎn)調(diào)試硬件斷點(diǎn)調(diào)試ROMROM或閃存中的代碼;或閃存中的代碼;數(shù)據(jù)觸發(fā);數(shù)據(jù)觸發(fā);指令跟蹤。指令跟蹤。3. 3. 調(diào)試器調(diào)試器(3 3)調(diào)試信息查看)調(diào)試信息查看使用戶(hù)可以訪(fǎng)問(wèn)本地變量、使用戶(hù)可以訪(fǎng)問(wèn)本地變量、寄存器、存儲(chǔ)器、斷點(diǎn)以及寄存器、存儲(chǔ)器、斷點(diǎn)以及表達(dá)式賦值函數(shù)。表達(dá)式賦值函數(shù)。(4 4) 連接多種目標(biāo)連接多種目標(biāo)FPGAFPGA開(kāi)發(fā)板(通過(guò)開(kāi)發(fā)

29、板(通過(guò)JTAGJTAG););指令集仿真器;指令集仿真器;硬件邏輯仿真器。硬件邏輯仿真器。317.3 7.3 Nios 嵌入式處理器系統(tǒng)的開(kāi)發(fā)嵌入式處理器系統(tǒng)的開(kāi)發(fā)4. 4. 閃存編程器閃存編程器閃存可用來(lái)存儲(chǔ)閃存可用來(lái)存儲(chǔ)FPGAFPGA配置數(shù)據(jù)和配置數(shù)據(jù)和/ /或或Nios Nios 編程數(shù)據(jù)。編程數(shù)據(jù)。NiosIDENiosIDE閃存編程器可對(duì)連接到閃存編程器可對(duì)連接到FPGAFPGA的兼容通用閃存接口(的兼容通用閃存接口(CFICFI)的閃存器件、或的閃存器件、或AlteraAltera串行配置器件進(jìn)行編程。串行配置器件進(jìn)行編程。內(nèi)容類(lèi)型內(nèi)容類(lèi)型說(shuō)說(shuō) 明明系統(tǒng)固定軟件系統(tǒng)固定軟件用于

30、用于Nios處理器復(fù)位時(shí)從閃存中導(dǎo)入啟處理器復(fù)位時(shí)從閃存中導(dǎo)入啟動(dòng)程序動(dòng)程序FPGA配置數(shù)據(jù)配置數(shù)據(jù)使用配置控制器,使用配置控制器,F(xiàn)PGA能夠在上電復(fù)位時(shí)能夠在上電復(fù)位時(shí)從閃存獲取配置數(shù)據(jù)從閃存獲取配置數(shù)據(jù)任意二進(jìn)制數(shù)據(jù)任意二進(jìn)制數(shù)據(jù)開(kāi)發(fā)人員可以將任何二進(jìn)制數(shù)據(jù)存儲(chǔ)到閃存開(kāi)發(fā)人員可以將任何二進(jìn)制數(shù)據(jù)存儲(chǔ)到閃存內(nèi),如圖形、音頻等內(nèi),如圖形、音頻等表表7-3編程到閃存中的通用內(nèi)容類(lèi)型編程到閃存中的通用內(nèi)容類(lèi)型327.3 7.3 Nios 嵌入式處理器系統(tǒng)的開(kāi)發(fā)嵌入式處理器系統(tǒng)的開(kāi)發(fā)1. 1. 硬件設(shè)計(jì)過(guò)程硬件設(shè)計(jì)過(guò)程(1 1)創(chuàng)建一個(gè))創(chuàng)建一個(gè)Quqrtus Quqrtus 工程工程(2 2)創(chuàng)

31、建)創(chuàng)建Nios Nios 系統(tǒng)模塊系統(tǒng)模塊啟動(dòng)啟動(dòng)SOPC BuilderSOPC Builder添加添加CPUCPU和外圍器件和外圍器件指定基地址指定基地址系統(tǒng)設(shè)置系統(tǒng)設(shè)置生成系統(tǒng)模塊生成系統(tǒng)模塊(3 3)將)將Nios Nios 系統(tǒng)模塊符號(hào)添加到系統(tǒng)模塊符號(hào)添加到BDFBDF文件中文件中(4 4)編譯)編譯Quqrtus Quqrtus 工程工程(5 5)配置)配置FPGAFPGA二、二、Nios Nios 嵌入式處理器系統(tǒng)設(shè)計(jì)過(guò)程嵌入式處理器系統(tǒng)設(shè)計(jì)過(guò)程337.3 7.3 Nios 嵌入式處理器系統(tǒng)的開(kāi)發(fā)嵌入式處理器系統(tǒng)的開(kāi)發(fā)(1 1)啟動(dòng))啟動(dòng)Nios IDENios IDE;(2

32、 2)建立新的軟件工程,編寫(xiě)源程序;)建立新的軟件工程,編寫(xiě)源程序;(3 3)編譯工程;)編譯工程;(4 4)運(yùn)行程序;)運(yùn)行程序;(5 5)調(diào)試程序;)調(diào)試程序;(6 6)將程序下載到開(kāi)發(fā)板上的)將程序下載到開(kāi)發(fā)板上的FlashFlash中。中。2. 2. 軟件設(shè)計(jì)過(guò)程軟件設(shè)計(jì)過(guò)程347.4 7.4 Nios 處理器外圍接口處理器外圍接口一、標(biāo)準(zhǔn)外圍設(shè)備一、標(biāo)準(zhǔn)外圍設(shè)備二、用戶(hù)定制外圍設(shè)備二、用戶(hù)定制外圍設(shè)備357.4 7.4 Nios 處理器外圍接口處理器外圍接口一、標(biāo)準(zhǔn)外圍設(shè)備一、標(biāo)準(zhǔn)外圍設(shè)備 Nios Nios 包括一個(gè)常用外圍設(shè)備及接口庫(kù),在包括一個(gè)常用外圍設(shè)備及接口庫(kù),在Alter

33、a Altera FPGAFPGA中可免費(fèi)使用。中可免費(fèi)使用。 標(biāo)準(zhǔn)外圍設(shè)備標(biāo)準(zhǔn)外圍設(shè)備為即用型設(shè)計(jì)模塊,采用為即用型設(shè)計(jì)模塊,采用Verilog HDL和和VHDL的源代碼方式交付使用,其中包括簡(jiǎn)單系統(tǒng)集的源代碼方式交付使用,其中包括簡(jiǎn)單系統(tǒng)集成所需要的所有軟件子程序。成所需要的所有軟件子程序。 查看各接口的詳細(xì)說(shuō)明:可在查看各接口的詳細(xì)說(shuō)明:可在SOPC Builder的元件池的元件池中用右鍵點(diǎn)擊元件,在彈出的菜單中選擇中用右鍵點(diǎn)擊元件,在彈出的菜單中選擇“Data Sheet”選項(xiàng)。選項(xiàng)。36 7.4 7.4 Nios 處理器外圍接口處理器外圍接口外圍設(shè)備接口外圍設(shè)備接口說(shuō)說(shuō) 明明Com

34、pactFlash接口接口提供大容量存儲(chǔ)支持提供大容量存儲(chǔ)支持用戶(hù)邏輯接口用戶(hù)邏輯接口將片內(nèi)用戶(hù)邏輯或片外器件連接到將片內(nèi)用戶(hù)邏輯或片外器件連接到SOPC Builder生成的系統(tǒng)中生成的系統(tǒng)中UART提供通用串行接口,具有可變波特率、奇偶校驗(yàn)、停止和數(shù)據(jù)位提供通用串行接口,具有可變波特率、奇偶校驗(yàn)、停止和數(shù)據(jù)位及可選的流量控制信號(hào)及可選的流量控制信號(hào)間隔時(shí)鐘間隔時(shí)鐘提供提供32位時(shí)鐘,可作為周期脈沖發(fā)生器或系統(tǒng)看門(mén)狗時(shí)鐘位時(shí)鐘,可作為周期脈沖發(fā)生器或系統(tǒng)看門(mén)狗時(shí)鐘并行并行I/O接口接口提供提供1位到位到32位的并行位的并行I/O接口接口(輸入、輸出、邊緣采樣輸入、輸出、邊緣采樣)串行外圍設(shè)備

35、接口(串行外圍設(shè)備接口(SPI) 實(shí)現(xiàn)工業(yè)標(biāo)準(zhǔn)串行外圍設(shè)備接口,支持主設(shè)備或從設(shè)備協(xié)議實(shí)現(xiàn)工業(yè)標(biāo)準(zhǔn)串行外圍設(shè)備接口,支持主設(shè)備或從設(shè)備協(xié)議DMA控制器控制器與存儲(chǔ)器進(jìn)行批數(shù)據(jù)交換,減輕與存儲(chǔ)器進(jìn)行批數(shù)據(jù)交換,減輕CPU的負(fù)擔(dān)的負(fù)擔(dān)SDRAM控制器控制器提供一個(gè)簡(jiǎn)單提供一個(gè)簡(jiǎn)單Avalon接口,與片外的接口,與片外的SDRAM溝通,支持溝通,支持8、16、32和和64位數(shù)據(jù)寬度位數(shù)據(jù)寬度存儲(chǔ)器接口存儲(chǔ)器接口包括:片內(nèi)包括:片內(nèi)ROM和和RAM、SDRAM、SSRAM、SRAM和和Flash,Altera的串行配置器件的串行配置器件以太網(wǎng)端口以太網(wǎng)端口包括:包括:10/100兆比特每秒兆比特每秒S

36、MSC LAN91C111單芯片以太網(wǎng)控制單芯片以太網(wǎng)控制器,提供輕量級(jí)的器,提供輕量級(jí)的IP TCP/IP協(xié)議棧的軟件支持,已經(jīng)包含在協(xié)議棧的軟件支持,已經(jīng)包含在Nios 開(kāi)發(fā)套件中開(kāi)發(fā)套件中JTAG UART(僅在僅在Nios 中有中有)通過(guò)內(nèi)嵌在通過(guò)內(nèi)嵌在Altera FPGA內(nèi)部的聯(lián)合測(cè)試行動(dòng)組內(nèi)部的聯(lián)合測(cè)試行動(dòng)組(JTAG)電路,在電路,在PC主機(jī)和主機(jī)和SOPC Builder系統(tǒng)之間進(jìn)行串行字符流通信系統(tǒng)之間進(jìn)行串行字符流通信表表7-4 Nios&Nios 外圍設(shè)備接口外圍設(shè)備接口377.4 7.4 Nios 處理器外圍接口處理器外圍接口二、用戶(hù)定制外圍設(shè)備二、用戶(hù)定制外

37、圍設(shè)備 用戶(hù)可以創(chuàng)建自己的外圍設(shè)備,并通過(guò)用戶(hù)邏輯用戶(hù)可以創(chuàng)建自己的外圍設(shè)備,并通過(guò)用戶(hù)邏輯接口向?qū)Ъ傻浇涌谙驅(qū)Ъ傻絅ios Nios 處理器系統(tǒng)中。處理器系統(tǒng)中。 整個(gè)過(guò)程用戶(hù)介入很少。整個(gè)過(guò)程用戶(hù)介入很少。387.5 7.5 HAL系統(tǒng)庫(kù)系統(tǒng)庫(kù)一、一、HALHAL系統(tǒng)庫(kù)簡(jiǎn)介系統(tǒng)庫(kù)簡(jiǎn)介二、使用二、使用HALHAL開(kāi)發(fā)程序開(kāi)發(fā)程序397.5 7.5 HAL系統(tǒng)庫(kù)系統(tǒng)庫(kù)一、一、 HALHAL系統(tǒng)庫(kù)簡(jiǎn)介系統(tǒng)庫(kù)簡(jiǎn)介 什么是什么是HAL系統(tǒng)庫(kù)?系統(tǒng)庫(kù)?用戶(hù)在進(jìn)行嵌入式系統(tǒng)的軟件開(kāi)發(fā)時(shí),會(huì)涉及到與硬件的通信問(wèn)題。HAL(Hardware Abstraction Layer,硬件抽象層)系統(tǒng)庫(kù)可為與硬

38、件通信的程序提供簡(jiǎn)單的設(shè)備驅(qū)動(dòng)接口。它是用戶(hù)在NiosIDE中創(chuàng)建一個(gè)新的工程時(shí),由IDE基于用戶(hù)在SOPC Builder中創(chuàng)建的Nios處理器系統(tǒng)自動(dòng)生成的。HAL應(yīng)用程序接口(API)和ANSI C標(biāo)準(zhǔn)庫(kù)綜合在一起,它使用戶(hù)用類(lèi)似C語(yǔ)言的庫(kù)函數(shù)來(lái)訪(fǎng)問(wèn)硬件設(shè)備或文件,如printf()、fopen()、fwrite()等函數(shù)。407.5 7.5 HAL系統(tǒng)庫(kù)系統(tǒng)庫(kù) HAL為嵌入式系統(tǒng)中的外圍設(shè)備提供接口程序。為嵌入式系統(tǒng)中的外圍設(shè)備提供接口程序。HAL和和SOPC Builder緊密相關(guān),如果硬件配置緊密相關(guān),如果硬件配置有了變化,有了變化,HAL設(shè)備驅(qū)動(dòng)配置也會(huì)自動(dòng)隨之改動(dòng),設(shè)備驅(qū)動(dòng)配置

39、也會(huì)自動(dòng)隨之改動(dòng),從而避免了由于底層硬件的變化而產(chǎn)生的程序錯(cuò)從而避免了由于底層硬件的變化而產(chǎn)生的程序錯(cuò)誤。誤。 用戶(hù)不必自己創(chuàng)建或拷貝用戶(hù)不必自己創(chuàng)建或拷貝HAL文件,也不必編輯文件,也不必編輯HAL中的任何源代碼。中的任何源代碼。NiosIDE會(huì)為用戶(hù)會(huì)為用戶(hù)自動(dòng)自動(dòng)創(chuàng)建和管理創(chuàng)建和管理HAL文件。文件。 417.5 7.5 HAL系統(tǒng)庫(kù)系統(tǒng)庫(kù)與與ANSI C合成的標(biāo)準(zhǔn)庫(kù)合成的標(biāo)準(zhǔn)庫(kù)提供類(lèi)似提供類(lèi)似C語(yǔ)言的標(biāo)準(zhǔn)庫(kù)函數(shù);語(yǔ)言的標(biāo)準(zhǔn)庫(kù)函數(shù);設(shè)備驅(qū)動(dòng)設(shè)備驅(qū)動(dòng)提供訪(fǎng)問(wèn)系統(tǒng)中每個(gè)設(shè)備的驅(qū)動(dòng)程序;提供訪(fǎng)問(wèn)系統(tǒng)中每個(gè)設(shè)備的驅(qū)動(dòng)程序;HAL API提供標(biāo)準(zhǔn)的接口程序,如設(shè)備訪(fǎng)問(wèn)、中斷處理等;提供標(biāo)準(zhǔn)的接口程

40、序,如設(shè)備訪(fǎng)問(wèn)、中斷處理等;系統(tǒng)初始化系統(tǒng)初始化在在main()函數(shù)之前執(zhí)行對(duì)處理器的初始化;函數(shù)之前執(zhí)行對(duì)處理器的初始化;設(shè)備初始化設(shè)備初始化在在main()函數(shù)之前執(zhí)行對(duì)系統(tǒng)中外圍設(shè)備的初始化。函數(shù)之前執(zhí)行對(duì)系統(tǒng)中外圍設(shè)備的初始化。用戶(hù)程序用戶(hù)程序C語(yǔ)言標(biāo)準(zhǔn)庫(kù)語(yǔ)言標(biāo)準(zhǔn)庫(kù)HAL API硬件硬件設(shè)備設(shè)備驅(qū)動(dòng)驅(qū)動(dòng)設(shè)備設(shè)備驅(qū)動(dòng)驅(qū)動(dòng)設(shè)備設(shè)備驅(qū)動(dòng)驅(qū)動(dòng)圖圖7-1 HAL所基于的系統(tǒng)層次所基于的系統(tǒng)層次1. HAL1. HAL構(gòu)成構(gòu)成427.5 7.5 HAL系統(tǒng)庫(kù)系統(tǒng)庫(kù)應(yīng)用程序開(kāi)發(fā)應(yīng)用程序開(kāi)發(fā) 是用戶(hù)軟件開(kāi)發(fā)的主要部分,包括系統(tǒng)的主程序和其他子程序。 應(yīng)用程序與系統(tǒng)設(shè)備的通信主要是通過(guò)C語(yǔ)言標(biāo)準(zhǔn)庫(kù)或HA

41、L系統(tǒng)庫(kù)API來(lái)實(shí)現(xiàn)。驅(qū)動(dòng)程序開(kāi)發(fā)驅(qū)動(dòng)程序開(kāi)發(fā) 指編寫(xiě)供應(yīng)用程序訪(fǎng)問(wèn)設(shè)備的程序。 驅(qū)動(dòng)程序直接和底層硬件的宏定義打交道。 一旦用戶(hù)要訪(fǎng)問(wèn)設(shè)備的驅(qū)動(dòng)程序編寫(xiě)好,用戶(hù)的程序開(kāi)發(fā)只要利用HAL提供的各種函數(shù)就可以編寫(xiě)各種應(yīng)用程序了。2.2. 應(yīng)用程序和驅(qū)動(dòng)應(yīng)用程序和驅(qū)動(dòng)437.5 7.5 HAL系統(tǒng)庫(kù)系統(tǒng)庫(kù) HAL為嵌入式系統(tǒng)中常見(jiàn)的外圍設(shè)備提供了通用的設(shè)備模型,為嵌入式系統(tǒng)中常見(jiàn)的外圍設(shè)備提供了通用的設(shè)備模型,使用戶(hù)無(wú)需考慮底層硬件,只需利用與之相一致的使用戶(hù)無(wú)需考慮底層硬件,只需利用與之相一致的API編寫(xiě)應(yīng)編寫(xiě)應(yīng)用程序即可。用程序即可。字符模式設(shè)備字符模式設(shè)備發(fā)送和接受字符串的外圍硬件設(shè)備,如發(fā)

42、送和接受字符串的外圍硬件設(shè)備,如UART定時(shí)器設(shè)備定時(shí)器設(shè)備對(duì)時(shí)鐘脈沖計(jì)數(shù)并能產(chǎn)生周期性中斷請(qǐng)求的外圍對(duì)時(shí)鐘脈沖計(jì)數(shù)并能產(chǎn)生周期性中斷請(qǐng)求的外圍硬件設(shè)備硬件設(shè)備文件子系統(tǒng)文件子系統(tǒng)提供訪(fǎng)問(wèn)存儲(chǔ)在物理設(shè)備中的文件的操作,如用提供訪(fǎng)問(wèn)存儲(chǔ)在物理設(shè)備中的文件的操作,如用戶(hù)可以利用有關(guān)戶(hù)可以利用有關(guān)Flash存儲(chǔ)器設(shè)備的存儲(chǔ)器設(shè)備的HAL API編寫(xiě)編寫(xiě)Flash文件子系文件子系統(tǒng)驅(qū)動(dòng)來(lái)訪(fǎng)問(wèn)統(tǒng)驅(qū)動(dòng)來(lái)訪(fǎng)問(wèn)Flash。以太網(wǎng)設(shè)備以太網(wǎng)設(shè)備對(duì)對(duì)Altera提供的輕量級(jí)的提供的輕量級(jí)的IP協(xié)議提供訪(fǎng)問(wèn)以太網(wǎng)協(xié)議提供訪(fǎng)問(wèn)以太網(wǎng)的連接。的連接。DMA設(shè)備設(shè)備執(zhí)行大量數(shù)據(jù)在數(shù)據(jù)源和目的地之間傳輸?shù)耐鈬O(shè)執(zhí)行大量數(shù)據(jù)

43、在數(shù)據(jù)源和目的地之間傳輸?shù)耐鈬O(shè)備。數(shù)據(jù)源和目的地可以是存儲(chǔ)器或其他設(shè)備,如以太網(wǎng)連接。備。數(shù)據(jù)源和目的地可以是存儲(chǔ)器或其他設(shè)備,如以太網(wǎng)連接。Flash存儲(chǔ)器設(shè)備存儲(chǔ)器設(shè)備利用專(zhuān)門(mén)編程協(xié)議存儲(chǔ)數(shù)據(jù)的非易失性存利用專(zhuān)門(mén)編程協(xié)議存儲(chǔ)數(shù)據(jù)的非易失性存儲(chǔ)設(shè)備。儲(chǔ)設(shè)備。3. 3. 通用設(shè)備模型通用設(shè)備模型447.5 7.5 HAL系統(tǒng)庫(kù)系統(tǒng)庫(kù)5. HAL5. HAL支持的外圍設(shè)備支持的外圍設(shè)備 Altera提供了許多在提供了許多在Nios 處理器系統(tǒng)中使用的外圍設(shè)備,大部分處理器系統(tǒng)中使用的外圍設(shè)備,大部分外圍設(shè)備都提供了外圍設(shè)備都提供了HAL驅(qū)動(dòng),使用戶(hù)可通過(guò)驅(qū)動(dòng),使用戶(hù)可通過(guò)HAL API訪(fǎng)問(wèn)硬件

44、。訪(fǎng)問(wèn)硬件。字符模式設(shè)備字符模式設(shè)備定時(shí)器設(shè)備定時(shí)器設(shè)備文件子系統(tǒng)文件子系統(tǒng)以太網(wǎng)設(shè)備以太網(wǎng)設(shè)備DMA設(shè)備設(shè)備Flash存儲(chǔ)器設(shè)備存儲(chǔ)器設(shè)備一些第三方外圍設(shè)備一些第三方外圍設(shè)備4. C4. C標(biāo)準(zhǔn)庫(kù)標(biāo)準(zhǔn)庫(kù)NewlibNewlibHAL系統(tǒng)庫(kù)與系統(tǒng)庫(kù)與ANSI C標(biāo)準(zhǔn)庫(kù)一起構(gòu)成標(biāo)準(zhǔn)庫(kù)一起構(gòu)成HAL的運(yùn)行環(huán)境的運(yùn)行環(huán)境(Runtime Environment)。HAL使用的使用的Newlib是是C語(yǔ)言標(biāo)準(zhǔn)庫(kù)的一種開(kāi)放語(yǔ)言標(biāo)準(zhǔn)庫(kù)的一種開(kāi)放源代碼的實(shí)現(xiàn),是在嵌入式系統(tǒng)上使用的源代碼的實(shí)現(xiàn),是在嵌入式系統(tǒng)上使用的C語(yǔ)言程序庫(kù),正好與語(yǔ)言程序庫(kù),正好與HAL和和Nios 處理器相匹配。處理器相匹配。457

45、.5 7.5 HAL系統(tǒng)庫(kù)系統(tǒng)庫(kù)二、使用二、使用HALHAL開(kāi)發(fā)程序開(kāi)發(fā)程序 HAL和和SOPC Builder緊密相關(guān),如果硬件配置有了變緊密相關(guān),如果硬件配置有了變化,化,HAL設(shè)備驅(qū)動(dòng)配置也會(huì)自動(dòng)隨之改動(dòng),從而避免設(shè)備驅(qū)動(dòng)配置也會(huì)自動(dòng)隨之改動(dòng),從而避免了由于底層硬件的變化而產(chǎn)生的程序錯(cuò)誤。了由于底層硬件的變化而產(chǎn)生的程序錯(cuò)誤。 用戶(hù)不用自己創(chuàng)建或拷貝用戶(hù)不用自己創(chuàng)建或拷貝HAL文件,而且用戶(hù)也不用文件,而且用戶(hù)也不用編輯編輯HAL中的任何源代碼。中的任何源代碼。NiosIDE會(huì)為用戶(hù)自動(dòng)創(chuàng)會(huì)為用戶(hù)自動(dòng)創(chuàng)建和管理建和管理HAL文件。文件。467.5 7.5 HAL系統(tǒng)庫(kù)系統(tǒng)庫(kù)1. Nios

46、 IDE1. Nios IDE工程結(jié)構(gòu)工程結(jié)構(gòu)軟件軟件硬件硬件477.5 7.5 HAL系統(tǒng)庫(kù)系統(tǒng)庫(kù)2. System.h 2. System.h 系統(tǒng)描述文件系統(tǒng)描述文件 System.hSystem.h文件是文件是HALHAL系統(tǒng)庫(kù)的基礎(chǔ),它提供了關(guān)于系統(tǒng)庫(kù)的基礎(chǔ),它提供了關(guān)于Nios Nios 系統(tǒng)硬件的軟件描述。它描述了系統(tǒng)中的每個(gè)外圍設(shè)系統(tǒng)硬件的軟件描述。它描述了系統(tǒng)中的每個(gè)外圍設(shè)備,并給出以下一些詳細(xì)信息:備,并給出以下一些詳細(xì)信息:外圍設(shè)備的硬件配置;外圍設(shè)備的硬件配置;基地址;基地址;中斷優(yōu)先級(jí);中斷優(yōu)先級(jí);外圍器件的符號(hào)名稱(chēng)。外圍器件的符號(hào)名稱(chēng)。 用戶(hù)無(wú)須編輯用戶(hù)無(wú)須編輯Sy

47、stem.hSystem.h文件,它是由文件,它是由Nios IDENios IDE自動(dòng)生自動(dòng)生成的。成的。 可以到以下目錄中查看可以到以下目錄中查看System.hSystem.h文件,:文件,:QuartusQuartus工程工程softwareNiossoftwareNios工程名工程名 _syslibDebugsystem_description_syslibDebugsystem_description487.5 7.5 HAL系統(tǒng)庫(kù)系統(tǒng)庫(kù)3. 3. 數(shù)據(jù)寬度和數(shù)據(jù)寬度和HALHAL類(lèi)型定義類(lèi)型定義 alt_types.halt_types.h頭文件定義了頭文件定義了HALHAL的數(shù)

48、據(jù)類(lèi)型。在以下路徑的數(shù)據(jù)類(lèi)型。在以下路徑可以查看該文件:可以查看該文件:Nios 安裝路徑安裝路徑componentsaltera_nios2HALinc 部分代碼摘抄如下:部分代碼摘抄如下:typedef signed char alt_8;typedef unsigned char alt_u8;typedef signed short alt_16;typedef unsigned short alt_u16;typedef signed long alt_32;typedef unsigned long alt_u32;類(lèi)型類(lèi)型說(shuō)明說(shuō)明alt_8有符號(hào)有符號(hào)8位整數(shù)位整數(shù)alt_u8無(wú)

49、符號(hào)無(wú)符號(hào)8位整數(shù)位整數(shù)alt_16有符號(hào)有符號(hào)16位整數(shù)位整數(shù)alt_u16無(wú)符號(hào)無(wú)符號(hào)16位整數(shù)位整數(shù)alt_32有符號(hào)有符號(hào)32位整數(shù)位整數(shù)alt_u32無(wú)符號(hào)無(wú)符號(hào)32位整數(shù)位整數(shù)497.5 7.5 HAL系統(tǒng)庫(kù)系統(tǒng)庫(kù)4. 4. 文件系統(tǒng)文件系統(tǒng) HALHAL提出了文件系統(tǒng)的概念,可以使用戶(hù)操作提出了文件系統(tǒng)的概念,可以使用戶(hù)操作字符模式字符模式的的設(shè)備和文件。設(shè)備和文件。 在整個(gè)在整個(gè)HALHAL文件系統(tǒng)中將文件子系統(tǒng)注冊(cè)為載入點(diǎn),要訪(fǎng)文件系統(tǒng)中將文件子系統(tǒng)注冊(cè)為載入點(diǎn),要訪(fǎng)問(wèn)這個(gè)載入店下的文件就要由這個(gè)文件子系統(tǒng)管理。問(wèn)這個(gè)載入店下的文件就要由這個(gè)文件子系統(tǒng)管理。 字符模式的設(shè)備寄

50、存器常作為字符模式的設(shè)備寄存器常作為HALHAL文件系統(tǒng)中的節(jié)點(diǎn)。通文件系統(tǒng)中的節(jié)點(diǎn)。通常情況下,常情況下,system.hsystem.h文件中將設(shè)備節(jié)點(diǎn)的名字定義為前文件中將設(shè)備節(jié)點(diǎn)的名字定義為前綴綴/dev/dev/+ +在在SOPC BuilderSOPC Builder中指定給硬件元件的名稱(chēng)。中指定給硬件元件的名稱(chēng)。 以下例子完成了從一個(gè)只讀文件的文件子系統(tǒng)以下例子完成了從一個(gè)只讀文件的文件子系統(tǒng)rozipfsrozipfs中中讀取字符的功能。讀取字符的功能。507.5 7.5 HAL系統(tǒng)庫(kù)系統(tǒng)庫(kù) 例例 從文件子系統(tǒng)中讀取字符。從文件子系統(tǒng)中讀取字符。#include #includ

51、e #include #include #include #include #define BUF_SIZE (10)#define BUF_SIZE (10)int main() int main() FILE FILE * * fp; fp;char bufferBUF_SIZE;char bufferBUF_SIZE;fp = fopen(“/mount/rozipfs/test”,”r”);fp = fopen(“/mount/rozipfs/test”,”r”);if ( fp = NULL ) if ( fp = NULL ) printf(“cannot open file.n”

52、);printf(“cannot open file.n”);exit(1);exit(1); fread(buffer,BUF_SIZE,1,fp);fread(buffer,BUF_SIZE,1,fp);Fclose();Fclose();return 0;return 0; 517.5 7.5 HAL系統(tǒng)庫(kù)系統(tǒng)庫(kù)5. 5. 外圍設(shè)備的使用外圍設(shè)備的使用 現(xiàn)以字符模式外圍設(shè)備為例介紹在用戶(hù)程序中如何對(duì)外圍設(shè)備進(jìn)現(xiàn)以字符模式外圍設(shè)備為例介紹在用戶(hù)程序中如何對(duì)外圍設(shè)備進(jìn)行操作。字符模式外圍設(shè)備在行操作。字符模式外圍設(shè)備在HALHAL文件系用中被定義為文件系用中被定義為節(jié)點(diǎn)節(jié)點(diǎn)。一般。一般情況下

53、,程序先將一個(gè)情況下,程序先將一個(gè)文件文件和和設(shè)備名稱(chēng)設(shè)備名稱(chēng)聯(lián)系起來(lái),再通過(guò)使用聯(lián)系起來(lái),再通過(guò)使用file.hfile.h中定義的中定義的ANSI CANSI C文件操作向文件寫(xiě)數(shù)據(jù)或從文件讀取數(shù)據(jù)。文件操作向文件寫(xiě)數(shù)據(jù)或從文件讀取數(shù)據(jù)。(1 1)標(biāo)準(zhǔn)輸入()標(biāo)準(zhǔn)輸入(stdinstdin)、標(biāo)準(zhǔn)輸出()、標(biāo)準(zhǔn)輸出(stdoutstdout)和標(biāo)準(zhǔn)錯(cuò)誤)和標(biāo)準(zhǔn)錯(cuò)誤(stderrstderr)函數(shù))函數(shù)使用這些函數(shù)是最簡(jiǎn)單的控制使用這些函數(shù)是最簡(jiǎn)單的控制I/OI/O的方法;的方法;HALHAL系統(tǒng)庫(kù)在后臺(tái)管理系統(tǒng)庫(kù)在后臺(tái)管理stdinstdin、stdoutstdout和和stderrstd

54、err函數(shù)。函數(shù)。 例例 發(fā)送發(fā)送Hello worldHello world給任何一個(gè)和給任何一個(gè)和stdoutstdout連接的設(shè)備。連接的設(shè)備。#include #include int main() int main() printf(“Hello world!/n”);printf(“Hello world!/n”);return 0;return 0; 527.5 7.5 HAL系統(tǒng)庫(kù)系統(tǒng)庫(kù)(2 2)字符模式設(shè)備的通用訪(fǎng)問(wèn)方法)字符模式設(shè)備的通用訪(fǎng)問(wèn)方法除除stdinstdin、stdoutstdout和和stderrstderr函數(shù)外,訪(fǎng)問(wèn)字符模式設(shè)備還可以通過(guò)函數(shù)外,訪(fǎng)問(wèn)字符模

55、式設(shè)備還可以通過(guò)打開(kāi)和寫(xiě)文件的方式。打開(kāi)和寫(xiě)文件的方式。 例例 向向UARTUART寫(xiě)入字符寫(xiě)入字符”hello world”hello world”。 #include #include #include #include int main() int main() charchar* * msg = “hello world”; msg = “hello world”;FILEFILE* * fp; fp;fp = fopen(“/dev/uart1”,”w”);fp = fopen(“/dev/uart1”,”w”);if ( fp ) if ( fp ) fprintf(fp,”%s”

56、,msg);fprintf(fp,”%s”,msg);fclose(fp);fclose(fp); return 0;return 0; 537.5 7.5 HAL系統(tǒng)庫(kù)系統(tǒng)庫(kù)(3 3) /dev/null/dev/null設(shè)備設(shè)備所有的系統(tǒng)都包括所有的系統(tǒng)都包括/dev/null/dev/null設(shè)備。向設(shè)備。向/dev/null寫(xiě)數(shù)寫(xiě)數(shù)據(jù)對(duì)系統(tǒng)沒(méi)有什么影響,所寫(xiě)的數(shù)據(jù)將被丟棄。據(jù)對(duì)系統(tǒng)沒(méi)有什么影響,所寫(xiě)的數(shù)據(jù)將被丟棄。/dev/null用來(lái)在系統(tǒng)啟動(dòng)過(guò)程中重定向安全用來(lái)在系統(tǒng)啟動(dòng)過(guò)程中重定向安全I(xiàn)/O,也可,也可以用在應(yīng)用程序中丟棄不需要的數(shù)據(jù)。這個(gè)設(shè)備只是以用在應(yīng)用程序中丟棄不需要的數(shù)據(jù)

57、。這個(gè)設(shè)備只是個(gè)軟件指令,不與系統(tǒng)中任何一個(gè)硬件設(shè)備相關(guān)。個(gè)軟件指令,不與系統(tǒng)中任何一個(gè)硬件設(shè)備相關(guān)。547.6 7.6 設(shè)計(jì)實(shí)例設(shè)計(jì)實(shí)例電子鐘電子鐘一、設(shè)計(jì)要求與軟硬件規(guī)劃一、設(shè)計(jì)要求與軟硬件規(guī)劃二、硬件部分設(shè)計(jì)二、硬件部分設(shè)計(jì)三、軟件部分設(shè)計(jì)三、軟件部分設(shè)計(jì)557.6 7.6 設(shè)計(jì)實(shí)例設(shè)計(jì)實(shí)例電子鐘電子鐘一、設(shè)計(jì)要求與軟硬件規(guī)劃一、設(shè)計(jì)要求與軟硬件規(guī)劃 本節(jié)介紹一個(gè)電子鐘的軟、硬件方案設(shè)計(jì)以及具本節(jié)介紹一個(gè)電子鐘的軟、硬件方案設(shè)計(jì)以及具體的軟件實(shí)現(xiàn)。體的軟件實(shí)現(xiàn)。 1. 1. 系統(tǒng)功能系統(tǒng)功能 1 1)在液晶屏上顯示時(shí)間、日期、狀態(tài)提示;)在液晶屏上顯示時(shí)間、日期、狀態(tài)提示; 2 2)對(duì)時(shí)

58、間、日期能夠進(jìn)行設(shè)置。)對(duì)時(shí)間、日期能夠進(jìn)行設(shè)置。 2. 2. 硬件系統(tǒng)組成規(guī)劃硬件系統(tǒng)組成規(guī)劃本系統(tǒng)需使用的外圍器件包括:本系統(tǒng)需使用的外圍器件包括: 1)LCD:電子鐘顯示屏幕;:電子鐘顯示屏幕; 2)按鈕:電子鐘設(shè)置功能鍵;)按鈕:電子鐘設(shè)置功能鍵; 3)Flash存儲(chǔ)器:存儲(chǔ)硬件和程序;存儲(chǔ)器:存儲(chǔ)硬件和程序; 4)SRAM存儲(chǔ)器:程序運(yùn)行時(shí)將其導(dǎo)入存儲(chǔ)器:程序運(yùn)行時(shí)將其導(dǎo)入SRAM。567.6 7.6 設(shè)計(jì)實(shí)例設(shè)計(jì)實(shí)例電子鐘電子鐘2. 2. 硬件系統(tǒng)組成規(guī)劃(續(xù))硬件系統(tǒng)組成規(guī)劃(續(xù))在在SOPC Builder中建立系統(tǒng)要添加的模塊包括:中建立系統(tǒng)要添加的模塊包括: 1) Nios

59、 32bits CPU; 2)定時(shí)器;)定時(shí)器; 3)按鍵)按鍵PIO; 4)LCD Display ; 5)外部)外部RAM總線(xiàn)總線(xiàn)(Avalon 三態(tài)橋三態(tài)橋) ; 6)外部)外部RAM接口;接口; 7)外部)外部Flash接口;接口; 8)重新配置請(qǐng)求)重新配置請(qǐng)求PIO; 9)JTAG UART Interface; 10)EPCS Serial Flash Controller。577.6 7.6 設(shè)計(jì)實(shí)例設(shè)計(jì)實(shí)例電子鐘電子鐘端口定義表端口定義表序序 號(hào)號(hào)名稱(chēng)名稱(chēng)輸入輸入/輸出輸出描述描述1clkIn時(shí)鐘輸入,50MHz2reset_nIn復(fù)位輸入3in_port_to_the_bu

60、tton_3.0In4個(gè)按鍵輸入4be_n_to_the_ext_ram3.0Out字節(jié)選擇5ext_ram_bus_address22.0OutSRAM地址6ext_ram_bus_data31.0InoutSRAM數(shù)據(jù)7read_n_to_the_ext_flashOutFLASH輸出使能(即讀信號(hào))8read_n_to_the_ext_ramOutSRAM輸出使能9select_n_to_the_ext_flashOutFLASH片選信號(hào)10select_n_to_the_ext_ramOutSRAM片選信號(hào)587.6 7.6 設(shè)計(jì)實(shí)例設(shè)計(jì)實(shí)例電子鐘電子鐘端口定義表(續(xù))端口定義表(續(xù)) 序號(hào)序號(hào)名名 稱(chēng)稱(chēng)輸入輸入/輸出輸出描描 述述11write_n

溫馨提示

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

評(píng)論

0/150

提交評(píng)論