1 / 102

VHDL 高级设计技术

VHDL 高级设计技术. 何宾 2011.09. VHDL 高级设计技术 - 本章概要. 本章首先介绍基于 Xilinx 芯片的 HDL 高级设计技术。在 高级设计技术中主要对提高 HDL 性能的一些设计方法进 行了比较详细的介绍,其中包括逻辑复制和复用技术、 并行和流水技术、系统同步和异步单元、逻辑结构的设 计方法和模块的划分原则。 本章也对 IP 核技术进行了比较详细的说明和介绍,其 中包括 IP 核分类、 IP 核优化、 IP 核生成和 IP 应用技术。 这部分虽然在本书中的篇幅不是很多,但是内容非常重 要,读者在学习该部分内容时要仔细的领会。.

race
Download Presentation

VHDL 高级设计技术

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. VHDL高级设计技术 何宾 2011.09

  2. VHDL高级设计技术-本章概要 • 本章首先介绍基于Xilinx芯片的HDL高级设计技术。在 • 高级设计技术中主要对提高HDL性能的一些设计方法进 • 行了比较详细的介绍,其中包括逻辑复制和复用技术、 • 并行和流水技术、系统同步和异步单元、逻辑结构的设 • 计方法和模块的划分原则。 • 本章也对IP核技术进行了比较详细的说明和介绍,其 • 中包括IP核分类、IP核优化、IP核生成和IP应用技术。 • 这部分虽然在本书中的篇幅不是很多,但是内容非常重 • 要,读者在学习该部分内容时要仔细的领会。

  3. VHDL高级设计技术-VHDL代码风格 • VHDL代码风格是指两个方面的内容: • 一方面是VHDL语言描述规范,即在使用VHDL语言描 • 述逻辑行为时必须遵守VHDL语言的词法和句法规范,该 • 描述风格不依赖于EDA软件工具和可编程逻辑器件PLD类 • 型,仅仅是从VHDL语言出发的代码风格; • 另一方面则是VHDL语言对于一特定逻辑单元的描述, • 即用VHDL语言的哪一种描述风格进行逻辑行为描述,才 • 能使电路描述得更准确,布局布线后产生的电路设计最 • 优,该描述风格不仅需要关注EDA软件在语法细节上的差 • 异,还要紧密依赖于固有的硬件结构。

  4. VHDL高级设计技术-VHDL代码风格 • 从本质上讲,使用哪种描述风格描述电路的逻辑行 • 为,主要取决于两个关键问题: • 1、速度和面积问题; • 2、功耗问题;

  5. VHDL高级设计技术-VHDL代码风格 • 首先,先说明速度和面积问题。 • 这里的“面积”主要是指设计所占用的FPGA逻辑资源数 • 目,即所消耗的触发器和查找表数目。 • “速度”是指在芯片上稳定运行时所能够达到的最高频 • 率。 • 面积和速度这两个指标始终贯穿着PLD的设计,是评 • 价设计性能的最主要标准。

  6. VHDL高级设计技术-VHDL代码风格 • 面积和速度呈反比关系。 • 如果要提高速度,就需要消耗更多的资源,即需要更 • 大的面积; • 如果减少了面积,就会使系统的处理速度降低。 • 所以在设计中不可能同时实现既显著提高PLD工作频 • 率,又显著减少所占用PLD的逻辑资源的数目。

  7. VHDL高级设计技术-VHDL代码风格 • 在实际设计时,需要在速度和面积之间进行权衡,使得 • 设计达到面积和速度的最佳结合点。 • 本章介绍通过采用逻辑复制和复用技术、并行和流水线 • 技术、同步和异步电路处理技术、逻辑结构处理技术等方 • 法,在速度和面积之间进行权衡,达到最佳的性能和资源 • 要求。

  8. VHDL高级设计技术-VHDL代码风格 • 其次,说明功耗问题。 • 随着PLD工作频率的显著提高,功耗成为一个引起 • EDA设计人员密切关注的问题。 • 由于PLD工作频率的提高,逻辑单元的切换频率也相应 • 提高,相应的会引起PLD功耗增大。 • 这样就存在着频率和功耗之间的矛盾,因此必须在逻 • 辑单元的切换速度和功耗之间进行权衡,通过合理的设 • 计,减少逻辑单元不必要的切换,这样可以在一定程度上 • 降低功耗。

  9. VHDL高级设计技术-扇出 • 扇出是指某一器件的输出驱动与之相连的后续器件的能 • 力。众所周知,一个器件的扇出数是有限制的。扇出数目 • 越多,所要求的驱动能力越高。在PLD芯片内,如果一个 • 逻辑单元的扇出数过多的话,会降低其工作速度,并且会 • 对布线造成困难。因此,在PLD逻辑资源允许的情况下, • 要尽量降低扇出数。

  10. VHDL高级设计技术-逻辑复制 • 逻辑复制是通过增加面积而改善设计时序的优化方法, • 经常用于调整信号的扇出。如果信号具有高的扇出,则要 • 添加缓存器来增强驱动能力,但这会增大信号的时延。 • 通过逻辑复制,使用多个相同的信号来分担驱动任务。 • 这样,每路信号的扇出就会变低,就不需要额外的缓冲器 • 来增强驱动,即可减少信号的路径延迟。

  11. VHDL高级设计技术-逻辑复制 • 通过逻辑单元的复制,减少扇出数,可以解决下面两 • 个方面的问题:减少网络延迟;多个器件分布在不同的区 • 域,这样可以大大降低布线阻塞情况的发生。 • 在使用增加器件减少扇出数目的时候,必须要注意的 • 是,如果是异步单元的话,必须对该单元进行同步处理。

  12. fn1 D Q fn1 D Q fn1 D Q VHDL高级设计技术-逻辑复制

  13. VHDL高级设计技术-逻辑复用技术 • 逻辑复用是指在完成相同的功能下,尽量减少所使用的 • 逻辑单元的数目。这样在不影响设计性能的情况下,可以 • 降低资源的使用。下面通过一个共享加法器的例子来说明 • 这个问题。

  14. VHDL高级设计技术-逻辑复用技术

  15. VHDL高级设计技术-逻辑复用技术

  16. VHDL高级设计技术-逻辑复用技术 • 如图5.3所示的先加法后选择的结构,在实现这样一 • 个功能时需要使用两个加法器和一个选择器. • 对该结构进行优化设计,如图5.3所示,A1和C1加数通过一个选择器送到加法器的一个输入端,B1和D1被加数通过另一个选择器送到加法器的另一个输入端,然后进行加法运算,这样设计可以节省一个加法器资源,在FPGA内选择器的资源远远多于加法器资源。

  17. VHDL高级设计技术-逻辑复用技术 • 共享加法器资源的VHDL描述 • library IEEE; • use IEEE.std_logic_1164.all; • use IEEE.std_logic_unsigned.all; • use IEEE.std_logic_arith.all; • entity res_sharing is • port ( • A1,B1,C1,D1 : in STD_LOGIC_VECTOR (7 downto 0); • COND_1 : in STD_LOGIC; • Z1 : out STD_LOGIC_VECTOR (7 downto 0)); • end res_sharing; architecture BEHAV of res_sharing is begin P1: process (A1,B1,C1,D1,COND_1) begin if (COND_1=’1’) then Z1 <= A1 + B1; else Z1 <= C1 + D1; end if; end process; -- end P1 end BEHAV;

  18. VHDL高级设计技术-并行处理技术 • 串行设计是最常见的一种设计。当一个功能模块对输入 • 的处理是分步骤进行的,而且后一步骤只依赖于前一步骤 • 的结果时,功能模块的设计就需要采用串行设计的思想。 • 并行处理就是采用几个处理流程同时处理到达的负载, • 提高处理的效率。并行处理要求这些处理任务之间是不相 • 关的,彼此之间是不互相依赖的,如果存在相互依赖就很 • 难用并行处理的方法。

  19. 模块3 模块4 模块1 模块2 模块1 模块1 模块1 模块1 VHDL高级设计技术-并行处理技术

  20. VHDL高级设计技术-并行处理技术 • 下面以一个复杂的乘法运算为例,说明并行处理技术的 • 使用。 • 首先给出该运算的数学表达式 , • 下图给出了实现该功能的并行结构(该结构由XST综合 • 工具给出。通过使用多个乘法器,使得四个乘法运算可以 • 同时进行,但是需要注意的,这种速度的提高是以面积为 • 代价的。

  21. a0 b0 + a1 b1 + a2 b2 + a3 X X X X b3 VHDL高级设计技术-并行处理技术

  22. VHDL高级设计技术- 并行乘法加法描述 • [例]乘法加法运算的实现则用VHDL语言描述如下: • Library ieee; • Use ieee.std_logic_1164.all; • Use ieee.std_logic_unsigned.all; • Use ieee.std_logic_arith.all; • Entity mult_add is • Port( clk : in std_logic; • a0,a1,a2,a3 : in std_logic_vector(7 downto 0); • b0,b1,b2,b3 : in std_logic_vector(7 downto 0); • y : out std_logic_vector(15 downto 0)); • end multadd; architecture behav of mult_add is begin process(clk) begin if rising_edge(clk) then y<=((a0*b0)+(a1*b1)+(a2*b2)+(a3*b3)); end if; end process; end behav;

  23. VHDL高级设计技术-流水线设计技术 • 采用这样的流水线设计从宏观上来看平均每一个事件的 • 处理时间为一个单位时间。流水线的设计要求事件所分成 • 的这n个步骤的处理时间是相同的,以保证流水线不会因 • 为处理时间的不同而发生阻塞,见图5.2.2.3。

  24. VHDL高级设计技术-流水线设计技术 • 采用流水线设计的好处实在不提高系统运行频率的情况下,能够获得更好的处理效率。受制造工艺的影响,提高系统频率将会增加后端制造的难度。同时由于需要使用更先进的制造工艺,以及产品频率的下降,将会带来产品成本的提高。

  25. VHDL高级设计技术-流水线设计技术 • 如果假设在串行设计中系统处理效能正比于系统运行的频率,那么对于流水线设计,在不提高系统运行频率的情况下,n级流水线的处理效能可以用下面公式来描述: • 处理效能=系统运行频率×流水线级数

  26. VHDL高级设计技术-流水线设计技术 • 由此可见,在不提高系统运行频率的情况下,提高流 • 水线的级数将成倍地提高系统处理的效能。但是流水线的 • 设计也是有一定的限制的: • (1)只有对那些能分成n个步骤完成,并且对每个步骤 • 都需要固定相同处理时间的操作来说才能采用流水线设 • 计;

  27. VHDL高级设计技术-流水线设计技术 • (2)受硬件资源的限制,流水线的级数是有限制的; • (3)对于存在处理分支预测流水线的设计(广泛应用 • 于微处理器的设计中),流水线的处理效能还要取决于分 • 支预测算法的设计。

  28. VHDL高级设计技术-流水线设计技术 • 流水线能动态地提升器件性能,它的基本思想是对经 • 过多级逻辑的长数据通路进行重新构造,把原来必须在一 • 个时钟周期内完成的操作分成在多个周期内完成。

  29. VHDL高级设计技术-流水线设计技术 • 这种方法允许更高的工作频率,因而提高了数据吞 • 吐量。 • 因为PLD的寄存器资源非常丰富,所以对PLD设计而 • 言,流水线是一种先进的而又不耗费过多器件资源的结 • 构。 • 但是采用流水线后,数据通道将会变成多时钟周期,所 • 以要特别考虑设计的其余部分,解决增加通路带来的延 • 迟。

  30. VHDL高级设计技术-流水线设计技术 • 流水线的基本结构是将适当划分的N个操作步骤串连起 • 来。流水线操作的最大特点是数据流在各个步骤的处理, • 从时间上看是连续的; • 其操作的关键在于时序设计的合理安排、前后级接口间 • 数据的匹配。如果前级操作的时间等于后级操作的时间, • 直接输入即可; • 如果前级操作时间小于后级操作时间,则需要对前级数 • 据进行缓存,才能输入到后级;如果前级操作时间大于后 • 者,则需要串并转换等方法进行数据分流,然后再输入到 • 下一级。

  31. A × Mult B VHDL高级设计技术-流水线乘法器 • 首先给出流水线乘法器的结构图。从图中可以看出,该 • 流水线乘法器,在每个时钟节拍下,均可以得到一个乘法 • 结果的输出,乘法器的效率大大增加。

  32. VHDL高级设计技术-流水线乘法器 • library ieee; • use ieee.std_logic_1164.all; • use ieee.numeric_std.all; • entity multipliers_2 is • generic(A_port_size : integer := 18; • B_port_size : integer := 18); • port(clk : in std_logic; • A : in unsigned (A_port_size-1 downto 0); • B : in unsigned (B_port_size-1 downto 0); • MULT : out unsigned ( (A_port_size+B_port_size-1) downto 0)); • attribute mult_style: string; • attribute mult_style of multipliers_2: entity is "pipe_lut"; • end multipliers_2; • architecture beh of multipliers_2 is • signal a_in, b_in : unsigned (A_port_size-1 downto 0); • signal mult_res : unsigned ( (A_port_size+B_port_size-1) downto 0); • signal pipe_1,pipe_2,pipe_3 : unsigned ((A_port_size+B_port_size-1) downto 0); • begin • mult_res <= a_in * b_in;

  33. VHDL高级设计技术-流水线乘法器 • process (clk) • begin • if (clk'event and clk='1') then • a_in <= A; • b_in <= B; • pipe_1 <= mult_res; • pipe_2 <= pipe_1; • pipe_3 <= pipe_2; • MULT <= pipe_3; • end if; • end process; • end beh;

  34. VHDL高级设计技术-系统同步单元 • PLD内部由大量的电路单元组成,但是这些单元通常都 • 是由有限的几种不同的逻辑单元或是逻辑门构成的。每一 • 种逻辑单元包含输入信号以及输出信号,输出信号又作为 • 其他逻辑单元的输入信号。 • 从逻辑层面的抽象来看,一个PLD器件看成数量众多的 • 逻辑门构成的网络,这些逻辑门的输入和输出通过金属导 • 线相连构成了完成特定逻辑功能或是算法的网络。在PLD • 芯片内部,成百上千万的逻辑门之间的信号传递决定了逻 • 辑门的时延以及系统最后的运行速度。

  35. VHDL高级设计技术-系统同步单元 • 集成电路系统中有些信号的传递可以同时进行,但是有 • 的信号的传递必须遵循严格的先后关系,这样才能保证系 • 统运行结果的正确性(也就是说系统运行的结果是可以被 • 重复的,系统在确定条件下运行的结果是确定的,而不是 • 随机的)。这就需要同步(Synchronization)来保证电路 • 的各个部分的逻辑处理按照特定的顺序进行

  36. VHDL高级设计技术-系统同步单元 • 同步电路和异步电路的区别在于电路触发是否与驱动时 • 钟同步,从行为上讲,就是所有电路是否在同一时钟沿的 • 触发下同步地处理数据。 • 常用于区分二者的典型电路就是同步复位和异步复位电 • 路。同步复位的代码中只有时钟沿一个触发条件,但是异 • 步复位代码中语句有复位和时钟沿两个触发条件。

  37. VHDL高级设计技术-系统同步单元 • 通常情况下,同步电路采用的都是全同步,图5.1.1 • (a)就是一个全同步的例子, • 第一部分是由逻辑门组成的组合逻辑部分; • 第二部分称为时钟驱动存储单元;简单的说就是寄存 • 器,用于存储组合逻辑的输出结果; • 第三部分是时钟分配网络,这一部分特殊的电路不参 • 与实际的运算,而是产生并分配参考时钟,这一部分 • 电路关心的是如何产生控制整个同步电路的时钟并将 • 时钟正确地分配到每一个寄存器。

  38. VHDL高级设计技术-系统同步单元 • 同样以图5.1.1(a)为例,同步系统中包括由组合逻辑 • 部分完成的逻辑运算以及由存储单元对于逻辑运算结果的 • 存储: • 实际的存储过程由时钟信号控制,并发生在信号从逻辑 • 门的输出端输出稳定后。该模型中在每个时钟周期的开始 • 时,输入信号以及存储单元存储的数据输入组合逻辑,经 • 过一定逻辑门以及传输的时延后,组合逻辑产生结果输出 • 并保持稳定,在这个时钟周期的末尾将输出组合逻辑的结 • 果并存入存储单元,并在下一个时钟周期重新参加组合逻 • 辑的操作。

  39. 计算单元 • 时钟周期开始时信号有效 输出数据端 输入数据端 组合逻辑 Ri 数 据 Rf 数 据 组合逻辑 时钟驱动存储单元 时钟信号 • 时钟周期结束时信号有效 同步单元 时钟信号 时钟信号 时钟分配网络 (a)同步系统的状态机模型 (b)本地数据通路 VHDL高级设计技术-系统同步单元

  40. VHDL高级设计技术-系统同步单元 • 因此,数字系统可以看成是由一系列同时执行的由组合 • 逻辑构成的计算单元组成的。如图5.1.1(b)所示的本地 • 数据通路就是对这种概念的抽象。从图中可以看出,组合 • 逻辑的时延被限制在一个时钟周期内。在此本地数据通路 • 饿始端,寄存器Ri是存储单元,用于在时钟周期开始的时 • 候给组合逻辑提供部分或是全部的输入信号,同时在本地 • 数据通路的末端,组合逻辑的结果在时钟周期的末尾被正 • 确地锁存于寄存器Rf中。在本地数据通路中,每一个寄存 • 器既是组合逻辑的输入端—数据的提供源,也是组合逻辑 • 的输出端—输出数据的接收者,这取决于系统处于运行的 • 哪个阶段。

  41. VHDL高级设计技术-系统同步单元 • 同步系统具有很好的可控性,这是因为系统时钟提供了 • 一种时间窗的机制保证可有足够的时间让信号在逻辑门以 • 及逻辑门之间的连线上传播,并最后成功锁存于寄存器。 • 在设计系统和选择正确的时钟周期时,要满足以下这两 • 个矛盾的需求 • 1、希望系统的时钟周期尽可能短,这样在固定的时间 • 内运算逻辑电路可以进行更多次的运算; • 2、需要保证时钟定义的时间窗足够长以保证组合逻辑 • 的输出信号都能在当前时钟周期结束前以及下一个时钟周 • 期开始前到达目标寄存器。

  42. VHDL高级设计技术-系统同步单元 • 同步系统具有以下的优点使得它成为数字集成电路系统 • 的首选: • (1)同步系统易于理解,并且同步系统中的各个参数以 • 及变量都十分的明确,例如对于不同运算单元的执行的先 • 后顺序是确定的; • (2)同步系统可以减少非确定因素诸如组合逻辑的时延 • (受系统运行的环境、负载以及输入信号的向量组合等的 • 影响)对系统的影响,这就保证了系统按照确定的行为运 • 行,并且保证系统正确执行了设计的算法;

  43. VHDL高级设计技术-系统同步单元 • (3)同步系统中不需要关心组合逻辑的输出毛刺,因为 • 寄存器只有在时钟的有效沿上才对组合逻辑的输出进行采 • 样,而同步系统可以确保这时组合逻辑的输出已经没有毛 • 刺。 • (4)同步系统的状态完全由存储单元中所存储的数据所 • 决定,这大大简化了系统的设计、调试以及测试。

  44. VHDL高级设计技术-系统同步单元 • 当然,同步系统也存在着下面一些缺点使得今天的同步 • 大规模集成电路设计变得更加富有挑战性: • (1)同步系统要求系统中的所有电路通路以其中最慢 • 的一条寄存器到寄存器通路的标准来工作(这也就是 • 说,同步系统中系统工作的速度取决于这些通路上具有 • 最大时延的组合逻辑,包含这样组合逻辑的通路称为最 • 坏情况下的关键路径。

  45. VHDL高级设计技术-系统同步单元 • 在通常的大规模集成电路系统中,大多数的路径都具有 • 更小的时延,也就是可以采用更小的时钟周期。但是那些 • 具有最大时延的路径限制了系统时钟周期的长短,同时也 • 引入了对于整个系统速度的限制。有时候这种通路上时延 • 的非对称性是如此的富有戏剧性,以致于整个系统的速度 • 仅仅取决于少数几条速度非常慢的路径)。

  46. VHDL高级设计技术-系统同步单元 • (2)同步系统中,时钟信号需要被分配到数以万计的分 • 布于系统各个地方的存储寄存器中,因此系统中很大一部 • 分的面积以及耗散的电能都被用于时钟分配网络—并不 • 参与实际的计算功能的电路。 • (3)同步系统的可靠性依赖于对于系统时延要求(包括 • 组合逻辑以及由电路互联线产生)的正确估计,如果系统 • 不能满足时延要求,将造成系统的不稳定甚至是不可用。

  47. VHDL高级设计技术-系统同步单元 • 综上所述,因此同步电路的设计应遵循以下准则: • 1)尽量在设计中使用单时钟,且走全局时钟网络。 • 在单时钟设计中,很容易就将整个设计同步于驱动时 • 钟,使设计得到简化。全局时钟网络的时钟是性能最优, • 最便于预测的时钟,具有最强的驱动能力,不仅能保证驱 • 动每个寄存器,且时钟漂移可以忽略。在多时钟应用中, • 要做到局部时钟同步。

  48. VHDL高级设计技术-系统同步单元 • 在实际工程中,应将时钟信号和复位信号通过FPGA芯 • 片的专用全局时钟引脚送入,以获得更高质量的时钟信号。2)尽量避免使用混合时钟沿来采样数据或驱动电路。 • 使用混合时钟沿将会使静态时序分析复杂,并导致电 • 路工作频率降低。

  49. VHDL高级设计技术-系统同步单元 • 3)避免使用门控时钟。如果一个时钟节点由组合逻辑驱动,那么就形成了门 • 控时钟,门控时钟常用来减少功耗,但其相关的逻辑不 • 是同步电路,即可能带有毛刺,而任何的一点点小毛刺 • 都可以造成D触发器误翻转;此外,门控逻辑会污染时 • 钟质量,产生毛刺,并恶化偏移和抖动等指标。所以门 • 控时钟对设计可靠性有很大影响,应尽可能避免。 • 4)尽量不要在模块内部使用计数器分频产生所需时 • 钟。

  50. VHDL高级设计技术-异步单元 • 但是在实际的设计过程中,不可避免的要接触到异步单 • 元,比如在设计模块与外围芯片的通信中,跨时钟域的情 • 况经常不可避免。 • 异步时序单元指的是在设计中有两个或两个以上的时 • 钟,且时钟之间是不同频率或同频不同相的关系。而异步 • 时序设计的关键就是把数据或控制信号正确地进行跨时钟 • 域传输。 • 每一个触发器都有其规定的建立(setup)和保持 • (hold)时间参数。在这个时间参数内,输入信号在时钟 • 的上升沿是不允许发生变化的。如果信号的建立时间中对 • 其进行采样,得到的结果将是不可预知的,即亚稳态。

More Related