0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用PEX8311桥接芯片和Linux操作系统实现PCIE/104板卡的设计

电子设计 来源:现代电子技术 作者:杨子元;包启亮; 2020-03-17 08:07 次阅读

引言

PCIE总线是由Intel公司提出用来取代现行PCI总线的下一代总线技术,被公认为未来总线的发展方向,目前已经成功应用在了商业机上。相对于目前流行的PCI总线,它具有如下特点:

采用了串行点对点模式,数据总线从并行走回向串行无疑是一个趋势,如现在流行的SATA总线、PCIE总线和rapidIO总线都是串行总线。现在串行总线在速度上的优势可以说是毋庸置疑的。PCIE总线在每个方向上都有X1,X2,X4,X8,X16或X32个信号对,用户可根据不同的需求采用不同的配置。同时串行信号还具有管教更少,便于调试的优点。

PCIE采用了基于数据包的协议来编码事物,而不是PCI体系结构的总线周期。数据包被串行发送和接受,并被字节拆分来通过物理链路。链路上实现的通道越多,数据包发送的数据越快,链路的带宽也越宽。同时PCIE还定义了各种类型的数据包,如存储器读/写请求、I/O读/写请求、配置读/写请求、消息请求和完成数据包等。

PC/104标准是一种嵌入式的总线标准,具有功耗低,尺寸小,堆栈式结构的特点。随着目前各种应用数据传输量的增大,现行的PCI总线在带宽方面已经略显疲态,而新近瑞士逻辑提出的PC/104 Express标准,使得PCIE总线技术被成功地应用在了PC/104标准的板卡上。本文采用了PLX公司的PEX8311桥接芯片,完成了PCIE到局部总线接口的转换,应用PLX公司提供的开发工具在Linux操作系统下实现了板卡的驱动应用。在软硬件两方面进行了设计,完成了PCIE/104板卡的功能,升级了系统的总线。

1、 PCIE/104高速信号接口卡的系统

PCIE/104高速信号接口卡的系统设计方案如图1所示。

采用PEX8311桥接芯片和Linux操作系统实现PCIE/104板卡的设计

外部传感器采集到的数据通过LVDS,RS 422等电平方式,以固定的不同串口波特率传到FPGA内部集成的各自对应的双口RAM中。当写入了固定字节后,设定标志位stage为1,同时发出中断信号LINT#给PEX8311。PEX8311产生了assert_INT1信息,并通过PCIE接口发给上位机。上位机保存好现在的任务后,通过PCIE开始发出存储器读命令给PEX8311。PEX8311获得命令后,向FPGA发出本地总线申请信号,FPGA作为本地端的控制器将本地总线控制权交给PEX8311。PEX8311开始读数据,首先要进行的是读取标志位,在读取了标志位后,上位机就知道是哪几路串口信号需要读入。然后,把标志位清掉,这样相当于清掉了中断信号。接着,中断服务程序在进入到各个串口的RAM中,来读取相应的数据。在多路串口信号传输过来时,针对该系统,采用的是优先满足高速串口的原则,也就是采用高速串口的标志位作为中断信号,每次产生中断后查询其他标志位。数据到上位机后待处理。该系统目前实现的是两路串口,而多路串口原理相同。

1.1 硬件总体概述

主要包括以下几部分,PEX8311桥接芯片负责完成本地总线和PCIE总线的相互装换;FPGA选用了spartan-3an 1400K。这里在内部实现了3个模块,首先完成双口RAM模块;其次完成了多路串口数据的接受与协调模块;最后还要实现PEX8311芯片本地端控制器模块。

1.1.1 PEX8311芯片介绍

PEX8311是PLX Technology公司推出的一款专用于将DSP,FPGA等处理器总线接口升级为PCIE的桥接器件。利用PEX8311灵活的局部总线可以方便地连接多种存储器、缓存器及。FPGA,DSP等逻辑芯片,使复杂的PCI-E接口设计简单化。PEX8311兼容PCI Express 1.0标准,其本地总线和寄存器与PCI9056兼容,能够提供完整的本地总线到PCI-E的接口,包括地址转换、包生成与解码、信号中断支持及并/串转换等。

PEX8311的特点如下:

(1)集成了单通道、全双工2.5 Gb/s传输的PCI Express端口

(2)可配置局部总线宽度,支持8位、16位和32位的总线方式;

(3)支持单路和多路总线操作模式;

(4)高性能的DMA数据传输,支持数据块模式、集散模式、循环队列管理模式和命令模式;

(5)支持端点和根复合体模式;

(6)芯片小型封装,适合紧凑的电路板设计;

(7)芯片低功耗设计;

(8)3.3 V的I/O并兼容5 V系统;

(9)启动配置的串行E2PROM支持(SPI和Microwire接口);

(10)有8 KB的通配共享RAM。

PEX8311的内部结构如图2所示。

采用PEX8311桥接芯片和Linux操作系统实现PCIE/104板卡的设计

1.1.2 PCIE/104总线标准介绍

PC/104是最早由瑞士逻辑提出的一种工业总线标准,它由最早的PC/104总线发展到PC/104+总线,直到目前的PC/104 Express,分别对应ISA总线、PCI总线和PCIE总线。由于它是一种堆栈型的嵌入式总线,所以将PCIE总线应用在这个标准上与普通的PCIE金手指有一些不同。为了满足PC/104的嵌入式堆栈结构,使其能够实现从板子上、下都可以连接,必须采用PCIE Switch芯片,这里使用的是PERICOM公司

制造的PI2PCIE2412款Switch芯片。电路原理图如图3所示。

采用PEX8311桥接芯片和Linux操作系统实现PCIE/104板卡的设计

图3中接受、发送和差分时钟这3对差分信号线通过转接芯片变成了6对差分信号线。由主机板卡发出选择信号(cpu_dir),分别控制设备板卡是在主机板卡的上面还是下面。同时采用MAX6306芯片来链接PEX8311的复位端和PCIE接插件的复位端,同时实现了手动复位和LOCAL端的复位。

1.1.3 PEX8311的外围电路配置与LOCAL端接口的控制

PEX8311有几个类别的模式选择,分别是根联合体模式(Rootcomplex)与终端模式(Endpoint),根据需要这里选择了终端模式。此外PEX 8311还区分C模式,J模式,M模式。这三种模式解释如下:C模式的地址线与数据线是分开的,J模式下地址线与数据线是复用的,而M模式是针对了Motor的本地端CPU设置的。三种模式通过模式选择管脚选择,这里选择C模式作为工作模式。PEX8311有1.5 V,2.5 V,3.3 V三种电源供电以及一个模拟电源1.5VPLL。在配置寄存器方面,PEX8311有两个配置寄存器,分别是采用Spi-Compatible接口的PCIE配置寄存器和采用了Micro-Wire-Compatibel接口的本地配置寄存器。采用了Spartan-3an 1400 k来提供控制接口与高速缓存,选择这款FPGA主要因为它是有内部FLASH,不用再加外部的E2PROM。

由于PC/104是一种嵌入式的板卡,体积比较小,所以用这款FPGA是可以节省板上的空间。FPGA内部程序的编写是关键之一。这里采用Verilog,实现对PEX8311的控制,当上位机响应了中断后,对PEX8311发出读数信号。PEX8311通过LHOLD申请控制本地总线,待收到FPGA发出的LHOLDA响应信号后获得本地总线的控制权,并立即启动4 B突发模式。FPGA在收到有效的LW/R读信号和ADS地址选通信号后,发出Ready本地准备好应答信号。PEX8311开始从双口中读取数据,传输最后一个数据时,PEX8311发出BLAST信号,双口RAM使得读使能和输出使能无效。

1.2 系统软件部分的实现

该系统的软件部分是在Linux下实现的,在Linux中所有的设备都被看成文件来对待。在Linux内核中,设备驱动作为文件系统的一个模块存在。它向下负责与硬件系统的交互,向上通过一个通用的接口挂接到文件系统上面。从而和系统的内核链接起来。设备驱动为应用程序屏蔽了很多细节。使得应用程序对外设的操作就和操作普通的文件是一个样子的。利用PLX公司提供的开发工具,驱动的开发是比较方便的,本文系统中主要用到的是要编写一个中断服务程序:系统在收到中断,保存现场。进入中断服务程序。首选读取标志位,再马上清中断,之后读取响应RAM中的数据。最后恢复现场,完成操作。

2、 系统PCB设计和高速信号的完整性分析

由于PCIE的传输速率较高,单向速率达到2.5 Gb/s。所以对板子的布线有严格的要求。叠层这里选用了8层PUCB板,有4个电源层,使得每个信号都能够屏蔽在电源层与地层中间。从而减少了信号的电磁辐射。对于PCIE的差分线部分:微带线要求差分线宽5 mil,间距小于12 mil,差分线间距离大于20 mil,同时与地层间距为3.5~5.5 mil。带状线要求线宽4 mil,间距小于11 mil,间距大于20 mil。且对于收发差分线,差分线长差距不能大于5 mil。这些都是为了能达到PCIE规范的要求,即单端阻抗55 Ω,差分阻抗100 Ω(偏差10%)而设置的。

经过ploar软件计算,将以上的数据输入进去,再加入PCB厂家提供的介电常数等参数,最后得出的阻抗完全满足设计需求。多层板的高速信号设计很有必要进行信号完整性仿真,应用厂家提供的IBIS模型,采用Hyperlynx对板子进行了本地端和时钟端的信号完整性仿真。并根据仿真对布线提供了约束条件。而针对PCIE的高速差分端总线,因为在高速信号仿真方面IBIS模型还不够精确,所以,PLX公司对其两对收发端口提供SPice模型,如图4所示。

采用PEX8311桥接芯片和Linux操作系统实现PCIE/104板卡的设计

将上诉模型导入HSpice中,同时引入PCIESwitch芯片给出的IBIS模型与板子上面的差分线trace的rglc模型。输出端的仿真效果图如下,可以看出差分信号的幅值是可以满足PCIE规范的电气要求的。

采用PEX8311桥接芯片和Linux操作系统实现PCIE/104板卡的设计

3、 结语

PC/104作为一种嵌入式总线标准已经被很多控制系统所采用,而PCIE/104接口的提出将未来最为流行的串行差分总线结构,引入到了这种嵌入式总线标准,从而为各种高速、高带宽的嵌入式系统提供了选择。目前该系统由于采用了PCIE总线,相比采用PLX9054实现的PCI接口具有明显的优势。

责任编辑:gt


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    447

    文章

    47788

    浏览量

    409117
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206734
  • 操作系统
    +关注

    关注

    37

    文章

    6284

    浏览量

    121876
收藏 人收藏

    评论

    相关推荐

    Linux操作系统中如何按下PCIe的复位键

    Linux操作系统中,看如何按下PCIe的复位键
    的头像 发表于 01-20 09:31 546次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系统</b>中如何按下<b class='flag-5'>PCIe</b>的复位键

    基于PCIE总线的PLX8311芯片硬件设计原理图

    这是基于PCIe总线的PLX8311的硬件设计原理图(内附Verilog程序)
    发表于 11-03 19:58

    【FPGA干货分享三】基于FPGA的LBS控制器设计

    协议,它可用于通讯线路卡、监视系统、工业控制、IP媒体服务器和医疗成像系统,以实现可升级的高带宽互联。采用 根联合体或终端点的PCI嵌入式系统
    发表于 01-29 14:09

    自己做的PXIe板卡,插在NI的PXIe-1082背板上不识别

    各位大神,我使用PEX8311片做了一块PXIe板卡,插在NI的PXIe-1082背板上不识别,但是使用PXIe转PCIe转接卡转接到普通电脑上可以识别,功能调试没有问题。不知道是什
    发表于 08-16 09:54

    PEX8311 DMA 没反应?

    做了一块8311+FPGA的板子,电脑能成功识别到板卡。用PLXMON 工具测试DMA 是没反应,大概是什么原因造成的 有没有大神了解一点,
    发表于 05-16 17:41

    如何构建一个PCI-E架构的实时海量存储系统

    如何设计一个基于PC主机北的长时间不间断高速采集和存储的系统。本文最后介绍了利用PC主机、PCI-E接口芯片PEX8311、Switch芯片
    发表于 04-15 06:32

    如何利用VxWorks操作系统实现PC/104-CAN适配卡的驱动系统设计

    求一种基于VxWorks操作系统实现PC/104-CAN适配卡的驱动系统设计
    发表于 04-28 06:17

    PEX8311 pdf datasheet

    The ExpressLane™ PEX 8311 1-lane PCI Express (PCIe) to 32-bit, 66MHz generic local bus bridge
    发表于 10-13 09:52 85次下载

    Linux操作系统

    linux的教学内容1 、Linux概述 2 、Linux操作系统安装3、 Linux的内核 4 、Li
    发表于 04-10 16:54 0次下载
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系统</b>

    Linux操作系统原理及应用

    Linux操作系统原理及应用 1.1  操作系统的地位 1.2  操作系统的功能 1.3  操作系统的发
    发表于 04-28 14:53 0次下载

    linux上模拟uCOS-II实时操作系统实现

    本文主要提供了一种可行的,把在windows 系统实现的uCOS-II 操作系统移植到linux 操作系统上的
    发表于 08-13 11:41 32次下载

    嵌入式Linux操作系统在PC104上的实现

            论文简要分析了Linux 操作系统启动过程,介绍了Busybox、MiniGUI 等优秀的嵌入式专用软件,以及以PC104 主板和CF(Com
    发表于 09-05 10:06 38次下载

    Linux操作系统实现了在PC104 上的裁减和移植

    论文简要分析了Linux 操作系统启动过程,介绍了Busybox、MiniGUI 等优秀的嵌入式专用软件,以及以PC104 主板和CF(CompactFlash)卡构建带图象用户界面(GUI)的嵌入式
    发表于 06-24 15:37 31次下载

    什么是Linux操作系统

    什么是Linux操作系统  简单地说,Linux是一套
    发表于 12-26 12:04 1371次阅读

    基于FPGA的PEX8311的LBS控制器的实现

    PLX的一款桥芯片PEX8311可将标准处理器,本文就是基于PEX8311和FPGA来实现PCIe标准1x传输。
    发表于 12-22 10:28 4701次阅读
    基于FPGA的<b class='flag-5'>PEX8311</b>的LBS控制器的<b class='flag-5'>实现</b>