【问题标题】:VHDL concurrent selective assignment synthesisVHDL并发选择性分配综合
【发布时间】:2016-01-11 16:46:38
【问题描述】:

一个真正的初级问题,希望得到一个初级答案,关于 VHDL(并发选择性分配)的主要分配之一,谁能解释一下 VHDL 编译器会将以下描述综合成什么?

LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.numeric_std.ALL;

ENTITY Q2 IS
PORT (a,b,c,d           :   IN  std_logic;
        EW_NS           :   OUT std_logic
        );
END ENTITY Q2;

ARCHITECTURE hybrid OF Q2 IS
SIGNAL INPUT                        :   std_logic_vector(3 DOWNTO 0);
SIGNAL EW_NS                        :   std_logic;

BEGIN
INPUT <= (a & b & c & d); -- concatination

WITH (INPUT) SELECT
        EW_NS <= '1' WHEN "0001"|"0010"|"0011"|"0110"|"1011",
                 '0' WHEN OTHERS;
END ARCHITECTURE hybrid;

我为什么要问?好吧,我以前以错误的方式处理事情,即在制作所需组件的框图之前在 VHDL 上描述事情。我会设想这被合成为一组和门逻辑​​? 任何帮助都会非常有帮助。 谢谢D

【问题讨论】:

  • 我建议你下载免费的Altera Quartus Prime Lite Edition,并综合设计,然后你就可以很容易地看到了。它将成为您未来冒险中非常实用的工具,甚至还附带免费的 ModelSim 版本.
  • 您好 Zimmer 先生,我有 Quartus II sp13.01 以及 ModelSim Altera 入门版 10.1d。这是我目前用于描述和“测试台”的东西,我还没有测试台,使用:/虽然我听到你们中的一些人谈论它。我想知道“描述”会合成什么,逻辑门明智。再次感谢您之前和未来的帮助:)

标签: vhdl


【解决方案1】:

您需要查看目标 FPGA 的用户指南,并了解一个“逻辑元素”(Xilinx 术语中的“切片”)中包含的内容。一般来说,FPGA 不会通过连接离散门(如 AND、OR 等)来实现组合逻辑。相反,一个逻辑元件将包含一个或多个“查找表”,通常有四个(但现在在一些较新的设备中为 6 个)输入。此查找表 (LUT) 的输入是逻辑函数的输入,输出是函数输出的一个。然后将 LUT 编程为 ROM,允许您的输入信号用作地址。每个可能的输入组合都有一个 ROM 条目,其结果是预期的逻辑功能。

具有多个输出的函数只需并行使用多个 LUT,具有相同的输入,每个函数的输出一个 LUT。需要比 LUT 更多输入的功能(例如,7 个输入,而 LUT 只有 4 个),只需将两个 LUT 并行组合,使用多路复用器在两个 LUT 的输出之间进行选择。这个最终的多路复用器使用一个输入信号作为它的控制,并且再次考虑了每个可能的输入组合。

这对于创建像 AND 门这样简单的东西可能听起来效率低下,但好处是这个简单的构建块(LUT)绝对可以实现任何组合功能。还值得注意的是,FPGA 工具链非常擅长优化逻辑功能以简化它们,并更好地将它们映射到 FPGA 中。 LUT 为这些工具提供了一个高度通用的元素。

逻辑元素还将包含一些专用资源,用于不太适合 LUT 方法的功能。这些可能包括用于加法器的专用进位链、用于组合多个 LUTS 输出的多路复用器、寄存器(大多数设计是同步的)。 LUT 有时也可以配置为小型移位寄存器或 RAM 元件。在逻辑元件之外,会有更具体的块,如大型乘法器、更大的存储器、PLL 等,这些都不能使用 LUT 资源有效地实现。同样,这一切都将在您的目标 FPGA 的用户指南中进行解释。

【讨论】:

  • 谢谢你的可怕杰夫。一个非常好的解释:) 在处理与 CPU 相关的术语时,我发现一般教科书在这个问题上缺乏一致性(取决于发布日期)并且倾向于跳过其中的一些文本。谢谢 :) 我会花时间重新阅读...
  • @DanielJHall 如果您对此感到满意,您是否介意将其标记为已接受?谢谢!
【解决方案2】:

过去,您的代码将被实现为单个 74150 TTL 电路,即 16 对 1 多路复用器。你有一个 4 位选择 (INPUT),它选择芯片的 16 个输入之一,它被路由到单个输出 ('EW_NS')。 74150 已过时,我找不到任何数据表,但很容易找到 8 对 1 多路复用器的示意图(例如,here)。 16->1 是相同的,但一切都更宽。我的旧 TI 数据手册基本上准确地显示了此链接中的图表。

但是 - 等等。您的问题更容易,因为您没有将实际输入路由到输出 - 您只是设置固定数据值。在 '150 上,您可以通过将 16 个输入中的 5 个连接到 1,将剩余的 11 个连接到 0 来做到这一点。这使得逻辑更加容易。

74150 具有与 4 输入查找表基本完全相同的功能(其中固定查找数据与 '150 输入的固定电平相同),因此在根据可怕的杰夫的回答,FPGA 中的单个 LUT,而不是使用 NAND 级实现。但是,在适当的芯片中,它将被实现为乘积之和,或类似的东西(正是链接图中的内容)。在这种情况下,绘制 K-map 并找到最小解。我在信封背面的 2 分钟得出了三个 3 输入与门,驱动一个 3 输入或门。我会把它作为练习留给你检查:)

【讨论】:

  • 谢谢 EML,是的,我得到了 Db.Cb.A + Cb.B.A + Db.B.Ab
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多