书签 分享 收藏 举报 版权申诉 / 46
上传文档赚钱

类型Nios-II-系统的外围设备.ppt课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:2940504
  • 上传时间:2022-06-13
  • 格式:PPT
  • 页数:46
  • 大小:752.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《Nios-II-系统的外围设备.ppt课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Nios II 系统 外围设备 ppt 课件
    资源描述:

    1、SOPCSOPC技术技术第第5章章 Nios II 系统的外围设备系统的外围设备NO.3.11谢谢观赏2019-8-264. 使用使用IDE Flash Programmer编程编程完成所有的软完成所有的软/硬件开发工作后,可以使用硬件开发工作后,可以使用NiosIDE提供的提供的Flash Programmer工具将程序下工具将程序下载到载到FPGA平台上的平台上的FLASH存储器中。存储器中。Flash Programmer是是Nios IDE 6.0提供的新工具,它可以提供的新工具,它可以将配置数据、将配置数据、Nios程序及其他数据文件下载到目标程序及其他数据文件下载到目标板上的板上的

    2、FLASH存储器中,这里所说的存储器中,这里所说的FLASH存储器存储器包括业界标准的包括业界标准的CFI或或CFI兼容的兼容的FLASH存储器,以存储器,以及及Altera公司的公司的EPCS系列串行配置器件。系列串行配置器件。2谢谢观赏2019-8-26IDE Flash Programmer 通过通过2个过程将数据写入个过程将数据写入flash:(1)用用Altera提供的提供的“Flash编程设计编程设计”对对FPGA进行配置;进行配置;(2) IDE Flash Programmer将文件内容将文件内容 “Flash编程设计编程设计” FlashFlash编编程设计程设计3谢谢观赏2

    3、019-8-26每个每个Flash编程设计应包含的元件:编程设计应包含的元件:4谢谢观赏2019-8-26 使用使用IDE Flash Programmer编程,首先要保证在编程,首先要保证在SOPC Builder中,在中,在Target选项区中的选项区中的Board的下拉列表框的下拉列表框中选择用户当前使用的中选择用户当前使用的目标板目标板Flash 编程设计编程设计。 SmartSOPC_Board_1C6是现用核心板提供的是现用核心板提供的目标板目标板Flash编程设计编程设计,可以对核心板上的,可以对核心板上的NOR Flash(元件标号元件标号U7)和和EPCS (元件标号元件标号

    4、U10)进行编程。进行编程。5谢谢观赏2019-8-26使用使用NiosIDE对对FLASH存储器编程的步骤:存储器编程的步骤:(1)启动启动Nios II IDE。(2) 建立软件工程,然后编译连接(建立软件工程,然后编译连接(Build Project)(3) 选中要进行编程的工程,然后选选中要进行编程的工程,然后选ToolsFlash Programmer菜单启动菜单启动Flash Programmer对话框,对话框,如图如图5.5.2。(4) 单击单击Flash Programmer对话框左下角的对话框左下角的New命令命令按钮,建立一个新编程任务,可以修改这个新任按钮,建立一个新编程

    5、任务,可以修改这个新任务的名称。务的名称。6谢谢观赏2019-8-26 若选中若选中program software project into flash memory project,可将工程的可将工程的.elf文件写入文件写入Flash(EPCS)。 若选中若选中program FPGA configuration data into hardware-image region of flash memory,可将可将FPGA的配置文件写入的配置文件写入Flash(EPCS)。 若选中若选中Program file into a flash memory选项,可选项,可将二进制文件写入将二

    6、进制文件写入Flash。需要选择要编程的二。需要选择要编程的二进制文件及要编程的存储器(进制文件及要编程的存储器(U7为为Flash,U10为为EPCS)。)。(5) 在在Main页面中可以选择所要编程的内容,包括工程名页面中可以选择所要编程的内容,包括工程名称、称、FPGA配置文件的名称以及目标存储器。配置文件的名称以及目标存储器。7谢谢观赏2019-8-26图5.5.2 Flash Programmer对话框 8谢谢观赏2019-8-26(4) 在在Target Connection页面中选择与目标板相连的下载电页面中选择与目标板相连的下载电缆,如图缆,如图5.5.3。 (5) 设置好这些

    7、内容之后,单击设置好这些内容之后,单击Apply按钮,然后单击按钮,然后单击Program Flash按钮,按钮,NiosIDE重新编译工程并对重新编译工程并对FLASH存储存储器进行编程。(若在器进行编程。(若在SOPC Builder中没有指定目标板,则中没有指定目标板,则Program Flash按钮将是灰色不能使用。)按钮将是灰色不能使用。) 从从IDE的的Console窗口可以看见编程过程。(见图窗口可以看见编程过程。(见图5.5.4) 完成完成Flash编程后,需让系统重新上电,使编程后,需让系统重新上电,使FPGA使用使用EPCS中配置数据重新配置中配置数据重新配置FPGA, 程

    8、序才能正常运行。程序才能正常运行。9谢谢观赏2019-8-26图5.5.3 Flash Programmer 中目标连接设置10谢谢观赏2019-8-26在在console窗口显示编程过程及编程结束标志窗口显示编程过程及编程结束标志图5.5.411谢谢观赏2019-8-26通信接口通信接口 目前存在的所有计算机通信接口在嵌入式领目前存在的所有计算机通信接口在嵌入式领域中都有其广泛的应用,应用最为广泛的接口设域中都有其广泛的应用,应用最为广泛的接口设备包括备包括 RS-232接口(串口接口(串口UART) USB接口(通用串行总线接口)接口(通用串行总线接口) IrDA(Infra Red Da

    9、ta Association红外线接口红外线接口) SPI(串行外围设备接口)、串行外围设备接口)、 I2C、CAN总线接口、总线接口、 蓝牙接口(蓝牙接口(Bluetooth) Ethernet(以太网接口)、以太网接口)、 IEEE1394接口和通用可编程接口接口和通用可编程接口GPIO。 12谢谢观赏2019-8-265.5 UART5.5 UART内核内核 UART(Universal Asynchronous Receiver/Transmitter通用通用异步接收器异步接收器/发生器)内核带有发生器)内核带有Avalon接口,接口,为嵌入式系统和外部设备提供了为嵌入式系统和外部设备

    10、提供了串行字符流串行字符流动通信方式动通信方式,其数据以,其数据以RS-232协议的形式与外协议的形式与外界进行交互。界进行交互。 提供可调整的波特率;可配置奇偶校验位、提供可调整的波特率;可配置奇偶校验位、停止位和数据位等。停止位和数据位等。13谢谢观赏2019-8-26UART内核的结构框图内核的结构框图14谢谢观赏2019-8-26UART内核寄存器映射内核寄存器映射15谢谢观赏2019-8-26UART内核配置选内核配置选项项1、波特率设置、波特率设置2、数据位、停止位、奇偶校验位、数据位、停止位、奇偶校验位3、流控制、流控制4、Avalon流控制传输流控制传输16谢谢观赏2019-8

    11、-26软件编程软件编程 Altera提供的驱动程序执行提供的驱动程序执行HAL字符模式设字符模式设备驱动程序。备驱动程序。HAL用户应通过熟悉的用户应通过熟悉的HAL API函数函数和和ANSI C标准库函数标准库函数访问访问UART,而不是访问而不是访问UART寄存器。寄存器。altera_avalon_uart_regs.h 寄存器级访问头文件寄存器级访问头文件altera_avalon_uart.h, altera_avalon_uart.c HAL系统库的系统库的UART内核设备驱动程序内核设备驱动程序17谢谢观赏2019-8-26实验实验4.10:ANSI C标准库来访问标准库来访问

    12、UART;如果检测到;如果检测到字符字符t,则报告检测到字符,则报告检测到字符t;如果检测到字;如果检测到字符符v,则退出程序。,则退出程序。#include#include#include system.hint main () char* msg = Detected the character t.n; FILE* fp; char prompt = 0; printf(Please Enter some characters: n); fp = fopen (UART_NAME, r+); /打开文件进行读和写打开文件进行读和写18谢谢观赏2019-8-26 if (fp) while

    13、 (prompt != v) / 循环直至接收到循环直至接收到 v prompt = getc(fp); / 从从UART中获取字符中获取字符 if (prompt = t) / 如果字符为如果字符为 t 打印信息打印信息 fwrite (msg, strlen (msg), 1, fp); if (ferror(fp) / 检查错误是否在检查错误是否在UART连接上出现连接上出现 clearerr(fp); / 如果是,清除它如果是,清除它 fprintf(fp, Closing the UART file handle.n); fclose (fp); else printf(Fail t

    14、o open file.n); return 0; 19谢谢观赏2019-8-26System.h 描述的描述的UART设备设备 #define UART_NAME /dev/uart #define UART_TYPE altera_avalon_uart #define UART_BASE 0 x00B00840 #define UART_IRQ 1 #define UART_BAUD 115200 #define UART_DATA_BITS 8 #define UART_FIXED_BAUD 0 #define UART_PARITY N #define UART_STOP_BITS

    15、1 #define UART_USE_CTS_RTS 0 #define UART_USE_EOP_REGISTER 0 #define UART_SIM_TRUE_BAUD 0 #define UART_SIM_CHAR_STREAM #define UART_FREQ 4800000020谢谢观赏2019-8-2621谢谢观赏2019-8-26 具有具有Avalon接口的接口的JTAG UART核是实现在核是实现在PC机和机和FPGA上的上的SOPC Builder系统间进行系统间进行串行串行通信通信的一种实现方式的一种实现方式 JTAG UART用来替代用来替代RS-232完成与完成与P

    16、C主机的主机的字符输入字符输入/输出输出, NiosII 处理器通过处理器通过读读/写控写控制和数据寄存器制和数据寄存器与与JTAG UART核通信核通信5.6 JTAG-UART内核内核22谢谢观赏2019-8-26 对于对于NiosII 处理器处理器, HAL系统库中包含该设备系统库中包含该设备的驱动程序的驱动程序,允许使用允许使用ANSI C标准库标准库stdio.h访访问问JTAG UART核核 对对PC机机, Altera提供提供JTAG终端软件终端软件来管理来管理PC机与目标系统的连接机与目标系统的连接,对对JTAG数据流解码和数据流解码和在屏幕上显示字符在屏幕上显示字符5.7 J

    17、TAG-UART内核内核23谢谢观赏2019-8-26JTAG UART核方框图核方框图24谢谢观赏2019-8-26 缺省的深度值(缺省的深度值(64)IRQ门限值(门限值(8)是最优的,不用改是最优的,不用改变变JTAG UART核配置核配置25谢谢观赏2019-8-26软件编程软件编程 HAL用户应通过用户应通过HAL API 和和ANSI C 标准库标准库访访问问JTAG-UART,而不是访问而不是访问JTAG-UART寄存器寄存器。 对对JTAG UART核的操作与下列文件有关。核的操作与下列文件有关。 altera_avalon_jtag_uart_regs.h altera_av

    18、alon_jtag_uart.h altera_avalon_jtag_uart.c26谢谢观赏2019-8-26#include #include #include system.hint main() char *msg=“Detected the character t.n”;FILE *fp;char prompt=0;printf(Please Enter some characters: n);fp=fopen(“/dev/jtag_uart”,”r+”); /为读写操作打开文件为读写操作打开文件If(fp) while(prompt!=v) /循环直到接收一个循环直到接收一个”v

    19、” prompt=getc(fp); /从从JTAG UART中读取一个字符中读取一个字符 if(prompt=t) /若字符是若字符是“t”,则输出信息则输出信息 fwrite(msg,strlen(msg),1,fp); 例:使用标准库通过例:使用标准库通过JTAG UART核读和发送一个消息核读和发送一个消息27谢谢观赏2019-8-26if(ferror(fp) /检查是否有错误产生检查是否有错误产生clearerr(fp); /若有则清除若有则清除fprintf(fp,”Closing the JTAG UART file handle.n”);fclose(fp); else pr

    20、intf(Fail to open file.n); return 0;28谢谢观赏2019-8-265.7 5.7 定时器内核定时器内核 定时器定时器可作为系统的周期性时钟源(可作为系统的周期性时钟源(Tick);可以作为计数器测定事件发生的时间;作可以作为计数器测定事件发生的时间;作“看门狗看门狗”(Watchdog)。)。 定时器内核定时器内核特性:特性: 可控制定时器的启动、停止或复位可控制定时器的启动、停止或复位 两种计数模式:单次减一和连续减一计数两种计数模式:单次减一和连续减一计数模式模式 计数器达到计数器达到0时产生中断请求(时产生中断请求(IRQ) 可作为看门狗定时器可作为看

    21、门狗定时器 可选择输出周期性脉冲可选择输出周期性脉冲 可由软件使能或屏蔽定时器中断可由软件使能或屏蔽定时器中断29谢谢观赏2019-8-26定时器内核结构框图定时器内核结构框图30谢谢观赏2019-8-26定时器寄存器定时器寄存器31谢谢观赏2019-8-261. 状态寄存器(状态寄存器(status)32谢谢观赏2019-8-262. 控制寄存器(控制寄存器(control)33谢谢观赏2019-8-263. periodl & periodh 寄存器寄存器 periodl 和和 periodh 寄存器一起存储超时周寄存器一起存储超时周期的计数值。当对此寄存器进行写操作或内部计期的计数值。当

    22、对此寄存器进行写操作或内部计数器减到数器减到0时,保存在时,保存在periodl &和和periodh 中的中的值会装载到内部计数器中。值会装载到内部计数器中。34谢谢观赏2019-8-264. snapl & snaph 寄存器寄存器 可通过对可通过对snapl & snaph 寄存器的写操作来获寄存器的写操作来获取取32位内部计数器的当前值。位内部计数器的当前值。5. 中断操作中断操作 只要内部计数器减到只要内部计数器减到0且控制寄存器的且控制寄存器的ITO位设为位设为1,定,定时器内核就会产生时器内核就会产生IRQ.用户可用以下任一方式应答用户可用以下任一方式应答IRQ: 清除状态寄存器

    23、的清除状态寄存器的TO位,等待下一个超时事件的发生;位,等待下一个超时事件的发生; 通过将控制寄存器的通过将控制寄存器的ITO位清零来禁止中断。位清零来禁止中断。35谢谢观赏2019-8-26定时器内核定时器内核(interval timer)配置选配置选项项Timeout Period: 设置设置periodl 和和 periodh 寄寄存器的初始值,此值可存器的初始值,此值可根据系统输入时钟频率根据系统输入时钟频率和和initial period中的设中的设置计算获得。置计算获得。36谢谢观赏2019-8-26定时器内核配置选项定时器内核配置选项Preset Configurations:

    24、 提供的预定义硬件配置:提供的预定义硬件配置:uSimple periodic interruptu Full-featured u Watchdog37谢谢观赏2019-8-26 Writeable period:主控制器可通过写主控制器可通过写periodl 和和 periodh改变向下计数周期改变向下计数周期 Readable snapshot:主控制器可读当前主控制器可读当前向下计数的值向下计数的值 Start/stop control bits:主控制器可通主控制器可通过写控制寄存器的过写控制寄存器的START和和STOP位来位来启动后停止定时器。启动后停止定时器。 Timeout

    25、pulse:当定时器计数到当定时器计数到0时时将输出持续一个周期的高电平。将输出持续一个周期的高电平。 System reset on timeout:配置定时器配置定时器用于看门狗。用于看门狗。当使能以下各项时:当使能以下各项时:38谢谢观赏2019-8-26定时器提供了硬件的寄存器级访问和定时器提供了硬件的寄存器级访问和HAL层的层的API函数:函数: altera_avalon_time_regs.h: 定义内核的寄存器映射并提供硬件设备访问宏定定义内核的寄存器映射并提供硬件设备访问宏定义;义; altera_avalon_timer.h、altera_avalon_timer_sc.c

    26、、 altera_avalon_timer_ts.c、 altera_avalon_timer_vars.c 实现了实现了HAL系统库的定时器设备驱动程序系统库的定时器设备驱动程序(在(在components/altera_avalon_timer中)中)软件设计软件设计39谢谢观赏2019-8-26软件设计软件设计 HAL API提供如下两种定时器设备的驱动程序:提供如下两种定时器设备的驱动程序: 系统时钟定时器系统时钟定时器-该驱动程序支持报警(该驱动程序支持报警(alarms)。)。 时间戳定时器时间戳定时器 -该驱动程序支持高精度的时间该驱动程序支持高精度的时间测量。测量。 HAL特定

    27、的访问定时器设备的特定的访问定时器设备的API函数在函数在components/altera_hal/HAL/inc/sys/alt_alarm.h和和sys/alt_timestamp.h中定义。中定义。40谢谢观赏2019-8-26【实验实验4.5】利用利用系统时钟系统时钟服务产生服务产生1s的周的周期性事件,并借此控制期性事件,并借此控制LED闪烁闪烁 #include #include system.h /包含基本的硬件描述信包含基本的硬件描述信息息 #include altera_avalon_pio_regs.h /包含基本的包含基本的IO寄存器信息寄存器信息 #include a

    28、lt_types.h /Altera定义的数据类型定义的数据类型 #include sys/alt_alarm.h /系统时钟服务头文件系统时钟服务头文件 41谢谢观赏2019-8-26 #ifndef LED_PIO_BASE /这是LED_PIO核的基地址 #define LED_PIO_BASE 0 xffffffff /users definition here #endif #if LED_PIO_BASE = 0 xffffffff #error No definition of LED_PIO core.n #endif #define LEDCON 0 xff static a

    29、lt_alarm alarm; /按调用API函数规定定义的变量 static unsigned char led = 0 xff;42谢谢观赏2019-8-26 功能功能:按调用规定系统时钟回调函数,在该:按调用规定系统时钟回调函数,在该函数中实现用户功能函数中实现用户功能 入口参数:入口参数:context,系统传给回调函数的参数,系统传给回调函数的参数 出口参数:返回下一次的系统时钟服务的周期值出口参数:返回下一次的系统时钟服务的周期值alt_u32 my_alarm_callback (void* context) if(led = 0 xff) led = 0 x00; else l

    30、ed = 0 xff; IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,led); /操作操作IO口口 return alt_ticks_per_second();43谢谢观赏2019-8-26功能功能:初始化:初始化LED_PIO为输出,其余输入,屏为输出,其余输入,屏蔽中断,清边沿捕获寄存器蔽中断,清边沿捕获寄存器void InitPIO(void) /* LED_PIO为输出,其余输入为输出,其余输入 */ IOWR_ALTERA_AVALON_PIO_DIRECTION(LED_PIO_BASE, LEDCON); /* 禁止所有禁止所有PIO中断中断

    31、 */ IOWR_ALTERA_AVALON_PIO_IRQ_MASK(LED_PIO_BASE, 0 x00); /* 清清边沿捕获寄存器清清边沿捕获寄存器 */ IOWR_ALTERA_AVALON_PIO_EDGE_CAP(LED_PIO_BASE, 0 x00);44谢谢观赏2019-8-26 int main() InitPIO(); IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,0 xff); /灭灭LED printf(test alarm.n); /打印提示信息打印提示信息 printf(alt_ticks_per_second() is %

    32、ld, alt_ticks_per_second(); if (alt_alarm_start (&alarm,alt_ticks_per_second() /启动系统时钟启动系统时钟 ,my_alarm_callback,NULL) 0) printf (No system clock availablen); while(1); /等待时钟事件发生等待时钟事件发生 return 0; 45谢谢观赏2019-8-265.8 System ID 5.8 System ID 内核内核 SOPC Builder 生成生成NiosII 系统时,将为每个系统时,将为每个Nios II系统生成一个标识符

    33、,供编译器和用系统生成一个标识符,供编译器和用户辨别所运行的程序是否与目标系统匹配户辨别所运行的程序是否与目标系统匹配。当程序运行在与之不匹配的系统上时会。当程序运行在与之不匹配的系统上时会产生不可预测的结果。产生不可预测的结果。 系统系统ID内核寄存器包括内核寄存器包括ID寄存器(寄存器(SOPC Builder系统系统ID)和)和timestamp寄存器(寄存器(SOPC Builder 生成时间)生成时间) 在下载程序运行或调试之前,在下载程序运行或调试之前,Nios II IDE 会会检查硬件中的系统检查硬件中的系统ID内核是否匹配所期望内核是否匹配所期望的软件系统的软件系统ID,如不匹配,则终止下载。,如不匹配,则终止下载。46谢谢观赏2019-8-26

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:Nios-II-系统的外围设备.ppt课件.ppt
    链接地址:https://www.163wenku.com/p-2940504.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库