dsp的c语言编程精

2024-08-14

dsp的c语言编程精(共2篇)

1.dsp的c语言编程精 篇一

一.数字信号处理概述

1.DSP的优势:可控性强,稳定度高,精度高,抗干扰性强,实现自适应性,数据压缩, 大规模集成。

2.实时数字信号处理:信号处理速度必须大于等于输入信号更新的速度,而且信号输入到

处理后输出的延迟必须足够的小

实时取决因素:芯片速度,运算量(数据率,算法复杂度

3.DSP子系统实现方式:通用CPU,加速处理模块,单片机,专用DSP芯片,可编程FPGA 器件,通用可编程DSP芯片

3.DSP系统典型处理方法:数据流处理。块处理 矢量处理

4.定点与浮点DSP芯片 定点: 小数Xf转换为定点数Xd:Xd=int(Xf×2Q 定点数Xd转换为小数Xf:Xf=float(Xd×2-Q 0.25的Q15表示法——0.25×215=8192=0x2000 0x4623的Q15表示小数——17955×2-15=0.547943 第一位为符号位

浮点: bit3bit3bit2bit2bit S e f 浮点数=(-1S×2(e-127×1.f-0.75=-(0.112=-(1.1×2-1=(-11×(1.1×2(126-127-0.75的IEEE单精度浮点格式数为:(BF400000H 5.DSPs芯片特点

算数单元:硬件乘法器是DSPs区别于早期通用微处理起的重要标志 多功能单元使DSP在单位时间内完成更多的操作,提高了程序执行速度 总线结构:哈弗总线结构

流水技术:是提高DSPs程序执行效率的另一个重要手段 专用寻址单元:地址的计算不再额外占用CPU时间 片内存储器:程序存储,数据存储,CACHE 丰富的外设

6.DSP处理器实现高速运算途径 ⏹硬件乘法器及乘加单元 ⏹高效的存储器访问 ⏹数据格式 ⏹零循环开销 ⏹多个执行单元

⏹数据流的线性I/O ⏹专门的指令集

6.DSP评价方法:传统性能评价 MIPS-----百万指令每秒 MOPS-----百万操作每秒 MFLOPS-----百万浮点操作每秒 MACS-------乘加次数每秒 完整应用评价 核心算法评价

7.选型依据:速度,精度,芯片资源,开发工具,支持多处理器,功耗与电源管理,成本。

8.哈佛总线结构包括6条总线:PAB(程序地址总线,DRAB(数据读地址总线,DW AB(数据写地址总线,PRDB(程序读地址总线,DRDB(数据读总线,DWEB(数据写总线

第二章.TMS320C200 DSP处理器 1.内部结构

三个主要组成部分:中央处理单元,存储器,外设

同系列芯片具有相同的中央处理单元、总线结构和指令集。片内存储器以及外设有所区别

中央处理单元:中央算术逻辑部分(算术逻辑运算,由累加器存放结果,输出数据定标移

位器进行移位

输入定标部分(将来自存储器的16位数据左移变成32位送往中央算数逻 辑单元 乘法部分

辅助寄存器算数单元(寻址+运算 状态寄存器

2.C2000总线结构特点

(1采用各自独立的数据地址总线分别用于数据读(DBAB和数据写(DW AB,因此CPU的读写可在一个周期内进行

(2 独立的程序空间和数据空间允许CPU同时访问程序指令和数据。3.引脚

DS(output:外部数据存储器选通引脚 PS(output :外部程序存储器选通引脚 IS(output :外部IO空间存储器选通引脚 R/W(output :读写选择信号

STRB(output :外部存储器访问选通引脚 READY(input :外设准备好信号

MP/MC(input:工作模式选择引脚。A0~A15:16位地址线 D0~D15:16位数据线

4.程序地址产生:程序计数器(利用16位的程序计数器PC对内部和外部程序存储器寻址

堆栈(16位宽、8级深度的硬件堆栈。功能:保存返回地址与重要数据 微堆栈(16位宽,1级深。功能:保存返回地址。无指令对微堆栈操作。流水线操作(4个独立阶段:取指令(Fetch、指令译码(Decode、取操作 数(Operand和执行指令(Execute。5.转移调用和返回指令

转移(跳转:使控制转换到新的地址单元

调用:使控制转换到新的地址单元,将返回地址压入堆栈 返回:使栈顶的地址弹出到程序计数器PC中

6.重复指令RPT:它的下一条指令重复被执行,执行次数是重复指令中操作数加一。

例如:RPT #N INST1 INST2 运行结果:INST1执行N+1次

7.中断控制(1中断分类

触发源角度:硬件中断(内部,外部,软件中断(指令触发 DSP管理中断角度:可屏蔽中断,不可屏蔽中断(2中断矢量表

又称为中断地址,表明中断发生后,若DSP响应中断,指令执行的地址。(3可屏蔽中断设置

中断标志寄存器IFR:中断请求到达CPU时为1 中断屏蔽寄存器IMR:为0,屏蔽中断 为1,中断

中断控制寄存器ICR:(4可屏蔽中断响应流程

中断请求-----中断响应-------中断服务(5非屏蔽中断

硬件非屏蔽中断:RS,NMI 软件非屏蔽中断:INTR k,NMI,TRAP(6中断服务程序ISR 中断服务程序是用户编写的,是对中断事件做出响应的子程序。

CPU 接收到中断请求并响应之后,就根据中断矢量内容转移到相应的中断服务程序ISR 中

(7复位:优先级最高的中断,属于非屏蔽外部中断(硬件 复位操作至少需要6个时钟周期 8.存储器与I/O 空间

(1存储器类型:程序存储空间,数据存储空间,IO 空间(2片内存储器与片外存储器

片内:速度快,功耗低,运行稳定,访问效率高。片内存储器类型:片内双访问存储器—DARAM 片内单访问程序/数据存储器—SARAM 掩膜型片内存储器—ROM 闪速存储器—FLASH 片外:容量大(3程序存储空间

功能:程序存储器存放程序的代码、表格信息、固定操作数。程序运行时只读。控制信号引脚:PS ,STRB, 扩展:两片8K ×8位存储器构成8Kx16位的静态存储器与C2000相连(4数据存储空间

功能:存放DSP 运行时所需要的数据,程序运行时可读写。

控制信号引脚:DS :当外部总线正被数据存储器使用时,DS 为低电平。STRB :当外部总线正被使用时,STRB 为低电平。BR :当访问全局数据空间时,BR 为低电平。

扩展:2个8K 8bit 的RAM 完成8K 16bit 静态存储器与C2000的接口 本地数据空间:直接寻址,间接寻址

全局数据空间:用于保存与其他处理器共用的数据,引脚BR ,低电平访问全局(5I/O 空间 功能:输入输出

控制信号引:IS :当外部总线正被IO 空间使用时,IS 为低电平。STRB :当外部总线正被使用时,STRB 为低电平。访问方式:IN、OUT 指令(6程序引导

功能:在复位时,DSP 内部的引导程序把用户程序从外部的8位数据空间存储器中引导到内部的16位程序空间的RAM 中,从而开始运行用户程序

条件:DSP 复位时,BOOT 引脚必须为0。(7存储器配置 9.片内外设(1时钟产生器

(2定时器

定时器中断频率为

1(1(1++⨯=PRD TDDR f f clkout1TINT PRD为16位定时器周期寄存器;TDDR为4位(不超过15定时器除数寄存器;设置:PRD,TCR(3等待状态发生器

等待状态产生的两种方式:使用READY信号(低电平有效灵活,可以产生任 为任意外部设备产生等待周期

设置片内等待状态发生器(WSGR:方便,可靠;为某一空间设置整体的等待周期(4同步串行口

基本信号:时钟信号CLKX,帧同步信号FSX,数据信号DX.中断信号:发送中断XINT,接受中断RINT DSP与串口的访问方式:查询,中断 同步串行口发送模式: 利用内部帧同步的突发模式(FSM=1,TXM=1 利用外部帧同步的突发模式(FSM=1,TXM=0 利用内部帧同步的连续模式(FSM=0,TXM=1 利用外部帧同步的连续模式(FSM=0,TXM=0

同步串行口接收模式: 突发模式接收 连续模式接收(4异步串行口

基本信号:数据信号TX,TR,握手信号IO0~IO3 9.通用IO引脚 BIO,XF,IO0~IO3 第三章.TMS320C2000软件环境 1.寻址方式(1立即寻址 短立即数寻址方式

RPT #99;RPT后面的指令重复执行100次 长立即数寻址方式

ADD #16384,2;累加器与数值16384左移2位后相加(2直接寻址

必须首先对DP进行设置以确定数据页面,然后再书写进行某种操作的指令,该指令的操作数将确定数据页面内部的特定偏移单元。其步骤如下: LDP #20H;初始化数据页面指针

ADD 5Dh;累加器与当前数据页面内偏移量5DH单元的内容相加,结果存入累

加器中(3间接寻址

利用8个16位的辅助寄存器AR7~AR0,可提供灵活多变且功能强大的间接寻址方式。

LAR AR1,#289H MAR *,AR1 ADD *;ACC<=ACC+289H@DS C2000提供了4种修改方法供间接寻址选择

(1无增量或减量。指令使用当前AR内容作为数据存储器地址,指令执行完成后,当前AR 的内容保持不变。ADD *;ACC=ACC+(ARx(2加1或减1。指令使用当前AR内容作为数据存储器地址,然后将当前AR内容加1或减

1。ADD *+ ADD *-;ACC=ACC+(ARx, ARx=ARx-1(3加或减一个变址量。AR0中的值即是这个变址量。指令使用当前AR内容作为数据存储

器地址,然后将当前AR的内容和AR0的值相加或相减,结果送到当前AR中。

ADD *0+ ADD *0-;ACC=ACC+(ARx, ARx=ARx-AR0(4位翻转加或减一个变址量。AR0中的值即是这个变址量,指令使用当前AR内容作为数

据存储器地址,然后将当前AR内容与AR0的值位翻转后相加或相减,结果送到当前AR 中。

ADD *BR0+;ACC=ACC+(ARx, ARx=ARx+rc(AR0 ADD *BR0-2.汇编语言格式

[标号][:] 助记符[操作数1,操作数2,…][;注释]

例如: SYM1.set 2;符号SYM1等于2 BGN: LDP SYM1;将2装入DP.word 016H;初始化一个字为16h NOP;空操作

BCND BGN,BIO;引脚BIO为低电平跳转BGN LDP SYM+1;SYM1+1装入到DP

3.伪指令宏指令

4.COFF—公共目标文件格式

块的定义:目标文件中最小的单位,一个块就是最终在TMS320存储器映像中占据连续空间的一块代码或数据。

已初始化块:.text.data.sect.asect 未初始化块:.bss.usect 链接器的一个主要功能是将块定位到目标存储器中。

汇编器的主要任务是为确定汇编语言程序的各部分分别属于哪个特定的段。第四章.DSP系统设计 1.具体技术指标

采样频率-------由信号频率,带宽决定

由采样频率确定任务书中最复杂算法所需最大时间以及系统对实时性要求判断是能否完成工作。

片内RAM容量及是否扩展-----由数据量及程序长度决定 16/32位,定点/浮点-----------由系统精度决定

根据系统用途是计算还是控制,来决定对输入输出端口的要求。2.DSP目标板设计要素 步骤: 第一步:算法分析与优化

第二步:DSP的选择 第三步:DSP配置

第四步:模拟数字混合电路设计 第五步:系统电路设计

第六步:系统对软件的编写与调试 第七步:系统测试与验证 3.硬件设计步骤

确定硬件方案--------器件选型--------原理设计----------PCB版图设计--------硬件调试

(系 统 分 析 |(系 统 综 合

原理设计是DSP 系统集成中关键的一步,其成功与否是DSP 系统能否正常工作的最重要的一个因素。

3.软件设计步骤 4.系统集成

系统集成是将软硬件结合起来,并组装成一台样机,在实际系统中运行,进行系统测试。

5.高精度ADC 转换器结构:逐次逼近方式, Σ-Δ调制方式 积分方式

高速ADC 转换器结构:并行比较型

串-并比较型 分路转换型

6.高精度ADC 转换器应用: 精度与速度存在矛盾

对电源,接地,电路布局的要求都极为严格 外部电路的匹配 与后续电路之间的隔离 串行输出方式

高速ADC 转换器的应用: 电平逻辑的匹配 时序逻辑的匹配 高速器件的接地 高速器件的去耦

7.高速ADC 器件的选择:速度与精度折衷 保证裕量 避免全速运行

8.性能测试:动态有效位(ENOB 是用来衡量数据采集系统实际工作时有效的位数,它是用分辨率来衡量实际工作时ADC 的噪声均方值与理想ADC 标识分辨率情况下的量化噪声。

采用FFT 方法进行测试,具体方案是:(a 采用单频正弦信号输入到ADC;(b 对ADC 输出结果进行快速傅里叶变换FFT ,计算SINAD(Signal-to-Noise and Distortion Ratio ,信号噪声加失真比。

(c 有效位数ENOB=(SINAD-1.76/6.02。8.实时数据存储

双端口RAM :双端口存储器是一种专用存储芯片,设有两组物理地址、数据和读写控][log 10噪声能量能基频10量信号 SINAD 制信号。两个CPU可以通过这些控制信号同时访问双端口存储器,实现数据共享

(1双端口RAM构成的乒乓存储器 工作特点: 人为的将双端口存储器分成两部分,使得存储器的读写操作分时工作,即同一时刻内存储器的两部分处于不同的读写状态。

对A写数据时,则DSP从B中读取数据;对B写数据时,则DSP从A中读取数据;有效的增加了DSP运算处理时间,提高了系统的实时性(2先进先出存储器FIFO FIFO是一种先进先出的存储器,即先读入的数据先读出。FIFO器件常用作数据缓冲器,充当两个不同速率的系统之间的数据接口。

FIFO的共性:没有地址线,只有读写时钟,内部地址依赖于对读写时钟的计数。采用满、空、半满标志来标识存储状态。

9.高速实时信号的产生:数据存储型,相位累加型

10.高速电路定义:线传播延时大于数字信号驱动端上升时间的1/2,则可认为此类信号是高速信号并产生传输线效应。

从本质上讲,高速数字系统的设计的核心问题是如何确保系统时序的正确。11.信号的完整性:指信号线上信号的质量,主要包括反射、振铃、地弹和串扰 12.传输线效应:反射信号、串扰、过冲与下冲、电磁辐射

串扰:在一根信号线上有信号通过时,在PCB板上与之相邻的信号线就会感应出相关信号,这种现象叫做串扰。

串扰解决途径:加宽走线间距 导线尽可能接近地线 差分布线技术 正交布线

合理布局布线。。13.避免传输线效应的方法: 严格控制关键走线的长度 抑制电磁干扰

合理规划走线的拓扑结构 电源去耦技术

14.高速PCB技术

第五章.可编程逻辑器件在DSP系统中的应用 1.ASIC(专用集成电路 优势:体积小容量大 功耗低 可靠性高 保密性强 在线可编程能力

各种先进的开发手段大大缩短了开发周期 2.FPGA(现场可编程门阵列

既继承了门阵列逻辑器件密度高和通用性强的优点,又具备可编程逻辑器件的可编程特性。FPGA结构:查找表型,多路开关型

主要包括:可编程逻辑模块(CLB,可编程输入输出模块IOB,可编程内部互联PI 3.DSP与FPGA DSP:依赖于指令的串行执行完成算法功能,易于实现跳转、调用等功能 FPGA:依赖与内部的逻辑资源的自由并行组合实现算法功能 DSP与FPGA的方案选择依据:系统的取样速率 系统是否已经使用C语言编制的程序 数据率?

多少个条件操作? 是否使用浮点 所需要的库能否获得 4.DSP+FPGA结构

DSP+FPGA结构最大的特点是结构灵活,有较强的通用性,适于模块化设计,从而能够提高算法效率;同时其开发周期较短,系统易于维护和扩展

1.哈佛总线:PAB,DRAB,DWAB,DRAB,PRDB,DWEB 2.硬件设计:ADC.DAC.内存、电源、通信、逻辑控制、人机接口、总线 3.高速总线:PCI,PCB,VME 4.FPGA内部模块:可编程逻辑模块CLB,可编程输入输出模块IOB,可编程内部互联PI 5.DSP子系统:通用CPU,加速处理模块,专用DSP芯片,通用可编程DSP,可编程FPGA,单片机。

6.FPGA与DSP选取依据:正确选择单点接地与多点接地,分开数字模拟电路,加粗地线,将地线构成闭环回路

7.高速电路PCB布线原则:合理选择层数,缩短高频器件管脚间引线,减少连接过程用孔,减少管脚引线弯折,各类信号走线不能形成环路

8.高速ADC性能指标:动态有效位(ENOB,采用FFT测试 9..text.data.sect.asect||||||.usect.bss

2.DSP嵌入式系统下的C语言开发 篇二

关键词:DSP嵌入式系统;C语言;软件开发

中图分类号:TP368.12 文献标识码:A 文章编号:1674-7712 (2014) 06-0000-01

随着社会的不断发展,技术的发展速度也在不断飞跃,在通信领域、电子信息领域、自动控制领域、软件无线电领域和信息家电领域等,DSP都取得了较为广泛的发展和应用。按照以往的经验来说,在对DSP嵌入式产品进行开发的时候往往都采用控制器的汇编语言来进行编写,但是到目前来说,很多领域都认为采用C语言进行DSP嵌入式的语言开发更加方便。

一、DSP嵌入式系统下的C语言开发过程

本研究采用TMS320F240芯片进行研究,其整个开发过程可分为五步。

(一)对C语言的源程序进行编辑

在对该系统软件进行编写的时候可以采用任何的编辑器进行源程序的书写,比如NOTEPAD、EDIT等,需要注意的是,程序的命名需要以“.C”为后缀进行存盘。而程序的源代码既可以写在一个“C文件”里,也可以写在多个“C”文件里面,但是对于一些函数的原型声明或者是预定义变量则可以集中地放置在一个头文件里面。要特别注意,一定要在C程序的前面用#include“c240.h”将寄存器的文件包括在其中。

(二)对源程序进行编译

编辑好C语言的源程序以后就可以采用DSPCL编译程序对其进行编译,最终生成OBJ文件。

在编译的时候所采用的格式:DSPCL 源文件名 参数

举例来说:DSPCL EX1.C -V2XX -GK -MN

其常用参数的意义是:V2XX表示C编译器选择的处理器是2XX系列;GK代表的是保留编译所生成的汇编文件,也就是(.ASM)文件;MN表示正在进行的正常优化。而其他的参数则需要参考DSP的编译器手册,假如存在多个源文件,那么需要对其分别进行编译,每一个源文件在编译之后都会生成一个ASM文件和OBJ文件[1]。

(三)目标文件的链接

IT公司的汇编器和编译器所创建的目标文件采用的是COFF的格式文件,这种格式能够更好地进行模块化的编程,能够使代码段的管理和对目标系统存储器的管理更加的方便和灵活。给COFF格式进行C语言或者汇编程序的编写的时候,不需要对变量目标地址和程序代码进行指定,这也为程度的移植和程序的编写提供了很大的方便。而链接器对块的处理主要有两种功能,一种功能是对COFF目标文件当中的块进行利用,用其建立数据块和程序,再将这些块组合起来,就能够成为被DSP芯片执行COFF输出的模块,而第二种就是链接器为输出的块指定存储的位置[2]。因此链接器需要为上述两个功能提供指令,分别是MEMORY、SECTTONS。MEMORY命令对目标系统的存储器进行定义,程序员可以选择对每一块存储器的长度和起始地址做出定义,而SECTIONS命令则是用来对输入块组合以及输出块放置在存储器当中的位置进行定义的。加入在具体的编写当中不采用以上两种命令的话,也可以使链接器以缺省的分配算法进行,笔者建议使用者两种命令,但是在使用的时候需要注意这两个命令要在CMD文件当中使用。

(四)程度的仿真

EMURST仿真器会对命令做出复位,EMU2XXW EX1.OUT将COFF格式的二进制代码载入并进行仿真运行,而有关调节器则按照规定使用即可。

(五)程序的固化

等到程序仿真运行通过之后,就需要将其固化到FLASH ROM当中,TMS320F240内有16k字的FLASH ROM可以用来对程序进行固化,在其程序不大于16k的时候,它不需要外扩EPROM。接下来将主要采用JTAG口的固化方法来对进行分析说明。

先要采用EMURST命令对调试器进行复位,然后在对三个批处理文件做出执行。第一个是执行BC0.BAT批处理文件,对FLASH ROM的(CLEAR)进行清除,使其全部为“0”;接下来是执行BE0.BAT批处理文件,对FLASH ROM的(ERASE)进行擦除,使其全部为“1”。这两步对于软件包当中自带的这个两个BAT文件不需要做出修改。下面是第三步,对BP16K.BAT批处理文件做出执行,需要将自己的OUT文件加入到DSP内部的FROM当中,在此之前需要先对BP16K.BATJ进行修改,对待写入的OUT文件做出替换,替换成自己的OUT文件。需要注意的是,在对程序进行固化的时候,一定要将CPU控制在20MHz的频率之下,然后在SRC目录当中配置一个C240_CFG.I的文件。

二、结束语

在本研究当中,笔者主要以TMS320F240芯片为例,针对DSP嵌入式系统下的C语言开发的开发过程作出了简要分析,文中笔者也根据自身理解和自身经验提出了一些主观意见。希望本篇文字能够对读者有所启发,也希望相关的工作人员再接再厉,进行不懈的努力,争取开发出更新的语言来服务DSP嵌入式系统,为系统开发作出更多的贡献。

参考文献:

[1]瞿新吉.嵌入式系统的BootLoader技术浅析[J].科技经济市场,2010(10):28.

上一篇:第六届全国信息技术应用水平大赛二维CAD机械设计下一篇:安全带穿戴教案