⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dma.txt

📁 DMA调试经验
💻 TXT
字号:
NIOS II DMA 
0
推荐NIOS DMA同样是Altera SOPC Builder库组件
DMA可用于存储器之间、存储器与外设、外设之间的数据传输,允许没有CPU干预,完成固定长度或者可变长度的数据传输
DMA外设通过两个Avalon主端口(一读一写)和一从端口控制。
典型DMA传递过程如下:
1。通过写控制端口设置DMA的数据传输方式
2。启动DMA外设,实施数据传输(CPU不干预)
3。DMA读传输主端口从目标地址(内存或者外设)读取数据,写端口向目的地址(内存或者外设)写数据。读写之间通过FIFO进行数据缓冲。
4。只指定字节数的数据传输完成或者传输了一个包结束(EOP)时,DMA将结束传输。DMA外设可以在传输结束时发出中断请求。
5。传输当中或者结束后,都可以通过查看DMA的状态寄存器来判断传输在进行还是已经结束
主要寄存器: status  第0位:done
                                         第1位:busy
          第2位:reop(读取当前数据包结束)
          第3位:weop(写当前数据包结束)
          第4位:len(完成一次DMA传输,len置1)
                              readaddress(主读取起始地址),存放的是传输数据的源地址,其宽度由用户在SOPC中自己定义。(与外设匹配)
        writeaddress(主写入起始地址),与上类似
       length ,存放读写端口之间需要传输的字节数,长度寄存器宽度由系统生成时的设置决定,DMA每完成一次写传输,length寄存器值减一,当减为0时,len位使能。其寄存器的值按照字节数计算,双字传输,必须是4的倍数,字的传输,当然是2的倍数啦!!
       control 寄存器: 位0: byte   字节传输
               位1:  hw  字传输
               位2: word 双字传输
               位3: go DMA 使能
               位4: i_en 中断使能
               位5:reen 读数据包使能
               位6:ween写数据包使能
               位7:leen ,置1时,DMA在传输完length数目数据的时候结束传输(已经知道传输数据量),若设置0,则不会停止,使用于数据量不确定的场合。
               位8:rcon 从固定地址读取
               位9:wcon 从固定地址写入
 
读数据的地址每次访问递增1.2.4个字节,具体是几取决去传输的是字节、字、或者半字,若rcon置1,则地址不递增。
当done&&i_en == 1时候,dma向外设发出中断请求,典型的中断处理程序首先读取状态寄存器的len,reop,weop位来判断中断原因。然后,写转台寄存器清除中断,处理后,进行下一次DMA传输。 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -