3

私はいくつかのVHDLコードを勉強しているだけで、定数の初期化のために次のように言っています:

constant address: integer := 16#8E#;

このような定義は今まで見たことがありません。これが10進数の通常の数値にどのように変換されるか知っている人はいますか?

ありがとう!

4

2 に答える 2

5

さらに拡張するには(VHDL LRMを使用している場合は、セクション13.4.2で詳細を読むことができます)、最初の基数の前に任意の基数(2〜16を含む)を置き#、2番目の後に指数を置くことができます#_数字のセットを区切るためにsを 入れることもできます。

指数は常に基数10で表され、負の値にすることはできません。例(VHDLの強調表示には少し不満があります!)

entity test_numbers is
end entity test_numbers;
architecture a1 of test_numbers is
begin 
    process is
    begin  -- process
    report integer'image(16#FF#);  -- 255
    report integer'image(10#1_000#);  -- 1000
    report integer'image(10#1#e3);  -- 1000 another way
    report integer'image(2#1#e10);  -- 1024
    report integer'image(4#100#);  -- 16
    wait;
    end process;
end architecture a1;

レポート:

# Loading work.test_numbers(a1)
# ** Note: 255
#    Time: 0 ns  Iteration: 0  Instance: /test_numbers
# ** Note: 1000
#    Time: 0 ns  Iteration: 0  Instance: /test_numbers
# ** Note: 1000
#    Time: 0 ns  Iteration: 0  Instance: /test_numbers
# ** Note: 1024
#    Time: 0 ns  Iteration: 0  Instance: /test_numbers
# ** Note: 16
#    Time: 0 ns  Iteration: 0  Instance: /test_numbers
于 2010-07-14T17:04:56.580 に答える
4

16#8E#8E基数 16 (つまり、16 進数)を意味します。バイナリの場合2#10001110#、同じ数を書くことができます。これがわかれば、10 進バージョンを取得するのは簡単です。

于 2010-07-14T16:31:02.500 に答える