正在加载图片...
·888 北京科技大学学报 2006年第9期 3.5DATA-Poc数据处理模块 数据总线通讯[6], DATA-ProC模块用于对采集的数据进行处 为了使用快速同步方式传输数据,需对2131 理,根据项目要求,其工作主要是对信号进行滤波 进行如下设置: 和边缘提取,从而提取有效数据,减少数据的传输 (1)能使S0F中断,使51内核能接受S0F 量.为了减少工作量,采用了Xilinx公司的Sys- 中断,从而保证1ms传输一桢数据 temGenerator软件来设计这部分模块[, (2)本系统使用了等时传输IN8端点,所以 SystemGenerator是Xilinx公司和Mathworks 须设置INIS0VAL为00000001”. 合作开发的FPGA辅助设计工具,只需在 (③)设置IN8端点将使用的等时FIF0的大 Simulink中完成模型的搭建,启动SystemGenera~ 小.为了加快数据传输的速度,这里设置该FIF0 tor,就能自动生成VHDL源程序及其他一些工程 的大小为1024. 文件,并将系统模型映射到目标器件FPGA上进 (4)设置寄存器PORTACFG,设置PA口第 行硬件实现[] 4位和第5位复用功能.其复用功能是快速等时 3.6FF0模块 传输的FRD和FWR信号. 视频信号进入PGA的时钟为13.5MHz, (5)设置寄存器FASTXFR,使能快速等时传 而USB接口芯片的时钟为12Mz,两者时钟速 输方式,设置FRD低电平有效,并且设置了 率不匹配.这就出现了异步时序设计问题,由于 nFRD的宽度和相位, 需要进行跨时钟领域的数据传输,必须在FPGA 为了响应SOF中断,需要在中断响应函数 和EZ-USB之间加入缓冲数据单元.这个缓冲器 ISR-Sof()中编写数据处理程序,将数据传送到 一般由异步First-In FirstOut(FIFO)实现.异 内部寄存器IN8DATA,另一方面清除SOF中断 步FFO在每个写时钟时写入数据,而用每一个 请求和USB中断请求,以便程序能对下一个SOF 读时钟时读出数据,这两个时钟是异步的, 做出正确的响应 FIFO的工作原理是:在写时钟的上升沿,当 写允许有效时,将写数据总线上的数据写入双口 5PC机应用程序 RAM中写地址对应的存储单元中;而始终将读地 EZUSB通用驱动程序GPD(general purpose 址对应的双口RAM中的数据输出到读数据总线 driver)用来和EZUSB外设接口的通用设备驱动 上,在读允许有效时,输出数据 程序,为应用程序访问EZUSB硬件提供了途径. 4 EZUSB模块 EZUSB开发包提供了默认的驱动程序文件 EZUSB.SYS7. 在系统中,EZUSB2131主要完成两方面的工 对于应用程序而言,调用CreateFile()来打开 作:完成对SAA7111A的配置和基于快速同步传 输方式的数据传输, 设备并取得访问设备驱动程序的句柄,用户程序 为了使视频解码芯片SAA7111A正常工作 使用函数DeviceloControl()来提交控制码,并为 必须通过℃总线对其内部的寄存器进行正确的 CreateFile()函数返回的设备句柄设置I/O缓冲 配置,当通过C配置SAA7111A时,写入数据 区 格式为:首先为起始信号,然后是7位的从机地址 连接到主机的EZUSB设备,GPD为其创建 和方向位(0'表示写入SAA7111A寄存器,‘1 一个链接符.调用函数CreateFile(),实质上就是 表示读出相应寄存器)共8位数据,此时从机应该 获取驱动程序产生的目标设备句柄,EZUSB开 向主机发送一位响应信号,然后是从机中被写入 发包中提供了I/0控制码,使用这些I/0控制码 的寄存器的地址和从机的响应信号,然后才是要 能非常方便地实现USB通讯,当使用快速传输 写入子地址寄存器的的数据,最后是结束信号, 方式时,需要将IOCTL-EZUSB-START-ISO- USB总线支持4种数据传输方式:控制传 STREAM,IOCTL-EZUSB-READ-ISO-BUFFER, 输、中断传输、等时传输和块传输,EZUSB系列 IOCTL-EZUSB-STOP-ISO-STREAM等控制码 的2131Q支持快速等时传输方式,为了提高数据 提供给函数DeviceloControl(),从而实现开启等 传输的速度,应用这种方式进行数据传输,能够使 时传输、读取等时传输数据、停止等时传输等 FPGA内部的FIFO模块直接与EZUSB内部的 功能3∙5 DATA-Proc 数据处理模块 DATA—Proc 模块用于对采集的数据进行处 理‚根据项目要求‚其工作主要是对信号进行滤波 和边缘提取‚从而提取有效数据‚减少数据的传输 量.为了减少工作量‚采用了 Xilinx 公司的 Sys￾temGenerator 软件来设计这部分模块[4]. SystemGenerator 是 Xilinx 公司和 Mathworks 合作 开 发 的 FPGA 辅 助 设 计 工 具‚只 需 在 Simulink 中完成模型的搭建‚启动 SystemGenera￾tor‚就能自动生成 VHDL 源程序及其他一些工程 文件‚并将系统模型映射到目标器件 FPGA 上进 行硬件实现[5]. 3∙6 FIFO 模块 视频信号进入 FPGA 的时钟为13∙5MHz ‚ 而 USB 接口芯片的时钟为12MHz‚两者时钟速 率不匹配.这就出现了异步时序设计问题.由于 需要进行跨时钟领域的数据传输‚必须在 FPGA 和 EZ—USB 之间加入缓冲数据单元.这个缓冲器 一般由异步 First—In—First—Out (FIFO)实现.异 步 FIFO 在每个写时钟时写入数据‚而用每一个 读时钟时读出数据‚这两个时钟是异步的. FIFO 的工作原理是:在写时钟的上升沿‚当 写允许有效时‚将写数据总线上的数据写入双口 RAM 中写地址对应的存储单元中;而始终将读地 址对应的双口 RAM 中的数据输出到读数据总线 上‚在读允许有效时‚输出数据. 4 EZUSB 模块 在系统中‚EZUSB2131主要完成两方面的工 作:完成对 SAA7111A 的配置和基于快速同步传 输方式的数据传输. 为了使视频解码芯片 SAA7111A 正常工作‚ 必须通过 I 2C 总线对其内部的寄存器进行正确的 配置.当通过 I 2C 配置 SAA7111A 时‚写入数据 格式为:首先为起始信号‚然后是7位的从机地址 和方向位(‘0’表示写入 SAA7111A 寄存器‚‘1’ 表示读出相应寄存器)共8位数据‚此时从机应该 向主机发送一位响应信号.然后是从机中被写入 的寄存器的地址和从机的响应信号‚然后才是要 写入子地址寄存器的的数据‚最后是结束信号. USB 总线支持4种数据传输方式:控制传 输、中断传输、等时传输和块传输.EZUSB 系列 的2131Q 支持快速等时传输方式‚为了提高数据 传输的速度‚应用这种方式进行数据传输‚能够使 FPGA 内部的 FIFO 模块直接与 EZUSB 内部的 数据总线通讯[6]. 为了使用快速同步方式传输数据‚需对2131 进行如下设置: (1) 能使 SOF 中断‚使51内核能接受 SOF 中断‚从而保证1ms 传输一桢数据. (2) 本系统使用了等时传输 IN8端点‚所以 须设置 INISOVAL 为“00000001”. (3) 设置 IN8端点将使用的等时 FIFO 的大 小.为了加快数据传输的速度‚这里设置该 FIFO 的大小为1024. (4) 设置寄存器 PORTACFG‚设置 PA 口第 4位和第5位复用功能.其复用功能是快速等时 传输的 FRD 和 FWR 信号. (5) 设置寄存器FASTXFR‚使能快速等时传 输方式‚设置 nFRD 低电平有效‚并且设置了 nFRD 的宽度和相位. 为了响应 SOF 中断‚需要在中断响应函数 ISR—Sof ()中编写数据处理程序‚将数据传送到 内部寄存器 IN8DATA‚另一方面清除 SOF 中断 请求和 USB 中断请求‚以便程序能对下一个 SOF 做出正确的响应. 5 PC 机应用程序 EZUSB 通用驱动程序 GPD(general purpose driver)用来和 EZUSB 外设接口的通用设备驱动 程序‚为应用程序访问 EZUSB 硬件提供了途径. EZUSB 开 发 包 提 供 了 默 认 的 驱 动 程 序 文 件 EZUSB.SYS [7]. 对于应用程序而言‚调用 CreateFile()来打开 设备并取得访问设备驱动程序的句柄.用户程序 使用函数 DeviceIoControl()来提交控制码‚并为 CreateFile()函数返回的设备句柄设置 I/O 缓冲 区. 连接到主机的 EZUSB 设备‚GPD 为其创建 一个链接符.调用函数 CreateFile()‚实质上就是 获取驱动程序产生的目标设备句柄.EZUSB 开 发包中提供了 I/O 控制码‚使用这些 I/O 控制码 能非常方便地实现 USB 通讯.当使用快速传输 方式时‚需要将 IOCTL—EZUSB—START —ISO— STREAM‚IOCTL—EZUSB—READ—ISO—BUFFER‚ IOCTL—EZUSB—STOP—ISO—STREAM 等控制码 提供给函数 DeviceIoControl()‚从而实现开启等 时传输、读取等时传输数据、停止等时传输等 功能. ·888· 北 京 科 技 大 学 学 报 2006年第9期
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有