私はいくつかのVHDLコードを勉強しているだけで、定数の初期化のために次のように言っています:
constant address: integer := 16#8E#;
このような定義は今まで見たことがありません。これが10進数の通常の数値にどのように変換されるか知っている人はいますか?
ありがとう!
私はいくつかのVHDLコードを勉強しているだけで、定数の初期化のために次のように言っています:
constant address: integer := 16#8E#;
このような定義は今まで見たことがありません。これが10進数の通常の数値にどのように変換されるか知っている人はいますか?
ありがとう!
さらに拡張するには(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
16#8E#
8E
基数 16 (つまり、16 進数)を意味します。バイナリの場合2#10001110#
、同じ数を書くことができます。これがわかれば、10 進バージョンを取得するのは簡単です。