首页 自有产品 代理产品 文档 购买/联系 项目承接 论坛  

 

Interface Studio PCI Target开发板

       

接口工作室(Interface Studio)推出的PCI开发板使用Altera公司的EPF10K10A  FPGA作为PCI控制器,实现32bit/33MHz PCI Target8位本地总线的PCI桥接。用户可以通过仔细分析开发板中的PCI控制器VerilogHDL源代码掌握PCI控制器的基本设计方法,也可以根据应用要求将用户逻辑与这个IP core综合在一起形成用户自己定制的PCI控制器。使用这种设计方式的PCI卡具有使用灵活、系统硬件简洁、成本低、开发周期短、升级方便、可移植性好等优点。

       PCI开发板由以下部分组成:

       PCI卡一块,演示子板一块,RS232串行通讯电缆一根,26针扁平电缆一条

  光盘一张

功能、特性

1.       兼容PCI specification2.2PCI Target 32bit/33MHz IP Core

2.       本地总线支持兼容8051 MOVX时序的64K空间,8051系统中64K空间内采用MOVX时序访问的设计可以无缝移植;本地总线还扩展了IO读写访问、中断输入、复位输出;不支持PCI突发访问;

3.       完全的PCI Target 32bit/33MHz VerilogHDL源代码;

4.       完全的驱动程序源代码(DriverStudioDDKVC++6.0环境);

5.       完全的VC++应用程序源代码;

6.       PCI开发板上集成单片机,可存储多达三个FPGA配置文件,用以被动并行方式配置FPGA,并提供软件配置工具,用户自由选择启动配置;

7.       强制配置0选择开关,防止用户设计错误导致的PC不能启动;

8.       演示子板提供64K字节SRAM8路开关量输入、8路开关量输出、一个本地中断输入按钮、1个本地复位输出指示LED,用于演示PCI开发板本地总线的功能;

9.       用户可自行设计修改PCI IP Core和子板,实现用户自定义功能设备;

10.   5V PCI总线接口,3.3V本地8位总线接口;

11.   支持的操作系统包括Windows98WindowsMeWindows2000WindowsXP

12.   详细的用户手册帮助设计者快速掌握本PCI开发板的设计内容;

适用对象

       本开发板作为一个参考设计,适用于需要对PCI控制器设计作深入理解,或者需要自定制PCI控制器,或者需要掌握PCI设备驱动程序设计的电子工程师。

        在以下的描述中,Interface Studio PCI Target开发板简称PCI开发板。

        本文是PCI开发板的简要介绍,购买PCI开发板的用户请参见Interface Studio PCI Target开发板用户手册。

 PCI开发板系统组件

硬件系统

硬件由PCI卡、演示子板、RS232电缆、26芯扁平电缆组成。使用时,用户将PCI卡插入PC主板任一空闲的PCI插槽,连接RS232电缆从PCICOM口到计算机COM口,连接26芯扁平电缆从PCI卡的DB25连接座到演示子板,后两个连接是可选的。

PCI卡:

PCI卡使用Altera公司的EPF10K10A FPGA作为PCI控制器,实现32bit/33MHz PCI Target8位本地总线的桥接功能。本地总线包括一个兼容8051 MOVX时序的864K地址空间,一个8位的IO端口,一个本地复位输出,以及一个中断输入;所有这些信号可以通过PCI卡上的DB25连接器由26芯扁平电缆连接到本地总线演示子板。

由于EPF10K10A是基于SRAM类型的FPGA,上电时需要进行配置,因此PCI卡上设计有一颗SST89V564RD单片机,可以存储三个FPGA配置文件,其中配置0是出厂默认配置,配置12则可由用户自由修改。通过PCI卡上的RS232接口、使用配置软件ConfigTool.exe下载用户的FPGA配置文件,同时还可以指定PC启动时FPGA使用哪一个配置文件,以及显示PCI卡的软硬件版本等信息,如果不进行这些操作则RS232电缆是不需要和PC连接的。

此外PCI卡上还特别设计了一个强制配置0选择开关,如果FPGA使用当前的用户配置不能启动PC,则可以使用这个开关选择强制使用配置0启动,正常启动之后用户可以修改自己的设计。

PCI卡上还设计有一个兼容AlteraByteBlasterMV下载线的JTAG接口,仅用作PCI开发板出厂前的测试用途,用户不要使用。此外,PCI卡上还有一个10针用户IO插座,是预留的FPGAIO

 

     演示子板:

     本地总线演示子板包括64KSRAM CY7C62128CY62128128KSRAM,但是这个子板只使用其低64K),一个8位的开关量输入,一个8位的开关量输出(8LED输出),一个本地复位输出(LED指示灯),以及一个中断输入(即一个按钮)

演示子板通过一个26芯的扁平电缆和PCI卡连接,如果不需要演示可以不连接。

软件及文档

开发板中的光盘内容包括:

1.       32bit/33MHz PCI target IP Core

VerilogHDL语言格式的32bit/33MHz PCI target IP Core源代码,使用Max+plusII10.0 Baseline作为编译环境。

2.       驱动程序源代码

DriverStudio+DDK+VC++6.0编译环境,光盘中的驱动程序支持Windows98WindowsMeWindows2000WindowsXP

3.       应用程序源代码

VC++6.0编译环境,无需安装,运行于Windows98WindowsMeWindows2000WindowsXP

4.       ConfigTool.exe

接口工作室(Interface Studio)提供的FPGA配置工具软件,用来将Max+plusII10.0 Baseline编译后生成的FPGA配置文件(hex格式)下载至PCI卡上的单片机中,指定下次PC启动时FPGA要使用哪一个配置文件,显示PCI卡的软硬件版本信息。运行于Windows98WindowsMeWindows2000WindowsXP

5.       PCIVIWE.exe

PCI配置空间查看工具。

6.       DDK

Win98DDKWin2000DDKMicrosoftwindows下的驱动程序开发提供的开发包。

7.       WindriverV6.21评估版

Jungo公司提供的硬件诊断和驱动程序开发工具。

8.       Max+plusII10.0 Baseline

Altera公司为其CPLD/FPGA 设计提供的EDA工具软件。

9.       器件资料

Altera公司的EPF10K10A数据手册等文档。

10.   PCI Specification2.2

PCI-SIGPCI2.2 规范。

11.   Interface Studio PCI Target开发板简介

接口工作室(Interface Studio)提供的PCI开发板的简要介绍。

12.   Interface Studio PCI Target开发板用户手册

接口工作室(Interface Studio)提供的PCI开发板的详细手册。

 

部分演示图片

    发现新硬件:

  

设备管理器中的PCI开发板:

应用程序:

PCI IP Core框图:

支持的PCI总线命令:

         

CBE#[3:0]

PCI总线命令

IP Core支持

0000

Interrupt acknowledge

Ignore

0001

Special Cycle

Ignore

0010

I/O Read

Yes

0011

I/O Write

Yes

0100

Reserved

Ignore

0101

Reserved

Ignore

0110

Memory Read

Yes

0111

Memory Write

Yes

1000

Reserved

Ignore

1001

Reserved

Ignore

1010

Configuration Read

Yes

1011

Configuration Write

Yes

1100

Memory Read Multiple

Yes*

1101

Dual Address Cycle

Ignore

1110

Memory Read Line

Yes*

1111

Memory Write and Invalidate

Yes**

                         *解释为Memory Read

                         **解释为Memory Write

 

PCI配置空间:

地址

寄存器定义

IP Core

初始值

Byte3

Byte2

Byte1

Byte0

00

Device ID

Vendor ID

11251172

04

Status

Command

04000000

08

Class Code

Revision ID

06080001

0C

BIST

Header Type

Latency Timer

Cache Line Size

00000000

10

Base Address Registers 0

FFFFFFF1

14

Base Address Registers 1

FFFC0000

18

Base Address Registers 2

00000000

1C

Base Address Registers 3

00000000

20

Base Address Registers 4

00000000

24

Base Address Registers 5

00000000

28

Cardbus CIS Pointer

00000000

2C

SubSystem ID

Subsystem Vendor ID

00000000

30

Expansion ROM Base Address

00000000

34

Reserved

Capabilities Pointer

00000000

38

Reserved

00000000

3C

Max_Lat

Min_Gnt

Interrupt Pin

Interrupt Line

000001FF

 

使用MaxplusII综合、编译PCI IP Core:

 

PCI IP Core时序波形仿真:

 

FPGA配置工具ConfigTool:

使用Windriver进行硬件诊断:

使用DriverStudio向导生成驱动程序框架:

    在DriverStudio生成驱动程序框架之后,添加、修改用户代码,然后编译生成驱动程序目标文件。

应用程序接口函数:

       PCI开发板提供的应用程序中,通过下面几个函数和驱动程序交互,达到读写PCI卡的目的。

///////////////////////////////////////////////////////////////////////////////////////////////////////

HANDLE OpenByInterface(

GUID* pClassGuid,    // points to the GUID that identifies the interface class

DWORD instance,         // specifies which instance of the enumerated devices to open

PDWORD pError            // address of variable to receive error status

)

这个函数通过设备接口打开设备,并返回设备句柄。应用程序在进行任何对设备的操作之前应已经获得这个句柄,一般在应用程序初始化时进行这一步。

///////////////////////////////////////////////////////////////////////////////////////////////////////

CloseHandle(hDevice)

       这个是windows的函数,在应用程序关闭时应调用这个函数释放设备句柄hDevice

///////////////////////////////////////////////////////////////////////////////////////////////////////

ULONG MemoryRead(

HANDLE hDevice,

PUCHAR pBuffer,

ULONG uLength,

ULONG uOffset

)

这个函数通过读PCI卡的memory空间来获得64K SRAM中指定的地址范围的内容。

///////////////////////////////////////////////////////////////////////////////////////////////////////

BOOL MemoryWrite(

HANDLE hDevice,

PUCHAR pBuffer,

ULONG uLength,

ULONG uOffset

)

这个函数通过写PCI卡的memory空间来修改64K SRAM中指定的地址范围的内容。

 

///////////////////////////////////////////////////////////////////////////////////////////////////////

BOOL CtlLed(

HANDLE hDevice,

BYTE *bLedValueAddress

)

这个函数用来控制PCI