最新日志

发表于:2007-1-15 13:19:18
标签:无标签

5

评论(1) | 阅读(3918)
发表于:2007-1-12 19:14:31
标签:无标签

8

DSP与数据转换器协同工作所必须考虑的10大因素

假设您接到一项工作任务,设计一套由 DSP 与DAC与ADC等模拟器件组成的信号处理系统。如果您考虑到几个重要因素,工作就会非常简单。下面就来谈谈设计工作中应该考虑的这几个因素。

详细了解应用类型
第一步需要了解应用类型。对于控制型应用,既需要应对突发的大量数据处理情形,也要考虑间歇的闲置状态;而对于音频应用,则需要处理连续数据流的能力。了解应用的具体需求将有助于选择适当的接口和正确的数据读取方法。

评估系统速率
第二步需要了解数据采样的速率。举例来说,音频系统可能是一部 CD 播放机,采样率为 96 kHz,也可能是电话语音系统,采样率仅为 8 kHz。当然,也可能是其他系统,如 ADSL 质量测量应用,采样速率高达 10 MSPS,或者是称重应用,每秒只要 16 次采样就足够了,但要求具备较高的分辨率(如 24 位)。了解此方面信息,将有助于开展下一步工作,即选择正确的 DSP 接口。

选择正确的 DSP 接口
了解了应用及速率要求后,就对采用哪种 DSP 接口有了一定的认识。大多数音频设备均使用特定类型的串行接口,不过高速应用则要求并行接口。当采样速率为 10 MSPS、分辨率为 12 位时,如果采用串行接口,其端口的速率要达到 120 MHz 才能从转换器向 DSP 发送数据。这一要求大大超过了大多数50 MHz 串行端口的处理能力。若使用并行接口,则总线上信号交换的频率为 10 MHz,速率显著降低,因此处理起来非常简单。
在选择接口时,还要考虑的另一问题就是,并行总线能否满足所需的数据速率要求,或者说并行总线芯片在满足程序与系数要求后是否已经达到了满负荷。如果是的话,不妨考虑在 DSP 与转换器之间插入 FIFO。

确定握手模式
一旦选择了 DSP 接口,下一步就要考虑转换器与 DSP 之间的握手模式 (handshake mode)。大多数转换器在发出新的数据字之前都会给出某种类型的转换结束 (EOC) 信号。处理器使用上述信号的方式有两种:一是轮询 (poll);二是用其作为中断。
使用 EOC 信号作为中断具有一定优势,因为 CPU 不会被轮询标记占用,因此在获得数据前不会打断 CPU 的正常工作。不过,如果转换器等待处理特定的协议来读取数据,比如转换器发出转换结束信号后又需要读取命令来检索数据,每个读取命令都会触发新的中断,那么就会造成过多的开销,得不偿失。在这种情况下,轮询的方法就具有明显的优势了。
如果中断时延非常重要的话,那么使用轮询方式就更具优势。轮询可确保信号响应速度更快,这比进入中断服务例程要快得多。如果数据检索有短暂时隙 (narrow timeslot),那么采用轮询方式也是有利的。

确定传输模式
下一步就是实际收集数据的工作了。收集数据有两种方法,各有千秋。第一种方法是采用 DSP 的 DMA(直接存储器存取)控制器,可使传输与转换器的转换结束标记同步,并使 CPU 不用承担传输工作,因为数据阵列的填充是在后台完成的,传输完成后再通知 CPU。不过,这种方法只有在进行直接传输的情况下才有效。如果数据转换器在检索数据时需要某些复杂的机制,那么 DMA 就不太有效了。
在这种情况下,应让 CPU 参与传输工作。尽管服从特殊的协议相当简单,但必须使用大量的 CPU资源来收集数据。如果中断率非常高,那么 CPU 可能很难有时间再去执行数据收集之后的算法了。

是否采用数据猝发
假设数据转换器连接至 DSP 的并行总线,该并行总线在存储器存取(读取正在执行的数据)和 I/O 存取(读取采样)之间需要几个周期的转换,而且数据转换速率非常高,因此,转换常常是必需的,几乎每次采样读取都要进行转换。
如果一步就能读取多个数据字,且不用每次都进行数据总线交换,肯定是非常有价值的。在这种情况下,不妨考虑在数据转换器与 DSP 之间采用 FIFO。一旦 FIFO 达到一定的水平即中断 DSP,达到一定数量的数据字一步完成传输,这就大大降低了总线转换的开销。

针对变量选择正确的
数据类型
数据转换器针对所用的数据采用不同的格式。有的使用标准二进制(即无符号二进制)数据类型,有的则采用带符号的二进制数据类型,这就是问题的复杂所在。如果有一个 12 位数据转换器,那么在带符号二进制数据情况下,如何使用将是一个问题。符号位占据最重要的位置,即第“11”位(这里的起始位是第“0”位)。如果将此数据字赋予“C”变量,宽度为“16”位,那么假定“C”符号位为第“15”位。如果从转换器读取的数字为负,那么 DSP 就不能识别其为负值,因为符号位的位置错误。如何解决这一问题呢?第一种方法是在读取数据时进行数据位移。不过,这只有在 CPU 读取数据时才有可能,因为 DMA 控制器不可能在传输时进行数据位移。另一种方法是在数据块完全传输后在环路中将数据位移至正确的位置。不过这必须使用 CPU,并要求额外的 MIPS。
如果改变连接后转换器的第“11”位刚好连接至 DSP 数据总线的第“15”位,那么符号位从首位算起刚好位于正确的位置,这就能实现基于DMA 的传输,而且也不用再进行数据位移。

确保处理的是正确数据
现在,数据已经进入系统,数据字存储在阵列中,数据大小也合适,于是开始处理数据,但没有获得预期的结果,这时需要思考到底出了什么问题。首先应该检查 DSP 的高速缓存,DMA 传输数据进入存储器时是否启用高速缓存,在这种情况下,高速缓存很可能保留拷贝的旧数据,并在算法工作中使用它们。如果发生了此类问题,就必需注意高速缓存相关性与转储清除问题,或者是存储新数据的高速缓存区失效。这样就能确保 CPU 处理的数据是传输完成后的最新数据。

如果用 C 语言编程
应分配易失关键字
在调试嵌入式系统时,采用变量查询外设的状态后,发现 CPU 所用变量值是错误的,这时就要思考到底哪里出了问题。先看看下面这个结构:
unsigned int *pControl = (unsigned int *)0x00COFFEE; file://错
while (*pControl == 0); file://等待一个外部事件
这里的 *pControl 指向一个外设。通过 while 循环,期望 EOC 能从“0”转换为“1”。但在大多数情况下,恐怕得一直等下去,因为编译器认为它已经完全控制了变量及与其相关的存储器,只加载 *pControl 指向的存储器位置的内容一次,就会对其进行循环测试。但问题在于,由于不会重新读取存储器内容,也就不能结束循环。
解决这一问题的方法就是将 *pControl 的声明作一下修改,通知编译器其指向的存储器位置可由外部事件修改,而每次使用该变量时都必须重新载入,如下所示:
volatile unsigned int *pControl = (unsigned int *)0x00COFFEE; file://正
while (*pControl == 0); file://等待一个外部事件

确保采样等距
如果要在频域中处理采样数据,那么还要提到一点:不是所有转换器都有启动新转换的自身时基。在这种情况下,应采用外部时基或 DSP 定时针 (timer pin) 。

点击此处查看原文 >>

系统分类: DSP   |    用户分类:    |    来源: 转贴

评论(1) | 阅读(1254)
发表于:2007-1-12 18:38:45
标签:无标签

3

VoIP的基本传输过程简介

    通过因特网进行语音通信是一个非常复杂的系统工程,其应用面很广,因此涉及的技术也特别多,其中最根本的技术是VoIP (Voice over IP)技术,可以说,因特网语音通信是VoIP技术的一个最典型的、也是最有前景的应用领域。本文主要介绍VOIP的基本传输过程。

    传统的电话网是以电路交换方式传输语音,所要求的传输宽带为64kbit/s。而所谓的VoIP是以IP分组交换网络为传输平台,对模拟的语音信号进行压缩、打包等一系列的特殊处理,使之可以采用无连接的UDP协议进行传输。

    为了在一个IP网络上传输语音信号,要求几个元素和功能。最简单形式的网络由两个或多个具有VoIP功能的设备组成,这一设备通过一个IP网络连接。VoIP模型的基本结构图如图1所示。从图1中可以发现VoIP设备是如何把语音信号转换为IP数据流,并把这些数据流转发到IP目的地,IP目的地又把它们转换回到语音信号。两者之音的网络必须支持IP传输,且可以是IP路由器和网络链路的任意组合。因此可以简单地将VoIP的传输过程分为下列几个阶段。

               图1 VoIP的模型结构

   1、 语音-数据转换

    语音信号是模拟波形,通过IP方式来传输语音,不管是实时应用业务还是非实时应用业务,道貌岸首先要对语音信号进行模拟数据转换,也就是对模拟语音信号进行8位或6位的量化,然后送入到缓冲存储区中,缓冲器的大小可以根据延迟和编码的要求选择。许多低比特率的编码器是采取以帧为单位进行编码。典型帧长为10~30ms。考虑传输过程中的代价,语间包通常由60、120或240ms的语音数据组成。数字化可以使用各种语音编码方案来实现,目前采用的语音编码标准主要有ITU-T G.711。源和目的地的语音编码器必须实现相同的算法,这样目的地的语音设备帮可以还原模拟语音信号。

    2、 原数据到IP转换

    一旦语音信号进行数字编码,下一步就是对语音包以特定的帧长进行压缩编码。大部份的编码器都有特定的帧长,若一个编码器使用15ms的帧,则把从第一来的60ms的包分成4帧,并按顺序进行编码。每个帧合120个语音样点(抽样率为8kHz)。编码后,将4个压缩的帧合成一个压缩的语音包送入网络处理器。网络处理器为语音添加包头、时标和其它信息后通过网络传送到另一端点。语音网络简单地建立通信端点之间的物理连接(一条线路),并在端点之间传输编码的信号。IP网络不像电路交换网络,它不形成连接,它要求把数据放在可变长的数据报或分组中,然后给每个数据报附带寻址和控制信息,并通过网络发送,一站一站地转发到目的地。

    3、 传送

    在这个通道中,全部网络被看成一个从输入端接收语音包,然后在一定时间(t)内将其传送到网络输出端。t可以在某全范围内变化,反映了网络传输中的抖动。网络中的同间节点检查每个IP数据附带的寻址信息,并使用这个信息把该数据报转发到目的地路径上的下一站。网络链路可以是支持IP数据流的任何拓结构或访问方法。

    4、 IP包-数据的转换

    目的地VoIP设备接收这个IP数据并开始处理。网络级提供一个可变长度的缓冲器,用来调节网络产生的抖动。该缓冲器可容纳许多语音包,用户可以选择缓冲器的大小。小的缓冲器产生延迟较小,但不能调节大的抖动。其次,解码器将经编码的语音包解压缩后产生新的语音包,这个模块也可以按帧进行操作,完全和解码器的长度相同。若帧长度为15ms,,是60ms的语音包被分成4帧,然后它们被解码还原成60ms的语音数据流送入解码缓冲器。在数据报的处理过程中,去掉寻址和控制信息,保留原始的原数据,然后把这个原数据提供给解码器。

    5、 数字语音转换为模拟语音

    播放驱动器将缓冲器中的语音样点(480个)取出送入声卡,通过扬声器按预定的频率(例如8kHz)播出。 简而言之,语音信号在IP网络上的传送要经过从模拟信号到数字信号的转换、数字语音封装成IP分组、IP分组通过网络的传送、IP分组的解包和数字语音还原到模拟信号等过程。整个过程如图2所示。

点击看大图

图2 VoIP传输的基本过程

点击此处查看原文 >>

系统分类: 通信网络   |    用户分类:    |    来源: 转贴

评论(1) | 阅读(890)
发表于:2007-1-10 20:25:03
标签:无标签

7

方便显示器升级的复合型VGA编码器/解码器

较老式的计算机系统通过4根75Ω同轴电缆把RGB(三原色)视频和复合同步信号输送到150英尺外的RGB彩色监视器。如需升级,用于替换的VGA视频卡可直接驱动VGA监视器的内部端接部件带来的 75Ω负载。但是,VGA标准使用单独的水平和垂直正向同步信号。向原始电缆添加一根额外的同轴电缆来承载单独的同步信号,这是一种困难并且成本很高的建议。一个明显的解决方案就是把单独的同步信号组合到一种复合格式中。图1中的组合器电路很简单,成本很低,并且可用随时供货的备件来迅速组装。

点击看大图

在工作时,两支1N4148二极管D1和D2把VGA信号的5V逻辑电平垂直同步脉冲衰减1.4V,而二极管D3和D4组成二极管逻辑“或”门,来组合垂直和水平同步脉冲。产生的输出信号包含一个大约4.3V的水平同步信号,该信号被叠加在2.9V垂直同步信号上。

  在接收端,一个电容性耦合高通滤波器提取水平同步信号,而一个简单的RC(电阻器/电容器)低通电路则从直接耦合的垂直同步信号中除去水平同步脉冲。晶体管Q1和Q2放大恢复的水平同步脉冲,而晶体管Q3和Q4则放大垂直同步脉冲。电路的相应输出由干净的
同步脉冲组成,它们非常接近原始脉冲,并为工作在640×480像素分辨率的VGA监视器提供极稳定的同步脉冲(图2)。

点击此处查看原文 >>

系统分类: 显示光电   |    用户分类:    |    来源: 转贴

评论(1) | 阅读(1138)
发表于:2007-1-10 19:38:15
评论(0) | 阅读(1355)
发表于:2007-1-10 19:33:52
评论(0) | 阅读(634)
发表于:2007-1-9 18:53:01
评论(4) | 阅读(1577)
发表于:2007-1-8 14:41:59
标签:无标签

22

评论(11) | 阅读(1444)
发表于:2007-1-8 14:19:25
标签:无标签

13

SPI接口介绍

 SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。

   SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,地位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。

   SPI接口是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件,其接口包括以下四种信号:

(1)MOSI – 主器件数据输出,从器件数据输入
(2)MISO – 主器件数据输入,从器件数据输出
(3)SCLK – 时钟信号,由主器件产生
(4)/SS  – 从器件使能信号,由主器件控制

在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。
      在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。

  SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。如下图所示,在SCLK的下降沿上数据改变,同时一位数据被存入移位寄存器。

点击看大图

SPI接口内部硬件图示:
点击看大图

最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 转贴

评论(1) | 阅读(2402)
发表于:2007-1-8 14:10:48
标签:无标签

9

按键消抖

按键电路:常用的非编码键盘,每个键都是一个常开开关电路。

按键消抖:

通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号小型如下图。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,如下图。抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场合都要用到。

按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。键抖动会引起一次按键被误读多次。为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。按键的抖动,可用硬件或软件两种方法。

<1> 硬件消抖:在键数较少时可用硬件方法消除键抖动。下图所示的RS触发器为常用的硬件去抖。

点击看大图

图中两个“与非”门构成一个RS触发器。当按键未按下时,输出为1;当键按下时,输出为0。此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),中要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。这一点通过分析RS触发器的工作过程很容易得到验证。

<2> 软件消抖:如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,产生5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 转贴

评论(3) | 阅读(1258)
总共 , 当前 /,23456789下一页