SOPC之NiosⅡ系统(三)

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

常用NIOS Ⅱ组件概括

目录

1.定时器Timer

1.1 预定义硬件配置

1.2 超时周期Timeout poriod

1.3 计数器大小Timer counter Size

1.4 寄存器Registers

2.串口UART

2.1 基础设置Basic settings

2.1.1 奇偶校验Parity

2.1.2 数据为Data bits

2.1.3 停止位Stop bits

2.1.4 其他

2.2 波特率设置Baud rate

3.SDRAM

3.1 Memory Profile

3.2 Timing

4. 自定义IP核


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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值