完整版基于PCIe的DMA式数据采集系统.docx

上传人:b****6 文档编号:5836241 上传时间:2023-01-01 格式:DOCX 页数:10 大小:92.08KB
下载 相关 举报
完整版基于PCIe的DMA式数据采集系统.docx_第1页
第1页 / 共10页
完整版基于PCIe的DMA式数据采集系统.docx_第2页
第2页 / 共10页
完整版基于PCIe的DMA式数据采集系统.docx_第3页
第3页 / 共10页
完整版基于PCIe的DMA式数据采集系统.docx_第4页
第4页 / 共10页
完整版基于PCIe的DMA式数据采集系统.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

完整版基于PCIe的DMA式数据采集系统.docx

《完整版基于PCIe的DMA式数据采集系统.docx》由会员分享,可在线阅读,更多相关《完整版基于PCIe的DMA式数据采集系统.docx(10页珍藏版)》请在冰豆网上搜索。

完整版基于PCIe的DMA式数据采集系统.docx

完整版基于PCIe的DMA式数据采集系统

权利要求书

1、一种基于PCIe的DMA式数据采集系统,其特征是它包括触发控制器、DMA控制器、报文发送引擎、报文接收引擎和PCIe收发控制器,所述的PCIe收发控制器作为逻辑分析模块的控制信号输入端连接逻辑分析模块所在产品系统的CPU,PCIe收发控制器的控制信号输出端连接报文接收引擎的控制信号输入端,报文接收引擎的一控制信号输出端连接DMA控制器的一对应控制信号输入端,另一控制信号输出端连接触发控制器的控制信号输入端,触发控制器作为逻辑分析模块的逻辑数据输入端采集设计实体模块的触发条件的逻辑数据,触发控制器的控制信号输出端连接DMA控制器的对应控制信号输入端,DMA控制器的控制信号端与报文发送引擎双向连接,报文发送引擎的逻辑数据输入端连接设计实体模块的对应逻辑数据输出端,报文发送引擎的逻辑数据输出通过PCIe收发控制器输出至逻辑分析模块所在产品系统的CPU。

2、根据权利要求1所述的基于PCIe的DMA式数据采集系统,其特征是所述的设计实体模块指烧结到FPGA芯片里的逻辑代码,能实现产品所要求的功能,所述的集成化逻辑分析模块实现的功能是采集设计实体模块中相应的信号以实现的。

3、根据权利要求1所述的基于PCIe的DMA式数据采集系统,其特征是所述的触发控制器用于判断报文接收引擎发送过来的触发条件,直到它从设计实体模块采集的逻辑信号满足判断条件,输出控制信号至DMA控制器进行数据采集操作,DMA控制器产生当前发送报文所需的目的地址和报文长度字段,给报文发送引擎,在报文发送引擎完成一次DMA传输后,将结束信息送给DMA控制器。

4、根据权利要求1所述的基于PCIe的DMA式数据采集系统,其特征是所述的DMA控制器包括RAM,通过PCIe初始化配置将这块RAM映射到CPU的内存空间里,CPU通过对这片空间写配置命令字,即可实现CPU对本系统实施命令控制;所述的PCIe初始化配置是指CPU初始化PCIe收发控制器,分配总线号,将DMA控制器里的RAM映射到系统存储器空间里,从而使FPGA成为CPU的PCIe总线上可以访问的挂接设备。

5、根据权利要求1所述的基于PCIe的DMA式数据采集系统,其特征是所述的报文接收引擎用于接收CPU下发的指令报文,对指令报文解析并将相应命令控制字输入到DMA控制器中。

6、根据权利要求1所述的基于PCIe的DMA式数据采集系统,其特征是所述的PCIe收发控制器用于接收来自CPU的命令报文,将事务层报文转发给报文接收引擎;同时,将来自报文发送引擎的事务层报文,发送到CPU。

7、根据权利要求1所述的基于PCIe的DMA式数据采集系统,其特征是该分析模块包括以下工作步骤:

首先,PCIe收发控制器接收来自根复合体的PCIe链路报文,转发该PCIe链路报文到报文接收引擎;报文接收引擎解开报文,提取PCIe链路报文里的触发开关、触发条件、触发值和触发无关项,以及采集数据存储的起始地址和存储深度信息;将上述信息送到DMA控制器;报文接收引擎将触发开关,触发条件,触发值和触发无关项信息送到触发控制器;根据实体模块中采集的数据来判断,当触发点到来时,触发控制器发出采集使能信号至DMA控制器;DMA控制器产生当前发送报文所需的目的地址和报文长度字段,给报文发送引擎;在报文发送引擎中,根据采集的实体中的数据产生PCIe链路报文,并送给PCIe收发控制器;PCIe收发控制器通过根复合体将大量采集数据传送至逻辑分析模块所在产品系统的内存中。

8、一种FPGA,包括根据权利要求1所述的基于PCIe的DMA式数据采集系统和设计实体模块,设计实体模块的逻辑数据输出端与逻辑分析模块的数据信号输入端相连,逻辑分析模块的数据信号输出端与根复合体的数据信号输入端相连,逻辑分析模块的控制信号输入端通过PCIe控制链路与根复合体的控制信号输出端相连,根复合体与CPU的控制信号端双向连接。

9、根据权利要求8所述的FPGA,其特征是所述的根复合体是PCIe链路的交换开关,用于挂载PCIe设备,交换PCIe链路报文,输出逻辑数据至内存中存储。

说明书

一种基于PCIe的DMA式数据采集系统

技术领域

本发明涉及FPGA开发领域,尤其是基于PCIe链路的高效链式DMA控制采集数据的设计与实现,具体地说是一种基于PCIe的DMA式数据采集系统。

背景技术

目前,随着现代处理器技术的发展,在互连领域中,使用高速差分总线替代并行总线是大势所趋。

与单端并行信号相比,高速差分信号可以使用更高的时钟频率,从而使用更少的信号线,完成之前需要许多单端并行数据信号才能达到的总线带宽。

PCI总线使用并行总线结构,在同一条总线上的所有外部设备共享总线带宽,而PCIe总线使用了高速差分总线,并采用端到端的连接方式,因此在每一条PCIe链路中只能连接两个设备。

这使得PCIe与PCI总线采用的拓扑结构有所不同。

PCIe总线除了在连接方式上与PCI总线不同之外,还使用了一些在网络通信中使用的技术,如支持多种数据路由方式,基于多通路的数据传递方式,和基于报文的数据传送方式,并充分考虑了在数据传送中出现服务质量QoS(QualityofService)问题。

PCIe总线采用了串行连接方式,并使用数据包(Packet)进行数据传输,采用这种结构有效去除了在PCI总线中存在的一些边带信号,如INTx和PME#等信号。

在PCIe总线中,数据报文在接收和发送过程中,需要通过多个层次,包括事务层、数据链路层和物理层。

PCIe总线的层次结构如图所示。

PCIe总线的层次组成结构与网络中的层次结构有类似之处,但是PCIe总线的各个层次都是使用硬件逻辑实现的。

在PCIe体系结构中,数据报文首先在设备的核心层(DeviceCore)中产生,然后再经过该设备的事务层(TransactionLayer)、数据链路层(DataLinkLayer)和物理层(PhysicalLayer),最终发送出去。

而接收端的数据也需要通过物理层、数据链路和事务层,并最终到达DeviceCore。

在FPGA(现场可编程门阵列)芯片设计工作中,由于设计存在错误或缺陷,设计人员需要通过设计实体中逻辑信号变化情况来分析系统中错误源头。

这时,设计人员可以利用逻辑分析仪来分析系统,也可以利用Altera公司的SignalTap工具或Xilinx公司的ChipScope工具抓取波形来分析系统。

然而利用逻辑分析仪设计的话需要把信号拉到空闲引脚上,这样非常不方便。

如果利用SignalTap或ChipScope的话,虽然能很方便地采集所需信号,但是这个二者又局限于芯片内部的BlockRAM的剩余量限制,往往大型设计中BlockRAM没有足够的余量来供SignalTap或ChipScope使用,这样就使得工具采集的信号量非常少,在很多情况下不能满足需要。

发明内容

本发明的目的是针对上述FPGA(现场可编程门阵列)芯片设计中存在的问题,提出一种基于PCIe的DMA式数据采集系统。

本发明的技术方案是:

一种基于PCIe的DMA式数据采集系统,其特征是它包括触发控制器、DMA控制器、报文发送引擎、报文接收引擎和PCIe收发控制器,所述的PCIe收发控制器作为逻辑分析模块的控制信号输入端连接逻辑分析模块所在产品系统的CPU,PCIe收发控制器的控制信号输出端连接报文接收引擎的控制信号输入端,报文接收引擎的一控制信号输出端连接DMA控制器的一对应控制信号输入端,另一控制信号输出端连接触发控制器的控制信号输入端,触发控制器作为逻辑分析模块的逻辑数据输入端采集设计实体模块的触发条件的逻辑数据,触发控制器的控制信号输出端连接DMA控制器的对应控制信号输入端,DMA控制器的控制信号端与报文发送引擎双向连接,报文发送引擎的逻辑数据输入端连接设计实体模块的对应逻辑数据输出端,报文发送引擎的逻辑数据输出通过PCIe收发控制器输出至逻辑分析模块所在产品系统的CPU。

本发明的设计实体模块指烧结到FPGA芯片里的逻辑代码,能实现产品所要求的功能,所述的集成化逻辑分析模块实现的功能是采集设计实体模块中相应的信号以实现的。

根复合体是PCIe链路的交换开关,用于挂载PCIe设备即用于挂载具有PCIe收发控制器的FPGA,交换PCIe链路报文,是PCIe链路的重要组成部分。

本发明的触发控制器用于判断报文接收引擎发送过来的触发条件,直到它从设计实体模块采集的逻辑信号满足判断条件,输出控制信号至DMA控制器进行数据采集操作,DMA控制器产生当前发送报文所需的目的地址和报文长度字段,给报文发送引擎,在报文发送引擎完成一次DMA传输后,将结束信息送给DMA控制器。

本发明的DMA控制器包括RAM,通过PCIe初始化配置将这块RAM映射到CPU的内存空间里,CPU通过对这片空间写配置命令字,即可实现CPU对本系统实施命令控制;所述的PCIe初始化配置是指CPU初始化PCIe收发控制器,分配总线号,将DMA控制器里的RAM映射到系统存储器空间里,从而使FPGA成为CPU的PCIe总线上可以访问的挂接设备。

本发明的报文接收引擎用于接收CPU下发的指令报文,对指令报文解析并将相应命令控制字输入到DMA控制器中。

本发明的PCIe收发控制器用于接收来自CPU的命令报文,将事务层报文转发给报文接收引擎;同时,将来自报文发送引擎的事务层报文,发送到CPU。

本发明的分析模块包括以下工作步骤:

首先,PCIe收发控制器接收来自根复合体的PCIe链路报文,转发该PCIe链路报文到报文接收引擎;报文接收引擎解开报文,提取PCIe链路报文里的触发开关、触发条件、触发值和触发无关项,以及采集数据存储的起始地址和存储深度信息;将上述信息送到DMA控制器;报文接收引擎将触发开关,触发条件,触发值和触发无关项信息送到触发控制器;根据实体模块中采集的数据来判断,当触发点到来时,触发控制器发出采集使能信号至DMA控制器;DMA控制器产生当前发送报文所需的目的地址和报文长度字段,给报文发送引擎;在报文发送引擎中,根据采集的实体中的数据产生PCIe链路报文,并送给PCIe收发控制器;PCIe收发控制器通过根复合体将大量采集数据传送至逻辑分析模块所在产品系统的内存中。

一种FPGA,包括基于PCIe的DMA式数据采集系统和设计实体模块,设计实体模块的逻辑数据输出端与逻辑分析模块的数据信号输入端相连,逻辑分析模块的数据信号输出端与根复合体的数据信号输入端相连,逻辑分析模块的控制信号输入端通过PCIe控制链路与根复合体的控制信号输出端相连,根复合体与CPU的控制信号端双向连接。

本发明的根复合体是PCIe链路的交换开关,用于挂载PCIe设备即用于挂载具有PCIe收发控制器的FPGA,交换PCIe链路报文,输出逻辑数据至内存中存储。

本发明的有益效果:

本发明不仅可以实现SignalTap或ChipScope的所有功能,而且还可以解决大型设计中BlockRAM余量不够用的情况,因为此时数据不是存在芯片内部而是导出到CPU侧的内存中,只要内存允许便可以采集足够量的数据。

另外,由于触发模块是寄存器级代码,那么可以通过修改这里的代码来实现更为复杂的触发设置,远比SignalTap或ChipScope灵活得多。

在一般大型设计中,CPU、FPGA共存于一个系统是很常见的,而PCIe链路又是很多高速系统常用通信通道,所以本方案的适用场合广泛。

本模块能根据设定好的触发条件对逻辑信号进行采集,再将采集的数据通过PCIe链路上传给CPU,CPU再进行下一步工作。

这些触发条件的设置方式是测试人员利用CPU通过PCIe链路将命令下达本模块,完成触发条件设置。

本发明的逻辑分析模块支持触发采数,支持不同时钟域数据总线采集,支持任意宽度的总线数据采集、但是采集数据带宽不能超过线路带宽,支持采集期间数据丢失及线路阻塞告警,支持触发时间点之前一小段数据采集,通过配置命令,决定输入端口的部分比特位作为采集对象,满足PCIe传输协议要求。

附图说明

图1是本发明的结构示意图。

图2是本发明的使用示意图。

图3是本发明的工作流程图。

具体实施方式

下面结合附图和实施例对本发明作进一步的说明。

如图1所示,一种基于PCIe的DMA式数据采集系统,它包括触发控制器、DMA控制器、报文发送引擎、报文接收引擎和PCIe收发控制器,所述的PCIe收发控制器作为逻辑分析模块的控制信号输入端连接逻辑分析模块所在产品系统的CPU,PCIe收发控制器的控制信号输出端连接报文接收引擎的控制信号输入端,报文接收引擎的一控制信号输出端连接DMA控制器的一对应控制信号输入端,另一控制信号输出端连接触发控制器的控制信号输入端,触发控制器作为逻辑分析模块的逻辑数据输入端采集设计实体模块的触发条件的逻辑数据,触发控制器的控制信号输出端连接DMA控制器的对应控制信号输入端,DMA控制器的控制信号端与报文发送引擎双向连接,报文发送引擎的逻辑数据输入端连接设计实体模块的对应逻辑数据输出端,报文发送引擎的逻辑数据输出通过PCIe收发控制器输出至逻辑分析模块所在产品系统的CPU。

本发明的设计实体模块指烧结到FPGA芯片里的逻辑代码,能实现产品所要求的功能,所述的集成化逻辑分析模块实现的功能是采集设计实体模块中相应的信号以实现的。

根复合体是PCIe链路的交换开关,用于挂载PCIe设备即用于挂载具有PCIe收发控制器的FPGA,交换PCIe链路报文,是PCIe链路的重要组成部分。

本发明的触发控制器用于判断报文接收引擎发送过来的触发条件,直到它从设计实体模块采集的逻辑信号满足判断条件,输出控制信号至DMA控制器进行数据采集操作,DMA控制器产生当前发送报文所需的目的地址和报文长度字段,给报文发送引擎,在报文发送引擎完成一次DMA传输后,将结束信息送给DMA控制器。

本发明的DMA控制器包括RAM,通过PCIe初始化配置将这块RAM映射到CPU的内存空间里,CPU通过对这片空间写配置命令字,即可实现CPU对本系统实施命令控制;所述的PCIe初始化配置是指CPU初始化PCIe收发控制器,分配总线号,将DMA控制器里的RAM映射到系统存储器空间里,从而使FPGA成为CPU的PCIe总线上可以访问的挂接设备。

本发明的报文接收引擎用于接收CPU下发的指令报文,对指令报文解析并将相应命令控制字输入到DMA控制器中。

本发明的PCIe收发控制器用于接收来自CPU的命令报文,将事务层报文转发给报文接收引擎;同时,将来自报文发送引擎的事务层报文,发送到CPU。

本发明的分析模块包括以下工作步骤:

首先,PCIe收发控制器接收来自根复合体的PCIe链路报文,转发该PCIe链路报文到报文接收引擎;报文接收引擎解开报文,提取PCIe链路报文里的触发开关、触发条件、触发值和触发无关项,以及采集数据存储的起始地址和存储深度信息;将上述信息送到DMA控制器;报文接收引擎将触发开关,触发条件,触发值和触发无关项信息送到触发控制器;当触发点到来时,触发控制器发出采集使能信号至DMA控制器;DMA控制器产生当前发送报文所需的目的地址和报文长度字段,给报文发送引擎;在报文发送引擎中,根据采集的实体中的数据产生PCIe链路报文,并送给PCIe收发控制器;PCIe收发控制器通过根复合体将大量采集数据传送至CPU。

一种FPGA,包括基于PCIe的DMA式数据采集系统和设计实体模块,设计实体模块的逻辑数据输出端与逻辑分析模块的数据信号输入端相连,逻辑分析模块的数据信号输出端与根复合体的数据信号输入端相连,逻辑分析模块的控制信号输入端通过PCIe控制链路与根复合体的控制信号输出端相连,根复合体与CPU的控制信号端双向连接。

本发明的根复合体是PCIe链路的交换开关,用于挂载具有PCIe收发控制器的FPGA,交换PCIe链路报文,输出逻辑数据至内存中存储。

具体实施时:

1、触发控制器详细设计

功能介绍:

根据用户设定的触发条件,在满足触发的条件下指示数据采集。

配置命令决定输入端口部分比特最为采集对象。

具体实现:

触发控制器功能就是判断触发条件,直到采集信号满足判断条件后输出结果通知DMA控制器进行数据采集操作。

触发控制器下有这么几个寄存器:

R_collect_start,R_compare_on_off,R_compare_condition,R_compare_value,R_value_irrelvant。

R_collect_start用来控制采集操作的开始和停止。

R_compare_on_off用来控制是否进行触发操作,即有效时进行触发判断,否则就不需要触发判断直接通知下级模块进行采集数据。

R_compare_condition、R_compare_value用来表示进行何种触发判断的条件及相应的值,比如要进行一次判断采集信号等于某个值时触发采集,那么前者表达相等条件,后者表达相等的值。

R_value_irrelvant表示无关项,就是对R_compare_value中某些比特位不关心,不参与判断过程。

逻辑过程:

当R_collect_start及R_compare_on_off有效后,根据R_compare_condition的值决定采用哪种逻辑判断方式(等于、不等于、小于、大于之类),并根据R_value_irrelvant的值滤除无关比特位,然后将采样信号的值和R_compare_value做比较,当满足逻辑判断条件时,则触发下级模块采集信号。

R_compare_on_off无效时,则表示不需要触发操作,只要R_collect_start有效后即可进行采集工作。

2、DMA控制器模块详细设计

功能介绍:

负责寄存数据传输中各种状态控制字。

具体实现:

这里是一块片内RAM,通过PCIe配置将这块RAM映射到CPU的内存空间里,CPU通过对这片空间写配置命令字,即可实现CPU对本系统实施命令控制。

这块RAM中命令控制字格式如下表所示:

包含了启停控制寄存器,触发开关寄存器,触发条件,触发的值和触发无关项寄存器,以及采集数据存储的起始地址寄存器和存储深度寄存器。

存储起始地址寄存器:

保存内存地址,即DMA传输的目标地址。

当地址寄存器完成写操作,DMA状态机将被启动。

存储深度寄存器:

其初始值为一次DMA传输数据的大小,PCIe每传送一个数据,字节寄存器的值就减1,减到0则DMA停止传输。

上述这种方式为非链式DMA的主模式写操作,一次DMA传输只有一组控制字表。

CPU首先写控制状态寄存器、中断屏蔽寄存器、字节寄存器、地址寄存器,而后状态机启动;当外部FIFO数据准备好,数据先传到数据通道RAM,再以DMA方式写到目标地址;判断DMA是否完成或出错,写中断状态寄存器,发出中断信号;主机收到中断后,读中断状态寄存器确定中断类型,如果发现DMA完成,则处理数据,如果发现DMA出错,则丢弃数据。

3、报文发送引擎模块详细设计

功能介绍:

应答CPU端的配置寄存器读请求;DMA方式传输采集数据和发送中断消息唤醒CPU,处理采集数据。

具体实现:

根据PCIe协议中事务层报文结构进行封包工作。

4、报文接收引擎模块详细设计

功能介绍:

负责接收CPU下发的指令报文、负责对指令报文解析并将相应命令控制字写到DMA控制器模块中。

具体实现:

根据PCIe协议中事务层报文结构进行解包工作。

5、PCIe收发控制器详细设计

功能介绍:

可采用Xilinx提供的PCIe硬核;用户接口的本地链路成帧接口;包化接口,有帧起始(sof)和帧结束(eof)的包标记信号;传输和接收方向可进行节制或中止事务传输;帧错误检测与支持;多通道配置支持:

x1、x2、x4和x8;每通道2.5Gbps带宽;自动初始化、恢复与通道维护,对用户应用是透明的;利用XilinxCoreGenerator配置相关信息后自动生成。

详细设计:

Xilinx提供的EndpointBlockPlusforPCIe解决方案适用于Virtex-5、Virtex6及Virtex7FPGA架构,是一种可靠的带宽可缩放串行互联架构模块。

其顶层功能模块包括系统(SYS)接口、PCI-Express(PCI-EXP)接口、配置(CFG)接口以及事务(TRN)接口。

核使用数据包在各模块之间交换信息。

数据包在事务层和数据链路层形成,用来承载从发送元件到接收元件的信息。

传输的数据包中包括在各层处理数据包所需的必要信息。

在接收端,各层接收模块处理输入的数据包,剥离相关信息,然后将数据包传递到下一层。

于是,接收到的数据包从物理层表现为转换为数据链路层表现形式和事务层表现形式。

EndpointBlockPlusforPCIe包括顶层信号接口,这些接口按接收方向、发送方向和双向共用信号分组。

下面主要对各个接口进行分别介绍。

系统(SYS)接口:

系统(SYS)接口信号由系统复位信号sys_reset_n和系统时钟信号sys_clk组成,如下表所示。

功能

信号名称

方向

描述

系统复位

sys_reset_n

输入

异步低有效信号

系统时钟

sys_clk

输入

参考时钟:

100MHz或250MHz

系统复位信号是异步低有效输入信号。

sys_reset_n的有效置位致使整个核硬复位。

系统输入时钟的频率必须是100MHz或250MHz,在COREGenerator的GUI中选定。

PCIExpress接口:

PCIExpress(PCI_EXP)接口信号由按多个通道组织的收发差分信号对组成。

每个PCIExpress通道由一对发送差分信号{pci_exp_txp、pci_exp_txn}和一对接收差分信号{pci_exp_rxp、pci_exp_rxn}组成。

一通道核仅支持通道0;四通道核支持通道0-3;八通道核支持通道0-7。

事务接口:

事务(TRN)接口为用户设计提供生成和使用TLP的机制,分为共用事务接口、发送事务接口以及接收事务接口。

配置接口:

配置(CFG)接口供用户设计用来检查EndpointforPCIe配置空间的状态。

用户提供一个10位配置地址,该配置地址选择1024个配置空间双字(DWORD)寄存器之一。

端点经32位数据输出端口返回所选寄存器的状态。

本发明的逻辑分析模块运行时,要进行一次数据采集工作,CPU先预留一定长度的空间用来存储采集数据,然后CPU向对端PCIe设备映射的内存空间里写入配置命令,包括触发开关、触发条件、触发值、触发无关项、存储起始地址和存储深度,通过回读确认配置正确后,就可以发送FPGA端的DMA控制器启动命令。

CPU即可进入进入空闲状态或处理其他任务,直到收到相应中断后,读取存储采集数据空间内容,转换成标准波形文件,即VCD格式的文件。

这时,我们便可以利用类似modelsim波形工具查看这个波形文件,来分析我们设计中存在的错误。

本发明未涉及部分均与现有技术相同或可采用现有技术加以实现。

说明书摘要

一种基于PCIe的DMA式数据采集系统,它包括触发控制器、DMA控制器、报文发送引擎、报文接收引擎和PCIe收发控制器。

本发明不仅可以实现SignalTap或ChipScope的所有功能,还可以解决大型设计中BlockRAM余量不够用的情况,因为此时数据不是存在芯片内部而是导出到CPU侧的内存中,只要内存允许便可以采集足够量的数据。

另外,由于触发模块是寄存器级代码,那么可以通过修改这里的代码来实现更为复杂的触发设置,远比SignalTap或ChipScope灵活得多。

在大型设计中,CPU、FPGA共存于一个系统很常见,而PCIe链路又是很多高速系统常用通道,因此本方案的适用场合广泛。

说明书附图

图1

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1