一 Bios的启动过程
DSP/BIOS的启动过程包括以下几步:
* 初始化DSP:复位中断向量指向c_int00地址,DSP/BIOS程序从入口点c_int00开始运行。对C6000,初试化堆栈指针(B15)和全局页指针(B14)分别指向堆栈底部与.bss段的开始,控制寄存器AMR、IER和CSR也被初始化; * 用.cinit段中的记录来初始化.bss段;
* 调用BIOS_init初始化DSP/BIOS模块:BIOS_init执行基本的模块初始化,然后调用MOD_init宏分别初始化每个用到的模块;
* 处理.pinit表:.pinit表包含了初始化函数的指针;
* 调用应用程序main函数:在所有DSP/BIOS模块初始化之后,调用main函数。由图2可以看到,本程序在main函数中添加了必要的初始化代码。Main函数初始化之后CPU的控制权交给DSP/BIOS。需注意,main函数中一定不能存在无限循环,否则整个DSP/BIOS程序将瘫痪;
* 调用BIOS_start启动DSP/BIOS:BIOS_start函数是由配置工具产生的,包含在programcfg.s62文件中,它负责使能DSP/BIOS模块并为每个用到的模块调用MOD_startup宏使其开始工作。
在这些工作完成之后,DSP/BIOS调用IDL_loop引导程序进入DSP/BIOS空闲循环,此时硬件和软件中断可以抢先空闲循环的执行,主机也可以和目标系统之间开始数据传输。
二 硬件中断向量表的配置
1. 编写中断服务例程
在.c源文件中编写ISR函数c_intXX,用于中断处理,如:
interrupt void c_intXX (void)
{
…;
}
注:对于硬件中断而言,XX = 00~15。
2.初始化中断向量表,并在内存段中的中断向量表中配置好对应的中断向量
首先是把中断向量表定位到某一内存段中,我们可以在cmd文件中配置中断向量表的内存映射,如:
MEMORY
{
VECTORS: org = 00000000h, len = 00000400h
L2SRAM: org = 00000400h, len = 00100000h
SDRAM: org = 80000000h, len = 10000000h
}
SECTIONS
{
.vecs :> VECTORS
.data :> L2SRAM
.text :> L2SRAM
.switch :> L2SRAM
.stack :> L2SRAM
.bss :> L2SRAM
.cinit :> L2SRAM
.far :> L2SRAM
.cio :> L2SRAM
.const :> L2SRAM
.sysmem :> SDRAM
.tables :> L2SRAM
}
.vectors 中断向量表所在的段;
.text 程序代码所在的段;
.satext 非标准段,放置线性汇编程序代码;
.bss 非初始化变量段
.cinit 程序初始化段,经常放置一些没有用const说明的带初值变量的初始化值。 .const 使用const声明的变量和数组
.far 不可使用DP指针而必须使用全地址访问的变量所在的段,与far关键字和编译选项有关
.stack 系统栈使用的段
.cio printf等输入输出函数使用的缓冲区所在的段
.switch 程序中switch语句的跳转地址表
.system 系统堆,内存的动态开辟即使用这个段
然后建立一个.asm文件,用以配置中断向量表中的中断向量,我们需要声明一些全局变量,以便其他源文件可以引用这些变量或者引用其他源文件的变量,如:
.global _vectors
.global _c_int00
.global _vector1
.global _vector2
.global _vector3
.global _vector4
.global _vector5
.global _vector6
.global _vector7
.global _c_int08 ; 对应main()函数的c_int08中断服务例程(假设处理的是EDMA中断)
.global _vector9
.global _vector10
.global _vector11
.global _vector12
.global _vector13
.global _vector14
.global _vector15
因为引用了rts的_c_int00中断,即RESET中断,因此需要引入这个符号: .ref _c_int00
为了把中断服务例程的地址,即中断向量插入到中断向量表中,可以定义一个宏: VEC_ENTRY .macro addr
STW B0,*--B15
MVKL addr,B0
MVKH addr,B0
B B0
LDW *B15++,B0
NOP 2
NOP
NOP
.endm
为了初始化中断向量表中的中断向量,可以定义一个虚拟的中断向量:
_vec_dummy:
B B3
NOP 5
接下来就可以配置中断向量表了:
.sect “.vecs”
.align 1024
_vectors:
_vector0: VEC_ENTRY _c_int00 ;RESET中断
_vector1: VEC_ENTRY _vec_dummy ;NMI不可屏蔽中断
_vector2: VEC_ENTRY _vec_dummy ;保留中断1
_vector3: VEC_ENTRY _vec_dummy ;保留中断2
_vector4: VEC_ENTRY _vec_dummy ;外部中断INT4
_vector5: VEC_ENTRY _vec_dummy ;外部中断INT5
_vector6: VEC_ENTRY _vec_dummy ;外部中断INT6
_vector7: VEC_ENTRY _vec_dummy ;外部中断INT7
_vector8: VEC_ENTRY _c_int08 ; EDMA控制器中断EDMAINT,对应于c_int08 ISR _vector9: VEC_ENTRY _vec_dummy;JTAGRTDX中断
_vector10: VEC_ENTRY _vec_dummy;EMIF_SDRAM_Timer中断
_vector11: VEC_ENTRY _vec_dummy;McBSP_0_Receive中断
_vector12: VEC_ENTRY _vec_dummy;McBSP_1_Transmit中断
_vector13: VEC_ENTRY _vec_dummy;Host_Port_Host_to_DSP中断
_vector14: VEC_ENTRY _vec_dummy;Timer0中断
_vector15: VEC_ENTRY _vec_dummy;Timer1中断
3. 在C程序中指定定义的中断向量表,并且启用CPU中断功能
在C程序中,用CSL的IRQ模块来设置中断比较方便,在设置之前,需要外部链接上面的asm程序的中断向量表符号:
extern far void vectors();//之所以为vectors,因为C编译器编译后自动改名其为_vectors 引用了中断向量表之后,就可以设置中断了:
IRQ_setVecs(vectors); //指向asm中定义的中断向量表
IRQ_nmiEnable();
IRQ_globalEnable();
IRQ_map(IRQ_EVT_EDMAINT, 8); //映射事件到指定的物理中断号
IRQ_reset(IRQ_EVT_EDMAINT);
4.启动中断源,如EDMA控制器的中断
至此,中断服务例程c_int8就可以为EDMAINT中断服务了,其它硬件中断向量的配置同理。
5. IRQ使用注意:
不可在IRQ_globalDisable之后调用IRQ_clear,否则中断将设置失败。
摘要:本总结介绍了数字信号技术(DSP)的基本结构,特点,发展及应用现状。通过分析与观察,寄予了DSP美好发展前景的希望。
关键字:数字信号处理器,DSP,特点,应用
1 DSP介绍
数字信号处理简称DSP,是进行数字信号处理的专用芯片,是伴随着微电子学、数字信号处理技术、计算机技术的发展而产生的新器件,是对信号和图像实现实时处理的一类高性能的CPU。所谓 “实时实现”,是指一个实际的系统能在人们听觉、视觉或按要求所允许的时间范围内对输入信号进行处理,并输出处理结果。
数字信号是利用计算机或专用的处理设备,以数值计算的方式对信号进行采集、变换、综合、估计与识别等加工处理,从而达到提取信息和方便应用的目的。数字信号处理的实现是以数字信号处理理论和计算技术为基础的。
2 结构
32位的C28xDSP整合了DSP和微控制器的最佳特性,能够在一个周期内完成32*32位的乘法累加运算。
所有的C28x芯片都含一个CPU、仿真逻辑以及内存和片内外设备的接口信号(具体结构图见有关书籍)。CPU的主要组成部分有:
程序和数据控制逻辑。该逻辑用来从程序存储器取回的一串指令。 实时和可视性的仿真逻辑。
地址寄存器算数单元(ARAU)。ARAU为从数据存储器取回的数据分配地址。 算术逻辑单元(ALU)。32位的ALU执行二进制的补码布尔运算。
预取对列和指令译码。
为程序和数据而设的地址发生器。
定点MPY/ALU。乘法器执行32位*32位的二进制补码乘法,并产生64位的计算结果。 中断处理。
3 特点
采用哈佛结构。传统的冯·诺曼结构的数据总线和指令总线是公用的,因此在高运算时在传输通道上会出拥堵现象。而采用哈佛结构的DSP 芯片片内至少有4 套总线:程序的地址总线与数据总线,数据的地址总线与数据总线。由于这种结构的数据总线和程序总线分离,从而在一个周期内同能时获取程序存储器内的指令字和数据存储器内的操作数,提高了执行速度。
多单元的并行处理技术。DSP 内部一般都集成了多个处理单元,比如ARAU(地址寄存器算术单元),MUL(硬件乘法器),ALU(算术逻辑单元),ACC (累加器),DMA 控制器等。它们可在同一个周期内并行地执行不同的任务。
采用了超流水线技术。DSP芯片的哈佛结构就是为实现流水线技术而设计的。采用流水线技术可使DSP芯片单周期完成乘法累加运算,极大地提高了运算速度。
采用硬件乘法器。数字信号处理中最基本的一个运算是乘法累加运算,也是最重要和最耗时的运算,为了提高芯片的运算速度,必须大幅度降低乘法运算的时间。于是在DSP芯片中设计了硬件乘法器,并且运算所需时间最短,仅为一个机器周期。这种单周期的硬件乘法器是DSP芯片实现高速运算的有力保证。现代高性能的DSP芯片数据字长从16位增加到32位,具有两个或更多的硬件乘法器,以便提高运算速度。
安排了JTAG接口。DSP芯片的结构非常复杂,工作速度又非常高,外部引脚也特别多,封装面积也非常小,引脚排列异常密集,对于此种情况,传统的并行仿真方式已不适合于DSP芯片。于是有关国际组织公布了JTAG接口标准。在DSP芯片内部安排JTAG接口,为DSP芯片的测试和仿真提供了很大的方便。
采用了大容量片内存储器。外部存储器一般不能适应高性能DSP核的处理速度,因此在片内设置较大容量的程序和数据存储器以减少对外部存储器的访问速度,充分发挥DSP核的高性能。
设置了特殊寻址模式。为了满足FFT积分数字信号处理的特殊要求,DSP芯片大多包含有专门的硬件地址发生器,用以实现循环寻址和位翻转寻址,并在软件上设置了相应的指令。 程序的加载引导。DSP芯片要执行的程
序一般在EPROM、FLASH存储器中。但是,该存
储器的访问速度较慢,虽然有一些高速EPROM、FLASH存储器,但价格昂贵、容量有限,而高速大容量静态RAM的价格又在不断下降。故采用程序的加载引导是一个性能价格较好的方法。DSP芯片在上电复位后,执行一段引导程序,用于从端口或外部存储器中加载程序至DSP芯片的高速RAM中运行。
设置了零消耗循环控。数字信号处理有一大特点:很多运算时间都用于执行较小循环的少量核心代码上。大部分DSP芯片具有零消耗循环控制的专门硬件,可以省去循环计数器的测试指令,提高了代码效率,减少了执行时间。
设置了多种外设和接口。为了加强DSP芯片的通用性,DSP芯片上增加了许多外设。例如:多路DMA通道、外部主机接口、外部存储器接口、芯片间高速接口、外部中断、串行口、定时器、可编程锁相环、A/D转换器和JTAG接口等。
4 发展及应用现状
数字信号处理(DSP)技术已经在我们的生活中扮演一个不可或缺的角色。DSP的核心是算法与实现,越来越多的人正在认识、熟悉和使用它。因此,合理地评价DSP的优缺点,及时了解DSP的现状以及发展趋势,正确使用DSP芯片,才有可能真正发挥出DSP的作用。
在近20多年时间里,DSP芯片的应用已经从军事、航空航天领域扩大到信号处理、通信、雷达、消费等许多领域。主要应用有:信号处理、通信、语音、图形、图像、军事、仪器仪表、自动控制、医疗、家用电器等。
5 前景与展望
随着DSP芯片性能的不断改善,用它来作为实时处理已成为当今和未来发展的热点之
一。随着生产技术的改进和产量的增大,它已成为当前产量和销售量增长幅度最大的电子产品之一。DSP广泛应用于军事、通信、语音、图像、仪器、工作站、控制及诸多的电子设备中。例如,雷达、导航与制导、全球定位、语音和图像鉴别、高速调制解调器、多媒体以及通用的数字信号处理产品。近年来,DSP 给铁路也带来了巨大的技术革新,铁路的设备尤其是铁路信号系统已从分立模拟系统经过集成化、计算机化发展到数字信号处理时代。例如,地面移频自动闭塞系统中现已大量应用了16位定点DSP产品如TMS320C25、TMS320C2XX系列等,由之建立的系统的工作精度、稳定度都很高、铁路上SJ型数字化通用式机车信号的大量推广
也得益于DSP带来的突出优点。用DSP技术的优点有:①可以程序控制,同一个硬件配置可以设计各种软件来执行多种多样的信号处理任务。②稳定性好,抗干扰性能强。③重复性好,易于批量化生产,而模拟器件很难控制。④易于实现多种智能算法。
目前,外国的许多跨国公司已经涉足我国的DSP行业,我国的DSP应用已有了相当的基础,许多企业都在从事数字信号处理系统及相关产品的开发与应用。从应用范围来说,数字信号处理器市场前景看好。DSP不仅成为手机、个人数字助理等快速增长产品中的关键元件,而且它正在向数码相机和电机控制等领域挺进。随着DSP芯片技术的不断发展,向多功能化、高性能化、低功耗化放向发展,DSP日益进入人们的生活,DSP在我国会有良好的应用前景。
参考文献
[1] 彭启棕.DSP技术[M].成都:电子科技大学出版社,1997
[2] FIEDLER R. Beyond instruction level parallelism-newtrend in programmable DSP machines. Development
of Data and Communications Technology ChemnitzUniversity of Technology, May 20xx.
[3] 胡广书.数字信号处理[M].北京:清华大学出版社,20xx
[4] 张雄伟,陈亮,辉编著.DSP芯片的原理与开发应用[M].北京:电子工业出版 社,20xx
[5] Michale J Bass,Clayton M Christensen.The Future of the Miroprocessor Business[J]IEEE SPECTRUM,20xx
[6] 陈是知,姜蕊辉.TMS320F2812原理与开发实践[M].中国电力出版,20xx
学院:传播学院专业:10级广播电视新闻学学号:1290120xx023姓名:许咪咪学习SPSS有感——与EXCEL之比较在学习SP…
近段时间以来我对SPSS110SPSS160AMOS160进行了较为系统的理论和技能的学习可以说受益匪浅咨将学习过程中的体会总结之…
描述统计量主要是样本均值协方差和相关系数三个方面的计算样本均值反应了样本的集中趋势样本的协方差反应了样本的离散趋势样本的相关系数反…
1分组transformreordintodifferentvariables2Frequencies频数统计次数及比重annal…
TMS320F2812xDSP原理及应用技术实验心得体会1.设置环境时分为软件设置和硬件设置,根据实验的需要设置,这次实验只是软件…
如果说前几年DSP作为一个器件,一个处理器或一个事物是相对比较新的东西,那么现在DSP已经在我们电子设计开发中非常常见了。首先我们…
dsp调试can一点心得调试的过程也就是学习的过程,无前人领路,只有自己摸索,不免要耗费更多的时间和精力,从看书到调试到完全调通,…
一.我是已经从事DSP开发有几年了,看到许多朋友对DSP的开发非常感兴取,我结合这几年对DSP的开发写一写自己的感受,一家之言,欢…
第一章DSP含义:数字信号处理微处理器MPU:是一种执行智能定向控制任务的通用处理器,它能很好地执行智能控制任务,但是对数字信号的…