一种用于图像处理器的PCI适配器
技术领域
本发明涉及一种用于图像处理器的PCI适配器,具体是一种基于SOPC技术的,具有很好的可扩展性和剪裁性的PCI总线适配器。
背景技术
20世纪90年代出现了大规模集成程度很高的现场可编程器件(FPGA),而不断改进的FPGA支持工具,使基于FPGA芯片的嵌入式系统设计提升速度,出现了基于FPGA的嵌入式系统EDA平台,从普及意义上来讲,它的出现使基于FPGA设计嵌入式系统成为可能。近几年随着可编程片上系统(SOPC)概念的提出,从软件和硬件两方面推动了嵌入式系统设计的方法和内涵;而NiosII软核的提出,满足了嵌入式系统对软硬核双可编程的需求,因此嵌入式系统技术也随之进入了软核(Soft Core)时代。
一般开发PCI设备的方法是选用PCI专用芯片加MCU来完成PCI适配这一功能的,这样对于系统的可扩展性比较差,增加了硬件设计的复杂度,一旦用户对系统要求提出改变,则难免对硬件上作出较大改动,对于开发成本来说是不划算的。
发明内容
本发明的目的在于针对已有技术存在的缺陷,提供一种用于图像处理器的PCI适配器,该适配器将ASIC加MCU这块用FPGA代替,首先从硬件设计上降低难度,再利用SOPC技术不但使系统具有很好的可扩展性,同时能跟据用户的要求进行剪裁,即使要求改变也不用改变硬件上的设计。
本发明通过下述技术方案实现:一种用于图像处理器的PCI适配器由有源晶体振荡器、电源变换模块、FPGA、编程接口、FLASH、SRAM、E2PROM、PCI接口和适配器本地控制接口组成,其相互连接关系为:电源变换模块分别与有源晶体振荡器、FPGA、FLASH、SRAM、编程接口相连接,FPGA通过PCI总线与PCI接口相连、通过IIC总线与E2PROM相连、并通过FLASH和SRAM总线与FLASH和SRAM相连,有源晶体振荡器与FPGA相连,编程接口和本地控制接口与FPGA相连。
为了更好的实现本发明,所述FPGA包括PCI总线控制模块,Nios II32位微处理器软核,片内存储模块。其相互连接关系为,所述PCI总线控制模块通过内部存储总线与片内存储模块相连,同时外接计算机的PCI插槽,所述Nios II32位微处理器软核通过片内存储总线与片内存储模块相连,并外接适配器本地控制接口、FLASH、SRAM和E2PROM。所述PCI总线控制模块包括状态机模块,配置空间模块,奇偶校验模块,基地址译码模块、等待计数模块和IO接口模块,其相互连接关系为:所述IO接口模块通过数据线和控制线分别与状态机模块、配置空间模块、奇偶校验模块、基地址译码模块和PCI总线相连接,所述状态机模块通过数据线和控制线分别与IO接口状态机模块、配置空间模块、奇偶校验模块、基地址译码模块和等待计数模块相连接,所述配置空间模块通过数据线和控制线分别与IO接口模块、奇偶校验模块和状态机模块相连接。所述Nios II32位微处理器软核需配置Nios II/e cpu,Nios II经济型cpu核,Avalon三态总线,Flash存储器接口,Sram接口,iic总线接口以及若干PIO,即通用IO口。所述片内存储模块包括片内RAM模块和RAM控制模块,其相互连接关系为,所述片内RAM模块与片内RAM控制模块是通过控制线相连接的。
本发明与现有技术相比,具有如下显而易见的突出实质性特点和显著优点:
1、本发明硬件结构简单,设计合理,使用方便。
2、本发明利用现在嵌入式系统设计的新技术——SOPC,使本发明具有很好的系统可扩展性和可剪裁性,遇到设计要求变化时无需改变硬件设计,再通过WDM驱动程序和自定义函数库,可使用户在计算机上能够透明地访问使用该PCI适配器的图像处理器。
附图说明
图1本发明的系统框图。
图2本发明中的PCI总线控制模块的结构框图。
图3本发明中的片内存储器模块的结构框图。
图4本发明中的Nios II程序流程框图。
图5本发明中的驱动程序与上层用户软件通信示意图。
具体实施方式
本发明的一个优选实施例结合附图详述如下:本用于图像处理器的PCI适配器由有源晶体振荡器、电源变换模块、FPGA、编程接口、FLASH、SRAM、E2PROM、PCI接口和适配器本地控制接口组成,其相互连接关系为:电源变换模块分别与有源晶体振荡器、FPGA、FLASH、SRAM、编程接口相连接,FPGA通过PCI总线与PCI接口相连、通过IIC总线与E2PROM相连、并通过FLASH和SRAM总线与FLASH和SRAM相连,有源晶体振荡器与FPGA相连,编程接口和本地控制接口与FPGA相连。如图1所示,PCI总线控制模块为PCI总线的桥接模块,它一边与计算机的PCI插槽连接,一边经由内部总线与片内存储器模块连接;片内存储器模块一边与PCI总线控制模块连接,一边与NiosII 32位微处理器相连接,这些模块都是由硬件描述语言Verilog HDL编写的;NiosII 32位微处理器是Altera公司针对其FPGA开发的软核处理器,通过对软核添加各类外设接口使其一边与片内存储器模块相连接,一边与本地控制接口和外部存储器相连,这里的外部存储器就是FLASH、SRAM和E2PROM。以上这三个模块便组成了本发明的FPGA,并通过WDM驱动和用户自定义函数库,可以在计算机上编写控制软件来“透明”地访问带有的该PCI适配器的图像处理器。如图2所示,PCI总线控制模块包括状态机模块,配置空间模块,奇偶校验模块,基地址译码模块、等待计数模块和IO接口模块。PCI总线控制模块的基本功能与结构:从总线的角度来看,PCI总线控制模块相当于一个协议转换器,它起着沟通外部PCI总线和内部总线转换协议的作用。由于外部PCI总线的传输协议与内部传输协议不同,PCI控制器不但要解决内外两种总线在交易方式、握手方法等方面的差异。从功能上上来说PCI总线控制模块是一个PCI接口代理,它接受并转换外部PCI主设备对带有本适配器的图像处理器上芯片的访问。
PCI总线控制器内部各模块作用见下表。
表1 PCI总线控制模块的子模块
模块名称 |
作用 |
状态机模块 |
根据内部和外部的控制信号,用有限状态机的描述方式产生目标设备的相应输出PCI控制信号TRDY#,DEVSEL#,Stop#和其他控制信号。 |
配置空间模块 |
负责系统上电后与系统通信,告知系统本设备属于哪类PCI设备,要求多少硬件资源等信息。 |
奇偶校验模块 |
负责对交易时PCI总线上的AD[31:0]和C/BE[3:0]进行奇偶校验,当出错时使PERR#信号有效。 |
基地址译码模块 |
进行地址译码,检查本PCI设备是否被选中通信。 |
等待计数模块 |
当本PCI设备被选中而DEVSEL#信号没有变成低电平,便开始计数,超过一定周期后就中断本次交易。 |
IO接口模块 |
负责双向IO的数据传输方向以及三态门的输出。 |
如图3所示,片内存储器模块由片内RAM模块和片内RAM控制模块组成,它的基本功能与结构:由于PCI总线上读写频率与内部总线不一致,因此为了使双方传输速率能得以匹配,则需要添加能起到缓存作用的片内RAM。因为在一般情况下是内部总线的频率低于PCI总线的频率,主要是图像处理器上经常会用到AD和DA芯片,而这些芯片是靠IIC总线配置的,IIC总线常用模式为400KHz,远低于PCI总线的33MHz。所以片内RAM控制器就要控制从PCI总线上写进来的数据先使其存放到片内RAM中,当本地总线上的“低速”器件做好进行交易的准备了才使这些器件能够读取这些数据,当PCI总线要读取“低速”器件上的寄存器值时,片内RAM控制模块也要控制这交易的进行,只有当“低速”器件做好准备,片内RAM控制模块才让PCI总线读取这些寄存器的值。
如图4所示,NiosII 32位微处理器是Altera公司针对其FPGA开发的软核处理器,用户可以根据自己设计的需要来添加外设接口,在本发明中需要的添加如下:Nios II/ecpu(即Nios II经济型cpu核),Avalon三态总线,Flash存储器接口,Sram接口,iic总线接口以及若干PIO(即通用IO口)。这些是完成本适配器的最低配置,当然用户还可以添加其他的接口来满足自己的需求。图4中的程序流程图是NiosII处理器的程序,所用语言是C语言,由于FPGA采用的是SRAM工艺,所以NiosII程序需要存储在FLASH中,在上电时加载到FPGA中,运行时还需要SRAM的协助。NiosII程序流程包括:
1)上电后初始化AD和DA芯片(例如AD芯片使用SAA7114,DA芯片使用AD7197)
2)完成初始化后便进入空闲状态等待中断的到来
3)若是中断到来,进入中断服务程序,对传输进来的控制命令字进行译码,并且通过本地控制总线和IIC总线去控制带有本PCI适配器的图像处理器的设备上的受控模块或芯片,同时将需要保存的参数存至E2PROM,完成后退出中断。
如图5所示,本发明中的驱动程序采用WDM驱动程序,开发WDM驱动程序的软件环境是:VC++6.0,Windows2000 DDK,Driverstudio3.1,硬件环境:普通PC机。上层用户软件和驱动程序进行通信用自定义函数库作为中介来完成的,这样可以避免用户用Win32 API直接访问驱动程序过程中出现错误导致系统出现保护模式错误或系统崩溃,同时可以是上层用户软件开发人员在不了解硬件运作机制的能够照样开发软件。本发明中的用户自定义函数库分为三块:1、设备加载、卸载、出错处理;2、针对IIC器件的操作;3、针对非IIC器件的操作。通过对调用针对IIC器件操作的函数,用户便可以透明地访问到图像处理器上的IIC器件,因为在这类函数中定义的参数是IIC器件中通用的,即:器件地址(chip_address)、寄存器地址(sub_address)、寄存器值(data)。而针对非IIC器件的函数由于考虑到使用本发明的用户会有自己的控制命令,所以这类函数只是将用户的命令通过并行传输的方式“直通”到PCI适配器在图像处理器上的本地控制接口,这也是为了系统可扩展性的一种考虑。本发明中为对用户控制软件提出要求,这是因为使用本发明的用户是要使用本发明中的自定义函数库的,这里面已经对如何调用WDM驱动,与其通信进行了封装,所以剩下的只是界面上的编写工作。
本发明的实施方式如下:
1)选用Altera公司的FPGA,根据PCI总线规范上的要求与PCI接口相连,为FPGA添加有源晶体振荡器、电源变换模块、编程接口、FLASH、SRAM、PCI接口和适配器本地控制接口,组成本发明硬件部分,然后把它加到自己设计的图像处理器中。
2)将FPGA中各模块通过编程接口写入FPGA的配置芯片。
3)将带有本发明的图像处理器插入PCI插槽中
4)计算机找到硬件,安装驱动程序。
5)用户根据自定义函数库的说明进行用户控制软件的编写,完成对带有本发明的图像处理器的“透明”控制。