基于PCI核的BUFFER模式下链式DMA的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
- 75 -
基于PCI核的BUFFER模式下链式DMA的设计
广州海格通信集团股份有限公司 涂传亮
作者简介:涂传亮(1986— ),男,汉族,江西南昌人,硕士;研究方向:电子科学与技术。
摘 要:数字电视信号的采集速度要求不低于270 Mbit/s ,为了保证如此高速的数据流持续存入主机磁盘,且不丢失任何数据,必须解决数字视频采集卡的PCI 接口设计这一关键问题。
文章研究了一种基于ALTERA 公司开发的PCI 核PCLmt32的链式DMA 的设计方法。
这种方式的DMA 能够实现BUFFER 模式下的最高传输效率,速度达到2.112 Gbit/s ,使得数字视频采集卡的PCI 总线能够持续、高速地传输大量数据。
关键词:PCI ;链式DMA ;SOPC ;Win Driver 随着数字广播电视技术的普及,人们的视觉品位要求越来越高,将数字视频信号采集到计算机中,在计算机中可以方便地对采集的视频进行各种特效处理后再播出,这样可丰富视频特效种类、提高视频的视觉效果。
为了高速、实时地采集数字视频信号,必须解决外设部件互连标准(Peripheral Component Interconnect ,PCI )总线接口技术这一关键问题。
本文介绍了基于链式直接存储器访问(Direct Memory Access ,DMA )方式控制点云库(Point Cloud Library ,PCL )mt32核完成66 MHz 、32位数据传输的PCI 接口设计的方法,该设计是在ALTERA 公司的Cyclone II EP2C20Q240C8为主处理芯片的电路板上完成的。
1 SOPC系统框架组成
采集卡的可编程片上系统(System-on-a-Programmable-Chip ,SOPC )主要由3大组件组成,主控组件是PCI 组件、DMA 组件、自定义数据采集组件。
P C I 组件相当于此系统的C PU 组件,控制DM A 组件与data_in 自定义组件,在PCI 组件中,bar0_Prefetchable Ava lo n M a s t e r ,表示预取址Ava lo n -M M 主端口,提供PCI 内存对Avalon-MM 从设备的高带宽访问。
Bar1_Non_Prefetchable Avalon Master ,表示非预取址Avalon-MM 主端口,提供PCI 内存对Avalon-MM 从设备的低延时访问。
Control Status Registers Avalon Slave ,表示控制状态寄存器,包含了很多与PCI-Avalon 总线配置有关的寄存器,通过对它们的设置订制所需的功能。
PCI Bus Access Avalon Slave ,表示PCI 总线通道,可以通过程序设定,映射为程序申请的内存空间。
2 DMA控制器
在实现DMA 开始工作时,对主机产生一个中断,此时,主机CPU 参与响应中断,在DMA 工作后,不需要CPU 参与,可以自行进行数据传输,采用DMA 方式进行数据传输,可以大大减轻CPU 的压力,提高设备的性能。
在ALTER 的SOPC Builder 中,可定制的DMA 分为2种:
BLOCK DMA 和scatter-/gather DMA 。
Block DMA 要求主设备提
供PCI 和Local 的起始地址、传输字节数和传输方向。
主机启动DMA 传输并当所有数据传输完成时,PCI 接口控制器将向主机申请中断。
scatter/gather DMA 加入了一个描述符模块,该模块存储PCI 和Local 的起始地址,传输字节数和下一个描述模块的地址。
其传输的过程大概如下:当启动DMA 状态机时,PCI 接口控制首先读取DMA 起始地址,开始完成第1个模块指定的数据的传输。
当第1个模块中的数据传输完毕,DMA 根据描述符先进先出队列提供的下一个模块的指针连续加载下一个模块,直到检测到“链结束位”,PCI 接口控制器向主机申请中断。
本文设计的链式DMA 是基于BLOCK DMA ,能过驱动控制BLOCK DMA 从而实现scatter/gather DMA 的功能。
2.1 DMA Core 寄存器
DMA 控制器主要有5个寄存器,如图1所示,分别是状态寄存器status ,读地址寄存器readaddress ,写地址寄存器writeaddress ,长度寄存器length ,控制寄存器control。
图1 DMA控制器模块结构
在启动D M A 时,首先需要分别配置r e a d a d d r e s s ,
writeaddress ,length 和control 这4个寄存器,然后总线就会启动DMA 传输,DMA 控制器向readaddress 寄存器指向的地址中读取数据,将数据写入至writeaddress 寄存器指向的地址,整个DMA 操作所需传输的数据个数存储在length 中,而数据传输的模式存储在控制寄存control 中。
2.2 DMA BUFFER 的选择
当DMA 工作在突发模式下,一次DMA 传输最多传送1 024个32位宽度的数据,每传送完1 024个字则需要对DMA 进行中断,频繁地对DMA 中断会对程序计数器效率造成影响。
当DMA 工作在非突发模式下,一次DMA 传输则可以传输任意大小的字,当传输完规定的数据个数后才进行一次中断,此时传输的数据个数不受1 024的控制。
而两种工作状态下,数据传输的效率是不一样的。
DMA 工作在非突发模式下,经过逻辑分析仪采集的数据图,逻辑分析仪的主时钟为PCI 的工作时钟66 MHz ,yushu_out (即SOPC 系统中自定义组件的地址)信号每隔5个时钟周期进行一次地址的自增,也意味着每隔5个时钟周期SOPC 才接收一个动态随机存取存储器(Dynamic Random Access Memory ,DRAM )的输出数据,效率变为标准的1/5。
DMA 工作在突发模式下,经过逻辑分析仪采集的数据图,
- 76 -
逻辑分析仪的主时钟为PCI 的工作时钟66 MHz ,yushu_out 信号每隔1个时钟周期进行一次地址的自增,也意味着每隔1个时钟周期SOPC 接收一个DRAM 的输出数据,这完全按照PCI 的工作效率进行。
因此,为了满足数字分量串行接口(Serial Digital Interface ,SDI )的传输要求,使采集卡的传输效率达到最高,我们将DMA 设置工作在突发模式下。
3 结果分析
使用两种方法测试BUFFER 模式下DMA 操作是否正确。
图2为测试方案1,
即使用数据发生器测试数据的方法。
图2 有规律数据测试系统正确性的测试框图
如图3所示,接收到的数据通过PCI 的数据线输出,在108时刻连续输出782,783,784,785,786,787,788等数据,一个66 MHz 时钟周期输出一个32位数据。
第二种方法即可采集数字视频信号至PC 机的内存,观察内存中的数据是否正确来判断BUFFER 模式下DMA 是否工作正确。
将10位数据合并后32合所得的数据如图4所示,图4中的数
据,均可以找得到,其中EAV SAV 奇场与偶场均是不一样的,因此,其含有EAV SAV 的数据是变化的,其他的数据均是固定
周期出现的。
图4 合并后的每一行蓝屏数据
连续采集合成后的视频数据,存储在起始地址为5000000的主机内存中,截取主机中两段视频数据。
仔细观察数据,发现所有数据都与图4中标准数字视频信号数据一致。
在采信卡采集数据时,速度完全满足PCI 的速率要求,即每66 MHz 时钟周期,输出一个有效的32位数据。
根据设计原理,是将30位数字视频信号,在高2位补零,组成32位传输数据,因此,可以知道有效数据的传输效率为1.98 Gbit/s 。
图3 测试方案1中逻辑分析仪采集的规律数据
4 结语
本文利用超高速集成电路硬件语言实现了基于PCI 核BUFFER 模式下的链式DMA ,并在Altera 公司的QuartusII 开发工具上利用嵌入式逻辑分析仪对系统进行了测试,表明BUFFER 模式下DMA 的快速性,并通过分析主机中所采集到的视频数据表明了链式DMA 的正确实现。
通过理论分析和测试,本设计完全可以满足数字视频信号实时采集系统的要求。
[参考文献][1]沈羽.基于PCI 总线的实时高速数据记录器研究[D].北京:中国科学院研究生院,2006.
[2]PCI-SIG.PCI Express Card Electromechanical Specification Revision2.0 [EB/OL].(2007-09-17)[2019-04-10]./usercenter/paper/show?paperid=967178a2675c137057d4cb6fcb4fbacf&site=xueshu_se&hitarticle=1.
[3]PCI-SIG.PCI Express Base Specif ication Revision 1.1[J].PCI Express ,2005(27):272.。