查看: 2700|回复: 0

基于DMA组件的SD卡数码相框(转)

[复制链接]
  • TA的每日心情
    擦汗
    2014-2-12 10:49
  • 签到天数: 150 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2013-12-18 10:26:09 | 显示全部楼层 |阅读模式
    分享到:
    1 功能概述
             如图所示,我们这一个实例要在上一个工程的基础上,添加一个DMA组件。这个DMA组件挂在Avalon-MM总线上,用于NIOS II处理器进行一些寄存器的读写,从而完成基本的组件控制功能;而DMA组件最核心的功能,当然是搬数据了,并且是在处理器不干涉的情况下,进行数据的搬运,它从某种意义上能够大大缓解处理器的运行负荷。对于我们这个设计,这个DMA组件完全是定制化的,咱自己用代码写,而功能也很专一,就是将CH376芯片的有效图片数据直接搬运到LCD控制器端进行缓存。如此一来,就不再需要上一个实例中那样让处理器读出CH376的图片数据,再写到LCD控制器端了。一般来说,这样一来通常是能够大大提升系统性能的。只不过,我们这个系统的速度瓶颈还是在于CH376的SD读写速度,所以和上一个实例相比,这个工程无法带来非常明显的性能提升。但是没有关系,我们的重点在于DMA组件的设计,希望大家能够focus到这个点上。
    11.jpg
    关于DMA,特权同学收录在《深入浅出玩转FPGA 第二版》中的文章《DMA无处不在》,有较深入的介绍,大家不妨去看看。

    2 DMA外设组件设计
             在我们的系统中,DMA总线和周边各个组件的详细连接如图所示。连接到Avalon-MM总线作为从机,这条总线由片选信号、写选通信号(主机处理器写入)、16bit写数据总线、2bit地址总线和从机中断信号组成。这条总线不直接传输图片数据,而是用于处理器完成DMA组件的各个控制功能。如下表所示,Avalon-MM总线对应操作的4个寄存器功能。

    22.jpg

    33.jpg
    深入DMA组件内部,我们来看它的各个逻辑接口是如何设计的。如图所示,Avalon-MM从机接收到的各个控制信号相互协作,完成数据的收发中转。数据传输状态机在DMA功能启动并且DMA传输数据计数器的值不为零的情况下,将产生376并口总线时序读取当前的有效图片数据,并且产生后端FIFO(后端模块sdfifo_ctrl.v)写入数据所需的信号。而后端的FIFO在每满160个Byte后便产生一次SDRAM的页写操作,每次操作完成就会返回一个应答信号给我们的DMA组件,从而递增Avalon-MM总线可写入的页寄存器(地址1)。
             另外,这里大家要注意,CH376的并口总线虽然在DMA操作时处于DMA控制状态,但并非所有的CH376指令都是由DMA组件产生,这些指令还是和上一个实例一样由NIOS II处理器产生,DMA组件只进行读数据的时序产生和控制。其实这是一个很典型的软硬件分工协同设计划分,把复杂的控制交给软件,把高重复性高速率要求的任务交给硬件来实现。

    44.jpg
    这里,我们还想对Avalon-MM从机的中断信号做一些扩展说明。如图所示,从机产生的interrupt信号可以是高电平有效(irq),也可以是低电平有效(irq_n)。如我们选择的是低电平有效,那么就意味着我们的这个中断信号在一般情况下都应该保持高电平,而一旦跳变为低电平后,保持若干时间则NIOS II处理器就能够检测到从机发送来的这个中断信号,若是这个中断信号在软件编程时使能了,并且进行了中断函数注册,那么此时NIOS II软件就会进入中断函数执行相应的处理。
    55.jpg
    对于从机而言,我们产生一个中断后,如果这个中断一直保持在低电平,不拉高,那么NIOS II处理器就会发生一些异常,可能会一直不断的进出中断函数,这是我们不想看到的。怎么办?好解决,正如我们这个组件中若对地址3写数据0x0,则关闭DMA组件的中断功能,那么久可以清除这个被拉低的中断信号,从而确保正常的软件继续工作。
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-30 00:27 , Processed in 0.186484 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.