JTAG UART Core

JTAG UART Core

 

1. Overview

具备Avalon总线标准的JTAG UART核给用户提供了一种PCSOPC系统通讯的方式。在很多设计中,JTAG UART核可以代替RS-232串口来实现PCSOPC系统之间的通讯,为NIOS应用程序开发者提供了一种便利的调试手段。此核的功能框图如图1-1所示:

1-1 JTAG UART核的功能框图

2. SOPC系统中例化JTAG UART

用户可以利用SOPC Builder提供的Mega Wizard界面来定制此核的一些特性,下面将介绍各个可用的选项。在大多数情况下,只需保持默认选项即行。

Write FIFO Settings

深度:写FIFO的深度可以是832768字节,并且只能是2的幂。值越大,消耗的片上内存资源也越多。默认值为64

IRQ阈值:写FIFOIRQ阈值用来控制什么时候产生中断。当JTAG口从写FIFO中读取数据直到FIFO内所剩的字符数达到阈值时,就会产生中断。

用寄存器还是内存块构造:如果打开这个选项,则由逻辑单元来实现FIFO。这个选项在内存资源有限的情况下很有用。

Read FIFO Settings

FIFO的设置与写FIFO的设置对应,也有FIFO深度、IRQ阈值和用寄存器还是内存块构造,三个选项。

2-1是一个包含JTAG UART核的简单SOPC系统,后边将要介绍的应用程序就是基于此系统。

2-1 包含JTAG UART核的SOPC系统

生成SOPC系统后,将产生一个cpu.v文件,定义了cpu模块。在自己的HDL顶层文件中调用此模块就可以得到硬件系统。

3. NIOS应用程序开发

       NIOS IDE中新建一个应用工程和BSP工程,然后运行程序,检验结果。主程序的代码Listing 3-1所示。

#include "system.h"

#include "alt_types.h"

#include "stdio.h"

#include "string.h"

#include "altera_avalon_jtag_uart.h"

#include "altera_avalon_jtag_uart_regs.h"

#include "altera_avalon_jtag_uart_fd.h"

 

int main()

{

    alt_u8 data=0x55;

 

    alt_printf("hello zlj/n");              (1)

    while (1) {

       data = alt_getchar(stdin);          (2)

       alt_printf("%c/n", data);

    }

  return 0;

}

Listing 3-1 JTAG UART主程序

       为了减少程序大小,在输出字符串到JTAG UART时,并没有采用标准c函数库中的printf()函数,而是调用Altera提供的HAL库中优化过的函数alt_printf()(1)需要在BSP Editor中将JTAG UART配置成stdinstdout,从而简化alt_printf()alt_getchar()函数的参数列表(2)

参考文档:

n2cpu_nii5v3.pdf

你可能感兴趣的:(程序开发,wizard,通讯,文档,优化,ide)