常用NIOS Ⅱ组件概括
目录
1.定时器Timer

Interval timer核的基础特性:
1.Niosll 处理器的Avalon-MM主设备可以通过写控制寄存器 (control register) 来完成:(1)启动和停止定时器;(2)使能/禁止IRQ;(3)明确累减计数一次或重复性累减计数
2.处理器通过读状态寄存器 (status register) ,能够得知定时器所处的状态
3.处理器可以通过给周期寄存器 (period registers) 写数值来指定定时器的周期
4.内部计数器累减到 0,然后会从周期寄存器 (period registers) 获取数值,继续累减计数
5.处理器可以通过一些操作来获取当前计数器 (counter) 的值:先给其中一个捕获寄存器 (snap registers)写数据,然后读捕获寄存器 (snap registers) 来获得完整的值。
6.当计数器计数到 0 的时候,可能会触发:(1)如果IRQ被使能,此时会触发 IRQ;(2)可选的一个时钟周期的脉冲输出;(3)可选的看门狗输出,复位系统
在IP Catalog中搜索Timer添加Interval Timer Intel FPGA IP组件

1.1 预定义硬件配置
Library中提供了预定义的硬件配置:
Simple periodic interrupt (简单周期中断)一一用于只需要周期性地触发 RQ 的系统,固定周期,定时器无法被停止,但IRQ可以被禁止。
Full-featured (全功能) 一一用于要求定时器能被处理器启动或停止,但能禁止IRQ的嵌入式处理器系统
Watchdog(看门狗)一一用于需要“看门狗”定时器去复位停止响应的系统
1.2 超时周期Timeout poriod
超时周期(Timeout Period) 是定时器频率 (Timer Frequency)的整数倍。定时器频率固定为系统时钟的频率。定时器频率设置的单位可以是μs、ms、seconds或者clocks (系统时钟周期个数)
Period定时器周期,没有选中 Fixed period 选项的话,可以在软件中修改。若软件中没有修改操作,period 中的值就会作为超时周期 (Timeout Period)
Units: 周期的单位,可以是μs、ms、seconds、clocks。

1.3 计数器大小Timer counter Size
Counter Size设置决定了定时器的位宽,可以设置成32位或 64 位。
32位的定时器拥有2个16位的period registers (周期寄存器)
64位的定时器拥有4个16位的period registers (周期寄存器)

1.4 寄存器Registers

No Start/Stop controlbits:没有选中该选项时,主设备可以通过写control寄存器中的START和 STOP位来启动或者停止定时器。当选中该选项后,定时器会一直运行。当硬件中使能了“watchdog功能后,无论No Start/Stop control bits选项如何,control寄存器中 START 位有效。
Fixed period:选中该选项后,就无法在软件中更改定时器周期,且定时器周期为Timeout Period处设置的结果;若没有选中该选项,可以通过在软件中给 period registers 赋值来更改定时器周期(timeout Period )
Readable snapshot: 选中该选项后,主设备可以读取当前的计数值。没有选中该选项时,硬件中将不会存在 snap 寄存器,且读 snap 寄存器会返回未定义的值。在这种配置下,计数器 (counter)的状态只能通过status寄存器或IRQ信号之类的来观测
2.串口UART
在IP Catalog中搜索uart添加UART(RS-232 Serial Port) Intel FPGA IP组件

2.1 UART寄存器
UART IP核寄存器信息如下:

注:标号意义如下:
(1) 这些位可能不存在,取决于数据位宽的硬件选项。如果它们不存在,读出的值为0。且如果对它们进行写操作,则没有意义。
(2) 给status (状态) 寄存器写0将清零 dcts,e,toe,roe,brk,fe,and pe等位。
(3) 这些寄存器可能不存在,取决于硬件配置选项。如果寄存器不存在,对它进行读操作会返回未定义的值,且进行写操作则无意义。
2.1.1 rxdata寄存器
rxdata寄存器用于存储RXD输入引脚接收的数据。当一个新的数据被RXD输入引脚完全接收后,会被传输并存储到rxdata寄存器,此时status寄存器(状态寄存器)的rrdy位会被置 1。当rxdata 寄存器中的值被读了之后,status寄存器中的rrdy位会被清零。当rrdy位为1时,又有一个新的字符传输给rxdata寄存器,则会产生溢出错误,状态寄存器的ROE位被置1。不管前一个字符是否被读出,新接收到的字符总是会被自动保存到rxdata寄存器。另外,对rxdata寄存器进行写操作无意义。
2.1.2 txdata寄存器
Avalon主控制器把要发送的字符写入到txdata寄存器中。当一个字符写入txdata寄存时,状态寄存器(status寄存器)的TRDY位会被置0;当字符从txdata寄存器传输到发送移位寄存器时,状态寄存器(status寄存器)的TRDY位被置为1。当TRDY位为0时,将字符写入txdata寄存器的结果是未定义的。读 txdata返回未定义的值。
2.1.3 status寄存器
状态寄存器 (status寄存器)由可以反应UARTIP核状态的独立位组成,任何时候都可以读取状态寄存器,且读操作不会改变寄存器任何位的值。给状态寄存器写0 ,会清零DCTS、E、TOE、ROE、BRK、FE和 PE位。
| 位 | 名称 | 操作 | 描述 |
| 0 | PE | 读/清除 | Parity Error。当读取的校验位不正确时会发生校验错误且PE位置1。PE 位为1时,需要通过写status寄存器将其清零。当PE位置时,读取rxdata寄存器会产生未定义值。如果没有选中Parity硬件选项,UARTIP核则没有奇偶校验,并且读PE位总是0。 |
| 1 | FE | 读/清除 | Framing Error。当接收器没能检测到正确的停止位时,会产生帧错误。当核接收到错误的停止位时,FE位置1。FE 位置1后,直到给status寄存器写数据才会将其清零。当FE位置1时,读rxdata寄存器会返回未定义的值。 |
| 2 | BRK | 读/清除 | Break Detect。当RXD引脚连续保持低电平 (逻辑 0)的时间大于一个完整字符的时间(数据位,加上起始、停止和校验位) 时,接收逻辑才会检测到间断。当检测到间断时,BRK位置 1。BRK位为1时,需要通过写status寄存器才能将其清零。 |
| 3 | ROE | 读/清除 | Receive Overrun Error。在读取前一个字符前 (即RRDY位为1时),将一个新的字符传输给rxdata寄存器,会产生接收溢出错误。此时,RO |

本文详细介绍了NIOSII处理器中常用的组件,包括IntervalTimer的配置如预定义硬件配置、超时周期、计数器大小和寄存器;UART串口的设置如基础设置、波特率、寄存器信息;SDRAM控制器的MemoryProfile和Timing设置;以及自定义IP核的创建过程和示例。内容涵盖了硬件配置、时序参数和接口通信等关键要素。
&spm=1001.2101.3001.5002&articleId=131706335&d=1&t=3&u=ccc6af0f17c540ca84b74a7f05411797)
1666

被折叠的 条评论
为什么被折叠?



