2

電力を測定するために使用できる、簡単に記述できるアイデアを探しています。電力測定が機能していることを確認するために必要なだけです。Virtex-6 で Xilinx ISE 14.1 を使用しています。簡単な回路を書いて合成したいと思います。

今まで1Kビットカウンターを試してみましたが、あまり目立ちませんでした。私は 9K ビット カウンターを試しましたが、ISE はそれを合成するのに問題がありました (終了する前に 1 時間実行させました)。現在、大容量の BRAM をインプリメントし、永続的に有効にしようとしています。

大きなベクトルが最適化されるのを制限する方法が必要なので、すべてのビットを一緒に xor し、単一のビット出力を LED に送りたいと思います。非常に大きなベクトルに対してこれを行う簡単な方法はありますか?

4

2 に答える 2

2

VHDL 2008 では、次のように一連のビットを xor できます。

signal wide : std_logic_vector(1000 downto 0);
signal narrow : std_logic;

narrow <= xor wide;

ISE がそれをサポートしているかどうかは不明です。

次のような関数を使用できます。

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 をより効率的に推論しないようにします。

于 2012-08-17T10:16:23.437 に答える
0

これが私が思いついたものです。シンプルなコードと短いコンパイル時間のバランスが取れているように感じます。これはシフターであり、1 ビットおきにハイになるため、すべての FF は (セットアップ後に) クロック サイクルごとに切り替わる必要があります。必要に応じて信号を最初に初期化することもできますが、クロックに応じて、平衡に達するまでに 1 ~ 2 秒以上かかることはありません。回路の最適化を防ぐために、出力としてLEDを使用しました。

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;
于 2012-08-21T00:29:08.043 に答える