【问题标题】:Latch duplication in technology schema (vhdl)技术模式 (vhdl) 中的锁存器重复
【发布时间】:2013-11-06 22:37:14
【问题描述】:

请注意,这是一道学习题。

我必须在vhdl中描述一个简单的d-latch,然后合成它。问题在于它是一个“一元”d-latch,它的单个输入直接映射到它的输出(Q 和 nQ)。您可以将其想象为经典的异步 d-latch,其中 clk 信号始终为高电平。这是逻辑中无用的元素,而 xilinx 合成器在大多数情况下会给出一个空的技术架构。但是保留这个元素的原因是,例如,创建硬件“水印”,它出现在架构上,但不影响其逻辑。
我想出了以下代码:

entity dLatch is
  port(
    d: in std_logic;
    q: out std_logic);
end dLatch;

architecture dLatch_beh of dLatch is  
  signal o: std_logic;
begin
  latch: process(d)
  begin
    if d = '1' then
      o <= '1';
    elsif d = '0' then
      o <= '0';
    end if;
  end process;

  q <= o;
end;

此代码产生以下技术架构

link

但是当我尝试添加 nQ 输出端口时,我获得了锁存器的重复

entity dLatch is
  port(
    d: in std_logic;
    q, nq: out std_logic);
end dLatch;

architecture dLatch_beh of dLatch is  
  signal o: std_logic;
begin
  latch: process(d)
  begin
    if d = '1' then
      o <= '1';
    elsif d = '0' then
      o <= '0';
    end if;
  end process;

  q <= o;
  nq <= not o;
end;

技术架构:link

我不明白,为什么我在这里得到两个完全相等的闩锁。我预计只有一个额外的“非”门。 所以我的问题是如何避免锁存器的重复,或者可能有其他方法来解决这个问题。 我使用 Xilinx ISE Web Pack 14.6 进行综合。

UPD 解决方案是将合成器的标志 -register_duplication 设置为 false。

【问题讨论】:

  • 我从来没有使用过 Xilinx/FPGA,所以我不能给你一些答案。但是,在我看来,我认为合成器试图通过重复锁存器来优化您的延迟以避免扇出。为什么你不添加一些关于区域优化的约束?希望你能有更好的成绩!
  • "但是保留这个元素的原因是,例如,创建硬件“水印”,它出现在架构上,但不影响其逻辑。"你能向我解释一下为什么有人想首先获得硬件水印吗?
  • 如果它不影响逻辑,您将不得不与工具链的各个部分进行斗争以防止它被简单地删除:仅综合属性是不够的;映射器还会优化您说服合成工具留下的内容。(@Russell;我相信目标是在法庭上追踪可证明的设计“克隆”)

标签: vhdl xilinx


【解决方案1】:

你根本没有得到任何闩锁。您正在查看 Technology 视图,因此它向您展示了它映射到的 Xilinx 组件。您应该首先查看 RTL 视图。

其次,您的教授可能让您意识到,闩锁很糟糕。他甚至在描述中说视图将是空白的,因为这些工具不会为您生成闩锁。它们不存在于织物中。

【讨论】:

  • Xilinx FPGA 确实在结构中有锁存器
  • @Martin Thompson,很有趣,显然他们在 IOB 中有一些闩锁。这是一篇关于它的好文章...doulos.com/knowhow/fpga/latches 我的印象是所有新的 Xilinx FPGA 都移除了锁存器...
  • 不,它们仍然存在于 CLB 中:Xilinx 系列 7 CLB 用户指南xilinx.com/support/documentation/user_guides/… - 第 19 页:每个切片有八个存储元素。其中四个可配置为边沿触发 D 型触发器或电平敏感锁存器。
【解决方案2】:

解决方法是将合成器的标志 -register_duplication 设置为 false。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多