首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用VHDL语言制作简单的功耗电路

用VHDL语言制作简单的功耗电路
EN

Stack Overflow用户
提问于 2012-08-17 09:43:54
回答 2查看 454关注 0票数 2

我正在寻找一些简单的想法来写一些我可以用来衡量力量的东西。我只需要它来确保我的功率测量正常。我在Virtex-6上使用Xilinx ISE 14.1。我想要一个简单的电路来写和合成。

到目前为止,我尝试了一个1K位的计数器,但这并不是很明显。我尝试了一个9K位的计数器,但ISE在合成它时遇到了问题(我让它运行了一个小时,然后终止了它)。现在,我正在尝试实现大的BRAMs,并使其永久启用。

我需要一种方法来限制大的向量进行优化,所以我想将所有的位进行xor运算,并将单个位的输出提供给LED。对于非常大的向量,有没有简单的方法来做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-21 08:29:08

这是我想出来的。我觉得它为简单的代码和快速的编译时间提供了一个很好的折衷。它是一个移位器,每隔一位为高电平,因此每个FF应在每个时钟周期切换(在其设置之后)。如果需要,信号可以在开始时初始化,但根据时钟的不同,不应该超过一到两秒就能达到平衡。我使用led作为输出,以防止对电路进行优化。

代码语言:javascript
复制
architecture Behavioral of top is
signal shifter : std_logic_vector(<insert size> downto 0) := (others => '0');
begin    
        process(clk)
    begin
        if(clk'event and clk = '1')then
            shift_bit <= not shift_bit;
                shifter <= shift_bit & shifter(shifter'high downto 1);
        end if;
    end process;

led <= shifter(0);
end Behavioral;
票数 0
EN

Stack Overflow用户

发布于 2012-08-17 18:16:23

在VHDL2008中,你可以像这样对一堆位进行异或运算:

代码语言:javascript
复制
signal wide : std_logic_vector(1000 downto 0);
signal narrow : std_logic;

narrow <= xor wide;

不确定ISE是否支持此功能。

您可以使用如下函数:

代码语言:javascript
复制
function xor_vector(i:std_logic_vector) returns std_logic is
  variable ret:std_logic:=i(i'low);
begin
  for c in i'low+1 to i'high loop
    ret := ret xor i(c);
  end loop;
  return ret;
end function;

(未经测试,直接输入-可能需要调整语法!)

对于功耗,您可以尝试将交替的'1''0'模式馈送到移位寄存器而不是计数器-然后所有位都将在每个周期中更改。在移位寄存器上设置一个重置,以确保工具不会推断SRL16更有效。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11998775

复制
相关文章

相似问题

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