FPGA-CPLD原理及应用第12章NIOS常用外设FPGA-CPLD原理及应用FPGA-CPLD原理及应用第12章NIOS常用外设第12章NIOS常用外设FPGA-CPLD原理及应用第12章NIOS常用外设介绍NiosII处理器常用外围设备(Peripherals)内核的特点、配置以及软件编程。这些外设都是以IP核的形式提供给用户的,用户可以根据实际需要把这些IP核集成到NiosII系统中去。主要介绍:–硬件结构;–内核的特性核接口;–SOPCBuilder中各内核的配置选项;–软件编程。主要内容FPGA-CPLD原理及应用第12章NIOS常用外设第12章目录12.1并行输入/输出(PIO)内核12.2定时器内核12.3CFI(通用Flash)控制器内核12.4SDRAM控制器内核12.5UART内核12.6EPCS控制器内核12.7JTAG_UART内核12.8SPI内核12.9DMA内核12.10带Avalon接口的互斥内核12.11带Avalon接口的邮箱内核12.12SystemID内核FPGA-CPLD原理及应用第12章NIOS常用外设12.1并行输入/输出内核并行输入/输出内核(PIO内核①)提供Avalon从控制器端口和通用I/O口②间的存储器映射接口。PIO内核提供简单的I/O访问用户逻辑或外部设备,例如:–控制LED–读取开关量–控制显示设备–配置并且与片外设备通信说明:1.SOPCBuilder中提供了PIO内核,可以很容易将PIO内核集成到SOPCBuilder生成的系统中。2.通用I/O端口既连接到片内逻辑又连接到外部设备的FPGAI/O管脚。FPGA-CPLD原理及应用第12章NIOS常用外设12.1并行输入/输出内核PIO内核简介每个Avalon接口的PIO内核可提供32个I/O端口且端口数可设置,用户可以添加一个或多个PIO内核。CPU通过I/O寄存器控制I/O端口的行为。I/O口可以配置为输入、输出和三态,还可以用来检测电平事件和边沿事件。最多32个I/O端口CPU内核PIO内核寄存器NiosII系统PIO内核Pio[31]Pio[30]Pio[29]Pio[3]Pio[2]Pio[1]Pio[0]Pio[7]Pio[6]Pio[5]Pio[4]Pio[3]Pio[2]Pio[1]Pio[0]PIO内核端口数可设置CPU通过寄存器控制I/O端口行为FPGA-CPLD原理及应用第12章NIOS常用外设12.1并行输入/输出内核PIO内核寄存器描述偏移量寄存器名称R/W(n-1)…2100数据寄存器读访问R读入输入引脚上的逻辑电平值写访问W向PIO输出口写入新值1方向寄存器①R/W控制每个I/O口的输入输出方向。0:输入;1:输出。2中断屏蔽寄存器①R/W使能或禁止每个输入端口的IRQ。1:中断使能;0:禁止中断。3边沿捕获寄存器①②R/W当边沿事件发生时对应位置1。注:①该寄存器是否存在取决于硬件的配置。如果该寄存器不存在,那么读寄存器将返回未定义的值,写寄存器无效。②写任意值到边沿捕获寄存器将清除所有位为0。“①该寄存器是否存在取决于硬件的配置。如果该寄存器不存在,那么读寄存器将返回未定义的值,写寄存器无效。”FPGA-CPLD原理及应用第12章NIOS常用外设12.1并行输入/输出内核双击PIO内核配置选项FPGA-CPLD原理及应用第12章NIOS常用外设12.1并行输入/输出内核PIO内核配置选项BasicSettings选项卡I/O口宽度:可设置为1~32的任何整数值。Direction中文描述Bidirectional(tri-state)ports双向(三态)端口Inputportsonly仅为输入端口Outputportsonly仅为输出端口Bothinputandoutputports输入和输出端口FPGA-CPLD原理及应用第12章NIOS常用外设12.1并行输入/输出内核PIO内核配置选项BasicSettings选项卡Direction中文描述Bidirectional(tri-state)ports双向(三态)端口Inputportsonly仅为输入端口Outputportsonly仅为输出端口Bothinputandoutputports输入和输出端口FPGA-CPLD原理及应用第12章NIOS常用外设12.1并行输入/输出内核-PIO内核配置选项InputOptions选项卡边沿捕获寄存器中断寄存器RisingEdge:上升沿FallingEdge:下降沿EitherEdge:上升或下降沿Level:输入为高电平且中断使能,则PIO内核产生一个IRQ。Edge:边沿捕获寄存器相应位为1且中断使能,则PIO内核产生一个IRQ。说明:当指定类型的边沿在输入端口出现时,边沿捕获寄存器对应位置1。说明:中断只有高电平中断,如果希望低电平时中断,则需在该I/O输入引脚前加一个“非”门。FPGA-CPLD原理及应用第12章NIOS常用外设12.1并行输入/输出内核PIO内核配置选项Simulation选项卡当需要对外进行仿真时,要设置simulation选项卡。FPGA-CPLD原理及应用第12章NIOS常用外设12.1并行输入/输出内核软件编程PIO内核提供了对硬件进行寄存器级访问的文件。Altera_avalon_pio_regs.h该文件定义了内核的寄存器映射并提供硬件设备访问宏定义。可通过阅读上述文件以熟悉PIO设备的软件访问方法,但不应该修改文件。FPGA-CPLD原理及应用第12章NIOS常用外设第12章目录12.1并行输入/输出(PIO)内核12.2定时器内核12.3CFI(通用Flash)控制器内核12.4SDRAM控制器内核12.5UART内核12.6EPCS控制器内核12.7JTAG_UART内核12.8SPI内核12.9DMA内核12.10带Avalon接口的互斥内核12.11带Avalon接口的邮箱内核12.12SystemID内核FPGA-CPLD原理及应用第12章NIOS常用外设12.2定时器内核定时器挂载在Avanlon总线上的32位定时器,特性如下:–两种计数模式:单次减1和连续减1计数模式;–定时器到达0时产生中断请求(IRQ);–可选择设定为看门狗定时器,计算到达0时复位系统;–可选择输出周期性脉冲,在定时器计算到达0时输出脉冲;–可由软件启动、停止或复位定时器;–可由软件使能或屏蔽定时器中断。定时器内核综述FPGA-CPLD原理及应用第12章NIOS常用外设12.2定时器内核定时器内核综述Avanlon总线从机接口到内核逻辑StatusControlPeriodhPeriodlSnaphSnapl控制逻辑计数器寄存器文件TimeoutpulseIRQReset数据总线地址总线(看门狗)FPGA-CPLD原理及应用第12章NIOS常用外设12.2定时器内核定时器可进行的基本操作:–Avalon主控制器通过对控制寄存器执行不同的写操作来控制:•启动和停止定时器•使能/禁能IRQ•指定单次减1计数或连续减1计数模式–处理器读状态寄存器获取当前定时器的运行信息。–处理器可通过写数据到periodl和periodh寄存器来设定定时器周期。定时器内核综述FPGA-CPLD原理及应用第12章NIOS常用外设12.2定时器内核定时器可进行的基本操作如下所述:–内部计数器计数减到0,立即从周期寄存器开始重新装载。–处理器可以通过写snapl或snaph获取计数器的当前值。–当计数器计数到达0时:•如果IRQ被使能,则产生一个IRQ•(可选的)脉冲发生器输出有效持续一个时钟周期•(可选的)看门狗输出复位系统定时器内核综述FPGA-CPLD原理及应用第12章NIOS常用外设12.2定时器内核定时器寄存器描述偏移量名称R/W位描述15…432100statusRW*RUNTO1controlRW*STOPSTARTCONTITO2periodlRW超时周期-1(位15..0)3periodhRW超时周期-1(位31..16)4snaplRW计数器快照(位15..0)5snaphRW计数器快照(位31..16)RUNTOSTOPSTARTCONTITOperiodlPeriodhsnaplsnaph注:*表示该位保留,读取值未定义。FPGA-CPLD原理及应用第12章NIOS常用外设12.2定时器内核定时器内核配置选项Initialperod:用于预设硬件生成后的定时器周期,即perodl和periodh寄存器的值。FPGA-CPLD原理及应用第12章NIOS常用外设12.2定时器内核定时器内核配置选项Writeableperod:使能:主控制器可通过写period而改变向下计数周期。禁能:向下计数周期由TimeoutPeriod确定,且period寄存器不在硬件中存在。Readablesnapshot:使能:主控制器可读当前向下计数器的值。禁能:计数器的状态仅通过状态寄存器或IRQ信号来检测。Snap寄存器不在硬件中存在。Start/Stopcontrolbits:使能:主控制可通过写START和STOP位来启动和停止定时器。禁能:定时器连续运行。FPGA-CPLD原理及应用第12章NIOS常用外设12.2定时器内核定时器内核配置选项Timeoutpulse:使能:定时器到0时,timeout_pulse输出一个时钟周期的高电平。禁能:timeout_out信号不存在。Systemresetontimeout:使能:定时器到0时,resetrequest信号输出一个时钟周期的高电平使系统复位。禁能:resetrequest信号不存在。FPGA-CPLD原理及应用第12章NIOS常用外设12.2定时器内核Altera为NiosII处理器用户提供硬件抽象层(HAL)系统库驱动程序,允许用户使用HAL应用程序接口(API)函数来访问定时器内核。1.HAL系统库支持2.系统时钟驱动程序3.时间标记驱动程序4.软件文件软件编程FPGA-CPLD原理及应用第12章NIOS常用外设第12章目录12.1并行输入/输出(PIO)内核12.2定时器内核12.3CFI(通用Flash)控制器内核12.4SDRAM控制器内核12.5UART内核12.6EPCS控制器内核12.7JTAG_UART内核12.8SPI内核12.9DMA内核12.10带Avalon接口的互斥内核12.11带Avalon接口的邮箱内核12.12SystemID内核FPGA-CPLD原理及应用第12章NIOS常用外设12.3CFI控制器内核对于NiosII处理器,Altera为CFI控制器提供硬件抽象层(HAL)驱动程序。驱动程序提供了遵循CFI接口规范的Flash存储器的通用访问函数。因此,用户不需要写任何代码就可以访问遵循CFI接口规范的Flash器件。CFI控制器内核综述FPGA-CPLD原理及应用第12章NIOS常用外设12.3CFI控制器内核CFI控制器内核综述片上外设Avalon三态桥Avalon主控制器(eg.CPU)MSSAvalon交换构架SMMFlash其它ENBFlash储存器S其它储存器SShipSelectread_n,write_nShipSelectread_n,write_nSAvalon主控制器接口Avalon从控制器接口AlteraFPGA三态缓冲器FPGA-CPLD原理及应用第12章NIOS常用外设12.3CFI控制器内核CFI控制器内核设置CFI控制器框图Attributes:用于完成Presets、size和BoardInfo这3个选项的设定。Presets:选择预设好的CFIFlash。Size:地址宽度:Flash地址总线宽度。数据宽度:Flash数据总线宽度。BoardInfo:用于映射CFI控制器目标系统板元件的已知芯片。FPGA-CPLD原理及应用第12章NIOS常用外设12.3CFI控制器内核CFI控制器内核设置CFI控制器框图Timing:用