|  | 
 
| 
第一章 数字信号处理、计算、程序、算法和硬线逻辑的基本概念
x
EDA365欢迎您登录!您需要 登录 才可以下载或查看,没有帐号?注册  " y5 O9 a0 J, _4 u% C6 L0 `+ w1.1 数字信号处理 ; ^' P) n, `7 K
 大规模集成电路设计制造技术和数字信号处理技术,近三十年来,各自得到了迅速的发展。这两个表面上看来没有什么关系的技术领域实质上是紧密相关的。因为数字信号处理系统往往要进行一些复杂的数学运算和数据的处理,并且又有实时响应的要求,它们通常是由高速专用数字逻辑系统或专用数字信号处理器所构成,电路是相当复杂的。因此只有在高速大规模集成电路设计制造技术进步的基础上,才有可能实现真正有意义的实时数字信号处理系统。对实时数字信号处理系统的要求不断提高,也推动了高速大规模集成电路设计制造技术的进步。现代专用集成电路的设计是借助于电子电路设计自动化(EDA)工具完成的。学习和掌握硬件描述语言(HDL)是使用电子电路设计自动化(EDA)工具的基础。 ; r  E7 M* A* [- O2 U
 
 ! U! T$ g. u+ r7 R- M; {1.2 计算(Computing)
 : a. G. T/ k: O5 K说到数字信号处理,我们自然就会想到数学计算(或数学运算)。现代计算机和通信系统中广泛采用了数字信号处理的技术和方法。基本思路是先把信号用一系列的数字来表示,如是连续的模拟信号,则需通过采样和模拟数字转换,把信号转换成一系列的数字信号,然后对这些数字信号进行各种快速的数学运算,其目的是多种多样的,有的是为了加密,有的是通过编码来减少误码率以提高信道的通信质量,有的是为了去掉噪声等无关的信息也可以称为滤波,有的是为了数据的压缩以减少占用的频道…。有时我们也把某些种类的数字信号处理运算称为变换如离散傅利叶变换(DFT)、离散余弦变换(DCT)、小波变换(Wavelet T)等。
 * }! _  ]1 ~) P我们这里所说的计算是从英语 Computing 翻译过来的,它的含义要比单纯的数学计算广泛得多。“Computing 这门学问研究怎样系统地有步骤地描述和转换信息,实质上它是一门覆盖了多个知识和技术范畴的学问,其中包括了计算的理论、分析、设计、效率和应用。它提出的最基本的问题是什么样的工作能自动完成,什么样的不能。”(摘自 Denning et al., “Computing as a Discipline,” Communication of ACM, January,1989)。   }% T! B2 {6 q
 本文中凡提到计算这个词处,指的就是上面一段中 Computing 所包含的意思。由传统的观点出发,我们可以从三个不同的方面来研究计算,即从数学、科学和工程的不同角度。 由比较现代的观点出发,我们可以从四个主要的方面来研究计算,即从算法和数据结构、编程语言、体系结构、软件和硬件设计方法学。本课本的主题是从算法到硬线逻辑的实现,
 $ X% h/ z4 Z3 n% C因此我们将从算法和数据结构、编程语言和程序、体系结构和硬线逻辑以及设计方法学等方面的基本概念出发来研究和探讨用于数字信号处理等领域的复杂硬线逻辑电路的设计技术和方法。特别强调利用 Verilog 硬件描述语言的 Top-Down 设计方法的介绍。7 _* [( ^+ C% _' ?2 V3 ^% B! k$ p
 ! c- x7 M' m8 L. S! i* _$ O
 1.3 算法和数据结构
 % r5 C2 {/ k: Z8 I0 B3 P' g为了准确地表示特定问题的信息并顺利地解决有关的计算问题,我们需要采用一些特殊方法并建立相应的模型。所谓算法就是解决特定问题的有序步骤,所谓数据结构就是解决特定问题的相应的模型。
 ' N  _, ?1 w6 U" u, e0 `5 P
 & h$ Y  e5 |% f! P1.4 编程语言和程序
 " @. m( }3 j) h7 u' b# f程序员利用一种由专家设计的既可以被人理解,也可以被计算机解释的语言来表示算法问题的求解过程。这种语言就是编程语言。由它所表达的算法问题的求解过程就是程序。我们已经熟悉通过编写程序来解决计算问题, C、Pascal、Fortran、Basic 或汇编语言语言是几种常用的编程语言。如果我们只研究算法,只在通用的计算机上运行程序或利用通用的 CPU 来设计专用的微处理器嵌入系统,掌握上述语言就足够了。如果还需要设计和制造能进行快速计算的硬线逻辑专用电路,我们必须学习数字电路的基本知识和硬件描述语言。因为现代复杂数字逻辑系统的设计都是借助于 EDA 工具完成的,无论电路系统的仿真和综合都需要掌握硬件描述语言。在本书中我们将要比较详细地介绍 Verilog 硬件描述语言。
 1 X! b" @8 l: y3 |
 % {, \. h6 _! \8 w. d7 Q+ ^1.5 系统结构和硬线逻辑 " F# j/ i: f2 d1 b
 计算机究竟是如何构成的?为什么它能有效地和正确地执行每一步程序?它能不能用另外一种结构方案来构成?运算速度还能不能再提高?所谓计算机系统结构就是回答以上问题并从硬线逻辑和软件两个角度一起来探讨某种结构的计算机的性能潜力。比如, Von Neumann(冯诺依曼)在 1945 设计的 EDVAC 电子计算机,它的结构是一种最早的顺序机执行标量数据的计算机系统结构。顺序机是从位串行操作到字并行操作,从定点运算到浮点运算逐步改进过来的。由于 Von Neumann 系统结构的程序是顺序执行的,所以速度很慢。随着硬件技术的进步,不断有新的计算机系统结构产生,其计算性能也在不断提高。计算机系统结构是一门讨论和研究通用的计算机中央处理器如何提高运算速度性能的学问。对计算机系统结构的深入了解是设计高性能的专用的硬线逻辑系统的基础,因此将是本书讨论的重点之一。但由于本书的重点是利用 Verilog HDL 进行复杂数字电路的设计技术和方法,大量的篇幅将介绍利用 HDL 进行设计的步骤、语法要点、可综合的风格要点、同步有限状态机和由浅入深的设计实例。
 ( ^, v0 l# ^6 @) K; t6 d+ l
 $ ]* U% `1 Y6 c* @7 D1.6 设计方法学 ' e- k4 I; D3 S, [
 复杂数字系统的设计是一个把思想(即算法)转化为实际数字逻辑电路的过程。我们都知道同一个算法可以用不同结构的数字逻辑电路来实现,从运算的结果说来可能是完全一致的,但其运算速度和性能价格比可以有很大的差别。我们可用许多种不同的方案来实现能实时完成算法运算的复杂数字系统电路,下面列出了常用的四种方案:$ j/ k6 ?% m' R5 W8 O5 y) U
 1)以专用微处理机芯片为中心来构成完成算法所需的电路系统;
 ! X1 z; U' ]. m- Q$ ~1 D" V( W2)用高密度的 FPGA(从几万门到百万门);7 X8 t  c/ ]0 M5 H5 l/ D* g
 3)设计专用的大规模集成电路(ASIC);1 E# d' V; }; V$ Q* Q0 D6 h
 4)利用现成的微处理机的 IP 核并结合专门设计的高
 / T/ f6 F7 t% M速 ASIC 运算电路。究竟采用什么方案要根据具体项目的技术指标、经费、时间进度和批量综合考虑而定。
 ( V0 C/ Y6 m6 i- I/ e  g在上述第二、第三、第四种设计方案中,电路结构的考虑和决策至关重要。有的电路结构速度快,但所需的逻辑单元多,成本高;而有的电路结构速度慢,但所需的逻辑单元少,成本低。复杂数字逻辑系统设计的过程往往需要通过多次仿真,从不同的结构方案中找到一种符合工程技术要求的性能价格比最好的结构。一个优秀的有经验的设计师,能通过硬件描述语言的顶层仿真较快地确定合理的系统电路结构,减少由于总体结构设计不合理而造成的返工,从而大大加快系统的设计过程。- a6 h. T: N; R0 }# R( x
 . J2 H. {( Z! u) p8 w( K# U3 q: }  }
 1.7 专用硬线逻辑与微处理器的比较 1 Z! v% i( H# \7 P; _  ^2 j
 在信号处理专用计算电路的设计中,以专用微处理器芯片为中心来构成完成算法所需的电路系统是一种较好的办法。我们可以利用现成的微处理器开发系统,在算法已用 C 语言验证的基础上,在开发系统工具的帮助下,把该 C 语言程序转换为专用微处理器的汇编再编译为机器代码,然后加载到样机系统的存储区,即可以在开发系统工具的环境下开始相关算法的运算仿真或运算。采用这种方法,设计周期短、可以利用的资源多,但速度、能耗、体积等性能受该微处理器芯片和外围电路的限制。
 # b& e/ S" q8 B5 N% e4 Y用高密度的 FPGA(从几万门到几十万门)来构成完成算法所需的电路系统也是一种较好的办法。我们必须购置有关的 FPGA 开发环境、布局布线和编程工具。有些 FPGA 厂商提供的开发环境不够理想,其仿真工具和综合工具性能不够好,我们还需要利用性能较好的硬件描述语言仿真器、综合工具,才能有效地进行复杂的 DSP 硬线逻辑系统的设计。由于 FPGA是一种通用的器件,它的基本结构决定了对某一种特殊应用,性能不如专用的 ASIC 电路。采用自行设计的专用 ASIC 系统芯片(System On Chip), 即利用现成的微处理机 IP 核或根据某一特殊应用设计的微处理机核(也可以没有微处理机核),并结合专门设计的高速ASIC 运算电路,能设计出性能价格比最高的理想数字信号处理系统。这种方法结合了微处理器和专用的大规模集成电路的优点,由于微处理器 IP 核的挑选结合了算法和应用的特点,又加上专用的 ASIC 在需要高速部分的增强,能“量体裁衣”, 因而各方面性能优越。但由于设计和制造周期长、投片成本高,往往只有经费充足、批量大的项目或重要的项目才采用这一途径。当然性能优良的硬件描述语言仿真器、综合工具是不可缺少的,另外对所采用的半导体厂家基本器件库和 IP 库的深入了解也是必须的。6 Z$ S& u/ j' ^& ~/ D2 b
 
  & H1 s- Y. q7 d: v: N 
   `& T& n: \6 x( p0 _1 b1 V+ i& c- s7 C) G( B! M/ ^
 
 . I& {8 t1 F5 j- m. K) z& e2 \$ n# ?0 X+ c% M* Q% P+ t; e
 
 | 
 |