数字音频技术(第6版) 737


分类:相关阅读 / 「数字音频技术(第6版)」

数字音频技术(第6版) 737
前一篇:数字音频技术(第6版) 736 下一篇:数字音频技术(第6版) 738
文本阅读:
  710数字音频技术(第6版)
  后,数据数值就已经被准备好用于下一遍处理的。未在图中示出的程序其他部分将搭建起各个O端口,用外部硬件的采样速率同步/O,并存储各个滤波器系数。这个特定的滤波器例使用了直线代码,滤波器的每个抽头都有单独的步骤。对于短滤波器来说这是非常快的但对于较长的滤波器采用带有循环的算法则更为高效。对于一个给定的滤波器来说,究竟哪种设计更为高效并非总是一目了然的
  17.8.3摩托罗拉(Motorola)公司的代码摩托罗拉(Motorola)公司推出的DSP56×x系列处理器广泛用于进行各种DSP操作,比如滤波等。运行的高效率来自于这颗DSP芯片能够在进行乘累加运算的同时对寄存器进行加载以用于下一次乘累加操作。并且,硬件实现的do循环和 repeat指令让乘累加运算可以复进行
  为了说明这些编程方法,我们将使用托马斯·祖多克as Zudock)编写的代码分两
  种方式实现前例中的那个五系数FR滤波器的差分方程。第一种形式与前例一样,在实现滤波器时限定每次操作必须在一种直线方式中独立执行。第二种形式在实现滤波器时使用了并移动和循环功能,使效率得到最大化,同时把代码的尺寸降至最低首先需要了解一些DSP56X系列的语法和架构方面的背景知识。DSP56×有三块并行的内存"
  典型地
  和"y""内存用于存放数据,"p"内存用于存放执行处理的程序。符号"rO"利
  为地址寄存器。
  以作为指针用于对三块内存中的任意
  进行读取或写入。例如,指令"move x(rO)+,x0"读取"x"内存中"ro"所指位置处存储的数值,并把它放入"×0"数据寄存器,然后让地址寄存器指钅
  向下面将要访
  的数据。"×0"和
  符号表示数据寄存器
  般用于保存下一个将要用于数学运算的
  数据。累加器用"a"表
  是这些数学运算的目的地。指令
  O,yoO,a"是乘累加运算
  的一个例子;数据寄存器
  和"y0"相乘,然后与保存在累加器"a"中的数据相在实现这个FR例子的直线代码算法中,每一步都是独立执行的。首先,"x0"中已经加载
  新的采样点,"rO
  内存中将要保存这个采样点的位置
  指向了内
  存中"h(O)"所处的位置。FR直线型程序代码为mov
  把x(n)保存到内存中,f0加
  move y
  从内存中读取
  加
  从x内存中读取
  从y内存中读取h