FPGA 之 SOPC 系列(四)NIOS II 外围设备--标准系统搭建

2020-12-30 10:48:43 浏览数 (1)

大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。

今天给大侠带来今天带来FPGA 之 SOPC 系列第四篇,NIOS II 外围设备--标准系统搭建,希望对各位大侠的学习有参考价值,话不多说,上货。

本篇主要以一个标准硬件平台的搭建为例,介绍了Nios II处理器常用外围设备(Peripherals)内核的特点、配置,供读者在使用这些外设定制Nios II系统时查阅。这些外设都是以IP核的形式提供给用户的,用户可以根据实际需要把这些IP核集成到Nios II系统中去。

主要介绍:硬件结构;内核的特性核接口;SOPC Builder中各内核的配置选项。

以下为本篇的目录简介:

4.1 并行输入/输出(PIO)内核

4.2 SDRAM控制器内核

4.3 ram/rom片上存储

4.4 EPCS控制器内核

4.5 定时器内核

4.6 UART内核

4.7 JTAG_UART内核

4.8 lcd控制器

4.9 System ID内核

4.10 实战训练

4.1 并行输入/输出(PIO)内核

并行输入/输出内核(PIO内核①)提供Avalon从控制器端口和通用I/O口②间的存储器映射接口。PIO内核提供简单的I/O访问用户逻辑或外部设备,例如:

  • 控制LED
  • 读取开关量
  • 控制显示设备
  • 配置并且与片外设备通信

说明:

SOPC Builder中提供了PIO内核,可以很容易将PIO内核集成到SOPC Builder生成的系统中。

通用I/O端口既连接到片内逻辑又连接到外部设备的FPGA I/O管脚。

PIO内核简介

每个Avalon接口的PIO内核可提供32个I/O端口且端口数可设置,用户可以添加一个或多个PIO内核。CPU通过I/O寄存器控制I/O端口的行为。I/O口可以配置为输入、输出和三态,还可以用来检测电平事件和边沿事件。

PIO内核结构框图

PIO内核寄存器描述:

注:

① 该寄存器是否存在取决于硬件的配置。如果该寄存器不存在,那么读寄存器将返回未定义的值,写寄存器无效。该寄存器是否存在取决于硬件的配置。如果该寄存器不存在,那么读寄存器将返回未定义的值,写寄存器无效。

② 写任意值到边沿捕获寄存器将清除所有位为0。

PIO内核配置选项操作如下:

Basic Settings 选项卡:

各个端口描述:

Input Options 选项卡:

Simulation 选项卡:

4.2 SDRAM控制器内核

  • SDRAM控制器内核概述

SDRAM控制器内核提供一个连接片外SDRAM芯片的Avalon接口,并可以同时连接多个SDRAM芯片。

SDRAM控制器内核具有不同数据宽度(8、16、32或64位)、不同内存容量和多片选择等设置。

SDRAM控制器不支持禁能的时钟模式。SDRAM控制器使cke引脚永久地有效。

PPL(片内锁相环):通常用于调整SDRAM控制器内核与SDRAM芯片之间的相位差。

Avalon三态桥:SDRAM控制器可与现有三态桥共用引脚,这能减少I/O引脚使用,但将降低性能。

fMAX(最高时钟频率):目标FPGA的系列和整个硬件设计都会影响硬件设计可实现的最高时钟频率。

SDRAM内核配置选项操作如下:

SDRAM芯片型号:

Memory Profile:

数据宽度:

结构设置--片选:

结构设置--区:

地址宽度设计--行:

地址宽度设计--列:

通过三态桥共用管脚:

包括系统测试台的功能存储模块:

Timing:

CAS等待时间:

初始化刷新周期:

每隔一段时间执行一个刷新命令:

在初始化前、上电后延时:

刷新命令(t_rfc)的持续时间:

预充电命令(t_rp)的持续时间:

ACTIVE到READ或WRITE延时:

访问时间(t_ac):

写恢复时间(t_wr,无自动预充电):

  • SDRAM应用

一个带32位数据总线的128Mbit SDRAM芯片:

两个带16位数据总线的64Mbit SDRAM芯片:

两个带32位数据总线的128Mbit SDRAM芯片:

  • 添加外部sdram
  • 通常的系统都需要用户指定一个空间,这个是指ram可以使片上的,也可以使片外的sdram或sram等。如果用户程序较大,超出了所能定制的最大片上ram容量,则也可以将程序放在sdram中运行。

4.3 ram/rom片上存储

使用FPGA内部RAM资源,可以构成RAM或ROM,速度快,特别在调试时因为很少受外部连线等因素的限制很有用。组件栏中选择Legacy Components->On-Chip Memory打开界面,如图:

4.4 EPCS控制器内核

EPCS控制器内核综述

Altera EPCS 串行配置器件(EPCS1和EPCS4),它可用于存储程序代码、非易失性程序数据和FPGA配置数据。

带Avalon接口的EPCS设备控制器内核(“EPCS控制器”)允许NiosII系统访问Altera EPCS串行配置器件。Altera提供集成到NiosII硬件抽象层(HAL)系统库的驱动程序,允许用户使用HAL应用程序接口(API)来读取和编写EPCS器件。

EPCS控制器可用于:

  • 在EPCS器件中存储程序代码。
  • 存储非易失性数据。
  • 管理FPGA配置数据。

EPCS控制器结构框图如下:

4.5 定时器内核

  • 定时器内核综述:

定时器是挂载在Avanlon总线上的32位定时器,特性如下:

  • 两种计数模式:单次减1和连续减1计数模式
  • 定时器到达0时产生中断请求(IRQ);
  • 可选择设定为看门狗定时器,计算到达0时复位系统;
  • 可选择输出周期性脉冲,在定时器计算到达0时输出脉冲;
  • 可由软件启动、停止或复位定时器;
  • 可由软件使能或屏蔽定时器中断。

EPCS控制器结构框图如下:

EPCS控制器结构框图

  • 定时器可进行的基本操作如下所述:

Avalon主控制器通过对控制寄存器执行不同的写操作来控制:

  • 启动和停止定时器
  • 使能/禁能IRQ
  • 指定单次减1计数或连续减1计数模式
  • 处理器读状态寄存器获取当前定时器的运行信息。
  • 处理器可通过写数据到periodl和periodh寄存器来设定定时器周期。
  • 定时器可进行的基本操作如下所述:
  1. 内部计数器计数减到0,立即从周期寄存器开始重新装载。
  2. 处理器可以通过写snapl或snaph获取计数器的当前值。
  3. 当计数器计数到达0时:
  4. 如果IRQ被使能,则产生一个IRQ
  5. (可选的)脉冲发生器输出有效持续一个时钟周期
  6. (可选的)看门狗输出复位系统
  • 定时器寄存器描述:

EPCS控制器结构框图

注:*表示该位保留,读取值未定义。

  • 定时器内核配置选项操作如下:

CFI控制器框图如下:

Initial perod:

CFI控制器框图

Preset Configurations:

Writeable perod、Readable snapshot及Start/Stop control bits:

Timeout pulse 和 System reset on timeout:

在组件栏中双击选择Other->Interval timer进入配置界面,我们选用Full feature,1ms一次溢出事件。

4.6 UART内核

  • UART内核综述

UART内核(通用异步接收器/发送器内核)执行RS-232协议时序,并提供可调整的波特率。用户可配置奇偶校验位、停止位和数据位,以及可选的RTS/CTS流控制信号。

内核提供一个简单的Avalon从控制器接口,该接口允许Avalon主控制器(例如NiosII处理器)通过读写寄存器与UART内核进行通讯。

UART内核的结构框图如下图所示:

UART内核的结构框图

  1. RS-232接口
  2. 发送逻辑
  3. 接收逻辑
  4. 波特率生成
  • UART内核的寄存器描述:

UART内核寄存器映射

UART内核配置页:

在组件选择栏中选择Communication->UART(RS232 series port)配置UART:

4.7 JTAG_UART内核

  • JTAG_UART内核综述

JTAG UART内核通过Avalon从控制器接口连接到Avalon总线。JTAG UART内核包含2个32位寄存器(数据和控制),它们可通过Avalon从控制器端口进行存取。Avalon主控制器访问寄存器来控制内核并在JTAG连接上传输数据。JTAG UART内核提供高电平有效的中断输出,该输出在读FIFO几乎为满或写FIFO几乎为空时申请一个中断。

有读写FIFO也是JTAG UART内核与UART内核的不同点之一。FIFO可以改善JTAG连接的带宽。FIFO深度可由用户设置。

UART内核寄存器映射

  • JTAG-UART配置选项卡:

在组件栏中选择Communication->JTAG UART,弹出JTAG UART配置界面如下:

4.8 lcd控制器

The LCD controller core consists of two user-visible components:

  • Eleven signals that connect to pins on the Optrex 16207 LCD panel—These signals are defined in the Optrex 16207 data sheet.
  • E—Enable (output)
  • RS—Register Select (output)
  • R/W—Read or Write (output)
  • DB0 through DB7—Data Bus (bidirectional)
  • An Avalon Memory-Mapped (Avalon-MM) slave interface that provides access to 4 registers.

使用标准16027字符型液晶显示器,在display->character lcd,如图:

4.9 System ID内核

System ID寄存器描述:

系统ID内核提供只读的Avalon从控制器接口。

系统ID内核寄存器映射

使用系统ID内核有两种基本的方法:

  • 其一,在下载新的软件到系统之前验证系统ID。
  • 其二,复位后检查系统ID。

添加SYSTEM ID:

4.10 实战训练

完成一个包含以下外设的标准硬件平台:

  • PIO(BUTTON、LED)
  • Sdram
  • 片上存储
  • EPCS
  • 定时器
  • UART内核
  • JTAG_UART内核
  • lcd控制器
  • System ID内核

实现步骤:

  1. 建立工程
  2. 添加NIOS系统(nios选择E型)
  3. 添加系统到工程
  4. 配置管脚综合

系统结果:

平台结果:

注意这里有一个复位延时模块,如下所示:

FPGA 之 SOPC 系列第四篇就到这里结束,下一篇将带来第五篇,Nios II软件使用与程序开发(一)等相关内容。各位大侠,明天见!

END

后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。

大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!

0 人点赞