第十章从概念设计到芯片实现 信号处理的完整流程
第十章 从概念设计到芯片实现 ——信号处理的完整流程
10.1嵌入式系统及其开发流程 ·所谓嵌入式的系统,是指把单片的FPGA(Field Programmable Gate Array?现场可编程门阵列)或DSP (Digital Signal Processor数字信号处理器)芯片植入对 象的电路设备中,代替通用计算机,来完成对象的通 信、控制以及所有其他信号处理任务。与通用计算机 相比,嵌入式芯片具有体积小、重量轻、运行速度快、 便于集成、价格低、保密、工作可靠和便于大规模生 产等优点,所以适用于各种应用系统。统计资料说明, 从20世纪80年代出现这类系统以来,其所占有的市场 迅速扩大,目前已是通用计算机的几十至几百倍,而 且还在继续加大。可以预见,今后大部分信号处理系 统的开发人员在工作中所要面对的,将是这类系统
10.1 嵌入式系统及其开发流程 • 所谓嵌入式的系统,是指把单片的FPGA(Field Programmable Gate Array现场可编程门阵列)或DSP (Digital Signal Processor数字信号处理器)芯片植入对 象的电路设备中,代替通用计算机,来完成对象的通 信、控制以及所有其他信号处理任务。与通用计算机 相比,嵌入式芯片具有体积小、重量轻、运行速度快、 便于集成、价格低、保密、工作可靠和便于大规模生 产等优点,所以适用于各种应用系统。统计资料说明, 从20世纪80年代出现这类系统以来,其所占有的市场 迅速扩大,目前已是通用计算机的几十至几百倍,而 且还在继续加大。可以预见,今后大部分信号处理系 统的开发人员在工作中所要面对的,将是这类系统
这种单片集成电路可以把一个复杂的系统集成在一个 芯片上,所以也称为芯片上的系统(System On Chip一 SOC)。在硬件结构方面的特点,它采用了很多种专 门技术,来提高信号处理的速度。例如①大多数芯片 采用定点式数据结构;②大量采用流水线结构,使芯 片在同一个时间能执行多条指令,③设计了一些专用 的硬件计算结构,如专用的乘法累加器,专用的F℉T硬 件等,④创建多机并行的接口和功能,.等等,这些 都可以提高速度。随着半导体集成电路的发展,时钟 频率的提高,执行一条乘加(MAC)指令的时间己降 低到10ns以下。软件方面则是采用专用的直接指挥芯 片内部寄存器累加器运算的汇编语言,它的运算速度 虽然快,但也带来了开发上的难度
• 这种单片集成电路可以把一个复杂的系统集成在一个 芯片上,所以也称为芯片上的系统(System On Chip— SOC)。在硬件结构方面的特点,它采用了很多种专 门技术,来提高信号处理的速度。例如① 大多数芯片 采用定点式数据结构;② 大量采用流水线结构,使芯 片在同一个时间能执行多条指令,③ 设计了一些专用 的硬件计算结构,如专用的乘法累加器,专用的FFT硬 件等,④ 创建多机并行的接口和功能,…等等,这些 都可以提高速度。随着半导体集成电路的发展,时钟 频率的提高,执行一条乘加(MAC)指令的时间已降 低到10ns以下。软件方面则是采用专用的直接指挥芯 片内部寄存器累加器运算的汇编语言,它的运算速度 虽然快,但也带来了开发上的难度
·用汇编语言写代码是底层设计,比如算一个1024点FFT, 用MATLAB只是一条语句,而运行时却要执行15000多 次乘法和加法的代码,一个应用系统需要的代码可能 多达几百万、几千万条,无论编写、调试、验证都是 非常耗时而痛苦的一件事。开发周期长、容易出错是 最大的问题。许多芯片制造商一直在不断地改进其开 发环境,已经有了从C语言到各种芯片程序代码的编译 软件。 ·MATLAB可以在概念和数学上验证用户的设计思想, 对于一个复杂的系统,我们可以写出一套MATLAB程 序,验证它的功能。但是在把这个思想付诸实现时, 却需要另外写一套汇编程序。写这样两套程序来实现 同一种功能,本身就是一种极大的负担和浪费
• 用汇编语言写代码是底层设计,比如算一个1024点FFT, 用MATLAB只是一条语句,而运行时却要执行15000多 次乘法和加法的代码,一个应用系统需要的代码可能 多达几百万、几千万条,无论编写、调试、验证都是 非常耗时而痛苦的一件事。开发周期长、容易出错是 最大的问题。许多芯片制造商一直在不断地改进其开 发环境,已经有了从C语言到各种芯片程序代码的编译 软件。 • MATLAB可以在概念和数学上验证用户的设计思想, 对于一个复杂的系统,我们可以写出一套MATLAB程 序,验证它的功能。但是在把这个思想付诸实现时, 却需要另外写一套汇编程序。写这样两套程序来实现 同一种功能,本身就是一种极大的负担和浪费
·自然而然会想到,是不是可以由顶层设计出发, 自动地向下生成代码,并且可以把仿真、检验 等功能和工具也都成套地建立起来。当然,数 学概念和代码实现两者的约束条件是不同的, 比如一个滤波器的系统函数,其实现的信号流 图就有很多种;选定了一个信号流图,它所采 用的系数的字长和阶码又可以有多种选择;再 下去还有多种芯片可以选择;.读者不难想象 到,这是一个多级的变换链,需要多种不同的 工具在不同层次上完成特定的任务
• 自然而然会想到,是不是可以由顶层设计出发, 自动地向下生成代码,并且可以把仿真、检验 等功能和工具也都成套地建立起来。当然,数 学概念和代码实现两者的约束条件是不同的, 比如一个滤波器的系统函数,其实现的信号流 图就有很多种;选定了一个信号流图,它所采 用的系数的字长和阶码又可以有多种选择;再 下去还有多种芯片可以选择;…读者不难想象 到,这是一个多级的变换链,需要多种不同的 工具在不同层次上完成特定的任务
·一个嵌入式的产品的开发大体要经过研究、系统设计、 测试与硬件实施三个大的阶段,如图10.9.1所示。研究 阶段主要是弄清产品的需求和技术指标,建立系统的 数学模型,分析采用何种算法才能完成要求的指标。 这个阶段基本上是概念设计,可以用本书所介绍的理 论和MATLAB程序及工具箱完成;第二阶段是系统设 计,这个阶段就要涉及系统的具体结构和模块划分, 例如系统中的滤波器和FFT运算器就要涉及它的信号流 图设计,并进行仿真。仿真应该考虑到实际设备,所 以应该是模块式的并且是定点运算的仿真。以 MATLAB为基础的Simulink是这个阶段的有力工具; 第三阶段是测试与硬件实施阶段,这时主要希望把 MATLAB和Simulink的程序或框图变换为标准的C语言
• 一个嵌入式的产品的开发大体要经过研究、系统设计、 测试与硬件实施三个大的阶段,如图10.9.1所示。研究 阶段主要是弄清产品的需求和技术指标,建立系统的 数学模型,分析采用何种算法才能完成要求的指标。 这个阶段基本上是概念设计,可以用本书所介绍的理 论和MATLAB程序及工具箱完成;第二阶段是系统设 计,这个阶段就要涉及系统的具体结构和模块划分, 例如系统中的滤波器和FFT运算器就要涉及它的信号流 图设计,并进行仿真。仿真应该考虑到实际设备,所 以应该是模块式的并且是定点运算的仿真。以 MATLAB为基础的Simulink是这个阶段的有力工具; 第三阶段是测试与硬件实施阶段,这时主要希望把 MATLAB和Simulink的程序或框图变换为标准的C语言
定點產品開發流程:用MathWorks的產品進行基於模型的設計 研究 系統設計 测試與硬件宣施 數據採集 數據分析、 系統建模 测試與驗證 與輸入 建模及 可視化 仿真與割分 嵌入式軟件 算法開發 環境因素 與仿真 嵌入式算法 數字硬件 數學建模 手工或 系統元件 自動代碼 生成 模擬硬件 工具箱 ·信蓝虎理 ·定點運算 ·Simulink® ·遍波器設計 ·Simulink定點支持 ·RF工具箱 ·通肌 模塊庫 ·Real-Time Workshop ·使化 ·信跳處理 ·Real-Time Workshop 工具箱 ·统 ·通飘 嵌入式辐碼器 ·數擦採集 ,符號数酶 ·RF ·嵌入式日镖 ·德器控制 ·图像理 ·視频與圆像處理 ·龍波器設HDL產生器 MATLAB
如果C向各种芯片的目标代码的自动转换软件 己经开发成功,那么从概念设计到代码生成的 变换链就无缝地实现了。 。 本书前九章所讲的内容基本上只解决了第一阶 段的任务,本章将对后两阶段所要完成的任务 及MATLAB所能提供的支持软件作一简要介绍。 10.2节介绍系统建模和仿真的软件Simulink, 后几节将介绍芯片实现中用到的软件工具。使 读者有一个总体的概念
• 如果C向各种芯片的目标代码的自动转换软件 已经开发成功,那么从概念设计到代码生成的 变换链就无缝地实现了。 • 本书前九章所讲的内容基本上只解决了第一阶 段的任务,本章将对后两阶段所要完成的任务 及MATLAB所能提供的支持软件作一简要介绍。 10.2节介绍系统建模和仿真的软件Simulink, 后几节将介绍芯片实现中用到的软件工具。使 读者有一个总体的概念
10.2.1概述 ·Simulink工具却是从底层开发的一个完整的仿真环境和 图形界面。在这个环境中,用户可以利用鼠标或键盘, 完成面向框图系统仿真的全部过程,并且可以直观、 快速和准确地达到仿真的目标。原来的MATLAB是在 文本窗口中编程,图形窗口只是用来显示,而Simulink 则可以用框图方式来编程,使MATLAB的功能有了 个质的飞跃。因此,Math Works公司往往把Simulink与 MATLAB作为并列的产品向用户推荐。 Simulink的优点是它不给出任何新的函数。对用户来说, MATLAB原有的函数仍然有效。因此,读者如果有 MATLAB的基础,除了要学一下图形界面的使用方法 之外,不需要再学新的语法,马上就会应用。这显示 了其对用户的友好性
10.2.1 概述 • Simulink工具却是从底层开发的一个完整的仿真环境和 图形界面。在这个环境中,用户可以利用鼠标或键盘, 完成面向框图系统仿真的全部过程,并且可以直观、 快速和准确地达到仿真的目标。原来的MATLAB是在 文本窗口中编程,图形窗口只是用来显示,而Simulink 则可以用框图方式来编程,使MATLAB的功能有了一 个质的飞跃。因此,MathWorks公司往往把Simulink与 MATLAB作为并列的产品向用户推荐。 • Simulink的优点是它不给出任何新的函数。对用户来说, MATLAB原有的函数仍然有效。因此,读者如果有 MATLAB的基础,除了要学一下图形界面的使用方法 之外,不需要再学新的语法,马上就会应用。这显示 了其对用户的友好性
Simulink具有的功能: (1)用方框图的绘制代替程序的编写。构成任何一个系 统框图有三个步骤,即选定典型模块,相互联接和给 定模块参数。这三步可以在同一个图形界面上用鼠标 和键盘来完成。 ·(2)仿真的建立和运行是智能化的,首先,画好了框 图并存起来,它就自动建立起了仿真的方程,其次, 在运行时用户可以只给出仿真精度,软件已会自动选 择计算的程序,使得系统仿真具有最快的速度。 ·(3)输入输出信号来源形式的多样化,其输入信号可 以是各种信号发生器;也可以是来自一个设定的记录 文件,还可以来自MATLAB的工作空间(workspace)。 输出信号则送往多种多样的观测记录设备
Simulink具有的功能: (1)用方框图的绘制代替程序的编写。构成任何一个系 统框图有三个步骤,即选定典型模块,相互联接和给 定模块参数。这三步可以在同一个图形界面上用鼠标 和键盘来完成。 • (2)仿真的建立和运行是智能化的,首先,画好了框 图并存起来,它就自动建立起了仿真的方程,其次, 在运行时用户可以只给出仿真精度,软件已会自动选 择计算的程序,使得系统仿真具有最快的速度。 • (3)输入输出信号来源形式的多样化,其输入信号可 以是各种信号发生器;也可以是来自一个设定的记录 文件,还可以来自MATLAB的工作空间(workspace)。 输出信号则送往多种多样的观测记录设备