首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xilinx Virtex中的CLB加法器结构及VHDL加法器实现

Xilinx Virtex中的CLB加法器结构及VHDL加法器实现
EN

Stack Overflow用户
提问于 2015-01-30 22:24:59
回答 1查看 392关注 0票数 0

1-)我很好奇ISE合成器是如何在Virtex中实现加法器的。我的意思是,最小的加法器块大小是多少?我在搜索Xilinx文档时,我想出了这个Virtex-4 FPGA User Guide

在204页,它说:“算术逻辑包括一个XOR门,它允许在一个片内实现一个2位全加器。”但是应该有超前进位的实现。因为关键路径与输入宽度成对数增加。

2-)另一个问题是,我想用VHDL实现长符号向量。为了达到更高的工作频率,我想要实现两级流水线加法器。例如:

代码语言:javascript
复制
signal a, b, c: signed(63 downto 0);

常规方法

代码语言:javascript
复制
c <= a + b;

我想实现的是

代码语言:javascript
复制
signal c_hi : signed(31 downto 0);
signal c_lo : signed(32 downto 0);

process(clk)
begin
    if rising_edge (clk) then
       --1st stage
       c_lo <= ('0' & a(31 downto 0)) + ('0' & b(31 downto 0));
       c_hi <= a(63 downto 32) + b(63 downto 32);
      --2nd stage
      c(63 downto 32) <= c_hi(31 downto 0) + (to_signed(0,31) & c_lo(32 downto 32));
      c(31 downto 0) <= c_lo(31 downto 0);
    end if;
end process;

但这包括2x32位加法器+ 1x33bit加法器。所以,我问的是,我如何才能给出较低加法的进位,同时对较高的位求和?

3-)有没有办法在不增加宽度1的情况下获得进位/溢出位。

EN

回答 1

Stack Overflow用户

发布于 2015-02-01 07:45:40

这是一个流水线加法器:

代码语言:javascript
复制
signal a          : signed(63 downto 0);
signal b          : signed(63 downto 0);
signal c          : signed(64 downto 0);
signal sum_stage1 : unsigned(32 downto 0);

process(clk)
begin
  if rising_edge(clk) then
    -- stage 1: add first 32 bits
    sum_stage1 <= ('0' & a(31 downto 0)) + ('0' & b(31 downto 0));

    -- stage 2: add next 32 bits (incl. C_in)
    c(31 downto 0)  <= sum_stage1(31 downto 0);   -- optional: align intermediate sums
    c(64 downto 32) <= (32 downto 1 => '0') & sum_stage1(sum_stage1'high) +
                       ('0' & a(63 downto 32)) +
                       ('0' & b(63 downto 32));
  end if;
end process;

第1步:添加32位(31.0)

第2步:添加32位(63..32) (包括步骤1中的C_in;C_in = C_out )

最小资源消耗:

  • 2x 32位加法器或32 + 33位加法器,如果其有符号和C_out是相关的
  • 33位寄存器
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28237939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档