关于PCI总线协议的FPGA驱动设计与实现Word文件下载.docx
- 文档编号:6640395
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:8
- 大小:136.98KB
关于PCI总线协议的FPGA驱动设计与实现Word文件下载.docx
《关于PCI总线协议的FPGA驱动设计与实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《关于PCI总线协议的FPGA驱动设计与实现Word文件下载.docx(8页珍藏版)》请在冰点文库上搜索。
PCI接口模块实现了33MHz工作时钟、32位总线宽度的接口功能,支持I/O空间、内存空间及配置空间的读写和PCI中断功能。
由于简化的PCI接口占用的逻辑资源较少,可在同一块芯片中集成其他用户逻辑。
作为一个应用实例,本文加入了一个数据处理模块,对PCI接口传送来的数据进行处理,通过片外的输出接口输出到下位机。
RAM芯片为数据处理提供缓存功能。
2从设备模式下的简化PCI协议的实现
为了实现PCI接口的基本功能,必须完成以下几个模块:
(1)PCI配置空间设置。
PCI协议支持三种地址空间:
I/O空间、内存空间和配置空间。
配置空间提供了支持PCI设备自动配置的机制,是必需的。
(2)PCI从设备状态机。
PCI总线状态机是具有PCI总线的计算机系统状态流,是由一个已知状态到另一个状态的条件、时序的描述。
这是PCI接口设计中最基本也是最重要的部分。
(3)地址译码和命令译码。
地址译码用来确定PCI设备是否应当响应当前总线的操作;
命令译码则用来指示PCI设备根据不同的总线命令作出相应的动作。
本文采用ALTERA公司的Max+PlusII软件平台,硬件描述语言使用ALTERAHDL语言,也可以方便地转换民VHDL或VerilogHDL语言。
在此之前,先引入PCI总线信号的定义。
2.1总线信号定义
根据PCI总线协议2.2版,从设备模式下PCI接口至少包含47根引脚。
图2给出了按功能划分的引脚分布,左边是必需引脚。
右边是可选引脚。
为简化起见,本文采用了如下引脚,其他引脚均不使能或置为高阻态。
(1)由系统提供的33MHz的同步时钟信号CLK和复位信号RST#(#表示低电平有效);
(2)关于数据传输的核心信号:
32位地址/数据复用线AD[31:
0]、总线命令/字节使能复用线C/BE[3:
0]#和偶校验信号PAR;
(3)接口控制信号FRAME#、TRDY#、IRDY#、STOP#、DEVSEL#和IDSEL。
其中,FRAME#为数据传输起止信号,TRDY#为主设备准备好信号,IRDY#为从设备准备好信号,STOP#为从设备停止请求信号,DEVSEL#为设备选择信号,IDSEL为配置空间读写时的片选信号;
(4)中断引脚INTA#。
为简化PCI协议,本文只实现了最重要的总线命令,表1给出了所支持的总线命令对应的C/BE[3:
0]#编码值。
表1支持的总线命令
2.2配置空间设置
配置空间大小为256字节,前64字节必需,记录了PCI设备的基本住处,比较重要的有:
(1)VendorID、DeviceID和ClassCode域:
分别表示设备的生产厂商、设备编号和类型;
(2)Command和Status域:
分别给出了对PCI设备的控制命令和当前状态;
(3)BaseAdressRegister域:
指示此PCI设备按I/O方式还是内存方式进行读写以及需要的地址空间大小;
(4)InterruptLine和InterruptPin域:
分别指明了设备使用的断号和中断引脚。
在对配置空间的访问中,用AD[7:
2]寻址一个双字DWORD。
在本设计中,配置空间设置如表2所示。
2.3简化的从设备状态机
在PCI协议中,标准的从设备状态机包含五种状态,而且各状态的跳转条件比较复杂。
本文在不违反PCI协议的前提下,简化了从设备的状态机,如图3所示。
图3中,状态转移条件信号a、b、c定义如下:
a代表配置空间访问条件,b代表I/O空间或内存空间访问条件,c代表总线传输开始条件。
这三个条件的实现由后面的命令译码模块给出。
表2配置空间设置(均为十六进制)
IDLE是系统的缺省状态,表示总线当前空闲。
通常,设备处在IDLE状态时,要检测来自PCI总线和后级设备的信号,便设备作出合适的响应。
设备处于S_DATA状态时完成第一次数据传输,直接无条件跳到BACKOFF状态。
设备在BACKOFF状态时进行多个数据传输,直到主设备断开访问。
需要注意的是:
任何对I/O空间、配置空间以及内存空间的突发传输的地址超过了设备映射地址的范围时,从设备要在此状态建立STOP信号,断开访问。
当帧信号无效或主设备终止传输时,设备回到初始的IDLE状态。
BUS_BUSY状态时总线忙,表示总线正在被其它设备使用。
有两条转移路径,若总线仍然被占用,则停留在BUS_BUSY状态,否则返回空头状态IDLE。
2.4地址译码和命令译码模块
地址译码模块主要检测PCI地址与本PCI卡的基地址是否匹配,可以通过AD[31:
00]信号线上的值与设备的基地址作比较判断。
如果PCI地址落在设置的基地址范围内,则PCI卡响应当前的总线操作。
命令译码模块指示PCI卡响应不同的总线命令,通过检测C/BE[3:
0]#信号线上的值,与表1列出的总线命令作比较,完成命令译码。
3Windows9x系统下驱动程序的设计
对PCI设备而言,驱动程序提供了获取PCI卡的配置空间信息、勾挂PCI中断、总线数据传输等功能。
本文介绍使用Numega公司的VtooIsD软件进行驱动设计的方法。
3.1寻找PCI卡并读取配置空间信息
配置空间包含了系统初始化PCI设备所必需的信息,首先需要遍历整个硬件树结构来寻找指定的PCI设备。
对于每一个设备,比较其厂商号(VendorID)和设备编号(DeviceID),如果与设计的PCI卡的信息匹配,则读取它的配置空间信息。
3.2I/O方式下的读写操作
I/O方式下的读写比较简单。
在得到PCI设备基地址信息后,通过C++语言中的端口读写函数inpd和outpd即可完成。
举例如下:
Temp=_inpd(gBaseAddresses);
//Temp中得到读出的数据
_outpd(gBaseAddresses,Data);
//向基地址写入数据
其中,gBaseAddresses为基地址值,Data为写操作时的数据。
3.3内存方式下的读写
对于内存方式下的读写,一个重要问题就是地址的映射。
因为硬件设备读写的是物理内存,但应用程序读写的是虚拟地址,所以存在着将物理内存地址映射到用户程序线性地址的问题。
映射功能通过调用VtoolsD软件的标准库函数完成。
根据给定的物理地址和所要求的空间大小,在系统内存中分配相应空间。
首先,用PageReserve函数分配当前保留页的线性地址空间,再利用PageCommitPhys函数的服务对开始的线性地址空间分配相应的物理地址空间。
程序如下:
ULONGnPages=_NPAGES_(PhysAddress,SizeInByte);
Linear=PageReserve(PR_SYSTEM,nPages,PR_FIXED);
PageCommitPhys(PAGENUM(Linear),nPages,PAGENUM
(PhysAddress),PC_INCR|PC_WRITEABLE|PC_USER);
LinPageLock(PAGENUM(Linear),nPages,0);
其中,PhysAddress为给定的物理地址,SizeInBytes为需要的空间大小。
建立了物理RAM到系统内存的映射后,就可以利用C++语言中的文件操作基类CFile类完成数据的读写。
首先使用CFile类的成员函数Open打开文件,为保证数据读写的准确无误,必须使用二进制方式打开;
接下来使用Read和Write成员函数进行文件读写;
完毕后用Close成员函数关闭文件。
3.4中断的勾挂和处理
首先在ON_DEVICE_INIT函数中完成中断的初始化。
即通过前面读取的PCI设备的中断号,使用VPICD_Virtualize_IRQ函数进行中断勾挂,外调用VPICD_Physically_Unmask函数开中断。
RTCIRQHandle=VPICD_Virtualize_IRQ(&
IRQdesc);
VPICD_Physically_Unmask(RTCIRQHandle);
然后在RTCInt_Handler函数中进行中断处理,可以进行各种操作,例如向应用程序发送自定义的消息来通知中断的发生。
3.5与应用程序的通信
一般地,应用程序通过CreateFile函数调用VxD驱动程序,得到一个VxD的文件句柄。
使用如下的语句可以打开一个名为mydriver.VXD的文件,得到的句柄保存在hVxD中。
hVxD=CreateFile(.mydriver.VXD,0,0,0,CREATE-NEW,FILE-FLAG-DELETE-ON-CLOSE,0);
通过句柄hVxD和DeviceIoControl函数就可以与驱动程序进行数据传输。
本文采用ALTERA公司的FLEX6000系列芯片,型号为EPF6016TC144-3,实现了简化的从设备模式PCI协议,并在Windows9x系统下实现驱动程序的设计。
整个系统工作良好。
资源占用情况如下:
可用I/O引脚113根,占用51根,占用率45%;
可用逻辑单元数1320个,占用151个,占用率11%。
简化的PCI协议的实现占用较少的逻辑资源,可以灵活方便地进行功能添加和改进,同时可以在同一块芯片中集成其他用户模块,实现不同功能,以降低成本。
目前,本系统已经应用在数据采集处理、图像处理等方面。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关于 PCI 总线 协议 FPGA 驱动 设计 实现