内容概要   本书详尽介绍了目前在电子信息和通信领域被广泛应用的数字信号处理硬件实现的全新解决方案,即基于EDA与SOPC的现代DSP开发技术, 以及与之相关的开发工具的使用方法、设计理论和一些典型的设计实例。全书内容包括基于MATLAB/SimuLink的DSP和通信系统模块的设计技术; Quartus II的基本使用方法、详细的设计流程向导、多种优化设计方法、逻辑锁定技术、嵌入式逻辑分析仪SignalTap II的使用方法、 Quartus II/DSP Builder及第三方EDA工具Synplify、Leonardo Spectrum和Modelsim的优化设计接口技术。 全书深入、系统地介绍了基于MATLAB环境下DSP Builder/SignalCompiler对现代DSP系统开发的基本方法,以及基于这些工具的DSP IP核的使用方法和使用规则。 本书内容新颖、实用,为DSP领域的读者展示了有别于传统TI DSP处理器的、全新的DSP系统实现技术,为软件无线电领域的读者提供了一项不可或缺的系统设计解决方案, 也为电子信息领域的读者向EDA技术的更高层次迈进提供了有用的工具。 本书可作为电子类各专业高年级本科生、研究生的教材,或作为相关领域工程技术人员的参考书,也可作为现代电子系统设计、电子设计竞赛、 DSP应用系统以及通信电子系统高层次开发的参考书,或用作SOC/SOPC技术实验教材。  目录 第1章 概述 1 1.1 DSP实现方案及设计流程 1 1.1.1 常用DSP应用器件及其性能特点 2 1.1.2 DSP处理器结构与性能的发展 4 1.1.3 FPGA的结构与性能的发展 4 1.1.4 基于DSP处理器的DSP设计流程 6 1.1.5 基于FPGA的DSP设计流程 7 1.2 现代DSP设计流程概述 9 1.3 两类DSP解决方案的比较 12 习题 18 第2章 Quartus II设计向导 19 2.1 频率计的VHDL设计 19 2.1.1 创建工程和编辑设计文件 19 2.1.2 创建工程 23 2.1.3 编译前设置 25 2.1.4 编译及了解编译结果 27 2.1.5 仿真 28 2.1.6 引脚锁定和下载 32 2.1.7 Quartus II在Windows 2000上的安装设置 36 2.2 使用宏功能块设计频率计 36 2.3 嵌入式系统块ESB的应用I 40 2.3.1 应用普通方法设计正弦信号发生器 40 2.3.2 应用ESB优化正弦信号发生器的设计 42 2.4 嵌入式系统块ESB的应用II 44 2.4.1 定制ROM数据文件 45 2.4.2 定制ROM 46 2.4.3 编译和结果观察 48 2.5 时序驱动式优化编译方法 49 2.5.1 需求频率值设置 49 2.5.2 优化时钟时序设置 50 2.5.3 编译 51 2.6 频率计结构原理 52 2.7 Quartus II优化特性 53 习题 55 第3章 DSP Builder设计入门 57 3.1 DSP Builder及其设计流程 57 3.2 DSP Builder设计向导 59 3.2.1 建立一个新的模型(Model) 60 3.2.2 Simulink模型仿真 69 3.2.3 SignalCompiler的使用 73 3.2.4 使用ModelSim验证生成的VHDL代码 81 3.2.5 在Quartus II中指定器件管脚、进行编译、下载 84 3.2.6 硬件测试 85 3.3 调幅电路模型设计示例 85 3.3.1 建立调幅电路模型 85 3.3.2 模型仿真和实现 91 3.3.3 在MATLAB/Simulink中使用MegaCore核 93 3.4 使用SignalTap II嵌入式逻辑分析仪 95 3.4.1 安装SignalTap II 95 3.4.2 设置触发条件 98 3.4.3 设置总线的数据格式 99 3.4.4 启动SignalTap II分析操作 99 3.4.5 信号节点的资源利用情况 100 3.4.6 一般触发条件 101 3.4.7 Node模块 101 习题 102 第4章 DSP Builder设计进阶 103 4.1 层次化设计 103 4.1.1 DSP Builder的子系统 103 4.1.2 在DSP Builder中使用外部的VHDL代码 109 4.2 用ModelSim进行RTL级VHDL仿真 111 4.3 使用Synplify进行综合 116 4.3.1 Synplify与DSP Builder的接口(自动流程) 116 4.3.2 Synplify和DSP Builder的接口(手动流程) 117 4.3.3 Synplify与Quartus II的接口 122 4.4 使用LeonardoSpectrum进行综合 122 4.4.1 LeonardoSpectrum与DSP Builder的接口(自动流程) 122 4.4.2 LeonardoSpectrum和DSP Builder的接口(手动流程) 123 4.4.3 LeonardoSpectrum与Quartus II的接口 126 4.5 Quartus II与DSP Builder的接口 127 4.5.1 使用Quartus II进行综合、适配(手动流程) 127 4.5.2 使用Quartus II进行时序仿真 129 4.5.3 在Quartus II中建立元件(Symbol) 130 习题 130 第5章 LogicLock优化技术 131 5.1 LogicLock技术的基本内容 131 5.1.1 LogicLock技术解决系统设计优化 131 5.1.2 LogicLock的基本内容 133 5.1.3 锁定区域的基本方式 133 5.1.4 层次化逻辑锁定区域 134 5.1.5 LogicLock技术的不同应用流程 135 5.1.6 系统性能强化策略 137 5.1.7 锁定区域的移植与再利用 138 5.2 未用LogicLock的数字滤波器设计 138 5.2.1 数字滤波器结构及其VHDL描述 138 5.2.2 滤波器设计和结果观察 142 5.3 应用逻辑锁定技术 144 5.3.1 底层模块设计及其VQM文件保存 145 5.3.2 确定逻辑锁定区域及其特性 147 5.3.3 将设计实体移至锁定区域 151 5.3.4 编译优化锁定后的filter模块 154 5.4 顶层设计优化 156 5.4.1 记录锁定信息 156 5.4.2 逻辑锁定信息的输出 157 5.4.3 逻辑锁定信息的输入 158 5.4.4 编译和结果观察 160 习题 162 第6章 FIR数字滤波器设计 163 6.1 FIR数字滤波器原理 163 6.2 使用DSP Builder设计FIR数字滤波器 164 6.2.1 3阶常系数FIR滤波器的设计 164 6.2.2 4阶FIR滤波器节的设计 167 6.2.3 16阶FIR滤波器模型设计 169 6.2.4 使用MATLAB的滤波器设计工具 171 6.2.5 16阶FIR滤波器的硬件实现 180 6.3 使用FIR IP Core设计FIR滤波器 180 6.3.1 FIR滤波器核与DSP Builder集成 181 6.3.2 FIR滤波器核的使用 181 习题 186 第7章 IIR数字滤波器设计 187 7.1 IIR滤波器原理 187 7.2 使用DSP Builder设计IIR滤波器 189 7.2.1 4阶直接Ⅱ型IIR滤波器设计 189 7.2.2 4阶级联型IIR滤波器设计 192 7.3 在Quartus II中使用IIR滤波器IP核 197 7.3.1 配置Quartus II以便使用IIR滤波器核 198 7.3.2 使用IIR滤波器核 199 习题 203 第8章 FFT设计 204 8.1 FFT的原理 204 8.1.1 快速傅立叶变换FFT 204 8.1.2 快速傅立叶反变换IFFT 205 8.2 FFT与蝶形运算 206 8.3 使用DSP Builder设计FFT 206 8.3.1 8点DIT FFT模型的建立 206 8.3.2 8点DIT FFT模型的实现 209 8.4 在DSP Builder中使用FFT IP Core 210 习题 211 第9章 DDS设计 213 9.1 DDS的基本原理 213 9.2 DDS的模块设计 216 9.2.1 建立DDS模型 216 9.2.2 DDS模型的使用 218 9.3 FSK调制器设计 219 9.3.1 FSK调制器原理 219 9.3.2 FSK模型 219 习题 220 第10章 编码与译码 222 10.1 伪随机序列 222 10.1.1 m序列 222 10.1.2 m序列发生器模型 223 10.2 帧同步检出 224 10.2.1 巴克码 224 10.2.2 巴克码的检出模型 225 10.3 RS码 226 10.3.1 RS码简介 226 10.3.2 使用IP Core设计RS编码器 227 10.3.3 使用IP Core设计RS译码器 228 10.4 Viterbi译码 229 10.4.1 卷积码的Viterbi译码 229 10.4.2 用IP Core设计Viterbi译码器 229 习题 229 第11章 DSP Builder设计规则 231 11.1 位宽设计规则 231 11.2 频率设计规则 231 11.2.1 单时钟设计规则 231 11.2.2 多时钟设计 235 11.2.3 使用PLL的高级特性 236 11.3 DSP Builder设计的取名规则 236 11.4 定点数据下标说明 237 11.5 在SBF中二进制小数点的位置 238 11.6 GoTo和From模块的支持特性 238 11.7 MegaCore功能块支持特性 239 11.8 层次化设计 240 11.9 黑盒子化 241 11.10 将DSP Builder设计方式用在外部RTL设计 242 第12章 AltLab库 243 12.1 SignalCompiler模块 243 12.1.1 综合域编译流程 243 12.1.2 数据位宽的传递 245 12.1.3 Tapped Delay Line 246 12.1.4 时钟设置 248 12.1.5 DSP Builder报告文件 250 12.2 Subsystem Builder模块 250 第13章 算术库 252 13.1 比较器模块 252 13.2 计数器模块 252 13.3 差分模块 253 13.4 除法模块 253 13.5 增益模块 254 13.6 递增递减模块 255 13.7 乘法累加模块 256 13.8 乘加模块 258 13.9 并行加减法器模块 259 13.10 乘积模块 260 13.11 其它算术模块 261 13.11.1 SOP TAP模块 261 13.11.2 流水线加法器模块 261 13.11.3 积分模块 262 第14章 其它DSP设计库 263 14.1 总线控制库 263 14.1.1 AltBus 模块 263 14.1.2 输入/输出常数模块 266 14.1.3 小数点确定模块 267 14.1.4 BusBuild模块 267 14.1.5 Bus Concatenation模块 268 14.1.6 Bus Conversion模块 269 14.1.7 Extract Bit模块 270 14.2 复数信号库 270 14.2.1 Butterfly 算子模块 270 14.2.2 复数加减模块 271 14.2.3 复数乘积模块 272 14.2.4 复数共轭模块 272 14.2.5 复数与Real-Imag间的连接模块 273 14.2.6 复数多路选择器模块 274 14.2.7 复数延迟模块 274 14.2.8 复数常数模块 274 14.3 Gates库 275 14.3.1 Case语句模块 275 14.3.2 IF语句模块 276 14.3.3 逻辑位操作符模块 277 14.3.4 逻辑总线操作符模块 278 14.3.5 LUT模块 279 14.3.6 n-to-1多路选择器模块 279 14.4 状态机函数库 280 14.4.1 FIFO控制状态机设计示例 280 14.4.2 状态机设计流程 282 14.5 Storage库 288 14.5.1 延迟模块 288 14.5.2 Down Sampling和Up Sampling模块 289 14.5.3 双口RAM模块 290 14.5.4 并行到串行转换模块与串行到并行转换模块 291 14.5.5 数据排列方式模块 293 14.5.6 ROM EAB模块 293 14.5.7 Shift Taps模块 294 14.5.8 PLL模块 295 附录 297 参考文献 300  前言 一般而言,数字信号处理(DSP)是指应用数字的方法(非模拟电子技术)处理各种类型信息的基本理论和基本算法;而DSP技术,或者说DSP(系统实现)开发技术主要是指将DSP基本理论和算法付诸实现的途径和方法。这是两个根本不同的概念,然而却常常被混淆,以致于一谈起DSP,难免让人不由自主地联想到类似于TI的DSP器件,误认为DSP技术等同于DSP处理器的应用,认为DSP的实现方式只能是DSP处理器。这不能不让人想到是否是由于某种隐含的,但却是长时间的商业暗示所致。 由于DSP应用系统实现的复杂性和某些硬件性能的局限性,一般地,DSP技术的发展总是滞后于基本理论的研究。特别是面对现代电子产品品种和性能的更高要求,这种矛盾已显得更加突出。这主要表现在随着DSP应用领域的拓宽和各类性能指标的不断提升,采用DSP处理器(如TI的TMS320C系列)的解决方案日益面临着不断增加的巨大挑战,而自身的技术瓶颈(如运行速度、吞吐量、总线结构的可变性、系统结构的可重配置性、硬件可升级性等等)致使这种解决方案在DSP的许多新的应用领域中的道路越走越窄。例如,软件无线电的概念在10年前就已提出,并付诸研究和实现,仅其频域中数字信号处理的等效速度也需达50 GIPS。然而直到目前为止,最快的DSP处理器,如TI的C6X系列也没能超过5 GIPS,至于现在最常用的TMS320C54X系列处理器,也只有0.1 GIPS(ALTERA基于FPGA的DSP等效速度大于70 GIPS)。如果采取多片并用,那么其体积、功耗、可靠性、灵活性、结构可重构性乃至产权的自主性等等不利因素暂且不说,就是系统功能的可行性都未必不是一个问题。不言而喻,在许多应用领域,以处理器(DSP Processor)为核心的DSP系统具有很大的局限性。 然而,值得注意的是,长期以来国内绝大部分有关DSP的著述,无一不是在介绍DSP基本理论和算法后,都会毫无例外地仅仅给出了DSP处理器的相关内容,却忽视了在给定的实用领域中,书中介绍的处理器能否胜任某种DSP算法。 这种倾向的结果难免会给人这样的印象:DSP处理器是DSP系统的惟一选择;DSP技术等于DSP处理器应用;DSP的开发应用、教学和实验也只需围绕DSP处理器来进行就可以了。 事实上,在DSP领域,除了普通的DSP处理器以外,利用FPGA来实现DSP系统已十分普遍。而且在许多诸如实时图像处理、联合战术无线电通信系统、3G移动通信基站、实时工控系统、卫星导航设备等领域中,FPGA的DSP解决方案已成为非此莫属的选择了! 现代DSP技术是相对于传统DSP技术而言的,后者主要是指目前已广泛使用的DSP处理器的解决方案,包括一系列软硬件技术与开发技术;前者则是基于SOPC(a System On a Programmable Chip)技术、EDA技术与FPGA实现方式的DSP技术,是现代电子技术发展的产物,它有效地克服了传统DSP技术中的诸多技术瓶颈,在许多方面显示了突出的优势,如高速与实时性,高可靠性,自主知识产权化,系统的重配置与硬件可重构性,单片DSP系统的可实现性以及开发技术的标准化和高效率。 本书对现代DSP技术作了完整的描述。第1章介绍了目前常用的DSP设计流程,其中重点介绍了现代DSP系统的设计流程,并从多侧面对现代DSP技术与传统DSP技术作了比较。由于Quartus II是DSP系统实现、SOPC设计和一般FPGA与CPLD开发的综合性大型EDA开发工具,因此在第2章、第4章和第5章中结合DSP实现,作了详尽的介绍。其中包括循序渐进式的实例向导、多种途径的优化技术应用,以及针对基于FPGA的DSP系统开发的第三方EDA工具软件(Synplify、Modelsim、LeonardoSpectrum)与Altera的Quartus II和DSP Builder间的接口方法和综合优化设计技术的应用;另外在第5章中还介绍了Quartus II的逻辑锁定技术LogicLock,这对于单片大规模DSP系统的设计是十分有益和必需的。第3章重点介绍了目前被广泛用于许多学科中进行科学计算和工程计算的功能强大的数学分析工具(MathWorks公司业界杰出的MATLAB/Simulink),以及在其环境下,作为现代DSP开发的核心工具DSP Builder的使用方法,包括DSP系统设计模型的建立、仿真测试、VHDL转换、逻辑综合、结构优化、编译适配,直至硬件实现等详细设计步骤。在该章中还就现代DSP技术中最具特色的IP核的应用,以及嵌入式逻辑分析仪SignalTap II的使用流程作了介绍。而在第4章中则对DSP的优化设计作了进一步的叙述。第6章至第10章主要介绍了利用以上工具完成一些典型DSP模块设计的实例。第11章介绍了应用DSP Builder完成DSP模型设计的设计规则。第12章至第14章对重要的DSP设计库及其功能模块作了介绍。 值得留意的是,在基于FPGA的DSP开发工具中,无论是Altera的DSP Builder还是Xilinx的System Generator,将MATLAB/Simulink的DSP模型转换成的硬件描述语言都只限于VHDL语言。因此,建议在本教程的前期课程中,应适当安排VHDL的教学内容,包括VHDL的RTL级描述与仿真。 由于现代DSP技术是SOC/SOPC技术的一个部分,是EDA技术的延续,因而其设计工具、设计语言和设计流程具有一般性和通用性。读者通过对本书内容的了解,不仅能认识一项全新的DSP开发技术和EDA实用技术,而且还能在开发实践中,或在教学和实验中,进一步体会现代电子技术中令人振奋的诸多优势,如:将远离硬件的系统级描述与高效的硬件实现有机结合的自顶向下的设计流程;允许用户能随意把“测试仪表”连同DSP系统一起送入目标芯片内部去采集内部信号或卸去的嵌入式逻辑分析仪应用技术;能随时改变硬件结构的重定制功能等等。显然,本书除了可用作现代DSP技术的学习资料外,也可作为高校电子信息、通信技术、工业自动化和计算机类EDA教学实验课的教材,或作为SOC/SOPC技术实验教材。