一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种可配置功能模式的DMA控制器运行方法与流程

2022-04-14 01:36:18 来源:中国专利 TAG:

一种可配置功能模式的dma控制器运行方法
技术领域
1.本发明涉及数据传输技术领域,尤其涉及一种可配置功能模式的dma控制器运行方法。


背景技术:

2.dma(direct memory access, 直接存储器访问)方式是一种直接完成系统存储器与外接设备之间数据搬运的数据传输方式,因传输过程通过硬件进行,仅传输开始与结束时需处理器介入处理,不需要大量的处理器干预调度,多用于大量数据的高速传输,可有效减少数据传输时间并减少处理器运行负荷。且dma进行数据传输期间,处理器可执行其他任务,可提高处理器运行效率。
3.然而目前的dma控制器在接收处理器的一次发起指令后,一般只可进行一次存储器至外接设备或外接设备至存储器的数据传输,因对图像及音频视频等处理需求的增长,对大量数据进行相同处理的需求日益增多,如需多次进行从存储器读取数据至特定外接设备,等外接设备完成数据处理后存回系统存储器的操作,以目前的dma控制器设计仍需进行多次处理器发起/完成dma数据传输指令,将影响处理器效率及数据传输速度。


技术实现要素:

4.为了解决现有技术中存在的上述技术问题,本发明提供了一种可配置功能模式的dma控制器运行方法,其具体技术方案如下:一种可配置功能模式的dma控制器运行方法,运用于soc片上系统,包括以下步骤:步骤一,初始化系统后,处理器通过写入配置信息到对应内存映射寄存器完成对搬运及执行模式所需信息的配置;步骤二,处理器通过写入运行信息到对应内存映射寄存器发起指令,dma控制器判断自身是否处于配置模式,若不是则反馈访存成功,后进行搬运及执行模式的判断;步骤三,若进入搬运模式,所述dma控制器则首先通过读取数据传输方向寄存器确定数据输入,根据输入方向完成从外设向存储器或相反方向的数据搬运;步骤四,若进入执行模式,将存储器初始地址写入当前存储器地址寄存器,将目标存储器初始地址写入目标当前地址寄存器,所述dma控制器根据已写入配置信息控制存储器与外设进行数据交互,并启动外设进行数据处理,直到存储器中全部目标数据经过外设处理,并将全部结果写回存储器目标地址。
5.进一步的,所述步骤一,具体包括:步骤1.1,将系统初始化后,所有配置信息寄存器将初始化为0,处理器尝试进入配置模式;步骤1.2,为进入配置模式,处理器向配置进行状态寄存器写入1;步骤1.3,尝试写入时,所述dma控制器将判断自身闲置状态,即读取运行状态寄存器现存数值,若数值为0,则反馈访存写入成功,进入配置模式;若数值为1,则所述dma控制
器向处理器反馈访存写入失败。
6.步骤1.4,进入配置模式后,处理器按需向相应内存映射寄存器写入配置信息,不需要的地址空出,完成后,向配置进行状态寄存器写入0,退出配置模式。
7.进一步的,所述步骤二,具体包括:步骤2.1,处理器通过写入运行信息对应内存映射寄存器发起指令,进行时所述dma控制器判断自身是否处于配置模式,即查看配置进行状态寄存器现存数值,若数值为0,则反馈访存写入成功;若数值为1,则所述dma控制器向处理器反馈访存写入失败;步骤2.2,若反馈访存写入成功,处理器向数据有效状态寄存器写入1,所述dma控制器进入模式判断,将完成状态寄存器拉低,错误状态寄存器写入0,并激活比较模块;步骤2.3,进入模式判断后,所述dma控制器查看外设对应内存起始地址或目标存储器初始地址为0,则进入搬运模式判断,向模式判断寄存器写入0;反之,进入执行模式判断,向模式判断寄存器写入1。
8.进一步的,所述进入搬运模式判断,具体为:所述比较模块进行以下条件的判断:首先查看所有搬运模式寄存器数值,若任一数值为0,所述dma控制器向处理器发送中断,将错误状态寄存器改为1,完成状态寄存器拉高;以上判断通过后,搬运模式系统存储器内存起始地址与系统存储器初始地址进行比较,前者应小于或等于后者;之后使用加法器计算系统存储器初始地址与初始数据大小之和,与搬运模式系统存储器内存末尾地址,前者应小于或等于后者;如上述任一条件不满足,所述dma控制器向处理器发送中断,将错误状态寄存器改为2,完成状态寄存器拉高;若以上条件满足,则查看初始数据大小寄存器,若数值为0,所述dma控制器向处理器发送中断,将错误状态寄存器改为4,完成状态寄存器拉高。
9.进一步的,所述进入执行模式判断,具体为:所述比较模块进行以下判定:首先查看所有执行模式寄存器数值,若所有类型均存在至少一项数值为0,所述dma控制器向处理器发送中断,将错误状态寄存器改为1,完成状态寄存器拉高;外设对应内存起始地址,与执行模式外设对应内存起始地址进行依次匹配,若该地址不能与其中任一配置地址匹配,则所述dma控制器向处理器发送中断,将错误状态寄存器改为3,完成状态寄存器拉高;若成功匹配,假设匹配成功类型为1,则对匹配类型寄存器写入1,以下步骤中相关信息均对应类型1;之后,查看初始数据大小及目标数据大小寄存器,若任一数值为0,所述dma控制器向处理器发送中断,将错误状态寄存器改为4,完成状态寄存器拉高;若通过上述判定,则查看系统存储器地址是否符合配置预设范围。
10.进一步的,所述步骤三,具体为:若进入搬运模式,所述dma控制器则通过读取数据传输方向寄存器确定数据输入,即:如状态为0,则为外设向存储器传输;如状态为1,则为存储器向外设传输,将存储器初始地址写入当前存储器地址寄存器,将初始数据大小写入存储器及外设剩余数据大小寄存器。
11.进一步的,若为外设向存储器传输状态,则在外设接口数据有效且fifo不全满时将数据写入fifo缓存,更新外设剩余数据大小,并在fifo不为空时以当前存储器地址为目标将缓存中尾端数据依次写入存储器,dma控制器在fifo不全满时向外设接口发出ready信号,同时当存储器反馈写入成功时,将对应数据清出fifo,并更新当前存储器地址及存储器剩余数据大小,同时判断剩余数据大小是否为0,如不是,则重复上述过程;反之,dma控制器
向处理器发送中断,将完成状态寄存器拉高,所有除配置信息的地址内存映射寄存器清零,dma控制器恢复闲置状态。
12.进一步的,若为存储器向外设传输状态,则在fifo不全满时向存储器以当前存储器地址为目标发出读取请求,如读取成功,将获取数据写入fifo,并更新当前存储器地址及存储器剩余数据大小,同时判断剩余数据大小是否为0,如不是,则重复上述过程;反之,停止数据读取;同时,在fifo不全空时且外设界面收到ready信号时将尾端数据清出fifo,写入外设接口并拉高接口valid信号,并更新外设剩余数据大小并判断其是否为0,如不是,则重复上述过程;反之,dma控制器向处理器发送中断,将完成状态寄存器拉高,所有除配置信息的地址内存映射寄存器清零,dma控制器恢复闲置状态。
13.进一步的,所述步骤四,具体包括:步骤4.1,进入执行模式配置状态后,通过匹配类型寄存器寻找到该外设对应的配置信息,将该信息通过内存访问指令依次写入对应外设的内存映射寄存器,通过更新配置信息剩余数据大小判断配置信息传输完成情况;同时,通过初始数据大小与单次传输初始数据大小计算出所需数据传输次数寄存器,将单次传输初始数据大小写入剩余数据大小寄存器;步骤4.2,等待外设接口反馈ready信号,信号拉高后,进入执行模式写入状态,后将存储器数据依次读入fifo缓存,并依次将fifo尾端数据写入外设接口,并更新存储器地址、存储器剩余数据大小、外设剩余数据大小寄存器;步骤4.3,等待外设接口反馈valid信号,信号拉高后,进入执行模式读取状态,将目标数据大小写入存储器及外设剩余数据大小寄存器;获得反馈后将外设接口数据依次读入fifo缓存,并以当前目标存储器地址为目标将fifo尾端数据依次写入存储器,更新目标当前地址及存储器剩余数据大小、外设剩余数据大小寄存器;步骤4.4,更新所需数据传输次数寄存器并判断该寄存器结果是否为0,如不是,重复步骤4.1至步骤4.3;反之,dma控制器向处理器发送中断,将完成状态寄存器拉高,所有除配置信息的地址内存映射寄存器清零,dma控制器回复闲置状态。
14.有益效果:本发明能够在数据传输控制时直接访问存储器,在保留现有dma控制器数据搬运功能的情况下,增加一种执行模式,模式运行时可自动多次从系统存储器中读取数据至特定内存映射外接设备,待外接设备完成数据处理后存储回特定系统存储空间,除进入及退出模式时,dma控制器在该模式运行时不需要处理器介入干预。
附图说明
15.图1是本发明的dma控制器应用于soc片上系统的结构示意图;图2a-图2c是本发明的dma控制器运行流程示意图。
具体实施方式
16.为了使本发明的目的、技术方案和技术效果更加清楚明白,以下结合说明书附图和实施例,对本发明作进一步详细说明。
17.本发明提供一种可配置功能模式的dma控制器运行方法,在保留现有dma数据搬运
模式的情况下,增加执行模式,执行模式运行时可自动多次从系统存储器中读取数据至特定内存映射外接设备,待外接设备完成数据处理后存储回特定系统存储空间,除进入及退出模式时,dma控制器在执行模式运行时不需要处理器介入干预。
18.具体的,如图1所示, dma控制器在soc片上系统中实现,并作为内存映射io设备接入系统总线,以保证处理器可通过内存映射寄存器读写信息。外设接口包含一个数据io接口,两对valid/ready握手信号,一对为dma控制器向外设方向,一对为外设向dma控制器方向。
19.所述执行模式可设置多个类型,在本发明实施例中设置类型为2,假设该系统地址表示为32位,word表示为64位,假设外设接口中数据端口为64位,且可用内存映射地址空间起始地址为0x6000000,可分配地址如表1,表1是为本发明中根据示例性实例所提供的一种dma控制器内存映射地址分配方式。
20.其中,每个类型对应的外设配置信息格式如表2所示,被认为是一个寄存器数列,每个数列单元表示为地址 数值的格式,本发明实施例中每种类型的数列大小为8,每个单元位宽为96bit。执行模式的外设配置信息数据大小用于表示在对应数列中有效单元个数,在本发明实施例中有效数字1~8。
21.所述dma控制器配置搬运模式所需的信息,包括:系统存储器内存地址段,配置进行状态。
22.所述dma控制器配置执行模式所需的信息,包括:系统存储器内存地址段,外设对应内存起始地址,单次初始数据传输大小,该外设对应的配置信息,配置信息数据大小。所述dma控制器可存在一个或多个类型区间,每个区间包含以上信息。
23.所述dma控制器发起搬运模式所需处理器写入的信息,包括:系统存储器初始地址,初始数据大小,数据搬运方向,数据有效状态。
24.所述dma控制器发起执行模式所需处理器写入的信息,包括:系统存储器初始地址,外设对应内存起始地址,目标存储器初始地址,初始数据大小,目标数据大小,数据有效状态,其中系统存储器初始地址,初始数据大小,数据有效状态内存映射寄存器与搬运模式共用。
25.所述dma控制器具有表示运行状态及错误状态的只读寄存器,用于处理器判断dma运行情况。
26.所述dma控制器为实现流程所需的硬件模块,包括:用于对应表1的所有内存映射寄存器,用于临时存储传输数据的fifo缓存,计算地址改变的加法器,计算剩余数据大小及所需数据传输次数的减法器,计算数据传输次数的除法器,控制dma控制器流程的状态机,存储模式判断、匹配类型、当前存储器地址、当前外设对应内存地址、当前目标存储器地址及存储器、外设及配置信息剩余数据大小的寄存器,记录执行模式匹配区间的寄存器及用于比较配置信息中地址段及输入地址的比较模块。
27.如图2a-图2c所示,一种可配置功能模式的dma控制器运行方法,包括如下步骤:步骤一,初始化系统,将所有配置信息寄存器初始化为0,调用dma控制器前,处理器通过写入对应内存映射寄存器完成对搬运及执行模式所需信息的配置,若其中任一配置信息为0或执行模式为至少一个类型的配置信息不为0,则对应模式不可启动,若处理器在此期间发起该模式指令,dma控制器将发送中断至处理器,并将错误状态寄存器改为1;开始
更改配置信息前,需在配置进行状态地址写入1,配置完成后,对同地址写入0并将错误状态寄存器改为0,释放dma,在该地址不为0期间,若处理器发出模式发起指令,将反馈写入失败;在dma闲置期间,可通过处理器再次更改上述配置信息;在dma运行期间,处理器无法更改上述模式配置寄存器,所以若处理器发出更改指令,则反馈写入失败。更加具体的,包括:步骤1.1,系统初始化时,所有表1中提到的内存映射寄存器均被初始化为0;在处理器发起指令,即向0x600000d7~0x600000e8地址段写入信息前,需进入配置模式,向0x60000000~0x600000d5写入必要配置信息;步骤1.2,为进入配置模式,处理器向配置进行状态寄存器,即0x600000d6地址写入1;步骤1.3,尝试写入时,所述dma控制器将判断自身闲置状态,即读取运行状态寄存器现存数值,若数值为0,则反馈访存写入成功,进入配置模式;若数值为1,则所述dma控制器向处理器反馈访存写入失败。
28.步骤1.4,进入配置模式后,处理器按需向0x60000000~0x600000d5地址段写入配置信息,不需要的地址空出,完成后,向配置进行状态寄存器0x600000d6写入0,退出配置模式。
29.步骤二,处理器通过写入运行信息对应内存映射寄存器发起指令,进行时dma控制器判断自身是否处于配置模式,若不是则反馈访存成功,后进行搬运及执行模式的判断,具体包括以下步骤:步骤2.1,处理器需发起dma指令时,向0x600000d7~0x600000e8地址段按需写入信息,不需要的地址空出;同时所述dma控制器将判断自身是否处于配置模式,即查看配置进行状态寄存器现存数值,若数值为0,则反馈访存写入成功;若数值为1,则所述dma控制器向处理器反馈访存写入失败。
30.步骤2.2,若反馈访存写入成功,处理器向数据有效状态寄存器,即地址0x600000e8写入1,所述dma控制器进入模式判断,将完成状态寄存器拉低,错误状态寄存器写入0,并激活比较模块。
31.步骤2.3,进入模式判断后,所述dma控制器查看外设对应内存起始地址或目标存储器初始地址为0,则进入搬运模式判断,向模式判断寄存器写入0;反之,进入执行模式判断,向模式判断寄存器写入1。
32.步骤2.4,进入搬运模式判断,所述比较模块首先查看所有搬运模式寄存器数值,若任一数值为0,所述dma控制器向处理器发送中断,将错误状态寄存器改为1,完成状态寄存器拉高。以上判断通过后,搬运模式系统存储器内存起始地址与系统存储器初始地址进行比较,前者应小于或等于后者;之后使用加法器计算系统存储器初始地址与初始数据大小之和,与搬运模式系统存储器内存末尾地址,前者应小于或等于后者。如上述任一条件不满足,所述dma控制器向处理器发送中断,将错误状态寄存器改为2,完成状态寄存器拉高。若以上条件满足,则查看初始数据大小寄存器,若数值为0,所述dma控制器向处理器发送中断,将错误状态寄存器改为4,完成状态寄存器拉高。
33.步骤2.5,进入执行模式判断,所述比较模块首先查看所有执行模式寄存器数值,若所有类型均存在至少一项数值为0,所述dma控制器向处理器发送中断,将错误状态寄存器改为1,完成状态寄存器拉高。外设对应内存起始地址,与执行模式外设对应内存起始地
址进行依次匹配,若该地址不能与其中任一配置地址匹配,则所述dma控制器向处理器发送中断,将错误状态寄存器改为3,完成状态寄存器拉高。若成功匹配,假设匹配成功类型为1,则对匹配类型寄存器写入1,以下步骤中相关信息均对应类型1。之后,查看初始数据大小及目标数据大小寄存器,若任一数值为0,所述dma控制器向处理器发送中断,将错误状态寄存器改为4,完成状态寄存器拉高。若通过上述判定,则查看系统存储器地址是否符合配置预设范围,方法同步骤2.4。
34.步骤三,若进入搬运模式,所述dma控制器则通过读取数据传输方向寄存器确定数据输入,根据输入方向完成从外设向存储器或相反方向的数据搬运。如状态为0,即为外设向存储器传输;如状态为1,即为存储器向外设传输,将存储器初始地址写入当前存储器地址寄存器,将初始数据大小写入存储器及外设剩余数据大小寄存器。具体包括以下步骤:步骤3.1,若为外设向存储器传输状态,所述dma控制器在fifo不全满时将外设接口ready信号拉高。所述dma控制器在外设接口valid为1且fifo不全满时将接口数据写入fifo缓存首端,更新首端指针与外设剩余数据大小。在本示例中,每次成功写入时外设剩余数据大小减8,并在每个时钟周期判定外设剩余数据大小是否为0,若是,停止数据写入fifo并将外设接口ready信号拉低。同时,在fifo不为空时,所述dma控制器以当前存储器地址为目标将缓存中尾端数据写入存储器,同时当存储器反馈写入成功时,更新fifo尾端指针,并更新当前存储器地址及存储器剩余数据大小,即当前存储器地址加8,存储器剩余数据大小减8。同时,每次更新后所述dma控制器判断存储器剩余数据大小是否为0。如不是,则重复上述过程;反之,dma控制器停止向存储器发送数据写入请求,并向处理器发送中断,将完成状态寄存器拉高,所有地址在0x600000d7~0x600000e8区间的内存映射寄存器清零,dma控制器恢复闲置状态。
35.步骤3.2,如为存储器向外设传输状态,所述dma控制器需在fifo不全空时将外设接口valid信号拉高,在fifo不全满时向存储器以当前存储器地址为目标发出读取请求,如读取成功,将获取数据写入fifo首端,更新首端指针并更新当前存储器地址及存储器剩余数据大小,即当前存储器地址加8,存储器剩余数据大小减8,并在每个时钟周期判断剩余数据大小是否为0。如不是,则重复上述过程;反之,停止向存储器发送数据读取请求。同时,dma控制器将fifo缓存尾端数据写入外设接口,在fifo不全空且外设界面ready信号为1时认为写入成功,更新尾端指针并更新外设剩余数据大小,即外设剩余数据大小减8。同时,每个时钟周期判断外设剩余数据大小是否为0。如不是,则重复上述过程;反之,dma控制器将外设接口valid信号拉低并向处理器发送中断,将完成状态寄存器拉高,所有地址在0x600000d7~0x600000e8区间的内存映射寄存器清零,dma控制器恢复闲置状态。
36.步骤四,若进入执行模式,将存储器初始地址写入当前存储器地址寄存器,将目标存储器初始地址写入目标当前地址寄存器,所述dma控制器根据已写入配置信息控制存储器与外设进行数据交互,并启动外设进行数据处理,直到存储器中全部目标数据经过外设处理,并将全部结果写回存储器目标地址。在本示例中,将执行模式单次传输初始数据大小中的数据写入存储器及外设剩余数据大小寄存器。将执行模式该外设配置信息数据大小写入所需数据传输次数寄存器,进入执行模式配置状态。具体包括以下步骤:步骤4.1,进入执行模式配置状态后,所述dma控制器查看匹配类型寄存器,根据其数值确定匹配数列,将数列中对应所需数据传输次数寄存器数值减1的单元读出,将该数值
的前32位作为地址,后64位作为数据,向系统总线发出访存写入请求。当总线反馈写入成功时,将所需数据传输次数减1。同时每个时钟周期对所需数据传输次数进行判定,当数值为0时停止发送访存请求,并等待外设接口ready信号拉高。在本实施例中,使用除法器计算初始数据大小除以执行模式单次传输初始数据大小,并写入所需数据传输次数寄存器。
37.步骤4.2,外设接口ready信号拉高后,进入执行模式写入状态,后将存储器数据依次读入fifo缓存,并依次将fifo尾端数据写入外设接口,更新存储器地址、存储器剩余数据大小、外设剩余数据大小寄存器,除dma不发送中断并不更改各项寄存器外,方式同步骤3.2。完成后,等待外设接口valid信号拉高。
38.步骤4.3,外设接口valid信号拉高后,进入执行模式读取状态。将目标数据大小寄存器数据写入存储器及外设剩余数据大小寄存器。所述dma控制器将外设接口数据依次读入fifo缓存,并以当前目标存储器地址为目标将fifo尾端数据依次写入存储器,更新目标当前地址及存储器剩余数据大小、外设剩余数据大小寄存器,除dma不发送中断并不更改各项寄存器外,方式同步骤3.1。完成后,更新所需数据传输次数寄存器,即数值减1。
39.步骤4.4,进入执行模式读取状态后,每个时钟周期判定存储器剩余数据大小与所需数据传输次数寄存器数值是否为0。如存储器剩余数据大小为0而所需数据传输次数寄存器数值不为0,进入执行模式配置状态,重复上述步骤4.1~步骤4.3;若两项同时为0,dma控制器将外设接口ready信号拉低并向处理器发送中断,将完成状态寄存器拉高,所有地址在0x600000d7~0x600000e8区间的内存映射寄存器清零,dma控制器恢复闲置状态。
40.表1:
表2:以上所述,仅为本发明的优选实施案例,并非对本发明做任何形式上的限制。虽然前文对本发明的实施过程进行了详细说明,对于熟悉本领域的人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行同等替换。凡在本发明
精神和原则之内所做修改、同等替换等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献