基于PCIe总线的高速数据传输系统的设计与实现毕业论文
2021-03-10 23:28:07
摘 要
随着通信设备性能和带宽的提高,高速数据传输需求以及传输吞吐量日益增长。因此通过研究和设计新型的高速接口技术显得尤为重要。FPGA已经发展成了实现高速传输系统的主流平台,因此,FPGA与PC间的高速传输是当前传输系统研究的趋势。而PCIe总线接口便是实现这两者间高速传输的方式之一。目前,越来越多的外接设备都是直接或间接的通过PCIe接口接入系统。
本文借助Xilinx Kintex 7 FPGA评估板来研究并设计出一种基于PCIe总线的高速数据传输系统。此系统在基于Xilinx官方PCIe IP核下进行改进添加DMA控制器,同时也采用了Microblaze来链接DDR3 IP核以及双口RAM来实现高速,增加了上层的C语言设计,充分发挥了FPGA的灵活性;该系统在Visual studio平台上设计的基于WinDriver的C#上位机驱动软件,摒弃了以往繁琐的C/C 语言底层开发,缩短了开发周期。该设计对于设备间的高速数据传输具有重要的指导意义。
论文主要研究和设计了基于PCIe总线下的DMA状态控制器的设计、基于DDR3内存条的高速大容量缓存设计、基于WinDriver的C#上位机驱动程序的设计。其研究结果表明,在PCIe总线协议中加入DMA控制器进行数据传输,能够有效地节省CPU的使用占比,且传输速率有了较大的提升。而DDR3的大容量缓存设计可以实现数据的暂存,便于数据处理。
关键词:PCIe;DMA;数据传输;DDR3;WinDriver;C#;
Abstract
With the improvement of communication equipment performance and bandwidth, high-speed data transmission requirements and transmission throughput keep growing. The research and thedesign of new high-speed interface technology are particularly important. FPGA has developed into a high-speed transmission system as amainstream platform, therefore, FPGA and PC high-speed transmission between the current transmission system become a research trend. The PCIe bus interface is one of the ways to achieve high-speed transmission between PC and FPGA. At present, more and more external devices are directly or indirectly access tosystemthrough the PCIe interface.
This paper uses the Xilinx Kintex 7 FPGA evaluation board to study and design a PCIe bus-based high-speed data transmission system. This system based on Xilinx PCIe IP core has the addition of DMA controller, and it adds Microblaze designed by the upper C language to link DDR3 IP core and dual-port RAM to achieve high speed design, which can show the flexibility of the FPGA; The system using the Visual studio platform design C# PC driver software, which is based on WinDriver, and it abandons thecumbersome C/C language development, reduces the development cycle. This design has important guiding significance for high-speed data transmission among devices.
This paper mainly studies and designs the design of DMA state controller based on PCIe bus, the design of high speed and high capacity cache based on DDR3 memory, and the design of C# PC driver based on WinDriver. The results show that the PCIe bus protocol, to which DMA controller for data transmission is added, can effectively save the use of CPU, and the transmission rate has been greatly improved. The DDR3 high-capacity cache design can store temporary data, and is easy to process data.
Key Words:PCIe;DMA;Data transmission;DDR3;WinDriver;C#;
目录
第1章 绪论 1
1.1 研究目的及意义 1
1.2 国内外研究现状 1
1.3 论文组织结构 2
第2章 系统相关技术分析 4
2.1PCIe总线主要技术分析 4
2.1.1 PCIe总线拓扑结构 4
2.1.2 PCIe层次架构 5
2.1.3 PCIe配置空间 5
2.2WinDriver驱动主要技术分析 7
2.2.1 WinDriver驱动描述 7
2.2.2 WinDriver驱动框架 7
2.2.3 WinDrvier开发优势 8
2.3 本章小结 8
第3章 基于DMA模式的PCIe总线设计 9
3.1 FPGA端硬件系统方案 9
3.2 FPGA端系统逻辑设计 9
3.2.1系统逻辑框架介绍 9
3.2.2系统逻辑框架构建 11
3.2.3 DMA控制器设计 12
3.2.4 DDR3架构设计 16
3.3 本章小结 19
第4章 基于WinDriver的上位机设计以及系统测试 20
4.1 基于WinDriver驱动的C#上位机架构设计 20
4.2基于 WinDriver的C#上位机实现 20
4.2.1设备搜索 20
4.2.2设备关闭 22
4.2.3 DMA读写 22
4.2.4读取内存数据 24
4.3 系统整体性能测试 25
4.3.1 基于PCIe的上位机链接测试 25
4.3.2 基于PCIe的DMA写测试 25
4.3.3 基于PCIe的DMA读测试 27
4.4 本章小结 28
第5章 总结与展望 29
5.1总结 29
5.2展望 29
参考文献 31
附录A:DMA设计描述符寄存器 32
致谢 40
第1章 绪论
1.1 研究目的及意义
随着计算机技术的迅猛发展,各种信息聚成的数据量正处于井喷式的增长状态,尤其是在现今类似于图像视频传输等数据一直在爆炸性地增多,而绝大部分的采集设备存储空间是十分有限,如何高效准确地将巨大的数据量传输到主要控制设备进行后续解析显得特别重要,这就对数据传输带宽有了更高的要求[1]。
通过近些年技术的发展,FPGA已经成为高速传输系统的代表平台之一。它已经渗透到了信号处理和传输等各个领域[2]。即便FPGA的时钟频率比起ARM公司的Cortex-A系列的芯片频率低很多,但由于FPGA的运行机制是并行运行,所以它的速度仍然很快,尤其是在复杂的传输协议或者是多通道的并行传输设计中更加突出。与此同时,PC端具有极强的数据处理能力,但FPGA却不像DSP芯片那样具备极强运算能力[3]。所以,通常情况下,会将数据从FPGA端采集传输到PC端中做数据处理,而后将结果再回馈到FPGA端。也就是说,在FPGA端中做数据传输,在PC端中做数据处理。以此来构建一个高速数据传输系统。