0

で論理演算を実行する際に問題がありますunsigned

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;    
with sel select
s_1<=a+b when "000",
a+((not b)+1) when "001",
s_2 when "010",
s_3 when "011",
s_4 when "100",
(others=>'0') when others;

ここにエラーがあります:

プレフィックス演算子「not」の実行可能なエントリはありません

s_1,a,b,s_2,s_3,s_4すべてタイプunsigned(31 downto 0)です。

unsignedで実行できない場合にstd_logic_vector論理演算を有効にするために、unsignedに変換するコードを見つけましたが、このコードを使用すると、unsignedのデータ型と競合し、不明になったと思います。std_logic_vectornumeric_std.allstd_logic_arith

符号なしで論理演算を実行する方法がわからず、に変換する方法もわかりませstd_logic_vectorunsigned。誰かが私を助けることができますか?

4

2 に答える 2

1

非標準のライブラリを使用していますが、use ieee.std_logic_arith.all; これは明らかに「not」演算子を実装していません。

use ieee.numeric_std.all; その代わりに問題を解決する必要があります。

于 2013-02-03T21:48:19.070 に答える
0

恐ろしい回避策はxor b、すべてのもののベクトルを使用することです...

于 2013-02-05T14:31:54.103 に答える