TS201的DMA通信基本原理以及IIR的加深理解(含源代码)

news2024/11/16 15:37:21

实验目的:

了解DMA通信基本原理,掌握内存与SDRAM间一维DMA通信方式、二维DMA通信方式以及相关控制方法。学习数字滤波器设计方法,掌握其调试步骤,使学生加深对IIR的理解,进一步提高对数字信号处理理论的认识。

实验任务:

实验1:内存与SDRAM间的一维DMA通信实验
实验2:内存与SDRAM间的二维DMA通信实验
实验3:无限脉冲响应数字滤波器(IIR)的设计实验

实验内容:

实验1内存与SDRAM间的一维DMA通信实验

实验原理

DMA是一种不需要处理器内核干预的数据传输机制,作为一种后台任务执行,即进行DMA传输时,处理器可以处理其它任务。如果使能了DMA中断,那么当数据传输结束后会产生中断信号,表示DMA传输已经完成。

DMA传输方式包括:一维DMA、二维DMA、链式DMA、AutoDMA等,本次实验使用一维DMA方式,即传输存储器中一段连续的数据(地址是相邻接的)。

若要利用DMA传输数据,首先应配置DMA传输控制块(TCB)寄存器。DMA传输的数据具有方向性,即从发送端(源)到接受端(目的),若为外部存储器DMA传输,则需要设置两个TCB参数,一个源TCB,用于描述源数据的地址、大小和每次传输数据的长度等;还有一个目的TCB,用于描述数据传入的目标地址、数据大小及每次传输数据的长度等。若要使能DMA中断,也需要在TCB中设置相应位。若使用链路或AutoDMA通道则只需一个目的TCB。设置好TCB寄存器后,DMA传输自动开始。

TS201S一共14个DMA通道,4个通道(03)专用于外部存储器设备,8个通道(411)用于链路口,2个通道(12~13)用于自动DMA操作。本次实验使用DMA0通道实现内存与外部存储器SDRAM间的一维DMA通信。

相关的寄存器:

1〉 TCB寄存器

TCB寄存器是一个128位的四字组寄存器,由DI、DX、DY和DP寄存器组成:

a) DI是DMA索引寄存器,包括了将要发送或者接收的数据的源地址或者目的地址,既可以指向内部存储器又可以指向外部存储器,也可指向链路口

b) DX包含了一个16位(高)的计数值和一个16位的修改量,若使能了二维DMA则该寄存器保存的只是X方向的计数值和修改量
c) DY与DX结合一起使用,保存了Y方向上的16位计数值和16位修改量。如果只进行一维DMA传输,就不需要设置该寄存器。

d) DP寄存器包括了DMA所有控制信息,分为两个主要段在这里插入图片描述

DP寄存器各位功能说明:

在这里插入图片描述
2〉中断屏蔽寄存器(IMASK)

IMASK是一个64位寄存器,由IMASKH和IMASKL组成,当IMASK中某位被设置成1的时,那么将响应这个位所对应的中断。

DMA0中断对应在IMASKL中的第14位,所以我们要取消对DMA0中断的屏蔽,使能DMA0中断,可以通过如下指令实现:

xr0=0x4000;; /*0x4000= B 0100 0000 0000 0000 */
IMASKL=xr0;;
xr0=0;;
IMASKH=0

也可以直接使用如下指令实现,原理是一样的,下面的方法更为直观一些。

xr0=INT_DMA0;; /* INT_DMA0在头文件中的定义的值为0x4000*/
IMASKL=xr0;;

实验步骤:

1)启动VisualDSP++,新建工程命名为”test2_1”,路径选择为”D:\DSP\”,并将源代码文件夹下默认生成的test2_1.c文件移除;

2)新建空白文件(选择菜单FileNewFile),输入参考源代码,保存为DMA_1.asm,并将其添加到工程中;

3)分析、理解源程序,并编译文件纠错;

4)建立链接文件(选择菜单ToolsExpert LinkerCreate LDF)

4)编译整个工程,若出现错误“The following symbols referenced in processor ‘p0’ could not be resolved: ‘main [_main]’ referenced from ‘ts_hdr_TS201.doj’”则说明声明的程序段/数据段(变量)所存放到了不能被执行的位置,导致该程序段/数据段(变量)没有被分配到相应的存储空间。处理方式:打开生成的LDF链接文件,在打开的Expert Linker窗口中将红叉项下的DMA1.obj添加(用鼠标拖拽)到MSSD0存储区(由于TS201S将外部存储器SDRAM地址映射到了0x4000 0000到0x7FFF FFFF之间的四个部分:MSSD0~3,所以我们将DMA1.obj添加至其中之一即可,由于开发板上SDRAM是映射在MSSD0,为方便以后实验,直接添加至MSSD0即可)。

5)重新编译工程,为方便观察存储器内相应地址其内容变化,在__Done处设置断点,同时打开两个存储器观察窗口(选择菜单Memory->TigerSHARC Memory)分别输入tx_data和rx_data。

6)运行(RUN)工程,程序自动运行至_Done后停止,观察tx_data内数据值,然后单步运行程序(按F11键),观察rx_data内数据变化。

实验结果:

要求:

1〉按照实验步骤完成实验;

2〉修改程序,DMA每次传输一个字(32位),验证结果;

#define MODIFY 4改为#define MODIFY 1
TCB_INTMEM|TCB_QUAD改为TCB_INTMEM|TCB_NORMAL;
TCB_EXTMEM|TCB_QUAD改为TCB_EXTMEM|TCB_NORMAL;

3〉修改程序,用软环境模拟外部中断来启动DMA传输,并观察传输结果。
通过下列步骤来建立一个外部中断:

a.打开对话框选Settings\Interrupts,会出现一个Interrupt Timing对话框;
b.设置中断属性;

在这里插入图片描述

c.设置断点并且运行程序.

用如下程序段:

_Set_IRQ_A: /设置外部中断/
j0=_IRQ0_ISR;;
IVIRQ0=j0;;
xr0=INT_IRQ0;;
IMASKH=xr0;; //外部中断IRQ0使能
SQCTLST=SQCTL_GIE;;
_Wait_For_Interrupt:
.align_code 4;
nop;nop;nop;idle;; //无限等待直到中断发生,然后跳至中断程序_IRQ0_ISR执行
jump _Wait_For_Interrupt;;
_IRQ0_ISR:
_Load_DMA0_TCBs: //将初始值倒入DMA0的传输和接收TCB
j0=DC0_Source_TCB;;
xr3:0=q[j0+j31];; //注意这种传递方式
j0=DC0_Destination_TCB;;
yr3:0=q[j0+j31];;
DCS0=xr3:0;;
DCD0=yr3:0;; //开始进行DMA传输
rti(np)(abs);;

代替以下原程序:
_Load_DMA0_TCBs: //将初始值倒入DMA0的传输和接收TCB
j0=DC0_Source_TCB;;
xr3:0=q[j0+j31];; //注意这种传递方式
j0=DC0_Destination_TCB;;
yr3:0=q[j0+j31];;
DCS0=xr3:0;;
DCD0=yr3:0;; //开始进行DMA传输

4〉分析两个程序的原理,简述软环境模拟外部硬件中断的程序流程。

参考源代码:

#include <defts201.h>
#define N 1024 /定义需要传输的32位字的个数=1024/
#define MODIFY 4 /每次传输的数据单元大小,4个字(128位)数据/
.section data1;/声明数据段1,存放对源TCB和目的TCB预先设置的参数/
.var DC0_Source_TCB[4]=
tx_data,
N<<16|MODIFY, /将N左移16位,即移至DX的高16位(计数位)/
0x0,
TCB_INTMEM|TCB_QUAD;/源选择为内部存储器/四字操作数/
.align 4;
.var DC0_Destination_TCB[4]=
rx_data,
N<<16|MODIFY, /将N左移16位,即移至DX的高16位(计数位)/
0x0,
TCB_EXTMEM|TCB_QUAD;/目标为外部存储器/四字操作数/
.section data2;
.var tx_data[N]; /定义内部存储器缓冲区,存储需要传输到外存的数据/
.section sdram0;
.var rx_data[N]; /在SDRAM中定义外部存储器缓冲区,存储从写入的数据/
.section program;
_Initialize_Bus_SDRAM: /初始化SYSCON和SDRCON/
xr0=SYSCON_MP_WID64|SYSCON_MEM_WID64|
SYSCON_MSH_PIPE2|SYSCON_MSH_WT0|SYSCON_MSH_IDLE|
SYSCON_MS1_PIPE1 |SYSCON_MS1_WT0|SYSCON_MS1_IDLE|
SYSCON_MS0_SLOW |SYSCON_MS0_WT3|SYSCON_MS0_IDLE;;
SYSCON=xr0;;
xr0=SDRCON_INIT |SDRCON_RAS2PC5 |SDRCON_PC2RAS2 |
SDRCON_REF3700|SDRCON_PG256 |SDRCON_CLAT2 |
SDRCON_ENBL;;
SDRCON=xr0;;
lc0=N;;
j0=tx_data;;
xr0=1;;
xr1=0;;
_Fill_Tx_Data:
xr1=r1+r0;;
[j0+=1]=xr1;;
if nlc0e,jump _Fill_Tx_Data;;
_Load_DMA0_TCBs: /将初始值倒入DMA0的传输和接收TCB寄存器/
j0=DC0_Source_TCB;;
xr3:0=q[j0+j31];; /注意这种传递方式/
j0=DC0_Destination_TCB;;
yr3:0=q[j0+j31];;
DCS0=xr3:0;;
DCD0=yr3:0;; /开始进行DMA传输/
_Done:
nop;nop;nop;nop;;
jump _Done;nop;nop;nop;;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/70908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java+SSM美妆商城全套电商购物(含源码+论文+答辩PPT等)

项目功能简介: 本项目含代码详细讲解视频&#xff0c;手把手带同学们敲代码从0到1完成项目 该项目采用技术Springmvc、Spring、MyBatis、Tomcat服务器、MySQL数据库 项目含有源码、配套开发软件、软件安装教程、项目发布教程以及代码讲解教程 项目功能介绍&#xff1a; 系统管理…

[附源码]计算机毕业设计酒店物联网平台系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

国标码的发展历史以及编码方式

文章目录引言GB2312GBKunicode 和 ISO10646ISO10646的编码结构结论参考文献引言 由于物理实现比较容易等原因计算机等数字系统内部使用二进制字符的记录、存贮、传递和交换通过编码来实现。字符的机内编码其实就是该字符在字符图库中的序号。拼音文字一般仅有几十个字母组成。而…

【传输层】TCP、三次握手、四次挥手、可靠传输、TCP拥塞控制、慢开始、拥塞避免、快重传、快恢复

文章目录TCP------打电话----可靠有序、不丢不重复--------提供全双工-------------发送接收缓存----------面向字节流--------搬砖一样加个头运走TCP首部格式-----源端口目的端口一共4B-------序号字段&#xff08;报文第一个字节的序号&#xff09;--------确认号&#xff08…

手机软件系统测试用例设计大全

一、 等价类分析法 二、 边界值分析 三、 错误猜测法 四、 判定表法 五、 流程分析方法 六、 正交试验设计法 七、 状态迁移法 等价类分析法等价类划分方法针对手机状态大致可以归几个大类&#xff1a; 按键类&#xff08;等价法&#xff09;&#xff1a;有效输入和无效…

python在Keras中使用LSTM解决序列问题

时间序列预测是指我们必须根据时间相关的输入来预测结果的问题类型。时间序列数据的典型示例是股市数据&#xff0c;其中股价随时间变化。 最近我们被客户要求撰写关于LSTM的研究报告&#xff0c;包括一些图形和统计输出。 递归神经网络&#xff08;RNN&#xff09;已被证明可…

D-026 LVDS硬件电路设计

LVDS硬件接口电路设计1 简介2 硬件设计实战3 硬件设计要点4 Layout注意事项5 MIPI与LVDS的区别1 简介 LVDS&#xff08;Low-Voltage Differential Singnaling&#xff0c;低电压差分信号&#xff09;可以实现点对点或者一点对多点的连接&#xff0c;具有低功耗、低误码率、低串…

蓝桥杯比赛 NOC竞赛C++项目,选择题真题和模拟题汇总答案解析

题目来源&#xff1a;第10届蓝桥杯青少年组C选拔赛 1、下面哪个密码最安全 D A. 111111 B. 123456 C. qwerty D. Z2a8Q1 2、如果今天是星期六&#xff0c;再过60天是星期几&#xff1f;A A. 星期三 B. 星期四 C. 星期五 D. 星期六 3、90到100之间有几个素数&#xff1f…

HTML学生作业网页 传统端午节节日 学生节日网页设计作业源码(HTML+CSS+JS)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

Android Studio的ADV无法启动解决办法【IDEA 的ADV无法启动解决办法】

Android Studio的ADV无法启动解决办法【IDEA 的ADV无法启动解决办法】 开发者指南:https://developer.android.google.cn/guide 一、BIOS开启Intel VT-x 这一步如果在创建Android项目时&#xff0c;可以启动的话&#xff0c;证明已经开启了&#xff0c;可以忽略 1. 开始菜单&am…

新鲜出炉!阿里内部开源SpringCloud Alibaba全解(全彩版)全网首发

第一章微服务介绍 第二章微服务环境搭建 第三章Nacos Discovery–服务治理 自定义实现负载均衡 第四章Sentinel–服务容错 第五章Gateway–服务网关 Gateway核心架构 第六章Sleuth-链路追踪 ![新鲜出炉&#xff01;阿里内部开源SpringCloud Alibaba全解&#xff08;全彩版&…

基于OpenLayers实现导航地图上(起/终)点的交互式图标显示

目录 1、准备 2、瓦片地图显示 3、增加矢量图层 4、利用click实现鼠标点击效果 在常见的导航软件中&#xff0c;往往都存在标记起/止点的需求。毕竟路径规划中的重要传入参数就是起止点坐标。在常用的不管是移动端还是PC端&#xff0c;导航地图上一般在选择起止点位置会留…

大数据 | Spark安装及测试

一、安装 Spark On Yarn 在公司中&#xff0c;通常采用Yarn进行资源调度&#xff0c;故此处采用Yarn模式的集群部署。 采用Yarn部署模式时&#xff0c;需要保证集群中已经安装好Hadoop集群&#xff0c;在此基础上才能实现Yarn模式的部署。 在Yarn模式中&#xff0c;Spark应用…

Python学习-8.2.1 库(jieba库的基础与实例-中文分词库)

jieba库的安装见上篇&#xff1a;Python学习-8.库&#xff08;第三方库介绍与下载安装&#xff09; jieba库概述 由于中文文本中的单词不像英文那样&#xff0c;并不是根据空格或者标点符号进行分割的&#xff0c;而是存在一个重要的分词问题。因此引入了jieba库。 分词原理&…

chrome Google无法翻译?腾讯已经出手了,一劳永逸!

谷歌翻译中国版和谷歌地图中国版同时停服&#xff0c;此次停服也影响到谷歌浏览器翻译功能的使用。谷歌给出的官方回应是谷歌翻译和谷歌地图的中国版使用率都太低&#xff0c;既然使用率太低那直接停服也情有可原&#xff08;笑笑&#xff09;。 只是谷歌浏览器内置的翻译功能…

前端开发:JS中使用到的贪心算法场景

前言 在前端开发过程中&#xff0c;除了一般的逻辑使用之外&#xff0c;也会涉及到算法相关的知识&#xff0c;比如冒泡排序、数组去重/合并、贪心算法、八皇后算法等等&#xff0c;这些都是比较常用的前端算法相关的知识点。关于前端实际开发中用到的算法&#xff0c;虽然没有…

Studio Controls COM 64 for MFC 组合套件-dbi-tech

dbi-tech Studio Controls COM 64 - 新功能... Studio 控制 COM 64 位 v6.0 ctxCalendar - (v4.0.0.0) DBI Technologies Inc. 是一家创新的商业软件开发公司&#xff0c;专注于为应用程序开发人员提供最佳的端到端供应链可见性组件软件。DBI 以其屡获殊荣的组件软件产品和服务…

华为机试_HJ62 查找输入整数二进制中1的个数【简单】【收藏】

目录 描述 输入描述&#xff1a; 输出描述&#xff1a; 解题过程 提交代码一&#xff08;常规方法&#xff09; 提交代码二&#xff08;位运算方法&#xff09; 学习代码 代码一 代码二 收藏点 描述 输入一个正整数&#xff0c;计算它在二进制下的1的个数。 注意多…

kubernetes学习之路--基础概念以及搭建

写在前面&#xff1a;代码审计太难了&#xff0c;不想学了摆烂了&#xff0c;开始学云安全了。。。。 一.云介绍 云分类&#xff1a;公有云、私有云、混合云 云有三种服务模式&#xff1a;Laas、Paas 和 Saas Laas&#xff1a;基础设施即服务&#xff08;Infrastructure-as…

[附源码]计算机毕业设计酒店客房管理信息系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…