定点数字信号处理器(DSP) 技术与应用 16位定点DSP—ADSP218X/219X
课程的主要内容和目的 本课程主要介绍 ADSP-218X / 219X系列16位定点DSP的体系结构和软/硬件开发环境,通过几个典型的实验使大家初步掌握DSP系统的硬件构成、 软件开发以及系统的综合调试方法。 课程的重要性: —— 直接面向应用。 —— IT工程师三大实用技能 * PCB设计 * DSP应用 * FPGA应用 a
第一部分 数字信号处理器(DSP)概述 a
数字信号处理及数字信号处理器(DSP) Digital Signal Processor
数字信号处理 数字信号处理的特点 a 模拟/数字转换 A/D Converter 数字信号 处理运算 数字/模拟转换 待处理 的信号 处理后 D/A Converter 数字信号处理的特点 特别强调运算处理的实时性(Real-Time Capability) a
数字信号处理器(DSP)结构特点 — DSP面向高性能、重复性、数值运算密集型的实时处理,它具有适合数字信号处理算法的指令、适合数字信号处理数据结构的存储器结构和寻址机构、并行处理能力和嵌入式性能等。其体系结构一般具有以下特点: 采用分离地址与数据总线的哈佛结构(CPU:冯 .诺伊曼结构),有着较高的指令执行速度,但结构复杂需要两套地址产生电路。 采用流水线技术,使取指、译码、取操作数、执指等步骤并行完成,提高了指令的执行速度。 除了算数逻辑单元(ALU)外,具有独立的乘加器,使其能够在一个周期内完成相乘和累加两个操作,加快了各种典型处理算法的处理速度。 具有适用于典型处理算法的特殊存储器寻址方式,如循环寻址、位反序寻址等。 针对实时处理的专用的数据接口(RAM、DMA、SPORT,etc.),使数据的存取速度得以提高。 专门的指令流控制逻辑,如无附加开销的循环转移指令。 集成度高,能够实现单片、低功耗的处理系统。 a
数字信号处理器(DSP)的应用领域 通用数字信号处理(数字滤波、卷积、相关、变换等) 通信(高效调制/解调、编/解码器、自适应均衡、IP处理、软件无线电等) 语音处理(语音识别/合成/压缩/解压缩等) 图形/图象处理(图象变换、模式识别、图象压缩/解压缩等) 自动控制(高精度、高速度伺服控制) 军事/航空/航天(雷达/声呐信号处理、雷达成像、制导/火控系统、导航/定位系统、战场C3I系统等) 消费电子(数字高清晰度电视(HDTV)、CD/VCD/DVD编解码器、多媒体信息处理、汽车电子等)
DSP的典型应用—MPEG-4因特网摄像机
DSP的分类 —— 主要分为通用DSP和专用DSP两大类 TI公司的TMS320系列 AD公司的ADSP21XX系列 专用DSP:针对某种具体应用而设计,所要实现的处理算法 由硬件直接实现。运算处理速度极高,但完成的 算法单一、精度和动态范围有限,需要与外围电 路配合才能构成系统,功耗也较大,因此应用范 围较窄, 主要应用于仪器/ 仪表以及军事等需要 极高处理能力的领域。 主要产品:FFT专用DSP、卷积/相关器、复乘加 器等。 * 用ASIC/FPGA实现的DSP
DSP的分类 16bit 定点DSP 24bit 定点DSP 嵌入式DSP 定点 DSP 32bit浮点DSP 32bit浮点并行DSP 横向滤波器 FFT 复乘/累加器 求模/相角
数字信号处理器(DSP)的开发与调试 — DSP系统的设计分为硬件/软件两个部分。两者可以在各自的开发平台上分别进行前期设计与调试,然后进行系统的联调。具体开发流程如图所示。 硬件设计 — DSP选型/系统结构确立 — 性能/功耗分析 — 开发周期/成本分析 — 电路设计/调试 调试工具: DSP在线硬件仿真器(Emulator)、DSP开发/评估板(Evaluation Board)、 示波器、逻辑分析仪。 软件设计 — 算法确定/程序流程图 — 软件编制(汇编/C语言) — 汇编/编译/链接 — 软件模拟 汇编/编译/链接程序,软件模拟/调试器(Simulator/Debugger) 系统联调——对整个系统的软/硬件进行的综合调试。 调试工具:硬件仿真器、DSP开发/调试集成环境(IDE/IDDE)、DSP OS,etc.
ADSP-218x在线仿真器
ADSP-218x开发/评估板
ADSP-218x开发/评估板所包含的功能部件
DSP系统的开发流程图—系统级设计 软件设计 硬件设计 系统功能要求 系统性能及算法模拟 处理速度、开发周期、 体积、成本,功耗、 供货、升级 器件选型: DSP型号、存储器、I/O、 FPGA、A/D、D/A 系统设计框图 硬件设计 软件设计
DSP系统的开发流程图—电路/软件设计 软/硬件系统联调 电路原理图设计 软件流程图绘制 汇编算法库 生成电路网表 高级语言程序设计 汇编语言程序设计 实时运行库 设计印制电路板 编译 汇编 印制板制造 链接 器件安装 示波器 逻辑分析仪 软件模拟 修正 硬件调试 软/硬件系统联调
DSP系统的开发流程图—系统联调 系统在线仿真 硬件电路 软件程序 PC机仿真 仿真结果? 连接外部设备 固化程序 嵌入系统设备进行联调 有误错 修正 连接外部设备 固化程序 嵌入系统设备进行联调 示波器 逻辑分析仪 综合测试 否 满足系统要求? 否 修正 修正 成品制造
DSP及其开发的新趋势 单片系统(System-On-Chip) —— 随着VLSI技术的发展,针对一定的应用领域,可以使整个系统以DSP为核心进行设计,并将应用中所涉及的诸如 RAM、I/O、A/D、D/A等附加电路单元全部集成在一片IC芯片中,并且包括处理单元在内的各功能块都具有可重定义特性(Re-Configurable) . 这样一来,系统以后的功能扩展与升级将非常简单,只需要重新编写软件程序即可。同时系统的功耗会大大的降低, 可靠性会大大的提高。而这对便携/移动应用非常重要。 模块化设计 —— DSP及支持芯片/软件生产厂商,均依据一定的标准,设计生产电路板级DSP处理模块, 同时为这种模块提供丰富的符合标准的软件开发系统和算法资源库。 这样做的好处是降低了硬件设计难度、 减少了硬件设计时间, 更重要的是模块化设计得到了丰富的软件支持,大大提高了设计效率。
二进制代数复习 a
DSP中的二进制数表示方法 ADSP-2100系列定点数DSP使用2的补码进行操作。若要有效地对该系列DSP进行编程,了解以下概念及定义是非常重要的。 1) 有符号 / 无符号数格式 2) 小数 / 整数格式 3) 小数的范围 4) 16进制到2进制的转换 5) 2进制到16进制的转换 a
2进制(Binary )- (16进制)Hexadecimal – 10进制(Decimal )数据转换表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 A B C D E F 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 a
有符号数与无符号数 0x0000 0V (最小负值) 无符号数 0xFFFF 5V (最大正值) 0x8000 -5V (最小负值) S/U U U U U U U U U U U U U U U U 15 2进制表示 实际物理量 0x0000 0V (最小负值) 无符号数 0xFFFF 5V (最大正值) 0x8000 -5V (最小负值) 有符号数 0x0000 0V 0x7FFF 5V (最大正值) a
有符号数(原码)与2的补码 有符号数(原码)的最高位(MSB)为符号位。 1——表示负数 0——表示正数 1——表示负数 0——表示正数 * 有符号数(原码)“0”有两种表示方法(+/-0)。 * 有符号数(原码)的运算比较复杂,类似于正负数的笔算 ,先要比较两个数绝对值的大小,然后确定如何计算,最 后在确定符号位。 2的补码——Xcmp = 2^n + X (n-字长位数) * 性质:正数的补码与其原码相同。负数的补码仍是负数,它是 将其原码的符号位保持不变而将其数值部分求补得到。 “0”在补码中的表示是唯一的。 * 补码的求法:一个负数的补码等于其原码除符号位保持不变外 ,其余各位按位求反,再在最低位加1。 * 补码的运算:符号位与数值位一样参加运算(若符号位有进位 则丢弃)。 * 溢出的判别:“双高位判别法” Cs:最高位(符号位)的进位情况。 若有进位,Cs = 1; Cp:数值部分的最高位的进位情况。若有进位,Cp = 1; Overflow = Cs xor Cp
2的补码表示方法 对于2的补码表示法, 一个数符号位的位权值是-(2)^(M-1),M是2进制小数点左边的位数。对于一个 4.2 型式的数字, 符号位的位权值是 -(2^3). -2 -1 3 1 2 -(2 ) 符号位 2进制小数点 例子: 0101.01 = 0 * (-8) + 1 * (4) + 0 * (2) + 1 * (1) + 0 * (1/2) + 1 * (1/4) = 5.25 1101.01 = 1 * (-8) + 1 * (4) + 0 * (2) + 1 * (1) + 0 * (1/2) + 1 * (1/4) = - 2.75 a
小数与整数表示法 • 1.15型式的小数格式 a S F F F F F F F F F F F F F F F • • 1.15型式的小数格式 S F F F F F F F F F F F F F F F • 小数点 • 16.0型式的整数格式 S I I I I I I I I I I I I I I I • 小数点 a
DSP是针对小数表示型式 进行优化设计的 DSP也支持整数表示型式 a
16位二进制数的表示范围 a 格式 最大10进制正数 (0x7FFF) 0.999969482421875 1.999938964843750 3.999877929687500 7.999755859375000 15.999511718750000 31.999023437500000 63.998046875000000 127.996093750000000 255.992187500000000 511.984375000000000 1023.968750000000000 2047.937500000000000 4095.875000000000000 8191.750000000000000 16383.500000000000000 32767.000000000000000 最大10进制负数 (0x8000) –1.0 –2.0 –4.0 –8.0 –16.0 –32.0 –64.0 –128.0 –256.0 –512.0 –1024.0 –2048.0 –4096.0 –8192.0 –16384.0 –32768.0 最低有效位( LSB ) 为‘1’时的10进制数值 (0x0001) 0.000030517578125 0.000061035156250 0.000122070312500 0.000244140625000 0.000488281250000 0.000976562500000 0.001953125000000 0.003906250000000 0.007812500000000 0.015625000000000 0.031250000000000 0.062500000000000 0.125000000000000 0.250000000000000 0.500000000000000 1.000000000000000 格式 1.15 2.14 3.13 4.12 5.11 6.10 7.9 8.8 9.7 10.6 11.5 12.4 13.3 14.2 15.1 16.0 小数 整数 a
不同数制表示实例 a +5 V 0x7FFF 1 2 0 V 3 0x0000 4 5 -5 V 0x8000 格式 16.0 1.15 1) 0x7FFF 5 V 2.5 V 0 V -2.0 V -5.0 V = 32767 -> = 16383 -> = 0 -> = -13107 -> = -32768 -> 0.999969482... -> 0.499969482... -> 0.0000000... -> -0.399993986... -> -1.0000000.... -> 5 V 2.5 V 0 V -2.0 V -5.0 V 2) 0x3FFF 3) 0x0000 4) 0xCCCD 5) 0x8000 a
16进制(1.15 格式)到10进制转换 a 有两种将16进制数转换为10进制数的方法,一种简单,一种较复杂. 复杂的方法 : 先将16进制数转换成2进制数. 确定小数点的位置. 将每一位的2进制位数值乘以其响应的位权值。 例子: 将 0x2A00( 以1.15 、2的补码格式表示)转换10进制数值 0x2A00 = 0.010 1010 0000 0000 = 2^-2 + 2^-4 + 2^-6 = 0.25 + 0.0625 + 0.015625 = 0.328125 = 0.33 = 1/3 简单的方法 : 先将16进制数直接转换成10进制数(整数—整数)。再用转换后的10进制数除以2^N,N是2进制小数点右边的位数。 0x2A00 <=> 10752 / 2^15 = 10752 / 32768 = 0.328125 a
10进制到16进制转换 (1.15 格式) a 0.8125 => => 0x6800 有两种将10进制数转换为16进制数的方法,一种简单,一种较复杂. 复杂的方法: 将10进制数用其2^N 的型式表示出来。 例子: 将0.8125转换成以1.15、 2的补码表示的16进制数值 简单的方法: 将10进制数乘以2^N ,N是1.15格式小数点右边的位数值。然后再计算16进制数值。 0.8125 * 2^15 = 0.8125 * 32768 = 26624 <=> 0x6800 -1 -2 -3 -4 -5 -6 -7 2 2 2 2 2 2 2 2 1 1/2 1/4 1/8 1/16 1/32 1/64 1/128 0.8125 => 1 1 1 => 0x6800 a