CN100593161C - 一种点到多点数据分配dma控制器实现方法 - Google Patents
一种点到多点数据分配dma控制器实现方法 Download PDFInfo
- Publication number
- CN100593161C CN100593161C CN200810124071A CN200810124071A CN100593161C CN 100593161 C CN100593161 C CN 100593161C CN 200810124071 A CN200810124071 A CN 200810124071A CN 200810124071 A CN200810124071 A CN 200810124071A CN 100593161 C CN100593161 C CN 100593161C
- Authority
- CN
- China
- Prior art keywords
- dma
- port
- descriptor
- data
- write
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Bus Control (AREA)
Abstract
一种点到多点的数据分配DMA控制器实现方法,步骤如下:(1)构建一个DMA读端口,从外部数据空间读入数据到DMA内部缓冲器,通过配置DMA读端口的描述符,实现多次DMA读传输过程;(2)构建多个DMA写端口,每个写端口对应于各自的应用接口;(3)为DMA写端口配置不同描述符,通过控制写端口的目标地址增加方式以及屏蔽对特定地址写操作实现数据定制;(4)构建一个状态机统一控制DMA控制器的读端口描述符和各个写端口描述符的加载及DMA的启动和停止,在读端口读周期结束后立即启动所有写端口的总线写周期,根据写端口描述符产生相应的外部写时序,实现点到多点的数据同步转发。
Description
一、技术领域
本发明涉及把数据从一个源端口向多个目标端口同步转发和定制的实现方法,适用于需要实时传输过程量采集数据的电力系统继电保护领域和实时工业过程控制领域,以及在其他需要共享数据源并对点到多点的数据分配的响应速度有严格要求的场合,如在千兆以太网数据交换设备中实现数据多点转发和定制的应用等。具体地说,本发明涉及一种点到多点的数据分配DMA(直接存储存取方式)控制器的实现方法。
二、背景技术
在实时数据分配系统设计时,为了有效共享数据和系统提高响应速度,需要将同一个数据源按不同应用要求同步转发到不同应用接口同时完成数据定制。
目前现有的点到多点的数据分配方法主要包括以下两种方法:1.为每个定制的应用设计一个查找表,利用MCU将数据源读出,按照各个查找表对数据的定制要求,确定是否转发数据元素到该应用。2.利用SGDMA(scatter-gather DMA)或链表式DMA依次将一个数据源重复复制到不同的应用接口。
目前现有的点到多点的数据分发方法的不足之处:
1.MCU在处理数据搬移时由于要执行大量的循环操作和查表及比较操作,效率比较低,而且利用MCU处理数据分配任务时不能保证多个应用接口并发处理,只能串行处理。为了满足实时性,需要MCU具有很高的主频和带宽,增加主频和带宽意味着增加系统成本。
2.SGDMA或链表式DMA可以实现从一个源到多个目标的简单数据分配,但不能对特定的数据元素进行屏蔽和筛选,而且其数据分配策略是从一个端口到另一个端口串行进行的,不能保证数据向多个应用同步写入。
参考文献:
1.谢俊赵峰实时图像处理系统中DMA控制器的设计和验证电子技术应用2007年第1期
2.唐威刘佑宝,刘军华.DMA控制器件的设计和仿真.微电子学和计算机,2002,(12).
3.柳利军 周敏锋 千兆以太网交换芯片DMA单元的FPGA实现光通信技术2006,(5)
4.蔡菲娜 曹祁 利用FPGA实现DMA方式的高速数据采集微电子学与计算机2005.3.
5.刘煌峰 高雪莲 一种多通道DMA控制器的IP核设计中国电力教育2007
6.Altera corporation Scatter-Gather DMA Controller Core Quartus IIhandbook,volume 5 may 2007
三、发明内容
本发明目的是提出一种由一个数据源向多个应用接口进行实时分配的方法。
本发明是通过这样方案实现的:
(1)构建一个DMA读端口,从外部数据空间读入数据到DMA内部缓冲器,该读端口包含一个描述符表,通过配置DMA读端口的描述符,实现多次DMA读传输过程(每次DMA传输包含多个外部存储器的读时序,数量由描述符确定)。
(2)构建多个DMA写端口,使每个写端口对应于一个应用接口,DMA写端口负责将DMA控制器的内部缓冲器的数据写入到各自的应用接口,每个写端口包含一个独立的描述符表。
(3)通过为DMA写端口配置不同描述符,控制写端口的目标地址增加方式和屏蔽对特定地址写操作实现数据定制。
(4)构建一个状态机统一控制DMA控制器的读端口描述符和各个写端口描述符的加载及DMA的启动和停止,在读端口读周期结束后立即启动所有写端口的总线写周期,根据写端口描述符产生相应的外部写时序,实现点到多点的数据同步转发。
点到多点的数据分配DMA控制器实现方法适合需要将一个数据源高速同步并且可定制地分配到多个应用接口的场合。
本发明的特点:(1).具有一个读端口和多个写端口,所有的写端口共享数据总线,简化设计逻辑,通过描述符控制某个写端口屏蔽对特定地址的写操作,实现数据元素按应用要求定制并同步写入到多个不同的应用端口;(2).利用同一个状态机控制DMA读端口和所有的写端口的接口启停和传输过程,状态机设计简单;
(3).读写端口的描述符表分开采用不同的描述符表指针,但所有的描述符表指针都由一个统一的描述符表地址计数器生成,具有严格的相关性,保证读写端口之间描述符读取同步;
(4).DMA读写端口配置同时从各自的描述符表读取配置,DMA描述符执行速度快。
(5).通过对写端口描述符的配置实现应用接口对数据元素的定制,而且多个写端口并发工作,数据吞吐量大。
(6).DMA描述符采用简单数组式描述符表构成链式DMA,可以用简单逻辑控制描述符加载,每个描述符定义一次数据传输,DMA一次传输结束后自动读取下一个描述符并重新配置DMA的读写端口进行新的传输,当描述符为0时结束整个DMA传输.
四、附图说明
图1是本发明点到多点的数据分配DMA控制器系统框图
图2是本发明点到多点的数据分配DMA控制器的状态变迁图
五、具体实施方式
3.1.点到多点的数据分配DMA控制器构成
点到多点的数据分配DMA控制器如图1所示,DMA控制器由一个读端口和多个写端口构成,每个控制端口关联一个DMA描述符表。整个控制器由一个状态机控制,在启动信号DMA_START的控制下描述符读取和数据传输过程。由读端口根据描述符配置依次从外部接口读入数据元素至内部DMA缓冲,写端口总线周期由读端口同步启动,各个写端口根据描述符把数据元素写入对应的接口。
3.2.读端口及描述符表实现
点到多点的数据分配DMA控制器的读端口由读端口状态机根据读描述符控制数据传输,每个描述符由32位组<D31,….D0>数据构成,描述符表结构如下所示:
<D31,…,D16>:读端口源地址DMA SAddr
<D15,D14,D13,D12>一读端口地址增长方式,
<0000>-允许每个总线读周期自增源地址
<0001>-固定地址读模式
<0010>到<1111>-未定义
<D11,…,D0>:一次传输数据长度DMA_LEN
3.3.DMA写端口及描述符表实现
点到多点的数据分配DMA控制器的写端口由状态机根据写描述符控制,每个描述符由32位组<D31,….D0>数据构成,描述符表结构如下所示:
<D31,…,D16>:写端口目标地址DMA_DAddr
<D15,D14>:写端口地址增长方式,定义如下,
<00>:固定地址写模式
<01>:每次总线写周期都自增目标地址
<10>:根据随后的写掩码精确控制,允许总线写时自增目标地址
<11>:每个总线写周期自增目标地址,但由随后的写掩码控制是否产生写时序
<D13,…,D0>:写端口掩码,每一位对应一次写操作,
0:本次写将被忽略,不产生写操作
1:本次写传输产生总线写时序
由于本实现使用14位的掩码对应14个写操作,所以如果要对写端口的数据进行定制,则一次传输不能超过十四个数据元素,可以通过增加描述符的数量或增加写端口描述符的宽度实现对更多数据元素的定制。
3.4.DMA控制器的状态变迁图,如图2所示
本发明采用图2所示的状态机来控制DMA的描述符读和数据传输过程。状态变迁图的各个状态描述如下:
DMA_IDLE:空闲状态,系统上电或复位状态,描述符表指针指向描述符表入口,在DMA控制器接收到启动信号DMA_START后转入DMA_READ_CONFIG状态,读取描述符;
DMA_DONE:DMA完成数据传输后状态,描述符表指针指向描述符表入口,在接收到启动信号DMA_START后转入DMA_READ_CONFIG状态,读取描述符;
DMA_READ_CONFIG:描述符读状态,DMA控制器从配置存储空间分别为读端口和各个写端口读取描述符,随后自加描述表指针,使其指向下一个描述符,并转入状态DMA_PRE_TRANSFER配置读写端口;
DMA_PRE_TRANSFER:DMA配置状态,配置完成后转入DMA_DATA_TRANSFER;
DMA_DATA_TRANSFER:DMA数据传输状态,在此状态,DMA读端口从外部总线读入一个数据元素,存入DMA缓冲器,随后DMA写端口启动外部写周期,将DMA缓冲器中的数据按照写端口的配置写入相应接口,或者忽略某个写端口的写操作(由写端口描述符确定)。
3.6.读写端口之间同步
本发明为读端口和每个写端口都设计了配置存储空间,它们共享同一个描述符表地址计数器,由同一个状态机控制读端口和写端口,当DMA控制器处于DMA_READ_CONFIG状态时,读写端口根据同一个描述符表地址计数器,生成各自的描述符表指针,同时读取描述符。每个DMA传输周期中传输的数据元素多少由读端口描述符控制,描述符表地址计数器在DMA_START信号控制下回归到表首,每个读端口的读周期在所有写端口都将产生一个写周期,但是否产生外部写时序由写端口的描述符控制,从而实现读写端口之间的同步和数据定制。实现时可以根据读写端口的速率和位宽,分别增加读写端口等待周期,并按实际流量要求配置DMA内部缓冲器。
3.7.数据定制的实现
本发明通过对写端口的描述符进行配置实现数据定制,具体实现方法如下:
3.7.1.实现数据分配
若应用不需要定制数据,只是简单地将源数据复制到多个目标,则根据源和目标接口的性质,确定读写端口的地址和地址增长方式以及传输长度,接口为FIFO模式时采用固定地址模式,接口为Memory模式时采用地址自增模式,实际使用时可以根据应用要求设计不同的地址增长模式。DMA一次数据传输长度由读端口确定。
3.7.2.实现数据定制
根据源端口的外设性质,确定读端口的地址增长模式,参见3.7.1。对写端口按应用要求配置描述符数组.例如需要将源端口的数据按表1的方式写入目标端口0和目标端口1
表1 数据定制表
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
d<sub>0</sub> | d<sub>1</sub> | d<sub>2</sub> | d<sub>3</sub> | d<sub>4</sub> | d<sub>5</sub> | d<sub>6</sub> | d<sub>7</sub> | d<sub>8</sub> | d<sub>9</sub> | d<sub>10</sub> | d<sub>11</sub> | d<sub>12</sub> | d<sub>13</sub> |
d<sub>0</sub> | d<sub>1</sub> | d<sub>2</sub> | d<sub>6</sub> | d<sub>7</sub> | d<sub>8</sub> | d<sub>9</sub> | d<sub>10</sub> | d<sub>11</sub> | d<sub>12</sub> | d<sub>13</sub> | d<sub>14</sub> | d<sub>15</sub> | d<sub>16</sub> |
表1定义了一次DMA数据定制传输过程,第一行为源端口地址偏移和源数据读取顺序,通过DMA读端口描述符定义本次传输的读地址和长度。第二行定义数据向端口0传输方式,将数据依次复制。第三行定义了数据向目标端口1的传输方式,传输中,丢弃了数据元素d3、d4、d5并将随后的数据依次向前移动,则对本次传输定义读端口的描述符和写端口0及写端口1的描述符如下:
读端口:
<D31,…,D16>:读端口源地址,假设为:0100h
<D15,D14,D13,D12>一读端口地址增长方式,为<0000>
<D11,…,D0>:一次传输数据长度,为0Eh
则读端口本次传输的描述符为:0100 000EH(十六进制)写端口0:
<D31,…,D16>:写端口目标地址,假设为:0200h
<D15,D14>:写端口地址增长方式,为<01>
<D13,…,D0>:写端口掩码,由于传输所有数据,为,3FFFh
则写端口0本次传输的描述符为:02007FFFh写端口1:
<D31,…,D16>:写端口目标地址,假设为:0300h
<D15,D14>:写端口地址增长方式,为<10>
<D13,…,D0>:写端口掩码,由于忽略d3、d4、d5,则为3FC7h
则写端口1本次传输的描述符为:0300 BFC7h(十六进制)
用类似的方法,确定其他传输的读写端口的描述符,并用一个为0的描述符放在描述表的最后,表示整个传输结束,将这些描述符分别写入读端口和各个写端口的配置存储空间,在启动信号DMA_START的启动下,DMA控制器将完成从一个源到多个目标的数据分配任务。
Claims (4)
1、一种点到多点的数据分配DMA控制器实现方法,其特征是步骤如下:
(1)构建一个DMA读端口,从外部数据空间读入数据到DMA内部缓冲器,通过配置DMA读端口的描述符,实现多次DMA读传输过程,每次DMA传输包含多个外部存储器的读时序,多次DMA读传输过程的数量由描述符确定;
(2)构建多个DMA写端口,每个写端口对应于各自的应用接口,数量由应用确定;DMA写端口将DMA控制器的内部缓冲器的数据写入到各自的应用接口;
(3)为DMA写端口配置不同描述符,通过控制写端口的目标地址增加方式以及屏蔽对特定地址写操作实现数据定制;
(4)构建一个状态机统一控制DMA控制器的读端口描述符和各个写端口描述符的加载及DMA的启动和停止,在读端口读周期结束后立即启动所有写端口的总线写周期,根据写端口描述符产生相应的外部写时序,实现点到多点的数据同步转发。
2、根据权利要求1所述的一种点到多点的数据分配DMA控制器实现方法,其特征是:读端口和每个写端口具有独立配置存储空间,它们共享同一个描述符表地址计数器,由同一个状态机控制读端口和写端口,当DMA控制器处于描述符读状态DMA_READ_CONFIG时,读写端口根据同一个描述符表地址计数器,生成各自的描述符表指针,同时读取描述符。
3、根据权利要求1所述的一种点到多点的数据分配DMA控制器实现方法,其特征是:每个DMA传输周期中传输的数据元素多少由读描述符控制,描述符表地址计数器在启动信号DMA_START控制下回归到描述符表首获取第一个描述符并开始数据传输,当读描述符为零时结束DMA数据传输,读端口的每个读周期将在所有写端口都将产生一个写周期。
4、根据权利要求1所述的一种点到多点的数据分配DMA控制器实现方法,其特征是:通过写端口的描述符中定义的写掩码屏蔽对特定目标地址的数据写和地址增长方式,实现对写端口数据的定制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810124071A CN100593161C (zh) | 2008-06-11 | 2008-06-11 | 一种点到多点数据分配dma控制器实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810124071A CN100593161C (zh) | 2008-06-11 | 2008-06-11 | 一种点到多点数据分配dma控制器实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101334761A CN101334761A (zh) | 2008-12-31 |
CN100593161C true CN100593161C (zh) | 2010-03-03 |
Family
ID=40197367
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810124071A Active CN100593161C (zh) | 2008-06-11 | 2008-06-11 | 一种点到多点数据分配dma控制器实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100593161C (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186492B (zh) * | 2011-12-28 | 2016-03-30 | 联芯科技有限公司 | 基于axi总线的数据一致性保护方法及其系统 |
CN102521415B (zh) * | 2011-12-28 | 2013-09-11 | 用友软件股份有限公司 | 在报表中引入外部数据的装置和方法 |
DE112013006940B4 (de) * | 2013-04-10 | 2022-11-17 | Mitsubishi Electric Corporation | Datenübertragungsgerät und Datenübertragungsverfahren |
CN103593437A (zh) * | 2013-11-14 | 2014-02-19 | 浪潮电子信息产业股份有限公司 | 一种基于dma的数据压缩芯片结构及其实现方法 |
CN105939238B (zh) * | 2016-04-14 | 2019-01-11 | 天津市德力电子仪器有限公司 | 一种基于SOC隔离Memory的10Gbps以太网实时数据采集方法 |
CN108767806A (zh) * | 2018-05-28 | 2018-11-06 | 国网辽宁省电力有限公司电力科学研究院 | 集成继电保护、测控以及录波功能的一体化硬件平台及处理方法 |
CN109189702A (zh) * | 2018-08-22 | 2019-01-11 | 山东超越数控电子股份有限公司 | 一种Scatter-Gather DMA的数据传输缓冲区设计方法 |
CN109491937A (zh) * | 2018-10-24 | 2019-03-19 | 山东超越数控电子股份有限公司 | 一种Scatter-Gather DMA的数据传输方法及装置 |
CN111274175A (zh) * | 2020-01-15 | 2020-06-12 | 杭州华冲科技有限公司 | 一种基于数据乒乓填充的dma工作方法 |
CN114328316B (zh) * | 2021-11-22 | 2024-01-26 | 北京智芯微电子科技有限公司 | Dma控制器、soc系统及基于dma控制器的数据搬运方法 |
CN115905061B (zh) * | 2023-01-17 | 2023-05-12 | 北京象帝先计算技术有限公司 | 数据搬运装置、dma装置、电子设备及数据搬运方法 |
CN117971746B (zh) * | 2024-03-28 | 2024-07-23 | 深圳鲲云信息科技有限公司 | 用于控制直接内存访问控制器的方法及计算设备 |
-
2008
- 2008-06-11 CN CN200810124071A patent/CN100593161C/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101334761A (zh) | 2008-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100593161C (zh) | 一种点到多点数据分配dma控制器实现方法 | |
CN110232036B (zh) | 主机系统及其方法和加速模块 | |
CN103793342B (zh) | 一种多通道直接内存存取dma控制器 | |
CN105224482B (zh) | 一种fpga加速卡高速存储系统 | |
CN102231142B (zh) | 一种带有仲裁器的多通道dma控制器 | |
CN103198856B (zh) | 一种ddr控制器及请求调度方法 | |
CN102156959B (zh) | 具有多线程执行单元的绘图处理装置及其存储器存取方法 | |
CN102681946B (zh) | 内存访问方法和装置 | |
US20090138597A1 (en) | system and method for accessing memory | |
US11258699B2 (en) | Sync network | |
CN103634379B (zh) | 一种分布式存储空间的管理方法和分布式存储系统 | |
US11675633B2 (en) | Virtualised gateways | |
CN105549916A (zh) | PCIe固态硬盘控制器、基于PCIe的存储系统及其数据读写方法 | |
CN110188059A (zh) | 数据有效位统一配置的流控式fifo缓存结构及方法 | |
CN104765701B (zh) | 数据访问方法及设备 | |
CN102567278A (zh) | 一种片上多核数据传输方法和装置 | |
CN104811643A (zh) | 基于sd卡阵列的图像数据高速存储系统 | |
CN206946471U (zh) | 一种多通道共享读写sdram的电路装置 | |
CN117425884A (zh) | 网络接口设备 | |
CN101178806A (zh) | 计算机中管理纹理数据的系统与方法 | |
CN104573135A (zh) | 基于反射内存网与中间件技术的实时数据采集方法及装置 | |
CN104317747A (zh) | 一种网格接收机的数据缓存与发送装置及方法 | |
CN101236741A (zh) | 一种数据读写方法和装置 | |
CN113672549A (zh) | 一种基于非共享存储多核处理器的微系统架构 | |
CN115328832B (zh) | 一种基于pcie dma的数据调度系统与方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |