나는 unsigned
에 논리 연산을 수행하는 문제를했습니다 :부호없는 VHDL에서 논리 연산을 수행 할 수 없습니까?
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;
여기에 오류가있다 :
No feasible entries for prefix operator "not"
s_1,a,b,s_2,s_3,s_4
unsigned(31 downto 0)
의 모든입니다.
나는 그것이 부호에서 수행 할 수없는 경우 std_logic_vector
에 논리 연산을 가능하게하는 부호로 std_logic_vector
를 변환하는 코드를 발견하지만,이 코드를 사용할 때이 std_logic_arith
와 충돌을 생각 numeric_std.all
를 사용하여 서명되지 않은 미지의 데이터 유형을 하였다 .
이제 부호없는 논리 연산을 수행하는 방법을 모르며 std_logic_vector
을 unsigned
으로 변환하는 방법을 모르겠습니다. 누군가 나를 도울 수 있습니까?
이 질문에 대한 라이브러리를 사용 절을 추가하십시오 ... 모든 사람의 벡터
xor
b
하는 것입니다. "not"의 두 가지 정의가 보이는 경우 컴파일러는 의도하지 않은 것을 선택하지 않고 두 가지 정의를 모두 숨 깁니다. 가장 좋은 선택은 ieee.std_logic_1164, 즉 ieee.numeric_std이며 그 외에는 아무 것도 없습니다! numeric_std는 확실히 "not"연산자를 정의합니다. –