




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、综合创新实验陈文智 浙江大学计算机学院2005年4月1综合创新实验陈文智 1提纲1、设计任务2、设计分析3、FPGA设计基础4 模块分析5 驱动设计6 测试程序设计7 GUI程序设计2提纲1、设计任务21. 设计任务设计题目:FGPA扩展子板系统设计设计内容: 扩展一块FPGA子板,合理选用FPGA器件。有效使用XSBase255扩展槽资源。扩展以下硬件资源:16键键盘、8个LED灯、拨码开关、2路A/D和D/A。31. 设计任务设计题目:FGPA扩展子板系统设计3设计要求 合理选择各种元器件,包括FPGA、A/D、D/A芯片。合理使用XSBase255开发系统扩展槽资源,设计原理图,要考虑子
2、板和母板的安装。布局图: 4设计要求 4软件测试要求:LED显示A/DD/A KeyPad开关量输入 5软件测试要求:52. 设计分析 嵌入式系统项目开发流程要经历项目分析、设计和实现与维护四个阶段 本设计: 前期准备 FPGA逻辑设计 设备驱动设计 驱动测试 GUI应用程序设计 62. 设计分析 嵌入式系统项目开发流程要经历项目分析、设计和3. FPGA设计基础 可编程逻辑器件简介 什么是FPGA?什么是CPLD? FPGA与CPLD的主要区别 为什么要使用CPLD/FPGA? 可编程逻辑器件有哪些? 如何使用可编程逻辑器件进行开发? 如何使用Xscale和FPGA进行开发? 73. FPG
3、A设计基础 可编程逻辑器件简介 73.1 VHDL语言介绍随着EDA技术的发展,使用硬件描述语言(HDL)设计CPLD/FPGA成为一种趋势VHDL的程序结构特点是将一项工程设计,分成外部(端口)和内部(涉及实体的内部功能实现部分) VHDL主要用于描述数字系统的结构、行为、功能和接口,跟原理图有对应的关系 83.1 VHDL语言介绍随着EDA技术的发展,使用硬件描述语一个简单的VHDL例子 :ENTITY REG12 IS-外部端口定义:数据,时钟,输出 PORT(d: IN BIT_VECTOR(11 DOWNTO 0); clk : IN BIT; q : OUT BIT_VECTOR(
4、11 DOWNTO 0);END REG12;-内部实体逻辑ARCHITECTURE a OF REG12 ISBEGIN PROCESS BEGIN WAIT UNTIL clk = 1; -等待时钟上升沿 q private_data; /*判断是否设置了允许键盘产生中断*/ if (readb(f_b_p-ICNTR_VIR_ADDR) & KEY_EN ) /*如果设置了允许键盘产生中断,程序向下执行*/ if (filp-f_flags & O_NONBLOCK) /*如果设置了非阻塞就立刻返回*/ return -EAGAIN; wait_event_interruptible(f
5、_b_p-key_readq, f_b_p-key_int_occur); /*睡眠点*/ f_b_p-key_int_occur = 0; value = (readb(f_b_p-KEY_VIR_ADDR) & KEY_VALID_VAL); /*读取键值*/ copy_to_user(buff, &value, count); /*将键值返回给应用程序*/ 30static ssize_t key_read(structpoll方法分两步完成第一步,poll方法需要将所有这些可让进程睡眠的事件队列都加入到poll_table结构的链表中 第二步是返回一个用来描述操作是否可以立即无阻塞执行
6、的位掩码 31poll方法分两步完成31Poll方法代码如下: static unsigned int fpga_board_poll(struct file * filp, poll_table * wait) unsigned int mask=0; FPGA_BOARD * f_b_p; f_b_p = filp-private_data; poll_wait(filp, &f_b_p-key_readq, wait); /*键盘 */ poll_wait(filp, &f_b_p-sw_readq, wait); /*拨码开关 */ poll_wait(filp, &f_b_p-ad_
7、readq, wait); /*AD控制器 */ if (f_b_p-key_int_occur | f_b_p-sw_int_occur | f_b_p-ad_int_occur ) mask |= POLLIN | POLLRDNORM ; return mask;32Poll方法代码如下: static unsigned infasync方法当应用程序修改文件描述符的FASYNC标志(filp-f_flags)时,该方法就会被调用。fasync方法代码如下: static int fpga_board_fasync( int fd, struct file * filp, int mod
8、e) FPGA_BOARD * f_b_p; f_b_p = filp-private_data; return fasync_helper(fd, filp, mode, &f_b_p-fasync); 33fasync方法static int fpga_board_中断处理函数在注册中断号中,使用如下函数: 参数filp用于传递信息给中断处理函数,中断处理函数通过参数dev_id接收中断处理函数的代码,以键盘为例: request_irq(IRQ_GPIO(GPIO_X), board_irq_handle, SA_INTERRUPT | SA_SHIRQ , INT_OWNER, fil
9、p);34中断处理函数request_irq(IRQ_GPIO(GPIstatic void board_irq_handle(int irq, void * dev_id, struct pt_regs * regs) FPGA_BOARD * f_b_p; struct file * flip; char icntr_cur=0, iflag_cur=0; flip = (struct file *)dev_id; f_b_p = (FPGA_BOARD *) flip-private_data; if (f_b_p-fasync) kill_fasync( &f_b_p-fasync,
10、SIGIO, POLL_IN ); wake_up_interruptible(&f_b_p-key_readq); f_b_p-key_int_occur = 1; 35static void board_irq_handle(i驱动的加载 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.
11、o fpga_board_4.o 36驱动的加载 1.安装位置 363.修改菜单文件修改config.in文件,增加如下语句: dep_tristate ADS7843Touchcontroller CONFIG_FPGA $CONFIG_ARCH_XSBASE255dep_tristate FPGA_BOARD CONFIG_FPGA $CONFIG_ARCH_XSBASE255 /添加语句373.修改菜单文件dep_tristate ADS7843T4.初始化FPGA扩展板的中断引脚 修改 include/asm-arm/arch-pxa/xsbase255.h,增加以下语句:修改arch
12、/arm/mach-pxa/xsbase255.c, 增加以下语句:#define IRQ_GPIO_EXTEND IRQ_GPIO(11)set_GPIO_IRQ_edge(IRQ_TO_GPIO_2_80(IRQ_GPIO_EXTEND), GPIO_RISING_EDGE);384.初始化FPGA扩展板的中断引脚 #define IRQ5.编译Linux内核 进入Linux源代码目录中,执行make menuconfig,进入Linux内核配置菜单将FPGA扩展板的驱动加入内核中 进入Character devices菜单 选择“FPGA_BOARD” 编译内核 make depmake
13、 zImage395.编译Linux内核 make dep396. 测试程序设计 测试程序(应用程序)可以通过驱动提供的接口函数来操作设备文件结点来控制设备6.1 设备文件FPGA扩展板的设备文件为“fpga_board_x” 在应用程序中通过以下指令打开设备文件:open(/dev/fpga_board_x, O_RDWR); x可以具体指定为0,1,2,3,4406. 测试程序设计 测试程序(应用程序)可以通过驱动提供的接6.2 操作命令字 操作命令字是一些符号,通过ioctl系统调用,将这些符号传递到底层驱动程序,告诉驱动程序将要执行的操作 FPGA扩展板上有五个部件:分别是灯,键盘,拨
14、码开关,A/D控制器,D/A控制器,相应的操作对象可以使用对象选择命令字来表示:LED、KEYBOARD、SWBOARD、DAC和ADC 416.2 操作命令字 操作命令字是一些符号,通过ioctl系统如果需要操作扩展板上灯,键盘,拨码开关,可使用以下程序 :int fd_key, fd_sw, fd_led;fd_key = open(/dev/fpga_board_0, O_RDWR);fd_sw = open(/dev/fpga_board_1, O_RDWR);fd_led = open(/dev/fpga_board_2, O_RDWR);ioctl(fd_key,,KEYBOARD
15、);ioctl(fd_sw,SWBOARD);ioctl(fd_led,LED);42如果需要操作扩展板上灯,键盘,拨码开关,可使用以下程序 :iselect系统调用:是用在访问多个设备文件,但又不想阻塞于任何一个设备文件时使用 异步通知:是应用程序中通过向系统注册一个信号,并且将该信号与某一处理函数相关联,当中断产生时,激发该信号,然后系统调用与该信号相关联的处理函数 FPGA扩展板中只有键盘,拨码开关,A/D控制器才能使用异步通知,当使用异步通知前需要开启中断43select系统调用:是用在访问多个设备文件,但又不想阻塞于KEYBOARD对象KEYBOARD对象命令字 使用方式:键盘的操作
16、模式有查询和中断方式两种 ioctl(fd, KEYBOARD, KEYBOARD_READ_KEYVALUE)ioctl(fd, KEYBOARD, KEYBOARD_READ_IFLAG)ioctl(fd, KEYBOARD, KEYBOARD_READ_ICNTR)ioctl(fd, KEYBOARD, KEYBOARD_UNMASK_INTERRUPT)ioctl(fd, KEYBOARD, KEYBOARD_MASK_INTERRUPT)ioctl(fd, KEYBOARD, KEYBOARD_CLEAR_IFLAG)ioctl(fd, KEYBOARD, KEYBOARD_SET_
17、DEFAULT)44KEYBOARD对象ioctl(fd, KEYBOARD,ADC对象 A/D控制器有两个输入通道,并且每个通道的工作模式都有两种选择:模式一. 即时输入方式 模式二. 自动缓冲采集 采集频率设置unsigned short feq;ioctl(fd ADC, ADC_SET_FREQUENCY); /*通知底层驱动以下write操 作是设置频率*/feq = 1; write(fd, &feq, sizeof(feq); /*频率的数值将通过write操作传递到底层驱动*/45ADC对象 unsigned short feq;45板级对象 有一些命令字是针对整个FPGA扩展
18、板的,包括如下: 命令字描述INIT_FPGA初始化FPGA扩展板各模块INTERRUPT_ENABLE响应FPGA扩展板发出的中断请求INTERRUPT_DISABLE不允许响应FPGA扩展板发出的中断请求46板级对象 命令字描述INIT_FPGA初始化FPGA扩展板各7. GUI程序设计 着重介绍如何为FPGA扩展板设计具有图形用户介面的应用程序 建立回调函数 监控I/O 绘制图形 477. GUI程序设计 着重介绍如何为FPGA扩展板设计具有图Key&Led 界面48Key&Led 界面48DA控制界面49DA控制界面49AD控制界面50AD控制界面50完成界面后,还需完成以下工作:响应ADC发出的中断。为控件的事件添加回调函数。绘制图形。 51完成界面后,还需完成以下工作:51建立回调函数 以普通按钮控件为例,在Glade的Properties窗口的Signal下拉菜单中,为按钮的clicked事件添加回调函数 52建立回调函数 52监控I/O 这一步我们需要控制AD控制器对外部信号的采集 对ADC的控制
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年甘肃省嘉峪关市酒钢三中高一物理第二学期期末监测模拟试题含解析
- 工业节能行业研究报告修改
- 2025届上海市实验中学高一物理第二学期期末复习检测试题含解析
- 成都实验中学2025届物理高一下期末联考试题含解析
- 湖北省鄂东南联盟2025届高二物理第二学期期末质量跟踪监视模拟试题含解析
- 宠物疾病防治课件
- 2025届陕西省西安市育才中学物理高一第二学期期末质量检测模拟试题含解析
- 二零二五年度物流车队安全运输管理合同书
- 2025届四川省大竹县观音中学物理高一第二学期期末统考模拟试题含解析
- 二零二五版旧村改造拆迁安置房购置合同
- 2025-2030中国水溶性肥料行业市场发展分析及前景趋势与投资研究报告
- 复杂特征点云的高精度快速配准技术
- 2024年1月国家开放大学汉语言文学本科《古代诗歌散文专题》期末纸质考试试题及答案
- DBJ50T-098-2019 城市绿化养护质量标准
- 消防接警调度(一级)理论考试题库(含答案)
- 教材教法基础培训
- 双行星真空动力混合机使用说明书
- DB3301T 0410-2023 城市河道生态清淤管理规范
- 9.1 浮力(课件)2024-2025学年沪粤版物理八年级下册
- 《蔬菜嫁接技术》课件
- 初级心理治疗师职业技能鉴定理论考试题库(浓缩500题)
评论
0/150
提交评论