一种基于PowerPC处理器的DMA事务级建模方法

文档序号:6536814阅读:381来源:国知局
一种基于PowerPC处理器的DMA事务级建模方法
【专利摘要】一种基于PowerPC处理器的DMA事务级建模方法,是在法国TIMA实验室的系统仿真验证平台Rabbits的基础上进行建模,有:用于处理主设备模块的传输请求的总线;连接总线,用于存储数据和指令的内存;连接总线的外围设备;连接总线,用于进行数据搬运的控制,并发出中断请求信号的DMA控制器;CPU单元,输入端连接DMA控制器接收DMA控制器发出的中断请求信号,连接总线用于读写内存的数据和指令、读写DMA控制器中的寄存器以及读写外围设备中的数据,并模拟PowerPC指令和对中断请求进行处理。本发明通过对DMA编程使DMA能够独立完成一个和多个数据搬运任务,有立于提高平台运行速度。并使平台的前期验证的功能更加完善。
【专利说明】—种基于PowerPC处理器的DMA事务级建模方法
【技术领域】
[0001]本发明涉及一种建模方法。特别是涉及一种基于PowerPC处理器的DMA事务级建模方法。
【背景技术】
[0002]随着SoC设计的发展,软硬件设计变的越来越复杂,但是,软件的复杂度的增长速度却大大超过了硬件复杂度的增加。对于复杂的SoC设计,在搭建整个系统早期,需要对整个系统架构进行评估,以确定架构各项性能是否达到要求。由于传统的寄存器传输级(Register Transfer Level, RTL)设计与验证已不能满足用户对设计时间,制造成本与产品性能的要求。电子系统级(ESL,Electronic System Level)这种更高层次的设计方法也因此产生。基于ESL的SoC设计可有效地克服传统SoC设计方法在硬件建模,系统验证以及架构探索方面的局限性,可以快速地搭建硬件平台,并快速开发相应的软件代码进行高可靠的系统验证,进而确定系统的最优架构。事务级建模(Transaction Level Modeling,TLM)作为ESL的核心,采用事务的形式对通信进行封闭,希望提高对复杂系统的设计与验证的效率,充分发挥SoC所带来的优势。与RTL相比,事务级(Transaction Level, TL)最本质的特点在于使用高层次的事务对通信进行封装,能够极大的简化仿真过程,有效提高仿真效率。
[0003]SystemC是一种软硬件设计语言,在软硬件协同设计中应用十分广泛,SystemC-TLM2.0是一套用来进行事务级建模的标准,SystemC隐藏了管脚等信息。这使得大大降低了对系统,尤其是复杂通信系统建模的复杂度,同时也提高了模拟性能,能够巧妙的完成模块的仿真,特别是模块间的通信。Qemu是一套由Fabrice Bellard编写的用来模拟处理器行为的虚拟机软件,能够模拟多种ARM,Spark, PowerPC等多种处理器的运行,由于Qemu采用动态二进制翻译技术,使得Qemu有着远远超出RTL仿真的速度,基于QEMU的ARMll启动Linux操作系统内核的速度与实际硬件几乎相同。使用SystemC和Qemu的联合仿真能够结合两者的优点,使仿真的效率和灵活性大大提高。
[0004]PowerPC处理器因其优异的性能和极高的安全性,得到了广泛的应用,特别在军工和政府机构等安全需求高的部门的应用更为广泛。直接存储器读取(Direct MemoryAccess, DMA)控制器作为现代处理器的重要部分,也是PowerPC处理器的重要组成部分,基于PowerPC处理器的DMA控制器是一四通道DMA控制器主要有以下特性:1)支持内存设备和外围设备之间甚至不同速度设备之间的传输;2)支持不同传输宽度的传输;3)支持burst传输;4)支持地址递增和递减两种方式;5)支持Scatter/Gather传输。这款DMA是一款十分完善的DMA控制器,在PowerPC处理器上得到应用。而现有的Qemu并未对DMA进行实现,但是并未对DMA进行建模,从而导致不能支持DMA的相关仿真。

【发明内容】

[0005]本发明所要解决的技术问题是,提供一种基于PowerPC处理器的DMA事务级建模方法,一方面对DMA进行建模使之能够支持对DMA相关仿真。另一方面完善指令集仿真器,使之支持DCR (设备控制寄存器,Device Control Register)指令,从而使用户能够灵活使用DCR指令实现对DMA的配置和使用。
[0006]本发明所采用的技术方案是:一种基于PowerPC处理器的DMA事务级建模方法,是在法国TIMA实验室的系统仿真验证平台Rabbits的基础上进行建模,包括:
[0007]总线,使用SystemC_TLM2.0进行事务级建模,用于处理主设备模块的传输请求;
[0008]内存,使用SyStemC-TLM2.0进行事务级建模,连接总线,用于存储数据和指令,提供给DMA控制器和CPU单元;
[0009]外围设备,使用SystemC_TLM2.0进行事务级建模,连接总线;还设置有
[0010]DMA控制器,使用SyStemC-TLM2.0进行事务级建模,连接总线,用于进行数据搬运的控制,并发出中断请求信号;
[0011]CPU单元,输入端连接DMA控制器接收DMA控制器发出的中断请求信号,连接总线用于读写内存的数据和指令、读写DMA控制器中的寄存器以及读写外围设备中的数据,并模拟PowerPC指令和对中断请求进行处理;
[0012]所述的DMA控制器包括有与所述的总线相连的执行单元,与所述的执行单元相连的四个通道,4个公共寄存器。
[0013]所述的4个公共寄存器是:用于存储DMA控制器的运行状态的状态寄存器、Scatter/Gather命令寄存器、睡眠模式寄存器和极性配置寄存器。
[0014]所述的四个通道中的任一通道内都设置有用于存储数据传输规则的控制寄存器,用于存储数据传输规则的控制和计数寄存器,源地址寄存器,目的地址寄存器,Scatter/Gather描述表地址寄存器,每一个通道设有一个中断请求端口,所述的中断请求端口与(PU单元中的中断控制器相连,用于向CPU单元发出中断请求信号。
[0015]所述的执行单元包括有:用来实现对数据传输的逻辑控制、用于控制从四个通道的中断端口向CPU单元发出中断请求信号的中断控制和错误检测的7个SCjhread线程,所述的7个scjhread线程有:用来实现对DMA控制器中的四个通道的不同中断进行控制的四个sc_thread线程,用来启动一般数据传输和scatter/gather传输,并根据通道优先级选择优先级最高的使能通道运行的一个scjhread线程,用来按照根据四个通道内的寄存器存储的传输控制信息,向内存和外围设备发送请求搬运数据,并检测传输中的错误的一个sc_thread线程,用来读取内存中的scatter/gather描述表配置寄存器,并完成scatter/gather的地址对齐错误检测的一个sc_thread线程。
[0016]所述的执行单元对应四个通道中的任一通道都具有空闲状态,一般传输状态,Scatter/Gather传输状态,错误状态四种状态,其中,所述的一般传输状态和Scatter/Gather传输状态在四个通道中的任意两个通道内不能同时存在。
[0017]所述的错误检测包括有:在传输开始的时候进行的地址对齐检测,Burst CountError检测,Burst Prefetch Error检测,在取Scatter/Gather描述表之前进行的Scatter/Gather地址对齐错误检测,在数据传输过程中进行的PLB/OPB Bus Time-OutCondition 检测。
[0018]所述的执行单元还包括有实现Scatther/Gather传输的控制过程。
[0019]所述的CPU单元是采用法国TIMA实验室的系统仿真验证平台Rabbits的中的CPU部分,是由CPU处理器和内部设置有用于接收四个通道所发出的中断中请求信号的断控制器的中间件构成,其中,所述的CPU处理器包括PowerPC指令集,以及PowerPC设备控制寄存器指令,所述的设备控制寄存器指令包括有:用于将设备寄存器信息读取到通用寄存器内的mfdcr指令和用于将通用寄存器信息写到设备寄存器中的mtdcr指令,mfdcr指令和mtdcr指令实现的第一步是将设备控制寄存器总线地址转换设备控制寄存器的实际物理地址,第二步是通过中间件读写DMA控制器中的寄存器。
[0020]本发明的一种基于PowerPC处理器的DMA事务级建模方法,针对PowerPC系列处理器的DMA控制器,使用SystemC-TLM对DMA进行高层次建模,完成该DMA控制器的系统级模型。修改Qemu指令集,实现使用DCR指令实现对DMA控制器的控制,使DMA能够在CPU不使用总线时,配置DMA控制器,通过对DMA编程使DMA能够独立完成一个和多个数据搬运任务,有立于提高平台运行速度。另外完善对PowerPC处理器仿真,对修改指令集仿真器,使之支持DCR指令的仿真,能够直接使用指令控制DMA的所有寄存器,使平台的前期验证的功能更加完善。
【专利附图】

【附图说明】
[0021]图1是本发明的带有DMA控制器的PowerPC仿真架构图;
[0022]图2是本发明中的中断连接示意图;
[0023]图3 是 DMA Scatter/Gather 描述表。
【具体实施方式】
[0024]下面结合实施例和附图对本发明的一种基于PowerPC处理器的DMA事务级建模方法做出详细说明。
[0025]本发明的一种基于PowerPC处理器的DMA事务级建模方法,针对PowerPC系列处理器的DMA控制器,使用SystemC-TLM对DMA进行高层次建模,完成该DMA控制器的系统级模型。修改Qemu指令集,实现使用DCR指令对DMA控制器的控制,使DMA能够在CPU不使用总线时通过对DMA编程使DMA能够单独完成数据的搬运,完善对PowerPC处理器仿真。
[0026]本发明使用SystemC进行建模,需要完成CPU与DMA的通信,DMA内部的逻辑控制,以及对DMA四个通道的中断的中断处理。如图1,DMA执行单元(DMA Excution Unit)与总线相连,用来完成数据的搬运,DMA有四个通道,每个通道都有一个中断请求线与Qemu_Wrapper中的中断控制器(interrupt Controller, ITC)相连,用来完成中断请求。
[0027]DMA控制器与CPU的通信主要分为两部分:CPU对DMA控制器的指令控制和CPU对DMA的中断请求的接收和处理。指令控制需要实现PowerPC标准指令对DMA进行配置,即DCRCDevice Control Register)指令,若要实现CPU对DMA的配置,需要CPU能够访问DMA设备的寄存器,CPU使用Qemu进行仿真,而DMA使用SystemC进行建模,CPU访问SystemC设备需要通过由SystemC编写的Qemu_Wrapper来实现。中断处理需要CPU对多个中断响应,Qemu_ffrapper扮演了中断控制器的角色,因此所有的中断请求线都与Qemu_Wrapper连接,若要使中断发生,也需要对Qemu_Wrapper的中断部分进行控制。
[0028]DMA控制器的建模由SystemC完成。设备分为主设备和从设备两类,主设备可以向其它从设备发送读写请求,从设备可以接收主设备的读写请求。DMA控制器继承了主设备和从设备两种设备的特性。DMA可以作为从设备接收CPU的控制信息,也可以作为主设备向其它设备发送读写请求。DMA实现了三个类:主类、DMA从设备类和DMA主设备类,在主类dma_device里分别定义了从设备类dma_device_slave和主设备类dma_device_master的对象,用来实现这两类设备的特性。DMA运行的逻辑控制由SCjhread线程进行控制,仿真开始后,线程运行并进入睡眠,当接收到唤醒信号时,sc_thread执行相关任务,执行完成后,再次进入睡眠态,循环往复,直到仿真结束。DMA控制器有四个通道,每个通道有一个中断请求线与中断控制器相连,在DMA建模中使用四个scjhread线程用来控制中断的发生,每个中断由一个SystemC的输出端口 sc_out变量表示,该端口与中断控制器相连,当线程检测到满足发出中断的条件时,会将该端口值置1,则中断发出。
[0029]DMA与CPU的通信主要分为两部分:CPU对DMA控制器的指令控制和CPU对DMA的中断请求的接收和处理。指令控制需要实现PowerPC标准指令对DMA进行配置,若要实现CPU对DMA的配置,需要CPU能够访问DMA的寄存器,如图1,Qemu_ffrapper (中间件)作为CPU和其它设备通信的中间件,CPU要访问主存或者其它设备都是通过Qemu_Wrapper,然后再到Abstract Bus (总线)从而访问其它设备。
[0030]如图1、图2所示,本发明的一种基于PowerPC处理器的DMA事务级建模方法,是在法国TIMA实验室的系统仿真验证平台Rabbits的基础上进行建模,包括:
[0031]总线5,使用SystemC_TLM2.0进行事务级建模,用于处理主设备模块的传输请求;内存3,使用SystemC-TLM2.0进行事务级建模,连接总线5,用于存储数据和指令,提供给DMA控制器I和CPU单元2 ;外围设备4,使用SyStemC-TLM2.0进行事务级建模,连接总线5 ;DMA控制器1,使用SyStemC-TLM2.0进行事务级建模,连接总线5,用于进行数据搬运的控制,并发出中断请求信号;CPU单元2,输入端连接DMA控制器I接收DMA控制器I发出的中断请求信号,连接总线5用于读写内存3的数据和指令、读写DMA控制器I中的寄存器以及读写外围设备4中的数据,并模拟PowerPC指令和对中断请求进行处理。
[0032]所述的DMA控制器I包括有:与所述的总线5相连的执行单元11,与所述的执行单元11相连的四个通道12、13、14、15,以及4个公共寄存器。所述的4个公共寄存器是:用于存储DMA控制器I的运行状态的状态寄存器、Scatter/Gather命令寄存器、睡眠模式寄存器和极性配置寄存器。
[0033]极性寄存器=SystemC-TLM建模不涉及实际硬件的信号,因此对极性的配置没有任何作用。
[0034]睡眠模式寄存器:因SystemC-TLM建模不涉及性能的评估,目标是为了进行早期的系统验证,因此不需要对该寄存器相关操作进行实现。
[0035]所述的四个通道12、13、14、15中的任一通道内都设置有用于存储数据传输规则的控制寄存器,用于存储数据传输规则的控制和计数寄存器,源地址寄存器,目的地址寄存器,Scatter/Gather描述表地址寄存器(用于存放图3所不的描述表的地址),
[0036]因仿真与实际硬件不同,对个别寄存器做如下改动:
[0037]Scatter/Gather描述表=PowerPC为大端模式,而宿主机一般是X86或者X64架构,为小端模式,在目标机上,该描述表在写入内存时,PowerPC将其按大端模式存储,而SystemC模块为运行在宿主机上的程序,因此读取的数据会按小端模式读取,数据会不匹配,因此需要进行大端模式到小端模式的数据转换。[0038]地址寄存器:因部分PowerPC CPU为64位,所以地址类寄存器都是由两个32个寄存器组成,分为高地址寄存器和低地址寄存器,但仿真中可根据实际需要进行选择,若需要支持64位则使用两个寄存器拼接,如只支持32位,则只使用低地址寄存器。
[0039]所述的四个通道12、13、14、15中每个通道还设有一个中断请求端口,所述的中断请求端口与CPU单元2中的中断控制器相连,用于向CPU单元2发出中断请求信号。中断处理需要CPU单元对多个中断响应,如图2, Qemu_Wrapper中集成了中断控制器(InterruptController, ITC),因此所有的中断请求线都ITC连接,若要使中断发生,需要对ITC进行配置,使能或者屏蔽特定中断。
[0040]DMA控制器的中断请求为一硬件中断,如图2,每个通道都有一条中断请求线连接到ITC,DMA的每个通道设置如下的输出端口变量:
[0041]sc_out<bool>irq[4];
[0042]irq对应对应四条中断请求线,并与ITC相连,如下:
[0043]dma->irq[0](wires_irq_qemu[ntimers+3]);
[0044]在DMA的SystemC的建模中,这些中断都是通过Qemu_Wrapper连接到CPU的外部中断引脚,每个中断的控制由一个scjhread线程控制,当线程检测到满足通道发生的条件时,将irq[n]置I时,此时Qemu_Wrapper里的ITC会接收到该变化。并检测该中断对应的中断使能位是否使能。若使能则发送给CPU的外部中断引脚,此时Qemu会检测其特有的机器状态寄存器MSR (Machine Status Register),查看外部中断是否使能,若使能则响应中断,CPU会跳转到主存的0x500开始执行中断程序。
[0045]设备分为主设备和从设备两类,DMA控制器继承了主设备和从设备两种设备的特性。DMA控制器可以作为从设备接收CPU的控制信息,也可以作为主设备向其它设备发送读写请求。DMA实现了三个类:主类、DMA从设备类和DMA主设备类,在主类dma_device里分别定义了从设备类dma_device_slave和主设备类dma_device_master的对象,用来实现这两类设备的特性。
[0046]所述的执行单元11包括有:用来实现对数据传输的逻辑控制、用于控制从四个通道12、13、14、15的中断端口向CPU单元2发出中断请求信号的中断控制和错误检测的7个sc_thread线程,dma_device类中,设置dma_device接口用来实现对寄存器,事件和线程的初始化。DMA控制器主类设置7个scjhread线程用来实现对传输数据的逻辑控制和错误检测dma_device_master类里主要实现了 cmd_write和cmd_read接口用来实现对其它从设备的读写。dma_device_slave类里主要实现了 write和read接口用来实现其它主设备对DMA寄存器的读写。所述的7个scjhread线程有:用来实现对DMA控制器I中的四个通道12、13、14、15的不同中断进行控制的四个scjhread线程;用来启动一般数据传输和scatter/gather传输,并根据通道优先级选择优先级最高的使能通道(包括scatter/gather使能运行)的一个sc_thread线程;用来按照根据四个通道内的寄存器存储的传输控制信息,向内存3和外围设备4发送请求搬运数据,并检测传输中的错误的一个sc_thread线程;用来读取内存3中的scatter/gather描述表配置寄存器,并完成scatter/gather的地址对齐错误检测的一个sc_thread线程。
[0047]DMA控制器还设置有控制寄存器(DMAX_CRN)用来初始化DMA控制器的通道传输和通道中断。DMAX_CRN[CIE]=1,将使能通道N的中断。若控制和计数寄存器DMAX_CTCN中使倉泛了 TCIE (Teminal Count Interrupt Enable), ETIE (End of Transfer InterruptEnable)或者 EIE (Error Interrupt Enble),将发生对应中断。
[0048]以下是发生通道中断的条件:
[0049]Channel_N_Interrupt=Channel_N_Interrupt_EnabIe and channel_done and
[0050](ChanneI_N_TC_EnabIe, and Channel_N_Terminal_Count_Status, andinterrupt_TC_en)
[0051]OR
[0052](Channel_N_E0T_Status and interrupt_EOT_en)
[0053]OR
[0054]Channel_N_Error_Status and interrupt_ERR_en)
[0055]每个DMA控制器的中断都是一个sc_out型的输出端口,名称为irq [η],而该输出通过qemu_wrapper连接到CPU核心的外部中断(External interrupt) 口,当该输出变I时便会发出中断。另外对该通道相关的状态寄存器位清0,可清除该中断寄存器,即使irq[η]=0。
[0056]所述的执行单元11对应四个通道12、13、14、15中的任一通道都具有空闲状态(Idle), —般传输状态(Transferring), Scatter/Gather 传输状态(Scatter/GatherTransferring),错误状态(Error)这四种状态,其中,所述的一般传输状态和Scatter/Gather传输状态在四个通道12、13、14、15中的任意两个通道内不能同时存在。
[0057]例如,DMA控制器启动后会进入Idle态,若此时更改了寄存器的值,start_thread会检测DMA_CR的值,若有一个通道使能且优先最高,则检测该通道Scatter/Gather是否使能,若使能则进入该通道的Scatter/Gather Transferring状态,反之进入Transferring状态,此时tranSfer_thread被唤醒,检测通道错误并进行传输,如发生错误,则该通道进入Error状态,反之继续,当传输完一个单位宽度的数据后,会进入短暂的Idle状态,并检测是否有其它优先级的通道使能,若有则开始其它任务。
[0058]所述的错误检测包括有:在传输开始的时候进行的地址对齐检测(AddressAlignment Check),Burst Count Error 检测,Burst Prefetch Error 检测,在取 Scatter/Gather描述表之前进行的Scatter/Gather地址对齐错误检测,在数据传输过程中进行的PLB/OPB Bus Time-Out Condition 检测。
[0059]DMA控制器拥有检测和报告错误的能力,DMA的硬件实现主要实现了对五种对错误的检测,但由于建模与实际硬件不同,因此部分错误检测做了改进。具体如下:1)地址对齐检测(Address Alignment Check), Burst Count Error 检测,Burst Prefetch Error 检测三种错误检测在传输开始的时候进行,由transfer_thread分别调用check_alignment,check_burst_cout, check_burst_prefetch进行检测。分别检测源地址和目的地址是否按照设置的传输宽度对齐,传输数目是否是Burst大小的整数倍,设置的预取大小是否小于一次Burst传输的大小,若有错误不启动本次传输,通道使能位DMAX_CRN[CE]会被置0,同时会将该错误报告给状态寄存器DMAX_SR,并通知irq_threadN,若该线程检测错误中断和通道中断被使能将会发出,该通道会发出中断;反之,不发出中断。
[0060]Scatter/Gather地址对齐错误发生取Scatter/Gather描述表之前,由scatther_gather_thread负责检测。当描述表所在地址DMAX_SGLN不按16bytes对齐时产生该错误。当发生该错误时,不再去主存取Scatther/Gather描述表,同时清空Scatter/Gather命令寄存器DMAX_SGC的该通道相关位,并报告该错误给状态寄存器DMAX_SR,同时通知irq_threadN,若检测到错误中断和通道中断使能,则发出中断;反之,不发出中断.。
[0061]PLB/OPB Bus Time-Out Condition检测,在硬件中,当DMA使用总线访问某个地址时,由于该地址不存在,会导致超时,从而产生错误。在DMA建模中,该错误的检测改为,每次传输会检测该地址是否存在,若不存在,则发生该错误。该错误由transfer_thread调用check_exist ()检测。
[0062]所述的执行单元11还包括有实现Scatther/Gather传输的控制过程。
[0063]Scatther/Gather传输只需配置一次寄存器,而完成多次不同传输,中间不需要(PU的参与。如图3所示,该描述表包涵了完成一次完整的传输任务所需的所有寄存器配置信息,当要完成多次任务,只需要一次配置DMA的Scatter/Gather寄存器即可。
[0064]若要实现这类传输,需要实现一个SCjhread线程,用来每次从内存读取Scatter/Gather描述表,然后将读到信息赋值给DMA的相关寄存器。然后通知transfer_thread,开始传输,如若单次传输任务完成,会检测DMA_CTCN[Link],若该位为1,则继续去内存取下一下描述表,反之,则终止任务,表不一次完整的Scatter/Gather传输任务完成。
[0065]所述的CPU单元2是采用法国TIMA实验室的系统仿真验证平台Rabbits的中的CPU部分,是由CPU处理器22和内部设置有用于接收四个通道12、13、14、15所发出的中断中请求信号的断控制器211的中间件21构成,其中,所述的CPU处理器22包括有原有的PowerPC指令集,以及新增加的PowerPC设备控制寄存器指令,所述的设备控制寄存器指令包括有:用于将设备寄存器信息读取到通用寄存器内的mfdcr指令和用于将通用寄存器信息写到设备寄存器中的mtdcr指令,mfdcr指令和mtdcr指令实现的第一步是将设备控制寄存器总线地址转换设备控制寄存器的实际物理地址,第二步是通过中间件21读写DMA控制器中的寄存器。
[0066]PowerPC系列处理器的的架构里有一条DCR总线,用来控制固定的设备寄存器,如DMA的寄存器,分为两类指令,一类为读DCR指令,一类为写DCR,其中最基本两条指令为mfdcr和mtdcr,mfdcr为将设备寄存器信息读取到通用寄存器,mtdcr为将通用寄存器信息写到设备寄存器,在实际硬件中,这两条指令能过专门的DCR总线对片内设备寄存器进行读写。每个寄存器都对应DCR Bus寻址空间的固定地址,如DMA_CR0 (DMA ControlRegisterO)的 DCR 地址为 0x100。
[0067]CPU的仿真由Qemu完成,设备的仿真由SystemC完成,为了简化运行流程,没有完整的总线概念,不需要实现单独的DCR总线,外设与内存具有统一的编址,访问设备可以通过Qemu_Wrapper提供的接口对SystemC设备进行读写。DCR指令的实现就是由该原理实现的。虽然仿真中实现的方式不同,但指令的效果和使用方式与原来相同。整体思想如下:地址转换:由于DCR寄存器采用单独编址,所以需要实现一个地址转换器实现一级地址转换,将设备控制寄存器总线地址转换设备控制寄存器的实际物理地址。访问模块寄存器:通过中间件21读写DMA控制器中的寄存器。
【权利要求】
1.一种基于PowerPC处理器的DMA事务级建模方法,是在法国TIMA实验室的系统仿真验证平台Rabbits的基础上进行建模,包括: 总线(5),使用SyStemC-TLM2.0进行事务级建模,用于处理主设备模块的传输请求; 内存(3),使用SyStemC-TLM2.0进行事务级建模,连接总线(5),用于存储数据和指令,提供给DMA控制器(I)和CPU单元(2 ); 外围设备(4),使用SystemC-TLM2.0进行事务级建模,连接总线(5);其特征在于:还设置有 DMA控制器(1 ),使用SyStemC-TLM2.0进行事务级建模,连接总线(5),用于进行数据搬运的控制,并发出中断请求信号; CPU单元(2 ),输入端连接DMA控制器(I)接收DMA控制器(I)发出的中断请求信号,连接总线(5)用于读写内存(3)的数据和指令、读写DMA控制器(I)中的寄存器以及读写外围设备(4)中的数据,并模拟PowerPC指令和对中断请求进行处理。
2.根据权利要求1所述的一种基于PowerPC处理器的DMA事务级建模方法,其特征在于,所述的DMA控制器(I)包括有与所述的总线(5)相连的执行单元(11),与所述的执行单元(11)相连的四个通道(12、13、14、15),4个公共寄存器。
3.根据权利要求2所述的一种基于PowerPC处理器的DMA事务级建模方法,其特征在于,所述的4个公共寄存器是:用于存储DMA控制器(I)的运行状态的状态寄存器、Scatter/Gather命令寄存器、睡眠模式寄存器和极性配置寄存器。
4.根据权利要求2所述的一种基于PowerPC处理器的DMA事务级建模方法,其特征在于,所述的四个通道(12、13、14、15)中的任一通道内都设置有用于存储数据传输规则的控制寄存器,用于存储数据传输规则的控制和计数寄存器,源地址寄存器,目的地址寄存器,Scatter/Gather描述表地址寄存器,每一个通道设有一个中断请求端口,所述的中断请求端口与CPU单元(2)中的中断控制器相连,用于向CPU单元(2)发出中断请求信号。
5.根据权利要求2所述的一种基于PowerPC处理器的DMA事务级建模方法,其特征在于,所述的执行单元(11)包括有:用来实现对数据传输的逻辑控制、用于控制从四个通道(12、13、14、15)的中断端口向CPU单元(2)发出中断请求信号的中断控制和错误检测的7个sc_thread线程,所述的7个sc_thread线程有:用来实现对DMA控制器(I)中的四个通道(12、13、14、15)的不同中断进行控制的四个scjhread线程,用来启动一般数据传输和scatter/gather传输,并根据通道优先级选择优先级最高的使能通道运行的一个sc_thread线程,用来按照根据四个通道内的寄存器存储的传输控制信息,向内存(3)和外围设备(4)发送请求搬运数据,并检测传输中的错误的一个scjhread线程,用来读取内存(3)中的scatter/gather描述表配置寄存器,并完成scatter/gather的地址对齐错误检测的一个sc_thread线程。
6.根据权利要求5所述的一种基于PowerPC处理器的DMA事务级建模方法,其特征在于,所述的执行单元(11)对应四个通道(12、13、14、15)中的任一通道都具有空闲状态,一般传输状态,Scatter/Gather传输状态,错误状态四种状态,其中,所述的一般传输状态和Scatter/Gather传输状态在四个通道(12、13、14、15)中的任意两个通道内不能同时存在。
7.根据权利要求5所述的一种基于PowerPC处理器的DMA事务级建模方法,其特征在于,所述的错误检测包括有:在传输开始的时候进行的地址对齐检测,Burst Count Error检测,Burst Prefetch Error检测,在取Scatter/Gather描述表之前进行的Scatter/Gather地址对齐错误检测,在数据传输过程中进行的PLB/OPB Bus Time-Out Condition检测。
8.根据权利要求5所述的一种基于PowerPC处理器的DMA事务级建模方法,其特征在于,所述的执行单元(11)还包括有实现Scatther/Gather传输的控制过程。
9.根据权利要求1所述的一种基于PowerPC处理器的DMA事务级建模方法,其特征在于,所述的CPU单元(2)是采用法国TIMA实验室的系统仿真验证平台Rabbits的中的CPU部分,是由CPU处理器(22)和内部设置有用于接收四个通道(12、13、14、15)所发出的中断中请求信号的断控制器(211)的中间件(21)构成,其中,所述的CPU处理器(22)包括PowerPC指令集,以及PowerPC设备控制寄存器指令,所述的设备控制寄存器指令包括有:用于将设备寄存器信息读取到通用寄存器内的mfdcr指令和用于将通用寄存器信息写到设备寄存器中的mtdcr指令,mfdcr指令和mtdcr指令实现的第一步是将设备控制寄存器总线地址转换设备控制寄存器的实际物理地址,第二步是通过中间件(21)读写DMA控制器中的寄存器。
【文档编号】G06F9/455GK103793263SQ201410035726
【公开日】2014年5月14日 申请日期:2014年1月24日 优先权日:2014年1月24日
【发明者】魏继增, 赵福发, 郭炜 申请人:天津大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1