DSP与外部存储器和键盘接口电路设计Word文档下载推荐.docx
- 文档编号:18954470
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:17
- 大小:113.73KB
DSP与外部存储器和键盘接口电路设计Word文档下载推荐.docx
《DSP与外部存储器和键盘接口电路设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《DSP与外部存储器和键盘接口电路设计Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
批准日期:
年月日
摘要
20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。
在电子技术设计领域,DSP的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。
这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念。
本次设计在CCS开发平台上利用C语言设计矩阵键盘控制接口电路。
要求设计一个3×
5矩阵键盘,一共有三个模块,分别为:
扫描电路模块、时钟产生模块、键盘译码电路和按键标志位产生电路。
扫描模块中是为了产生扫描信号,来利用扫描信号来扫描键盘中是否有按键按下。
键盘译码电路和按键标志位产生电路也是为了配合扫描模块来扫描电路中是否有按键按下,而且还要求它来产生按键标志信号,以便和外部电路握手。
时钟产生电路是为了产生不同频率的信号,来驱动上面两个电路的运转。
通过对课题的分析研究,掌握了DSP语言编程方法,同时也增强了个人的学习能力和动手能力。
关键词:
C54x;
DSP;
存储空间;
程序存储器;
数据存储器;
扩展;
芯片TMS320C5402;
矩阵键盘扫描。
1.外部存储器RAM与DSP接口电路系统设计
通常,C54x的总存储空间为192K字。
这些空间可分为3个选择的空间:
64K字的程序存储空间、64K字的数据存储空间和64K字的I/O空间。
所有的C54xDSP片内都有随机存储器(RAM)和只读存储器(ROM)。
RAM有两种类型:
单寻址RAM(SARAM)和双寻址RAM(DARAM)。
表1-1列出了各种C54xDSP片内存储器的容量。
C54xDSP片内还有26个映象到数据存储空间的CPU寄存器和外围电路寄存器。
C54DSP结构上的并行性及在片RAM的双寻址能力,使它能够在任何一个给定的机器周期内同时执行4次存储器操作,即一次读两个操作数和写一个操作数。
我们可以将双寻址DARAM和单寻址SARAM配置为数据存储器或程序存储器。
与片外存储器相比,片内存储器具有不需要插入等待状态、成本和功耗低等优点,但片外存储器具有较大存储空间能力。
表1-1C54xDSP片内程序和数据存储器(单位:
K字)
存储器类型
C541
C542
C543
C545
C546
C548
C549
C5402
C5410
ROM
28K
2K
48K
16K
4K
程序ROM
20K
32K
程序/数据
8K
DARAM
5K
10K
6K
8K
SARAM
24K
56K
168K
1.1存储空间的分配
C54xDSP的存储空间可以分成3个可单独选择的空间,即程序、数据和I/O空间。
在任何一个存储空间内,RAM、ROM、EPROM、EEPROM或存储器映象外设都可以驻留在片内或片外。
这三个空间的总地址范围为192K字。
程序存储器空间存放要执行的指令和执行中所用的系数表,数据存储器存放执行指令所要用的数据,I/O空间与存储器映象外围设备相接口也可以作为附加的数据存储空间。
在C54x中,片内存储器的形式有DARAM、SARAM和ROM3种,取决于芯片的型号。
RAM总是安排到数据存储空间,但也可以构成程序存储空间,ROM一般构成程序存储空间,也可以部分安排到数据存储空间。
C54x通过3个状态位,可以很方便地“使能”和“禁止”程序和数据空间中的片内存储器。
1)MP/MC位
若MP/MC=0,则片内ROM安排到程序空间;
若MP/MC=1,则片内ROM不安排到程序空间。
2)OVLY位
若OVLY=1,则片内RAM安排到程序和数据空间;
若OVLY=1,则片内RAM只安排到数据存储空间。
3)DROM位
当DROM=1,则部分片内RAM安排到数据空间;
当DROM=0,则片内RAM不安排到数据空间。
DROM的用法与MP/MC的用法无关。
上述三个状态位包含在处理器工作方式状态寄存器(PMST)中。
图1.1以C5402为例给出了数据和程序存储区图,并说明了与MP/MC、OVLY及DROM3个状态位的关系。
C5402可以扩展程序存储空间。
采用分页扩展方法,使其程序空间扩展到1024K字。
为此,设有20根地址线,增加了一个额外的存储器映像寄存器—程序计数器扩展寄存器(XPC),以及6条寻址扩展程序空间的指令。
C5402中的程序空间分为16页,每页64K字,如图1.2所示。
图1.1C5402存储器图
注:
1.当OVLY=0时,1~15页的低32K字是可以获得的。
2.当OVLY=1时,则片内RAM映射到所有程序空间页的低32K字。
图1.2C5402扩展程序存储器图
1.3程序存储器
多数C54xDSP的外部程序存储器可寻址64K字的存储空间。
它们的片内ROM、双寻址RAM(DARAM)以及单寻址RAM(SARAM),都可以通过软件映象到程序空间。
当存储单元映像到程序空间时,处理器就能自动的对它们所处的地址范围寻。
如果程序地址生成器(PAGEN)发出的地址处在片内存储器地址范围以外,处理器就能自动地对外部寻址。
表1-2列出了C54xDSP可用的片内程序存储器的容量。
由表可见,这些片内存储器是否作为程序存储器,取决于软件对处理器工作方式状态寄存器(PMST)的状态位MP/MC和OVLY的编程。
表1-2C54xDSP的片内程序存储器
器件
ROM(MP/MC=0)
DARAM(OVLY=1)
SARAM(OVLY=0)
5K
C5420
为了增强处理器的性能,对片内ROM再细分为若干块,这样,就可以在片内ROM的一个块内取指的同时,又在别的块中读取数据。
当处理器复位时,复位和中断向量都映像到程序空间的FF80。
复位后,这些向量可以被重新映像到程序空间中任何一个128字页的开头。
这就很容易将中断向量表从引导ROM中移出来,然后再根据存储器图安排。
C54xDSP的片内ROM容量有大有小,容量大的片内ROM可以吧用户的程序代码编进去,然而片内高2K字ROM中的内容是由TI公司定义的,这2K字程序空间中包含如下内容:
(1)自举加载程序。
从串行口、外部存储器、I/O接口或主机接口自举加载。
(2)256字A律压扩表。
(3)256字u律压扩表。
(4)256字正弦函数值查找表。
(5)中断向量表。
图1.3所示为C54xDSP片内高2K字ROM中的内容及其地址范围。
如果MP/MC=0,则用于代码的地址范围F800h~FFFFh被映射到片内ROM。
C548、C549、C5402、C5410和C5420可以在程序存储器空间使用分页的扩展存储器,允许访问最高达8192K字的程序存储器。
为了扩展程序存储器,上述芯片应该包括以下的伏加特征:
(1)23位地址线代替16位的地址线
(2)一个特别的存储器映射寄存器,即程序计数器扩展器存器(XPC);
(3)6个特别的指令,用于寻址扩展程序空间。
C541/545/546C542/543/548/549/5402/5410
图1.3片内ROM程序存储器映射
扩展程序成初器的页号由XPC寄存器设定。
XPC映像到存储单元001Eh,在硬件复位时,XPC初始化为0。
C548、C549、C5402、C5410和C5420的程序存储器空间被组织为128页,每页长度为64K字长,此时片内RAM不映射到程序空间(OVLY=0)。
当片内RAM安排到程序空间(OVLY=1)时,每页程序存储器分为两部分:
一部分是公共的32K字,另一部分是各自独立的32K字。
公共存储区为所有页共享,而每页独立的32K字存储区只能按指定的页号寻址,如图2.17所示。
如果片内ROM被寻址(MP/MC=0),它只能在0页,不能映像到程序存储器的其他页。
为了通过软件切换程序存储器的页面,有6条专用的影响XPC值的指令。
(1)FB:
远转移。
(2)FBACC:
元转移到累加器A或B指定的位置。
(3)FCALA:
元调用累加器A或B指定的位置的程序。
(4)FCALL:
远调用。
(5)FRET:
远返回。
(6)FRETE:
带有被使能的中断的远返回。
以上指令都可以带有或不带有延时。
1.3数据存储器
C54xDSP的数据存储器容量最多达64K字。
除了单寻址和双寻址RAM(SARAM和DARAM)外,C54x还可以通过软件将片内ROM映像到数据存储空间。
表1-3列出了各种C54x可用的片内数据存储器的容量。
表1-3各种C54x可用的片内数据存储器的容量
程序/数据ROM(DROM=1)
24
当处理器发出的地址处在片内存储器的范围内时,就对片内的RAM或数据ROM(当ROM设为数据存储器时)寻址。
当数据存储器的地址产生器发出的地址不在片内存储器的范围内时,处理器就会自动地对外部数据存储器寻址。
数据存储器可以驻留在片内或片外。
片内DARAM都是数据存储空间。
对于某些C54xDSP,用户可以通过设置PMST寄存器的DROM位,将部分片内ROM映像到数据存储空间。
这一部分片内ROM及可以在数据空间使能(DROM=1),也可以在程序空间使能(MP/MC=0)。
复位时,处理器将DROM位清0。
对数据ROM的单操作数寻址,包括32位长字操作数寻址,单个周期就可完成。
而在双操作数寻址时,如果操作数驻留在同一块内则要2个周期;
若操作数驻留在不同块内则只需要1个周期就可以了。
为了提高处理器性能,片内RAM也细分为若干块。
分块以后,用户可以再同一周期内从同一DARAM中取出两个操作数,将数据写入另一块DARAM中。
C54xDSP中DARAM前1K数据存储器包括存储器映象CPU寄存器和外围电路寄存器、32字暂存器以及896字DARAM。
寻址存储器映象CPU寄存器,不需要插入等待周期。
外围电路寄存器用于对外围电路的控制和存放数据,对它们寻址,需要2个机器周期。
表1-4列出了存储器映像CPU寄存器的名称及地址。
表1-4存储器映像CPU寄存器
地址
CPU寄存器名称
IMR(中断屏蔽寄存器)
12
AR2(辅助寄存器2)
1
IFR(中断标志寄存器)
13
AR3(辅助寄存器3)
2~5
保留(用于测试)
14
AR4(辅助寄存器4)
6
ST0(状态寄存器0)
15
AR5(辅助寄存器5)
7
ST1(状态寄存器1)
16
AR6(辅助寄存器6)
8
AL(累加器A低字)
17
AR7(辅助寄存器7)
9
AH(累加器A高字)
18
SP(堆栈指针)
A
AG(累加器A保护位)
19
BK(循环缓冲区长度寄存器)
B
BL(累加器B低字)
1A
BRC(块重复寄存器)
C
BH(累加器B高字)
1B
RSA(块重复起始地址寄存器)
D
BG(累加器保护位)
1C
REA(块重复结束地址寄存器)
E
T(暂时寄存器)
1D
PMST(处理器工作方式寄存器)
F
TRN(状态转移寄存器)
1E
XPC(程序计数器扩展寄存器,仅C548以上型号)
10
AR0(辅助寄存器0)
11
AR1(辅助寄存器1)
1E~1F
保留
23×
5阵列键盘与DSP接口电路系统设计
2.13×
5阵列键盘设计原理
设计一个3×
5的行列式键盘。
2812的8个I/O口与之相连,这里按键的识别方法是扫描法。
键被按下时,与此键相连的行线电平将由于此键相连的列线电平决定,而行线的电平在无按键按下时处于高电平状态。
如果让所有的列线也处于高电平,那么键按下与否不会引起行线电平的状态变化,时钟为高电平。
所以,让所有的列线处于高电平是无法识别出按键的。
现在反过来,让所有的列线处于低电平,很明显,按键所在的行电平将被拉成低电平。
根据此行电平的变化,便能判断此行一定有按键被按下,但还不能确定是哪个键被按下。
假如是5键按下,为了进一步判定是哪一列的键被按下,可在某一时刻只让一条列线处于低电平,而其余列线处于高电平。
那么,按下键的那列电平就会拉成低电平,判断出哪列为低电平就可以判断出按键号码。
2.3电路设计
具体电路设计如图2.1,图中用到了TMS320C5402芯片。
关于TMS320系列中同一代芯片具有相同的CPU结构,但是片内存储器和片内外设的配置是不同的。
TMS320C54xDSP具有如下的优点:
1)具有哈佛结构的CPU,具有高度的并行性;
2)包含定点,浮点,多CPU;
3)主要用于实时处理;
4)灵活的指令集;
5)高速;
6)并行;
7)性价比高;
8)c编程。
TMS320C54xDSP芯片的总体结构如下:
从上图可以看出,DSP芯片具有计算,存储,和通信的功能。
这恰好与数字思想是吻合的。
只要对数字比特进行运算和存储及传输就能完成任何复杂的功能,这就是数字化的思想。
在此CPU充当计算功能,而片内存储起数据缓存作用,另外片内外围电路则是传输通道。
除上述结构特征外,DSP芯片还具有适合于数字信号处理的特点:
1)改进的哈佛结构。
冯·
诺依曼结构,其特点是程序和数据共用一个存储空间。
统一编址依靠令计数器提供的地址进行区分。
由于对数据和程序进行分时读写,执行速度慢。
哈佛结构是程序和数据具有独立的存储空间,有着各有的独立总线。
由于可同时对数据和程序进行寻址,它大大地提高了数据处理能力。
改进型哈佛结构是在数据总线和程序总线之间建立交叉连接。
这样允许数据存放在程序存储器内,另外指令可存储在CACHE中。
2)流水线操作。
一个指令是分为取指令、译码、取操作数、执行。
显然是顺序的,但如果有多条这样的流水同时进行,将会大大减少指令执行时间。
3)采用硬件乘法器。
4)一套专门为数字信号处理而设计的指令系统。
5)快速的指令周期。
6)良好的多机并行运行特性,提供了并行运行的通信接口。
一个相对完备的DSP系统框图如下所示
DSP系统具有如下特点:
1)精度高,相比R/L/C网络只要提高A/D和D/A的精度将有效提高整体精度。
2)可靠性强。
由数字电路的特点所决定。
3)集成度高。
4)接口方便。
对于系统集成接口设计是关键。
5)灵活性好。
可编程。
6)保密性好。
图2.13x5键盘电路图
2.3编写键盘驱动程序
#include"
exp3_2407.h"
unsignedintnum=0;
/********初始化函数声明与定义*********************/
voidsys_ini()
{
/*关总中断*/
asm("
setcINTM"
);
/*抑制符号位扩展*/
clrcSXM"
/*累加器中结果正常溢出*/
clrcOVM"
/*禁止看门狗*/
*WDCR=0x00E8;
/*配置时钟锁相为4倍频CLKOUT=4*10=40M*/假设外部精振为10MHz
*SCSR1=0x8104;
//使能EVA模块时钟
/*清除所有中断标志,"
写1清0"
*/
*IFR=0xFFFF;
}
voidtimer1_ini()//定时器1的初始化程序
/*使能int2中断*/定时器1为INT2优先级
*IMR=0x0002;
/*使能T1PINT中断*/
*EVAIMRA=0x0080;
/*清EVA中断标志*/
*EVAIFRA=0xFFFF;
/*连续增计数模式,预分频为8,定时器计时使能,内部时钟,定时器1比较使能*/
*T1CON=0x134C;
/*1ms产生一次中断*/
*T1PER=0x1388;
//0x1388=5000(D)/(40/8)/1000ms
/*计数器清零*/
*T1CNT=0x0000;
/*开总中断*/
asm("
clrcINTM"
voidIO_ini()
*MCRA=0X0000;
//配置A端口0-7为通用IO
*PADATDIR=0X0F80;
//A端口低三位为输出状态,高五位为输入状态
/*****************中断服务子程序声明与定义********************/
interruptvoidnothing()//哑中断子程序
return;
interruptvoidtimer1()//定时器1中断子程序
{
/*记中断次数50次,产生50ms延时*/
if(num==50)
{
num=0;
unsignedcharTmp;
//定义临时变量
Tmp=keyj();
if(Tmp!
=0xf0)
delay(5000);
if(keyj()==Tmp)
{
KeyValue=key();
}
}
}
elsenum++;
/*计数器清零*/
/*清EVA中断标志*/
/*************************功能函数***************************/
unsignedcharkey()
unsignedcharx=0xff;
*PADATDIR=0X0006;
//扫描第一行
if(*PADATDIR&
0x00f8)==0xf0)x=1;
elseif(*PADATDIR&
0x00f8)==0xe8)x=2;
0x00f8)==0xd8)x=3;
0x00f8)==0xb8)x=4;
0x00f8)==0x78)x=5;
else
*PADATDIR=0X0005;
//扫描第二行
0x00f8)==0xf0)x=6;
0x00f8)==0xe8)x=7;
0x00f8)==0xd8)x=8;
0x00f8)==0xb8)x=9
0x00f8)==0x78)x=10;
*PADATDIR=0X0003;
//扫描第三行
0x00f8)==0xf0)x=11;
0x00f8)==0xe8)x=12;
0x00f8)==0xd8)x=13
0x00f8)==0xb8)x=14
0x00f8)==0x78)x=15;
unsignedcharkeyj()
unsignedcharx;
x=(*PADATDIR&
0x00f0);
returnx;
/******************main函数********************/
voidmain()
sys_ini();
IO_ini();
time1_ini();
while
(1)
{}
3心得体会
通过这次课程设计我更好的学习dsp开发环境ccs软件.了解了TMS320F2812DSP芯片的结构,和键盘的矩阵扫描.独立自主的完成实验更是锻炼了我的能力.课设过程中遇到好多难题,有的是自己不能解决的有的是自己解决不了的.自己会得就多花费点时间把它弄懂弄会.不会的就在网上查点资料,就会和同学交流讨论,实在解决不了了就找老师答疑.
总而言之,这次课设给我带来了很多很多,我会很把握这样的机会,学以致用.
4参考资料:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 外部 存储器 键盘 接口 电路设计