DSP与PCI总线资料Word文档格式.docx
《DSP与PCI总线资料Word文档格式.docx》由会员分享,可在线阅读,更多相关《DSP与PCI总线资料Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
PCI总线协议规范复杂而庞大,因此需要借助总线接口来实现。
实现PCI总线协议一般有两种方法:
一是用FPGA设计实现,但PCI协议比较复杂,因此难度较大;
二是采用PCI总线控制芯片,如AMCC公司的S5933和PLX公司的PCI9052等通用的PCI接口芯片。
TI公司专门推出了针对PCI总线和DSP接口的芯片PCI2040,它不但实现了PCI总线控制的功能,而且提供了和DSP芯片的无缝接口,因而大大降低了系统设计的复杂度,缩短了开发时间。
2.2P012040与DSP接口设计
PCI2040足TI公司设计的专门用来实现C5000/C6000系列DSP和PCI总线进行接口的专用芯片,可以通过8位或16位HPI接口与C54x/C6xDSP实现无缝连接。
PCI2040通过HPI接口与VC5402连接。
PCI2040的HPI口为8/16位数据传输接口(8位还是16位,依据所挂接的DSP的类型)。
主机作为传输的主设备,从机DSP不能发起传输。
主设备PCI2040可以读/写DSP内存,DSPHPl口可以访问DSP所有的片上资源,PCI2040和VC5402之问的通信主要靠DSP的HPIA、HPIC、HPID三个寄存器完成。
VC5402的HPI与PCI2040口的连接如图2所示。
PCI2040的数据总线HAD0~HAD7与VC5402HPI口的数据总线HD0~HD7相连,用于主机和DSP传输数据。
PCI2040芯片的HPI口的HCNTLl和HCNTL0引脚分别与DSP的HCNTLl和HCNTL0引脚相连,以实现其对HPI寄存器的访问。
具体HPI寄存器的选择和访问模式的确定由DSP的HCNTLl和HCNTL0引脚的状态决定,表1给出了VC5402HPI寄存器访问控制的情况。
PCI2040带有独立的读/写选通信号HDS和HR/W,可以将PCI2040的HDS、HR/W引脚与VC5402的HDSl、HR/W引脚相连,实现主机对VC5402HPI接口的读/写控制。
当主机驱动HR/W为高时,读HPI;
为低时,则写HPI。
DSPHPI口的HPIEA、HDS2、HAS引脚通过10kΩ电阻拉高。
需要注意的是,VC5402的HPI接几是8位的,而DSP内部和PCI总线上的数据格式都是大于8位的,所以主机与DSP之间数据传输必须包含2个连续的字节。
专用的HBIL引脚信号确定传输的是第一个字节还是第二个字节;
HPI控制寄存器HPIC的BOB位决定第一个或第二个字节放置在16位字的高8位。
3电路设计时应注意的问题
①VC5402电源采用3.3V和1.8V电源供电。
其中:
I/O采用3.3V;
核电压采用1.8V供电;
系统从PCI插槽取5V电压经
电压转换后,供DSP和其他芯片使用。
②VC5402的有些引脚必须接4.7kΩ的上拉电阻,没有用到的中断引脚也要接相同的上拉电阻。
③电源输入端跨接一个10~100μF的电解电容器,为每个集成屯路芯片配置一个0.01μF的陶瓷电容器。
结语
实践证明,利用PCI2040芯片实现C54x/C6xDSP的PCI总线可以大大减少相应的外围器件,增强系统的可靠性,同时降低系统开发的难度,缩短开发周期。
基于PCI总线的双DSP系统及WDM驱动程序设计
2016-07-1512:
24:
36
来源:
eefocus
关键字:
PCI总线
DSP系统
WDM驱动
1
硬件设计
1.1
PCI总线控制芯片PCI2040
PCI总线是一种不依附于某个具体处理器的局部总线,它支持32位或64位的总线宽度,频率通常是33MHz,目前最快的PCI2.0总线工作频率是66MHz。
工作在33MHz、32位时,理论上最大数据传输速率能达到133MB/s。
它支持猝发工作方式,提高了传输速度,支持即插即用,PCI部件和驱动程序可以在各种不同的平台上运行[1]。
实现PCI总线协议一般有两种方法,一是用FPGA设计实现,但PCI协议比较复杂,因此难度较大;
二是采用PCI总线控制芯片,如AMCC公司的S5933、PLX公司的PCI9080等通用的PCI接口芯片。
TI公司专门推出了针对PCI总线和DSP接口的芯片PCI2040[2],它不但实现了PCI总线控制的功能,而且提供了和DSP芯片无缝的接口,因而大大简化了系统设计的复杂度并缩短了开发时间。
PCI2040是一个PCI-DSP桥接器件,它提供了PCI局部总线和TMS320C54X8位主机接口(HPI)与TMS320C6X16位主机接口的无缝连接。
一片PCI2040最多能同时挂接4片DSP芯片。
同时,它还提供了一个串行EEPROM接口,一个通用输入输出接口(GPIO)和一个16位通用总线接口(为TIJTAG测试总线控制器提供接口)[2]。
PCI2040只能作为PCI目标设备使用,不能作为PCI主设备使用;
它只支持单字的读写,不能提供DMA操作。
PCI2040能够兼容3.3V和5V信号环境系统中的3.3V和5V信号可以直接从PCI插槽中获得。
PCI2040和TMS320C6201的接口如图1所示。
1.2PCI2040寄存器说明
PCI2040桥256字节的配置头如图2所示,HPICSR基地址、控制空间基地址(ControlSpaceBaseAddress)值都是系统自动分配的。
所有的PNP器件都是如此它将控制空间映射到主机内存,映射的空间大小为32KB。
4片DSP芯片的选择是通过解码PCI_AD14、PCI_AD13来实现的,其对应关系如表1所示。
而DSPHPI寄存器的地址则是由PCI_AD12和PCI_AD11来决定的,其对应关系如表2所示。
图1PCI2040和TMS320C6201的接口
表1DSP选择
AD[14:
13]
TMS320C6xDSP
00
HCS0(选择第一块DSP)
01
HCS1(选择第二块DSP)
10
HCS2(选择第三块DSP)
11
HCS3(选择第四块DSP)
表1HPI寄存器映射
AD[12:
11]
TMS320C6xHPIRegister
HPI控制寄存器
HPI地址寄存器
HPI自增数据寄存器
HPI数据寄存器
因此,DSP与主机交换数据的过程,也就是读写HPI寄存器的过程。
也就是说,通过主机访问DSP板上资源,只需要将相应地址赋予HPIA寄存器中,然后读写数据就可以通过HPID寄存器。
具体描述如下:
(1)初始化PCI2040内部配置寄存器,指向特定的DSP(因为本系统有两块DSP和PCI2040相连),指定数据传输宽度为16位。
(2)分配HPICSR基地址和控制空间基地址,允许PCI2040进行内存映射或I/O端口映射。
值得注意的是,PCI2040控制空间只能映射在主机的内存空间里,不能映射在I/O空间。
以上两步都由驱动程序完成。
(3)脱离复位状态后,PCI2040解码从PCI总线来的地址,以此来做出响应。
若落入32KB的控制空间中,则根据PCI_AD12、PCI_AD11及PCI_AD14、PCI_AD13片选情况访问相应HPI寄存器。
(4)设定HPI控制寄存器中的BOB位,选择正确的高低16位排列方式。
(5)主机开始对HPI寄存器进行读写。
1.3双DSP系统硬件设计
本文所采用的双DSP系统主要用来处理视频信号及高速数据采集,该系统是基于TMS320C6201DSP和PCI2040而设计的。
此卡的主要功能是:
(1)采集视频信号或其他模拟信号经A/D转换后,交给DSP进行相应处理,然后将处理后的数据通过PCI2040经PCI总线存放在计算机硬盘上或者直接存储到板上RAM中,然后通过PCI总线将视频数据传送到主机后显示。
(2)两块DSP之间的通信可以通过McBSP或双端口RAM。
该系统的特点有:
两块TMS320C6201DSP,处理能力可达3200MIPS;
每片C6201带512KSBSRAM,256KBFLASH;
16KB高速双口RAM用于两块C6201之间进行数据交换;
12位ADC;
32位高速FIFO。
系统硬件框图如图3所示。
2基于WDM的PCI驱动程序设计
WDM是新一代的驱动程序构架,它是一个跨平台的驱动程序模型,在WINDOWS98以上的操作系统中都实现了全面兼容。
不仅如此,WDM驱动程序还可以在不修改源代码的情况下经过重新编译后在非Intel平台上运行,因而为驱动程序开发人员提供了极大的方便。
WDM驱动程序是分层的,即不同层上的驱动程序有着不同的优先级,而Windows9x下的VxD则没有此结构。
另外,WDM还引入了功能设备对象FDO(FunctionalDeviceObject)与物理设备对象PDO(PhysicalDeviceObject)两个新概念来描述硬件。
PDO代表实际存在的硬件设备,它是在总线驱动程序(BUSDRIVER)下枚举并建立的,负责与真实硬件进行I/O操作。
FDO是由用户驱动程序建立的,一般来说,它是用户与真实硬件进行I/O操作的一个窗口,是Win32赖以沟通内核的一个桥梁。
对于驱动程序开发者,真正需要做的就是开发FDO。
至于PDO,则由BUSDRIVER建立,并在需要的时候作为参数由I/OManager或其它系统组件传给你的FDO。
在应用层与底层进行通讯时,操作系统为每一个用户请求打包成一个IRP(IORequestPacket)结构,将其发送至驱动程序,并通过识别IRP中的PDO来识别是发送给哪一个设备的。
另外,WDM不是通过驱动程序名称,而是通过一个128位的全局惟一标识符(GUID)来识别驱动程序的[3]。
WDM驱动程序都有一个初始化入口点,即DriverEntry,它相当于C语言中的main函数。
当WDM驱动程序被装入时,内核调用DriverEntry例程。
另外WDM设备驱动程序还需要一个即插即用模块,即AddDevice。
AddDevice例程就是PnP管理器在用户插入新设备时调用它来创建WDM设备对象的。
本文主要采用Windows2000DDK来设计该驱动程序。
调试工具为SOFTICE。
驱动程序的主要工作集中在:
(1)DriverEntry(),这是驱动程序的入口点,驱动程序被装入时首先执行DriverEntry例程。
主要工作是建立驱动程序这所需的函数。
(2)dspPciAddDevice(),在这个例程里驱动程序主要是创建设备。
(3)dspPciPnp(),在这个例程中驱动程序主要是启动设备和停止设备等,并且从PnP管理器读出为双DSP所分配的硬件资源,包括HPICSR基地址和HPI控制空间基地址,对PCI配置空间进行初始化。
初始化中断等。
需要注意的是,在初始化中断之前禁止卡向主机发中断,因此应有屏蔽中断的操作。
(4)dspPciDeviceControl(),在这个例程中可以定制自己的函数来达到Ring3层和Ring0层相互通讯的目的。
通过IOCTL_CODE可以区分不同的请求。
(5)Isr_Irq(),这个例程是用来处理中断的。
Windows2000的中断处理机制是假定多个设备可以共享一个硬件中断。
因此,Isr的首要工作就是找出哪一个设备发生了中断。
如果没有,则应该立刻返回FALSE,以便HAL能把中断送往其它设备驱动程序。
中断服务例程Isr执行在提升的IRQL上,在DIRQL级别上运行的代码需要尽可能快地运行。
通常情况下,若判断中断是由自己的设备产生的,则调用一个在DISPATCH_LEVEL级别上运行的延迟过程调用(DpcFor_Irq)。
注意:
当确定是自己卡的中断时,要马上屏蔽中断位防止中断再进来,等到DpcFor_Irq的结尾处再开中断。
3结论
通过上述的软硬件设计,成功实现了预期的目标。
高效的利用DSP高速处理能力。
分享到:
QQ空间新浪微博腾讯微博人人网更多0
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。
如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
emif:
可实现DSP与不同类型存储器(SRAM、FlashRAM、DDR-RAM等)的连接。
一般EMIF与FPGA相连,从而使FP储器(SRAM、FlashRAM、DDR-RAM等)的连接。
中文名
外部存储器接口
外文名
ExternalMemoryInterface
缩
写
emif
分
类
EMIFA和EMIFB
外部存储器接口(EMIF),ExternalMemoryInterface,是TMSDSP器件上的一种接口,具体可以分为EMIFA和EMIFB。
一般来说,EMIF可实现DSP与不同类型存EMIF可实现DSP与不同类型存储器(SRAM、FlashRAM、DDR-RAM等)的连接。
一般EMIF与FPGA相连,从而使FPGA平台充当一个协同处理器、高速数据处理器或高速数据传输接口。
设计接口提供了一个FPGA块至RAM的无缝连接。
在读/写、FIFO或存储器模式中,双端口块RAM的一侧被用来实现与DSP的通信。
另一侧用于实现与内部FPGA逻辑电路或平台-FPGA嵌入式处理器的通信。
在使用DSP的过程中,需要设计外部存储器接口时可以参考TI的TMS320XXDSPExternalMemoryInterface(EMIF)ReferenceGuide。
其中XX代表某一种具体的dsp处理器。
外部设备连接接口包括外部存储器连接接口(EMIF)、主机接口(HPI)等。
外部存储器接口主要用来同并行存储器连接,这些存储器包括SDRAM、SBSRAM、Flash、SRAM存储器等,外部存储器接口还可以同外部并行设备进行连接,这些设备包括并行A/D、D/A转换器、具有异步并行接口的专用芯片,并可以通过外部存储器接口同FPGA、CPLD等连接;
主机接口主要用来为主控CPU和C55x处理器之间提供一条方便、快捷的并行连接接口,这个接口用来对DSP进行控制、程序加载、数据传输等工作。
这里主要是EMIF。
EMIF输入输出信号图:
EMIF为3种类型的存储器提供了无缝接口:
1异步存储器,包括ROM,FLASH,异步SRAM
2同步突发静态存储器(SBSRAM)
3同步动态存储器(SDRAM)
异步存储器可以是静态随机存储器(SRAM)、只读存储器(ROM)和闪存存储器等存储器,在实际使用中还可以用异步接口连接并行A/D采样器件、并行显示接口等外围设备,但使用这些非标准设备时需要增加一些外部逻辑来保证设备的正常使用。
在使用外部存储器接口时应区分字寻址和字节寻址之间的区别,当TMS320C55x访问数据时,CPU用23位地址访问16位字,该方式下数据空间被分成128页,每页字长64K。
CPU访问程序代码时,用24位地址访问8位字节,DMA控制器访问存储器时也采用字节寻址方式。
如果多个请求服务同时到达,EMIF会根据每个请求优先级来进行处理。
最高为HOLD,最低为刷新。
对EMIF编程时,必须了解外部存储器地址如何分配给片使能空间,即CE空间,每个CE空间可以同那些类型的存储器连接,以及用那些寄存器位来配置CE空间。
TMS320C55x的外部存储器映射在存储空间的分布,相应于EMIF的片选使能信号,例如CE1空间的存储器,则必须将其片选引脚连接到EMIF的CE1引脚。
当EMIF访问CE1空间时,驱动CE1变低。
数据页
字寻址方式地址范围
(16进制)
外部存储器
字节寻址方式地址范围
第2页后64K字节
3-31
028000-1FFFFF
CE0空间
(4M-320K)字节
050000-3FFFFF
32-63
200000-3FFFFF
CE1空间
4M字节
400000-7FFFFF
64-95
400000-5FFFFF
CE2空间
800000-BFFFFF
96-127
600000-7FFFFF
当MP/MC=0
CE3空间长度为
(4M-32K)字节
剩余地址空间被片上ROM占用
当MP/MC=1
CE3空间长度为4M字节
C00000-FFFFFF
TMS320C5510外部存储器映射中的最高地址单独分配给CE3空间,或由CE3及内部的DSPROM共享。
这些地址的分配由CPU状态寄存器ST3_55中的MPNMC位来决定。
在DSP复位期间,MPNMC值取决于DSP的NP/MC引脚的信号电平。
可以使用全局控制寄存器EGCR和每个CE空间控制寄存器来配置CE空间。
对于每个CE空间,必须设置控制寄存器1中的以下域:
MTYPE指定存储器类型
MEMFREQ决定存储器信号的频率
MEMCEN决定CLKMEM引脚是输出存储器时钟信号,还是被拉成高电平
一定要对全局控制寄存器写如下控制位。
WPE对所有CE空间,使能或者禁止
NOHOLD对所有CE空间,使能或禁止HOLD请求
外部寄存器接口硬件连接与配置
外部存储器接口所支持的异步存储器接口、同步突发静态存储器接口和同步动态存储器接口都支持程序代码访问以及32位宽、16位宽和8位宽数据访问。
外部存储器的4个片选空间都可以单独进行设置,设置的内容包括存储器类型、存储器宽度、读写时序参数等内容。
本节将分别给出不同接口的硬件连接以及参数的设置。
1.异步存储器接口
异步存储器的类型多种多样,它们既包括静态随机存储器、闪存存储器、只读存储器等,又有先入先出存储器、双端口存储器等,这些存储器有着不同的特点,可以根据需要灵活选用。
AM29LV320D是一种大容量的闪存存储器,存储容量可以达到2M字/4M字节,数据总线宽度可以是8位或16位,下面给出AM29LV320D与DSP的连接关系示意图。
从图中可以看到C55x处理器与AM29LV320D的连接用了数据线D7-D0,在这种连接方式下AM29LV320D的DQ15/A-1引脚应当作为地址线A-1来使用,处理器的地址总线A[21:
0]接到AM29LV320D的A[20:
-1],AM29LV320D的BYTE#信号接地,RESET#接到系统复位信号,写保护/快速编程WP#/ACC引脚接高电平。
AM29LV320D的读写时序,如图5-5和图5-6所示,从时序图中可以看到该芯片的一个读写周期最短为90ns或120ns,而数字信号处理器的CLKOUT时钟是DSP主时钟的1/1、1/2、1/3、1/4、1/5、1/6、1/7或1/8,如果DSP运行在200MHz,则DSP一个时钟周期为5ns,如果不能让DSP的读写时序同AM29LV320D的读写时序相匹配,就无法实现正确的读写。
调整DSP的读写时序有两种方法,一种是将AM29LV320D的RY/BY信号接到DSP的ARDY信号上,通过硬件等待信号实现二者读写时序的同步,另外一种方法是通过软件设置外部存储器接口寄存器实现正确读写。
方法1使用简单,但灵活性不强,如果DSP通过外部存储器接口连接多个芯片,这种方法就不能使用,软件设置的方法灵活、方便,推荐使用该种方法设置外部存储器接口的读写时序。
当CLKOUT为4分频时,设置建立时间为1个时钟周期,选通时间为4个时钟周期,保持时间为2个时钟周期就可以正确读取AM29LV320D存储器。
外部存储器接口为每个片选空间都提供了独立的片选控制寄存器,通过这些寄存器可以设置寄存器类型,读/写时序以及超时时钟周期数,具体可参见下表。
片选控制寄存器1(CEx_1)
位
字段
数值
说明
15~13
Reserved
保留
14~12
MTYPE
000b
001b
010b
011b
100b
101b~111b
存储器类型
8位宽异步存储器
16位宽异步存储器
32位宽异步存储器
32位宽同步动态存储器(SDRAM)
32位宽同步静态突发存储器(SBSRAM)
11~8
READSETUP
1~15
读建立时间
7~2
REA