《综合创新实验》PPT课件.ppt_第1页
《综合创新实验》PPT课件.ppt_第2页
《综合创新实验》PPT课件.ppt_第3页
《综合创新实验》PPT课件.ppt_第4页
《综合创新实验》PPT课件.ppt_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,综合创新实验,2,提纲,1、设计任务 2、设计分析 3、FPGA设计基础 4 模块分析 5 驱动设计 6 测试程序设计 7 GUI程序设计,3,1. 设计任务,设计题目:FGPA扩展子板系统设计 设计内容: 扩展一块FPGA子板,合理选用FPGA器件。有效使用XSBase255扩展槽资源。扩展以下硬件资源:16键键盘、8个LED灯、拨码开关、2路A/D和D/A。,4,设计要求 合理选择各种元器件,包括FPGA、A/D、D/A芯片。 合理使用XSBase255开发系统扩展槽资源,设计原理图,要考虑子板和母板的安装。布局图:,5,软件测试要求: LED显示 A/D D/A KeyPad 开关量输入,6,2. 设计分析,嵌入式系统项目开发流程要经历项目分析、设计和实现与维护四个阶段 本设计: 前期准备 FPGA逻辑设计 设备驱动设计 驱动测试 GUI应用程序设计,7,3. FPGA设计基础,可编程逻辑器件简介 什么是FPGA?什么是CPLD? FPGA与CPLD的主要区别 为什么要使用CPLD/FPGA? 可编程逻辑器件有哪些? 如何使用可编程逻辑器件进行开发? 如何使用Xscale和FPGA进行开发?,8,3.1 VHDL语言介绍,随着EDA技术的发展,使用硬件描述语言(HDL)设计CPLD/FPGA成为一种趋势 VHDL的程序结构特点是将一项工程设计,分成外部(端口)和内部(涉及实体的内部功能实现部分) VHDL主要用于描述数字系统的结构、行为、功能和接口,跟原理图有对应的关系,9,一个简单的VHDL例子 :,10,3.2 Quartus II使用简介,QuartusII软件为设计者提供了一个完整的图形化多平台开发环境,它包含整个FPGA和CPLD的开发方案 Quartus II的使用,操作步骤主要有工程建立、设计输入、编译、仿真和下载操作,11,扩展板逻辑主要包括: 总线接口逻辑 中断管理逻辑 键盘扫描逻辑 拨码开关逻辑 AD部分逻辑 DA部分逻辑,3.3 扩展板逻辑设计要点总线接口逻辑,12,总线接口,总线接口部:,13,总线接口要完成的功能是实现各寄存器的读写操作。包括地址译码、寄存器输入、总线输出和各模块读写信号产生 总线信号有: 输入到FPGA的外部总线的信号有SA_A250、SA_CS4、SA_D310、SA_WE、SA_OE SA_A250为地址信号 SA_CS4为扩展板的片选信号,低有效 SA_D310为32位双向数据信号 SA_WE为写信号,低有效 SA_OE为读信号,低有效,14,地址译码,使用两个Decode兆功能模块(写译码模块和读译码模块)实现译码操作 写译码模块用于产生各内部寄存器的写信号,写译码模块的使能直接由SA_CS4控制 读译码模块用于产生内部寄存器的读信号,读译码模块的使能信号受SA_CS4和SA_OE控制,15,中断管理部分,当各内部中断产生后,中断状态寄存器对应位将置“1”,这主要由DFF触发器来实现,16,键盘扫描逻辑,采用硬件描述语言方式设计,17,AD部分逻辑,向AD提供采样时钟,并读取转换数据 自动循环采集模式下,AD的采样时钟由ADCNTR寄存器控制 FPGA将转换结果自动存入内部的双口RAM进行缓存,当缓存满后,产生中断通知处理器读取,18,AD采样时钟,19,AD地址发生器及其中断产生逻辑,20,4.模块分析,键盘模块 : 功能说明 当16键中的任一按键被按下时,即产生4位键码值,更新键码寄存器,并置位状态寄存器中的按键标志位 键盘的扫描周期为20毫秒,以实现硬件消抖功能,若无按键动作,键码寄存器的值保持不变 当有按键动作,如果中断控制寄存器中的键盘中断允许位置1,则产生中断信号,21,键盘模块,相关寄存器定义 键码寄存器(KEY),8位 中断控制寄存器(ICNTR),16位,中断方式为电平触发,高有效 中断标志寄存器(IFLAG),8位,22,键盘模块,使用方法 中断工作模式操作 设置中断控制寄存器的D0位为1,使能键盘中断; 当有按键时,键盘产生中断; 读取键码寄存器的键码值; 往中断标志寄存器对应的键盘标志位置“1”,清除中断 查询模式操作 读取中断标志寄存器 判断按键标志位是否为1。否,则返回;是,则继续 读取键码寄存器的键码值 往中断标志寄存器对应的键盘标志位置“1”,清除该标志,23,A/D模块,功能说明 A/D模块的精度为12位,输入电压范围为0-2V(DC/AC)。 A/D模块共2路,每路的数据输出为并行12位,2路A/D共用一个32位寄存器存放数据。 相关寄存器定义 使用方法,24,5. 驱动设计,驱动设计总思路: 考虑驱动程序操作的对象。 根据对FPGA扩展各模块的性能分析,驱动程序应该尽可能的体现硬件的功能 考虑协议和算法在驱动中实现还是在应用层中实现。 根据应用程序的需要,在驱动中实现相应的方法。,25,5.1驱动方法概要 (1),设备的方法集中包含了8个方法 : open这个方法在驱动中必须实现,因为应用程序打开设备文件时就就会调用此方法 release这个方法与open是成对出现的,当应用程序调用close关闭设备文件时,就会调用此方法 ioctl 应用程序中必须通过ioctl方法向驱动传递命令字,来通知驱动操作的模块,同时也通过ioctl来通知或改变模块的工作模式。,26,5.1 驱动方法概要(2),read, write 应用程序实质对扩展板的操作是通过这两个函数完成的 poll实现此方法主要目的是满足当应用程序调用select或poll时设备能正确的响应。 fasync实现异步信号通知 select,27,5.2 驱动具体实现要点,注册中断号 中断号与设备所使用的中断引脚息息相关,内核维护中断号 FPGA扩展板以GPIO11作为中断信号线,键盘,拨码开关,ADC共用这一中断信号线 注册中断号前,必须先初始化GPIO11,这里可以通过一个函数完成: GPIO80也必须初始化为nCS4功能管脚 board_irq_handle为中断处理函数,SA_INTERRUPT | SA_SHIRQ用于设置中断的属性,28,模块选择与命令字 当应用程序选择操作扩展板上的模块时,或选择模块的操作模式时,需要通过ioctl传递命令字到驱动,驱动代码如图:,29,阻塞与非阻塞操作 阻塞操作的目的是当应用程序去读写设备时,如果此时设备没有数据流经过,则应用程序会进入睡眠状态,并一直等待数据 令应用程序进入睡眠状态的原因是因为驱动程序里使用了令进程睡眠的函数或宏 以键盘为例,键盘的read驱动如下:,30,31,poll方法分两步完成 第一步,poll方法需要将所有这些可让进程睡眠的事件队列都加入到poll_table结构的链表中 第二步是返回一个用来描述操作是否可以立即无阻塞执行的位掩码,32,Poll方法代码如下:,33,fasync方法 当应用程序修改文件描述符的FASYNC标志(filp-f_flags)时,该方法就会被调用。fasync方法代码如下:,34,中断处理函数 在注册中断号中,使用如下函数: 参数filp用于传递信息给中断处理函数,中断处理函数通过参数dev_id接收 中断处理函数的代码,以键盘为例:,35,36,驱动的加载,1.安装位置 将以上的驱动程序文件放入嵌入式Linux的源代码目录中:driver/char/ 2.修改Makefile 在位于driver/char/目录下的Makefile文件中加入如下语句: obj-$(CONFIG_FPGA) += fpga_board_0.o fpga_board_1.o fpga_board_2.o fpga_board_3.o fpga_board_4.o,37,3.修改菜单文件 修改config.in文件,增加如下语句:,38,4.初始化FPGA扩展板的中断引脚 修改 include/asm-arm/arch-pxa/xsbase255.h,增加以下语句: 修改arch/arm/mach-pxa/xsbase255.c, 增加以下语句:,39,5.编译Linux内核 进入Linux源代码目录中,执行make menuconfig,进入Linux内核配置菜单将FPGA扩展板的驱动加入内核中 进入Character devices菜单 选择“FPGA_BOARD” 编译内核,40,6. 测试程序设计,测试程序(应用程序)可以通过驱动提供的接口函数来操作设备文件结点来控制设备 6.1 设备文件 FPGA扩展板的设备文件为“fpga_board_x” 在应用程序中通过以下指令打开设备文件:,41,6.2 操作命令字,操作命令字是一些符号,通过ioctl系统调用,将这些符号传递到底层驱动程序,告诉驱动程序将要执行的操作 FPGA扩展板上有五个部件:分别是灯,键盘,拨码开关,A/D控制器,D/A控制器,相应的操作对象可以使用对象选择命令字来表示:LED、KEYBOARD、SWBOARD、DAC和ADC,42,如果需要操作扩展板上灯,键盘,拨码开关,可使用以下程序 :,43,select系统调用:是用在访问多个设备文件,但又不想阻塞于任何一个设备文件时使用 异步通知:是应用程序中通过向系统注册一个信号,并且将该信号与某一处理函数相关联,当中断产生时,激发该信号,然后系统调用与该信号相关联的处理函数 FPGA扩展板中只有键盘,拨码开关,A/D控制器才能使用异步通知,当使用异步通知前需要开启中断,44,KEYBOARD对象 KEYBOARD对象命令字 使用方式: 键盘的操作模式有查询和中断方式两种,45,ADC对象 A/D控制器有两个输入通道,并且每个通道的工作模式都有两种选择: 模式一. 即时输入方式 模式二. 自动缓冲采集 采集频率设置,46,板级对象 有一些命令字是针对整个FPGA扩展板的,包括如下:,47,7. GUI程序设计,着重介绍如何为FPGA扩展板设计具有图形用户介面的应用程序 建立回调函数 监控I/O 绘制图形,48,Key&Led 界面,49,DA控制界面,50,AD控制界面,51,完成界面后,还需完成以下工作: 响应ADC发出的中断。 为控件的事件添加回调函数。 绘制图形。,52,建立回调函数 以普通按钮控件为例,在Glade的Properties窗口的Signal下拉菜单中,为按钮的clicked事件添加回调函数,5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论