第4讲NIOSII外围设备——标准系统搭建Sun主要内容本讲主要以一个标准硬件平台的搭建,介绍了NiosII处理器常用外围设备(Peripherals)内核的特点、配置,供读者在使用这些外设定制NiosII系统时查阅。这些外设都是以IP核的形式提供给用户的,用户可以根据实际需要把这些IP核集成到NiosII系统中去。主要介绍:–硬件结构;–内核的特性核接口;–SOPCBuilder中各内核的配置选项第4讲主要内容•4.1并行输入/输出(PIO)内核•4.2SDRAM控制器内核•4.3ram/rom片上存储•4.4EPCS控制器内核•4.5定时器内核•4.6UART内核•4.7JTAG_UART内核•4.8lcd控制器•4.9SystemID内核•4.10课程实验第4讲主要内容•4.1并行输入/输出(PIO)内核•4.2SDRAM控制器内核•4.3ram/rom片上存储•4.4EPCS控制器内核•4.5定时器内核•4.6UART内核•4.7JTAG_UART内核•4.8lcd控制器•4.9SystemID内核•4.10课程实验4.1并行输入/输出内核并行输入/输出内核(PIO内核①)提供Avalon从控制器端口和通用I/O口②间的存储器映射接口。PIO内核提供简单的I/O访问用户逻辑或外部设备,例如:–控制LED–读取开关量–控制显示设备–配置并且与片外设备通信说明:1.SOPCBuilder中提供了PIO内核,可以很容易将PIO内核集成到SOPCBuilder生成的系统中。2.通用I/O端口既连接到片内逻辑又连接到外部设备的FPGAI/O管脚。4.1并行输入/输出内核•PIO内核简介最多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内核端口数可设置每个Avalon接口的PIO内核可提供32个I/O端口且端口数可设置,用户可以添加一个或多个PIO内核。CPU通过I/O寄存器控制I/O端口的行为。I/O口可以配置为输入、输出和三态,还可以用来检测电平事件和边沿事件。CPU通过寄存器控制I/O端口行为PIO内核结构框图4.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。“①该寄存器是否存在取决于硬件的配置。如果该寄存器不存在,那么读寄存器将返回未定义的值,写寄存器无效。”4.1并行输入/输出内核•-PIO内核配置选项双击4.1并行输入/输出内核PIO内核配置选项BasicSettings选项卡I/O口宽度:可设置为1~32的任何整数值。Direction中文描述Bidirectional(tri-state)ports双向(三态)端口Inputportsonly仅为输入端口Outputportsonly仅为输出端口Bothinputandoutputports输入和输出端口4.1并行输入/输出内核PIO内核配置选项BasicSettings选项卡Direction中文描述Bidirectional(tri-state)ports双向(三态)端口Inputportsonly仅为输入端口Outputportsonly仅为输出端口Bothinputandoutputports输入和输出端口4.1并行输入/输出内核PIO内核配置选项InputOptions选项卡边沿捕获寄存器中断寄存器RisingEdge:上升沿FallingEdge:下降沿EitherEdge:上升或下降沿Level:输入为高电平且中断使能,则PIO内核产生一个IRQ。Edge:边沿捕获寄存器相应位为1且中断使能,则PIO内核产生一个IRQ。说明:当指定类型的边沿在输入端口出现时,边沿捕获寄存器对应位置1。说明:中断只有高电平中断,如果希望低电平时中断,则需在该I/O输入引脚前加一个“非”门。4.1并行输入/输出内核PIO内核配置选项Simulation选项卡当需要对外进行仿真时,要设置simulation选项卡。4.1并行输入/输出内核添加Led_pio发光二极管LEDPIO设置和button_pio类似,只是模式是Outputportsonly,不再需要中断生成,本例中配置了8位的LED输出。添加1个按钮在此选Inputportsonly。在InputOptions选项单我们配置了上升沿触发,生成中断请求的模式第4讲主要内容•4.1并行输入/输出(PIO)内核•4.2SDRAM控制器内核•4.3ram/rom片上存储•4.4EPCS控制器内核•4.5定时器内核•4.6UART内核•4.7JTAG_UART内核•4.8lcd控制器•4.9SystemID内核•4.10课程实验4.2SDRAM控制器内核•SDRAM控制器内核概述SDRAM控制器内核提供一个连接片外SDRAM芯片的Avalon接口,并可以同时连接多个SDRAM芯片。SDRAM控制器内核具有不同数据宽度(8、16、32或64位)、不同内存容量和多片选择等设置。SDRAM控制器不支持禁能的时钟模式。SDRAM控制器使cke引脚永久地有效。4.2SDRAM控制器内核•SDRAM控制器内核概述PPL(片内锁相环):通常用于调整SDRAM控制器内核与SDRAM芯片之间的相位差。Avalon三态桥:SDRAM控制器可与现有三态桥共用引脚,这用能减少I/O引脚使用,但将降低性能。fMAX(最高时钟频率):目标FPGA的系列和整个硬件设计都会影响硬件设计可实现的最高时钟频率。4.2SDRAM控制器内核-SDRAM内核配置选项可直接选择预定义的SDRAM芯片型号,对话框将自动改变下面两个选项卡的值来匹配指定配置。MemoryProfile:用于指定SDRAM的结构。4.2SDRAM控制器内核数据宽度允许值:8、16、32、64默认值:32描述:该值确定dq总线(数据)和dqm总线(字节使能)的宽度。具体数值请查阅SDRAM数据手册。4.2SDRAM控制器内核结构设置-片选允许值:1、2、4、8默认值:1描述:独立芯片的数目在SDRAM子系统中选择。通过使用多个片选信号,SDRAM控制器可组合多个SDRAM芯片为一个存储器子系统。4.2SDRAM控制器内核结构设置-区允许值:2、4默认值:4描述:区的数目,该值确定连接到SDRAM的ba总线(区地址)宽度。具体数值请查阅SDRAM数据手册。4.2SDRAM控制器内核地址宽度设计-行允许值:11、12、13、14默认值:12描述:行地址位的数目。该值确定addr总线的宽度。具体数值请查阅SDRAM数据手册。4.2SDRAM控制器内核地址宽度设计-列允许值:=8,且小于行的值默认值:8描述:列地址位的数目。例如,SDRAM排列为4096行、512(29)列,所以列的值为9。具体数值请查阅SDRAM数据手册。4.2SDRAM控制器内核通过三态桥共用管脚允许值:是、否默认值:否描述:当设为No时,所有管脚都专用于SDRAM芯片。当设为Yes时,addr,dq和dqm管脚在系统内可与三态桥共享。4.2SDRAM控制器内核包括系统测试台的功能存储模块允许值:是、否默认值:是描述:当打开选项时,SOPCBuilder创建SDRAM芯片的功能仿真模型。该默认的存储器模型加速创建的过程和检验使用SDRAM控制器的系统。4.2SDRAM控制器内核-SDRAM内核配置选项Timing:根据在SDRAM芯片数据手册中提供的参数来设置芯片的时序规范4.2SDRAM控制器内核CAS等待时间允许值:1、2、3默认值:3描述:从读命令到数据输出的等待时间(以时钟周期计算)。4.2SDRAM控制器内核初始化刷新周期允许值:1-8默认值:2描述:复位后,该值指定SDRAM控制器将执行多少个刷新周期作为初始化序列的一部分。4.2SDRAM控制器内核每隔一段时间执行一个刷新命令允许值:-默认值:15.625us描述:该值指定SDRAM控制器多久刷新一次SDRAM。典型的SDRAM每64ms需要4,096刷新命令,通过每64ms/4,096=15.625us执行一个刷新命令来符合这个要求。4.2SDRAM控制器内核在初始化前、上电后延时允许值:-默认值:100us描述:从稳定的时钟和电源到SDRAM初始化的延时。4.2SDRAM控制器内核刷新命令(t_rfc)的持续时间允许值:-默认值:70ns描述:自动刷新周期。4.2SDRAM控制器内核预充电命令(t_rp)的持续时间允许值:-默认值:20ns描述:预充电命令周期。4.2SDRAM控制器内核ACTIVE到READ或WRITE延时允许值:-默认值:20ns描述:ACTIVE到READ或WRITE延时。4.2SDRAM控制器内核访问时间(t_ac)允许值:-默认值:5.5ns描述:时钟边沿的访问时间。该值由CAS的等待时间决定。4.2SDRAM控制器内核写恢复时间(t_wr,无自动预充电)允许值:-默认值:14ns描述:如果执行了明确的预充电命令,写恢复。该SDRAM控制器总是执行明确的预充电命令。4.2SDRAM控制器内核•SDRAM应用SDRAM控制器128Mbits16Mbytes32位数据宽度SDRAM器件AlteraFPGAAvalon从机接口到片内逻辑addrCtlnCSData(32bit)一个带32位数据总线的128MbitSDRAM芯片4.2SDRAM控制器内核•SDRAM应用两个带16位数据总线的64MbitSDRAM芯片SDRAM控制器64Mbits8Mbytes16位数据宽度SDRAM器件AlteraFPGAAvalon从机接口到片内逻辑addrCtlnCSData(32bit)64Mbits8Mbytes16位数据宽度SDRAM器件16bit16bit4.2SDRAM控制器内核•SDRAM应用两个带32位数据总线的128MbitSDRAM芯片SDRAM控制器128Mbits16Mbytes32位数据宽度SDRAM器件AlteraFPGAAvalon从机接口到片内逻辑addrCtlnCS[0]Data(32bit)128Mbits16Mbytes32位数据宽度SDRAM器件32bit32bitnCS[1]4.2SDRAM控制器内核•添加外部sdram•通常的系统都需要用户指定一个空间,这个是指ram可以使片上的,也可以使片外的sdram或sram等。如果用户程序较大,超出了所能定制的最大片上ram容量,则也可以将程序放在sdram中运行4.2SDRAM控制器内核第4讲主要内容•4.1并行输入/输出(PIO)内核•4.2SDRAM控制器内核•4.3ram/rom片上存储•4.4EPCS控制器内核•4.5定时器内核•4.6UART内核•4.7JTAG_UART内核•4.8lcd控制器•4.9SystemID内核•4.10课程实验4.3ram/rom片上存储•使用FPGA内部RAM资源,可以构成RAM或ROM,速度快,特别在调试时因为很少受外部连线等因素的限制很有用。组件栏中选择LegacyComponents-On-ChipMemory打开界面,如图第4讲主要内容•4.1并行输入/输出(PIO)内核•4.2SDRAM控制器内核•4.3ram/rom片上存储•4.4EPCS控制器内核•4.5定时器内核•4.6UART内核•4.7JTAG_UART内核•4.8lc