实时数字信号处理:基于TMS320C6x DSK平台的Matlab到C

环形缓冲FIR滤波的应用和实现

图3.16所示为滤波器输入的一个线性存储器模型。图3.17 具有静态存储器位置标号的环形缓存概念图3.18 具有动态存储器位置标号的环形缓存概念,图3.17后的采样时刻为了使用这个环形缓存,一个对于矩阵xLeft的指针必须建立起来。环形缓存FIR滤波器的代码如下,从代码可以了解其算法。程序清单3.6:使用环形缓存的FIR滤波器运行这个应用程序所需的文件在本书CD中第3章的ccs\FIRrevD目录中[13]。一旦编译完成,“加载”程序到DSK板并且单击“运行”按钮。
理论教育 2023-06-23

在6711DSK板上的DSP/BIOSTalk-Through应用程序优化方案

单击完成,然后这个工程将出现在CCS窗口中的左侧工程窗口中。为了完成这项工作,从菜单中选择“File→New→DSP/BIOS Configu-ration…”这将生成一个DSP/BIOS的配置文件,这个配置文件根据6711 DSK板进行了调整。保存生成的文件为talkth-ru.cdb在这一工程目录中。这一DSP/BIOS配置文件也产生一个连接命令文件,但它不是自动添加的。,找到Talkthrucfg.cmd文件并选择打开。
理论教育 2023-06-23

高效处理信号的FFT算法

与“brute force”DFT比较起来,这种FFT算法能够大幅提高计算效率。这样对于一个512点的例子中,DFT将自然需要262114次复数运算,而FFT将仅需要4068次复数运算——这比DFT快了5倍多。这就是FFT得到广泛使用的原因。图5-16平滑内核图8.2“brute force算法”的DFT相对可商用的基2的FFT程序有关的计算时间曲线传统表示FFT算法的方法是使用“蝶形图”,它描述了分解、中间的求和及旋转因子的使用。2点、4点、8点时间抽取FFT的表示方法如图8.3、图8.4、图8.5所示。
理论教育 2023-06-23

在CCS编辑器中添加McBSP0发送和接收功能的代码,并剖切基础进行投影

在CCS编辑器中打开main.c文件,添加下面的代码到主函数中。程序清单B.3:main()函数代码图4-11V 向剖面图的产生假想用剖切平面P 剖开基础并向V 面进行投影;基础的V 向剖面图前两行用片上支持库函数来使能McBSP0发送和接收。这个和0xFFFE的“与”AND操作是必需的,这样才能确保最低的有效位一直为0,为了避免重新编译代码。)程序清单B.5:HWI_McBSP_Tx函数代码图4-13剖切平面的位置及方向2.剖切符号的画法剖切位置和剖视方向。
理论教育 2023-06-23

如何进行位码倒置?实现高效率蝶形算法的关键

依靠计算机运行时间抽取FFT计算,从而获得高效率的蝶形算法,输入的值必须重新排列成众所周知的位码倒置形式。对位码倒置来说,数据矩阵元素的二进制索引号在输入端是左右倒置的。在蝶形图中惟一的区别是,对于频率抽取FFT来说蝶形部分的顺序是倒置的,旋转因子交换位置,并且输出值早于输入值出现在位码倒置的顺序中。位码倒置确保不会让输入元素被输出元素的值所覆盖,除非不再需要执行更多的FFT运算。
理论教育 2023-06-23

DSP/BIOS串口配置方法详解

在这个配置文件中另一件要完成的事情是串口初始化。在这个配置工具当中,展开“CSL_Chip Support Library→MCBSP-Multichannel Buffered Serial Port”。首先,我们将生成一个McBSP配置,通过右击“MCBSP Configuration Manager”选择“Insert mcbspCfg”。这将在“MCBSP Configuration Manager”下生成一个新的名为mcbspCfg0的项,右击“mcbspCfg0”选择“Properties”。不同的工作表选项允许你设置McBSP的多个参数和工作模式。现在,我们将指示DSP/BIOS使用这些配置值,并且自动应用到McBSP0上。检查打开MCBSP Port箱并且使能预初始化“Enable Pre-Initialization box”。选择你产生的配置项并且单击OK。
理论教育 2023-06-23

直接存储器存取的应用程序优化

接收通道操作类似,但起始缓存器不同因此可以保持输入和输出工作在不同的缓存器。第70行根据使用的编解码器类型设置事件中适当的值来使能寄存器。这就意味着每次输入帧缓存器满时,一个事件才会触发。这是完成实际的DSP算法的函数。先前使用EDMA时,该帧缓存器已经被填满,现在是待处理。第4行的代码声明了两个float类型的缓存器,在转换成浮点后用来存储左右帧数据。
理论教育 2023-06-23

加窗需求优化方案

图9.1 使用矩形窗的时域效果(上:一个持续无限时间的信号。图6-3使用Add Clay 工具造型图9.2 “rectsinc”傅里叶变换对(左侧的两个图是时域中的矩形脉冲信号。注意时域系统中的一个宽脉冲会导致 对应频域系统中的sinc函数的主瓣较窄。图6-4恐龙的头部的大体造型图9.3 应用矩形窗对频域的影响(上:矩形窗的频谱量级是一个sinc脉冲。
理论教育 2023-06-23

实时分析工具:提升数据分析效率

从CCS菜单中,选择“DSP/BIOS→CPU Load Graph”。这将允许我们观察CPU加载的是什么东西。如果程序被加载并且重新启动,注意CPU负载最初几乎是100%,然后当任务完成的时候会突然降低。因此,我们可以使用“DSP/BIOS→Execution Graph”,它将显示什么时间线程被执行。为了使显示更容易看,停止程序并且对DSP/BIOS配置文件作如下改变。在CCS中有许多其他工具是可以使用的,你应该花更多的时间使自己更熟练掌握CCS和DSP/BIOS。
理论教育 2023-06-23

信号的功率谱分析

在本章,我们的目标是获得一个给定信号的功率相对于频率的分布状态,这就叫做功率谱。回忆一下一个输出值是复数的FFT,在这里我们的注意力将只集中在功率谱的量级,并且不关心相位。如果这个FFT的幅度的二次方在k=100处显示一个突出的尖峰,这将意味着这个信号的有效功率在f≈732Hz处。事实证明,为精确评估信号的功率谱,有时在计算中再多几个步骤反而是更好的。
理论教育 2023-06-23

Matlab应用技巧与实践

使用Matlab对存储信号进行谱分析是非常容易和灵活的,但是使用Matlab进行实时谱分析是非常困难的。使用Matlab的这些函数的任一个帮助命令都能得到更多相应的细节。显而易见,到目前为止我们在Matlab中展示的程序都不是实时的。为应用这个程序,复制specAn.m到你硬盘的某个路径,并且使这个路径在Matlab中是可见的。图9.7 在Matlab中来自于pwelch命令的频谱图
理论教育 2023-06-23

基础理论:快速傅里叶变换与频谱分析的应用

如第8章中讨论的一样,快速傅里叶变换允许我们把一个来自于采样域的离散时域信号变换到频域。为达到这个检测目的,制造检验装备花费了大量资金。通过使用FFT我们用的是无参数的方法,但对某些特定的信号类型来说这不是最佳的。正是因为这个原因,今天基于FFT的频谱分析是一个非常通用的技术。数字示波器和频谱分析仪是基于FFT的频谱分析的一个典型应用。
理论教育 2023-06-23

如何选择窗函数:解决相近频率量级问题的窗函数选择方法

图6-8 勾勒形体的大体效果图9.5 两个窗函数的时域和频域比较 注意,一个窄的主瓣同时导致高的旁瓣级。从表9.1看出,汉明窗函数的半主瓣宽度是4π/N=2FS/N=96000/512=187.5Hz,比相隔的两个频率间隔还宽,所以答案是否定的。最好的选择就是增加帧的长度到1024点,这将把汉明窗的半主瓣宽度减小到93.75Hz,小于感兴趣的频率间隔。如果解决相近的频率量级是更重要的,我们趋向于选择一个较窄主瓣宽度的窗函数。
理论教育 2023-06-23

使用C语言的DSK实现8.4

为了确保我们正确地理解和应用FFT算法,我们可以在非实时的DSK上进行测试,像使用CPU一样使用DSK,并且把这个输出值和已知的正确值相比较。即程序清单8.3:为了在C语言中使用复数的结构体如果真的不需要双精度数据类型的全部精度,那么我们可以使用能够节省DSP的CPU的存储空间和提高处理速度的浮点数据类型。Matlab命令窗口显示的结果如下:这些数据在本质上与在DSK板上通过运行C语言代码得到的FFT结果是一样的。
理论教育 2023-06-23

DSP/BIOS的硬件配置详解

在CCS编辑器中打开配置文件。我们将要做的第一件事是配置DSP/BIOS,用在hwi.c中的函数来处理串口中断。展开树“Scheduling→HWI-Hardware Interrupt Service Routine Manager”。我们能够使用任何一个有效的硬件中断。但是为了与先前的工作保持连贯性,我们将使用INT11为发送中断和INT12为接收中断。在HWI_INT11条目上右击,并且选择“Properties”。我们已经做的是指导DSP/BIOS来使用中断调度器对McBSP0发送中断做出反应,发送中断和INT11相符合,并且调用我们的函数HWI_McBSP_Tx来执行中断这个中断处理。中断源将是MCSP_0_Receive,函数将是_HWI_McBSP_Rx。
理论教育 2023-06-23

解读C语言程序代码的方法及步骤

仔细检查此目录中的全部程序代码清单,确保理解这个程序的全部工作[28]。我们提供的程序利用DSK板的EDMA功能。这个C语言的程序代码和本书第6章中描述的基于帧的C语言程序代码几乎是一样的。
理论教育 2023-06-23
-已经加载完成-