新闻中心

EEPW首页>模拟技术>设计应用> 适应多种时序的DMA控制器设计

适应多种时序的DMA控制器设计

作者: 时间:2012-03-14 来源:网络 收藏
断,从 JPEG_MEM中读出JPEG格式图片,存入片外的存储器中。经实际测试可知,基带芯片做一次EMI读取大约需要时间250 ns,因为EMI数据线宽度为16位,所以在此250 ns内基带芯片将从JPEG_MEM中读出2个字节,这样读完所有15 360个字节需要15 360x250/2=1.92 ms。在基带芯片读取JPEG数据之前,其将最后一部分预览数据读出并送LCD显示也需要1 ms左右,至此每帧图像70 ms的帧消隐时间在基带芯片读完JPEG数据后还剩余70-1-1.92=67.08 ms。

  当基带芯片读完JPEG数据后,将立即准备将数据写入SD卡中。其首先将操作文件链表,在SD卡上为即将写入的JPEG图片分配相应空间,并将这些空间的原内容擦除。因为在写卡和擦卡之后,SD卡需要过一定时间后才能接受新的命令,所以操作文件链表和擦卡比较耗时间,一般需要15 ms左右。在此之后,为了提高写卡速度,基带芯片先将一部分数据(如512字节)利用写入存储器中,这需要的时间为250 nsx512/2=0.064 ms,然后配置SD卡向SD卡发出CMD25(multiply block write conlluand)命令。基带芯片设置每个CMD25向卡写入10个block数据。在接收到SD卡发回的响应后,SD卡将利用接口从存储器中读出图像数据并同时将数据写入SD卡中。在SD卡控制器写卡的同时,基带芯片将剩余的9个block数据写入DMA存储器。SD卡的时钟频率为24 MHz,为其工作在4根数据线模式时,其传送完所有5 120字节的数据只需要42nsx2x5120=0.43 ms。但是基带芯片写完剩余的9个block需要250nsx512x9/2=0.576 ms>0.43 ms,所以从基带芯片写第1个block开始到SD卡控制器把最后一个block写入SD卡大约需要时间为 0.064+0.576+0.045=0.685 ms。在此之后,SD卡将进入编程状态(programming状态),这段时间因卡而异,在实际调试中使用的卡一般编程状态会持续5 ms左右。至此基带芯片完成一次5 120字节的写卡需要时间为:15+0.685+5=20.685ms。如前所述每幅JPEG压缩后的320x240的图片大约为15360字节,即30 个block,所以写完一幅图片需要的总时间约为3x20.685=62.055ms,其小于前面计算的67.08ms,所以基带芯片和SD卡控制器可以在每帧图像的帧消隐时间内完成写卡操作。

  2 DMA控制器的实现

  2.1 DMA控制器接口

  为了更准确地描述该DMA控制器的工作流程,其主要接口信号介绍如下。DMA控制器与3部分逻辑的接口为:基带芯片的EMI接口、DMA存储器接口、SD卡控制器。

  1)与基带芯片的接口 这个接口中,与该DMA控制器关系最密切的信号是host_dma_wr,其为基带芯片送给DMA存储器的写信号,这个信号低电平有效。

  2)DMA存储器接口 dma_memory_addr为DMA存储器的地址信号。为了能够保存10个block的数据,DMA存储器的容量为2560x16=5120字节,所以dma_memory_addr的位宽为12位;drag_memory_datain为DMA存储器的数据输入端口,位宽为16 位;dma_memory_dataout为DMA存储器的数据输出端口,位宽为16位;dma_memory_wen为DMA存储器的写使能信号,低电平有效。

  3)SD卡控制器接口 dma_req是SD卡控制器发出的DMA请求信号,高电平有效。其为DMA控制器做速度协调的重要信号,如果其为高则表示SD卡控制器要求与DMA存储器做DMA传送;如果该信号被置低,可能存在两种情况,①可能是本次DMA传送已经完成,②可能是SD卡控制器的读或写卡速度低于其操作DMA存储器的速度,所以SD卡控制器暂停DMA操作;dma_write是SD卡控制器发出的DMA写标志信号。如果其为1表示SD卡控制器在做读卡操作,并准备将读出的数据写入DMA存储器;如果其为0表示SD卡控制器在做写卡操作,并准备从DMA存储器中读取数据;dma_ ack是DMA控制器发给SD卡控制器的应答信号,其相当于DMA传输数据的有效信号;dma_rdata是DMA读模式的数据输出端口,位宽为32 位;dma_ wdata是DMA写模式的数据输入端口,位宽为32位。

  2.2 DMA控制器的工作流程

  为了使DMA控制器能更灵活地适应各种操作情况并很好的完成2个操作源(基带芯片、SD卡控制器)的速度匹配功能。下面将分别就multi-ple block write命令(CMD25)和multiple block read命令(CMD18)对该状态机的工作流程进行说明。

  先将状态机中的几个重要变量做如下说明:

  dma_num表示在一次多block读(CMD18)或写(CMD25)操作中,要向卡写入或读出多少个字节的数据。在该图像协处理器中,每次读或写卡都要操作10个block数据,所以dma_num将被设置为5 120;

  dma_in_cnt表示在一次多block写卡操作中,基带芯片已经向DMA存储器中



关键词:时序DMA控制器

评论


相关推荐

技术专区

关闭