在复杂信号处理与通信技术的开发中,设计流程的不连续越来越具有破坏性,并且代价越来越高昂。同时,缩短设计和验证周期的需求使设计不连续的影响被进一步被放大。本文通过介绍算法设计、系统架构和硬件设计中的几个用例,来展示最近在建模、仿真和代码生成工具及方法上的重要技术发展。
流系统的算法设计
现在越来越多的工程师开始用MATLAB中的浮点运算来开发信号处理与通信系统算法。这些算法开发人员可以利用MATLAB强大的信号采集和分析功能,以及多个工具箱的内置算法库。但是,在有些团队中,为了算法的优化实现,工程师会用C代码重写这些算法,将其转换为定点或整数运算,或将它们与其他设计元素集成。该重写步骤就是设计流程中一个潜在的,成本高昂且具有破坏性的典型不连续。
MATLAB提供的数百个用于信号处理、通信、图像和视频处理的新组件,都可作为System对象库。在MATLAB中,System对象库是为设计实时系统设计的,是即用型打包的算法实现。它们隐式地处理着流、索引、缓冲和状态管理,使编写、调试和维护代码变得更简单。
图1显示的是带发射器、信道和接收器组件的基本通信系统的框图表示形式。为了对这样一个系统进行建模和仿真,工程师需要写数千行的C代码,然后,寻找各种方法,以便将设计与测试设备进行集成,或者分析仿真结果。
图1:典型通信系统物理层的框图。
与这数千行C代码(一般情况下为实施此通信系统而写入的)相比,图2中显示的MATLAB代码使用了来自DSP System Toolbox和Communica TI ons System Toolbox的若干个System对象。
图2:部分MATLAB代码,展示来自DSP System Toolbox和Communica TI ons System Toolbox的System对象的使用。
例如,要对发射器进行建模,工程师可以按顺序实例化和调用Communica TI ons System Toolbox中的Reed-Solomon编码器、卷积编码器、区块交织器、矩形QAM调制器和正交空时分组码System对象(如图2所示)。这种代码结构让工程师可以轻松地将其与原始规格或框图进行对比。算法设计师则可以快速地将此代码与其现有的MATLAB代码相结合,并使用从测试仪器获取的实时流数据来测试这些算法。