NiosII常用外设编程SOPC技术与应用_第1页
NiosII常用外设编程SOPC技术与应用_第2页
NiosII常用外设编程SOPC技术与应用_第3页
NiosII常用外设编程SOPC技术与应用_第4页
NiosII常用外设编程SOPC技术与应用_第5页
免费预览已结束,剩余22页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1节并行输入/输出内核FPGA上。PIOI/OLED猎取开关数据掌握显示设备配置并与片外设备通信,例如专用标准产品(ASSP)的设备。(IRQ)SOPCBuilderPIOSOPCBuilder的系统中。PIO存放器描述PIO32I/OPIOPIOCPUPIOPIOI/OCPU7-1PIO用的例子,本例使用了多个PIO7-1PIOSOPCBuilderPIO可见的。具有四个存放器的存储器映射的存放器空间,4个存放器是data、direction、interruptmaskedgecapture。132I/O有些存放器在某些硬件配置下不是必需的,这时相应的存放器就不存7-1PIO数据存放器〔DataInput&Output〕I/O写数据存放器则提供驱动到输出端口的数据。这些端口是独立的,读数据存放器不会返回之前写入的数据。方向存放器〔direction〕PIO存放器的第n为被置为1,端口ninput-onlyoutput-only结果。复位之后,方向存放器的全部位都是0,即全部双向的I/O端口配置为PIO中断掩码存放器〔interruptmask〕1,则将相应的PIO断的行为依靠PIO内核的硬件的配置。.中断掩码存放器只有当硬件配置产生中断恳求〔IRQ〕时才存在。假设内核不能产生中断恳求,读指定掩码存放器返回PIO边沿捕获存放器获存放器会作出相应的反映。检测的边沿种类在系统生成时指定,并且不能通过写存放器来转变。中断恳求产生的条件可以是:部加一个非门来实现对低电平敏感。口的中断可以被屏蔽,中断掩码可以打算哪个端口可以产生中断。有关PIOPIO。软件编程AlteraPIOHALPIOHALHALAPIANSICNiiosIIEDSPIOcount_binary.c例子中使用PIO内核来驱动LED,使用PIO内核边沿检测中断来检测按钮按下。软件文件AlteraPIOaltera_avalon_pio_regs.h。Altera#ifndefALTERA_AVALON_PIO_REGS_H#defineALTERA_AVALON_PIO_REGS_H#include<io.h>#defineIOADDR_ALTERA_AVALON_PIO_DATA(base) IO_CALC_ADDRESS_NATIVE(base,0)#defineIORD_ALTERA_AVALON_PIO_DATA(base)IORD(base,0)#defineIOWR_ALTERA_AVALON_PIO_DATA(base,data)IOWR(base,0,data)#defineIOADDR_ALTERA_AVALON_PIO_DIRECTION(base) IO_CALC_ADDRESS_NATIVE(base,1)#defineIORD_ALTERA_AVALON_PIO_DIRECTION(base)IORD(base,1)data)IOWR(base,1,data)#defineIOADDR_ALTERA_AVALON_PIO_IRQ_MASK(base) IO_CALC_ADDRESS_NATIVE(base,2)#defineIORD_ALTERA_AVALON_PIO_IRQ_MASK(base)IORD(base,2)#defineIOWR_ALTERA_AVALON_PIO_IRQ_MASK(base,data)IOWR(base,2,data)#defineIOADDR_ALTERA_AVALON_PIO_EDGE_CAP(base) IO_CALC_ADDRESS_NATIVE(base,3)#defineIORD_ALTERA_AVALON_PIO_EDGE_CAP(base)IORD(base,3)#defineIOWR_ALTERA_AVALON_PIO_EDGE_CAP(base,data)IOWR(base,3,data)#endif/* ALTERA_AVALON_PIO_REGS_H */一个NiosIIPIOsystem.h钟设计中用到了Button_PIO,在system.h头文件中关于Button_PIO的代码如下:#defineBUTTON_PIO_NAME“/dev/button_pio“#defineBUTTON_PIO_TYPE“altera_avalon_pio“#defineBUTTON_PIO_BASE0x00000860#defineBUTTON_PIO_SPAN16#defineBUTTON_PIO_IRQ2#defineBUTTON_PIO_DO_TEST_BENCH_WIRING0#defineBUTTON_PIO_DRIVEN_SIM_VALUE0x0000#defineBUTTON_PIO_HAS_TRI0#defineBUTTON_PIO_HAS_OUT0#defineBUTTON_PIO_HAS_IN1#defineBUTTON_PIO_CAPTURE1#defineBUTTON_PIO_EDGE_TYPE“ANY“#defineBUTTON_PIO_IRQ_TYPE“EDGE“#defineBUTTON_PIO_FREQ50000000#defineALT_MODULE_CLASS_button_pioaltera_avalon_pio即存放器头文件定义了通用的PIOPIO函数:IORD_ALTERA_AVALON_PIO_DATA(BUTTON_PIO_BASE)IORD(BUTTON_PIO_BASE,0)BUTTON_PIO_BASE设备的基地址的宏定义即可,不要用直接硬件的地址。第2节定时器Avalon32Avalon总线的处理器系统,比方NiosII处理器系统。定时器供给如下的特性:可掌握启动、停顿和复位定时器。两种计数模式:一次递减和连续递减。递减周期存放器当递减到零时,可屏蔽中断恳求。可选的看门狗定时器特性——当定时器计时零时,复位系统。可选的周期脉冲产生器特性——当定时器计时到零时,输出一个脉冲。3216SOPCBuilderIP,SOPCBuilder系统。7-2616Avalon可用作脉冲产生器的可选的脉冲输出161632具有一个固定的周期,硬件上就没有周期存放器(periodregisters)了定时器存放器描述NiosIIHAL6167-2出了定时器存放器的映射。状态存放器状态存放器有两个定义位,如表7-3所示。掌握存放器掌握存放器有47-4软件编程HALAlteraNiosII户供给了硬件抽象层(HALHALAPI〔应用程序接口〕来访问定时器内核。HAL系统库支持HALAPIAlteraHALtimestamp系统时钟驱动程序SOPCbuilder的设置值。系统时钟效劳作为这个定时器中断效劳的一局部。驱动程序是中断驱动的,因此在系统硬件上,定时器必需连接有中断信号。NiosIIIDE第六章相关内容。Timestamp假设定时器内核满足如下的条件,可用作timestamp设备:(periodSOPCBuilder置。定时器没有被设置成系统时钟。NiosIIIDE允许在系统库属性中用户指定哪个定时器设备用作timestamp定时器。假设定时器硬件没有设置成具有可写的周期存放器,则调用alt_timestamp_startAPItimestampHALAPI调用则如预期的一样。NiosII(EDS)软件文件HALaltera_avalon_timer_regs.h——定义了内核存放器的映射,供给了对底层硬件的符号化的访问。altera_avalon_timer.h、altera_avalon_timer_sc.c、altera_avalon_timer_ts.c和altera_avalon_timer_vars.c——供给定时器设备的驱动程序的实现。应用程序开发者使用HALAPI来访问定时器设备。HALAPI中的参数要用到定system.hsystem.h文件中有关定时器的预定义。#defineSYS_CLK_TIMER_NAME“/dev/sys_clk_timer“#defineSYS_CLK_TIMER_TYPE“altera_avalon_timer“#defineSYS_CLK_TIMER_BASE0x00000820#defineSYS_CLK_TIMER_SPAN32#defineSYS_CLK_TIMER_IRQ1#defineSYS_CLK_TIMER_ALWAYS_RUN0#defineSYS_CLK_TIMER_FIXED_PERIOD0#defineSYS_CLK_TIMER_SNAPSHOT1#define#defineSYS_CLK_TIMER_PERIOD10SYS_CLK_TIMER_PERIOD_UNITS“ms“#defineSYS_CLK_TIMER_RESET_OUTPUT0#defineSYS_CLK_TIMER_TIMEOUT_PULSE_OUTPUT0#defineSYS_CLK_TIMER_MULT0.001#defineSYS_CLK_TIMER_FREQ85000000#defineALT_MODULE_CLASS_sys_clk_timeraltera_avalon_timer3节异步串口UART具有Avalon接口的通用异步收发器〔universalasynchronousreceiver/transmitter——UART〕AlteraFPGA和片外设备之间的串行的字符流传输的一种方法。UART内核实现了RS-232协议的定时,并且供给可调的波特率,奇偶校验位、停顿和数据位,以及可选的RTS/CTS流掌握信号。特性集是可配置的,允许设计者只实现特定系统的必要的功能。UARTAvalonAvalonNiosII/UARTUARTSOPCBuilderSOPCBuilderUART内核功能描述UART内核有两个局部对用户是可见的:AvalonRS-232信号,RXD、TXD、CTSRTS。AvalonUART内核为存放器供给一个AvalonUART内核的用户接口包616control、status、rxdata、txdata、divisorNiosII连接通道上传输数据。UART内核供给一个高电平有效的中断恳求输出,当接收UARTAvalonUARTAvalon流掌握的DMA之间的传输。RS-232接口AlteraFPGAI/ORS-232电RS-232连接器的信号驱动,可能会对UART内核造RS-232电压信令标准匹配,在FPGAI/ORS-232连接器之间参加一个外部的电压转换缓冲器,比方MaximMAX3237。UART用负规律,FPGARS-232发送器规律UART7、89txdataAvalonAvalontxdata保持存放器。当没有串行的发送移位操作在进展,发送移位存放器自动装载txdata存放器。发送移位存放器直接供给TXD输出。数据最低有效位最先移出TXD。以上的两个存放器供给双重的缓冲。当主外设之前写入的数据正在被txdata读状态存放器的发送器就绪位(trdy(tmt)和发送器溢出错误位(toe),发送器主外设可以监控发送器的状态。发送器规律依据TXD奇偶校验位。接收器规律UART接收器包含一个78或9位的接收器移位存放器和一个相应的7、89rxdata。AvalonAvalonrxdatarxdata器的内容。以上的两个存放器供给双重的缓冲。rxdata收到的字符,当后续的字符正在移入接收器移位存放器。主外设通过读状态存放器的读就绪位(rrdy)(roe)、连续检测位(brk)、奇偶校验错误位(pe)和帧错误位(fe),来监控接收器状态。RS-232RXD、停顿和奇偶校验位。接收器规律检查接收数据中的四种特别状况(帧错误、(fe,pe,roe,orbrk)。波特率生成UART内核内部波特率时钟来自Avalon时钟输入,内部波特率时钟通过时钟分频器产生。除数值来自下面两个值:在系统生成时指定的一个常数值。divisor16divisor存放器是一个可选的硬件特性,假设在系统生成时,没有使能divisor存放器,除数值则是固定的,波特率就不能被转变了。SOPCBuilder中实例化UARTI/ORXDTXD可选地,硬件也可能包括流掌握信号,CTSRTSUART波特率选项UART内核可以实现RS-232连接的任何标准的波特率。波特率可以通过下面的两种方法进展配置:Avalon口进展转变。divisordivisor着复位之后默认的波特率。波特率选项供给标准的预置值(如115200bps),用户也可以手动输入任何的波特率值。波特率的值的用来计算适合的时钟除数值。波特率和除数值之间的关系如下:除数=int((时钟频率)/(波特率)+0.5)波特率=(时钟频率)/(除数+1)SOPCBuilderUART时,假设选中了波特率可以通过软件转变的选4DivisorUART硬件实现一个不变的波特率除数,这个值在系统生成之后就不能被转变4一个未定义的结果。数据位、停顿位、奇偶校验位UART内核的奇偶校验位、数据位和停顿位是可配置的。这些设置在7-5。当奇偶校验(ParityNone,发送规律发送没有奇偶校验位的数据,并且接收规律认为输入的数据也不含奇偶校验位。当奇偶校验设置为None,状态寄(statuspe(parityerror0。OddEvenRXDpe1Even,1,0,否则奇偶校1Odd0,假设字符具有奇数1。流掌握CTS/RTSpins&controlregisterbits”的选项。假设选中这个选项,UARTCTS_N(lCTS)输入端口。RTS_N(负规律RTS)输出端口。statusCTS位。statusDCTSControlRTScontrolIDCTSCTSRTS流掌握信号。CTS输入和RTS输出端口直接连接到状态存放器和掌握存放器的相应位上,对UARTandcontrolregisterbits选项没有选中,UART/CTS、DCTS、IDCTS和RTS0。Avalon(DMA)UARTAvalonUART据时,主外设才进展读数据。UART内核也可以选择是否包含end-of-packet存放Includeend-of-packetregisterUART5789endofpacketDataBitseopieopAvalon接口中的endofpacket信号,以支持来自和去往系统中的主外设的具有流掌握的数据传输。End-of-packet(EOP)检测允许UART间的数据传输。EOP检测可用于同DMA掌握器一起使用,例如,实现UART自动RXD(endofpacketendofpacketend-of-packet读则返回一个未定义的值。UART存放器描述HALAPIUART8-6HAL内核的存放器映射,设备驱动通过存储器映射存放器掌握内核和与内核通信。能了,才能在硬件中存在。RxdataRxdata存放器保存由RXDRXDRxdatacharacterready〕1Rxdata存放器中的字符被读出后,Statusrrdy0。在rrdy1〔即前面的数据还没有读出〕rxdata存放器,则发生接收溢出错误。Statusroeerror〕1。不管前一个字符是否已经被读出,RxdataRxdataTtxdataAvalon主外设将要发送的字符写入Txdata存放器。直到发送器预备好TxdataStatusTRDY传输到发生器移位存放器之后,TRDY1TRDY0TxdataTxdataStatusStatus存放器每个单独的位反映UART内核的特定状态。每个状态位是和control存放器中相应的中断使能位相联系的。可以在任何时候读Status0StatusDCTS、E、TOE、ROE、BRK、FEPEControl(掌握)存放器ControlUARTUART的一个方面。Control存放器的值可以在任何时刻读取。Control存放器的每pe0,ipe0peipe17-8除数〔divisor〕存放器(可选)Divisor存放器用来产生波特率时钟,承受的波特率由下面的公式决定:BaudRate=(Clockfrequency)/(divisor+1)DivisorBaudRateCanBeChangedBySoftwaredivisordivisordivisor包完毕符〔Endofpacket〕l)0,ASCIInull(\0)。Endofpacketend-of-packetregister则endofpacket存放器就不存在。这种状况下,写endofpacket没有任何结果,读则返回一个未定义的值。.中断行为UART〔IRQ〕AvalonNiosIIstatusstatuscontrol存放器中的一个中断使能位相联系。当任何一种中断状况发生,与之相关的状1IRQIRQ。复位时,全部的中1。软件编程NiosIIAlteraHAL户可以使用ANSICUARTprintf和getchar函数。HAL系统库支持Altera供给的驱动程序实现了HAL字符模式设备驱动程序,字符模式HALAPIANSICUART,UART方式。HALioctlUARTNiosIIHALAPIUARTANSICCTS/RTSprintf(标准输出设备。本例中,SOPCBuilderUARTHALUART〔stdout〕设备。例程:打印字符到作为标准输出设备的UART内核#include<stdio.h>intmain{printf(“Helloworld.\n“);return0;}UARTUART送消息。本例中,SOPCBuilderUARTuart1,该设备没有必要stdout例程:接收和发送字符/*Asimpleprogramthatrecognizesthecharacters”t”and”v”*/#include<stdio.h>#include<string.h>intmain{char*msg=“Detectedthecharacter”t”.\n“;FILE*fp;charprompt=0;fp=fopen(“/dev/uart1“,“r+“);//Openfileforreadingandwritingif(fp){while(prompt!=”v”){//Loopuntilwereceivea”v”.prompt=getc(fp);//GetacharacterfromtheUART.if(prompt==”t”){//Printamessageifcharacteris”t”.fwrite(msg,strlen(msg),1,fp);}}fprintf(fp,“ClosingtheUARTfile.\n“);fclose(fp);}return0;}驱动程序选项为了满足不同类型系统的需求,UART速版本〔fastversion〕和小型版本〔smallversion.〕。默认使用快速的版CHALAPI。快速驱动处理器执行其它的任务。由于UART数据速率比处理器要慢,承受快速驱动程序因此可以提高系统的性能。小型版本驱动程序承受的是查询实现方法,在发送HAL设备驱动程序。指定预处理器选项假设用户要使用小型、查询版本的UART驱动-DALTERA_AVALON_UART_SMALL。CTS/RTS流掌握信号,快速的版本自动使用这些信号,而小型版本无视这些信号。ioctl操作HAL7-9UART软件文件HAL发人员不应当修改这些文件:altera_avalon_uart_regs.h——定义了内核的存放器映射,供给了符号常数来访问底层硬件。文件中的常数只能被设备驱动程序函数使用。altera_avalon_uart.h,altera_avalon_uart.cHALUART4节Optrex16207LCD掌握器内核AvalonOptrex16207LCDNiosIIOptrex16207(或相当的)16x2LCDHALNiosIINiosIILCD掌握器在SOPCBuilderSOPCBuilderNiosIIEDSOptrexLCDLCDOptrex16207功能描述LCD7-411Optrex16207datasheetE–输出访能RSR/W–读或写(输出)DB0~DB7–数据总线(双向)HAL必直接访问存放器,因此,Altera处理器。驱动程序不支持第一代的Nios处理器。软件编程HAL系统库支持AlteraNiosIIHALAlteraHALLCDprintf是最简洁的显示字符的方法。LCDHAL软件文件HALaltera_avalon_lcd_16207_regs.h——该文件定义了掌握器内核的存放器映射,供给了符号化的常数来访问底层硬件。altera_avalon_lcd_16207.c——这些文HALLCDLCD掌握器和UART一样都属于字符型设备,所以访问LCD同UART一样可以使用ANSIC标准库函数和HALAPI来进展访问,读者可以参UART局部。5节通用Flash接口(CFI)掌握器内核Avalonflash〔CommonFlashInterface〕掌握器内核允SOPCBuilderCFIflash接起来。CFISOPCBuilderSOPCBuilderNiosIIAlteraCFI(HAL)CFI标准的flash存储器函数。因此,用户不需要写任何的额外的代码。HALHALHALAPIANSICI/Oflash功能描述NiosIIEDSNiosIICFIflashprogrammerCFIAlteraFPGAflash7-5CFI理图。FlashAvalonAvalon成一个片外存储器总线,允许flash芯片同其它的存储器芯片共享地址和数据管脚。chipselect、readflashAvalon传输和写传输。AvalonCFIAvalon输。在SOPCBuilder中实例化CFI掌握器内核SOPCBuilderCFIMegaWizardCFI器内核的特性。MegaWizard包含有以下的设置页面。1.属性〔Attributes〕页面Presets设置下拉菜单供给已经预先配置好使用CFI掌握器的flash芯PresetMegaWizardflashflashPresetssize设置设定flashAddressWidth—flashDataWidth—flashsize设置会使得SOPCBuilder安排正确数量的地址空间给flash设备。SOPCBuilder会自动生成动态总线对齐规律,以使得flash芯片能够正确地与Avalon2.〔Timing〕页flash括:Setupchipselectreadwrite需的时间。WaitreadwriteHoldwritechipselect间。.期。.

Units—Setup、WaitHoldns、us、ms软件编程HAL系统库支持通常,系统中的任何的AvalonflashNiosIIAlteraHALHALAPI函flashHALflashHALAPI函数来对遵循CFIflashNiosIIEDSFlashTests,演示了擦除、写和flashAlteraCFIAMDIntelflash软件文件CFI掌握器供给如下的软件文件,这些文件定义了对硬件的底层访问,HALflashaltera_avalon_cfi_flash.h,altera_avalon_cfi_flash.c——将驱动程序集HALaltera_avalon_cfi_flash_funcs.h,altera_avalon_cfi_flash_table.c——CFIaltera_avalon_cfi_flash_amd_funcs.h、altera_avalon_cfi_flash_amd.c——对AMDflashaltera_avalon_cfi_flash_intel_funcs.h、altera_avalon_cfi_flash_intel.cIntelflash代码。6节DMA内核Avalon(DMA)掌握器内核执行大块的数据传输,从AvalonDMADMA设能够并行地执行其它的任务。的最大的速率读和写数据。DMAAvalon/从一个具有流掌握的低速外设传输数据。DMASOPCBuilder功能描述DMA掌握器用于执行从源地址空间到目的地址空间的直接存储器访问数据传输。源和目的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论