산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> VHDL

VHDL 변환의 예

Numeric_Std 및 Std_Logic_Arith 패키지 파일 모두 사용

다음은 VHDL에서 사용되는 가장 일반적인 변환입니다. 페이지는 두 섹션으로 나뉩니다. 페이지의 전반부는 Numeric_Std 패키지 파일을 사용한 변환을 보여줍니다. 페이지의 후반부는 Std_Logic_Arith 패키지 파일을 사용한 변환을 보여줍니다. Std_Logic_Arith를 사용해서는 안 되므로 Numeric_Std 패키지를 사용하는 것이 좋습니다. 많은 사람들이 여전히 사용을 주장하기 때문에 두 가지 예를 모두 아래에서 보여줍니다.

아래의 많은 예에서 'length VHDL 속성. 이 속성은 코드를 더 이식성 있고 다재다능하게 만들어 주므로 사용해야 합니다.

숫자 표준을 사용한 변환의 예

Std_Logic_Arith를 사용한 변환의 예

Numeric_Std를 사용하여 정수에서 부호로 변환

아래 예에서는 두 개의 입력 매개변수가 필요한 to_signed 변환을 사용합니다. 첫 번째는 변환하려는 신호이고 두 번째는 결과 벡터의 길이입니다.

signal input_3  : integer;
signal output_3 : signed(3 downto 0);
  
output_3 <= to_signed(input_3, output_3'length);

Numeric_Std를 사용하여 정수에서 Std_Logic_Vector로 변환

먼저 정수에 저장된 값의 범위에 대해 생각해야 합니다. 정수가 양수일 수 있습니까 그리고 부정적인? 그렇다면 to_signed()를 사용해야 합니다. 변환. 정수가 양수인 경우 to_unsigned()를 사용해야 합니다. 전환.

이러한 변환 함수는 모두 두 개의 입력 매개변수가 필요합니다. 첫 번째는 변환하려는 신호이고 두 번째는 결과 벡터의 길이입니다.

signal input_1   : integer;
signal output_1a : std_logic_vector(3 downto 0);
signal output_1b : std_logic_vector(3 downto 0);
  
-- This line demonstrates how to convert positive integers
output_1a <= std_logic_vector(to_unsigned(input_1, output_1a'length));

-- This line demonstrates how to convert positive or negative integers
output_1b <= std_logic_vector(to_signed(input_1, output_1b'length));

Numeric_Std를 사용하여 정수에서 부호 없음으로 변환

아래 예에서는 두 개의 입력 매개변수가 필요한 to_unsigned 변환을 사용합니다. 첫 번째는 변환하려는 신호이고 두 번째는 결과 벡터의 길이입니다.

signal input_2  : integer;
signal output_2 : unsigned(3 downto 0);
  
output_2 <= to_unsigned(input_2, output_2'length);

Numeric_Std를 사용하여 Std_Logic_Vector에서 Integer로 변환

먼저 std_logic_vector가 나타내는 데이터에 대해 생각해야 합니다. 서명된 데이터입니까 아니면 서명되지 않은 데이터입니까? 서명된 데이터는 std_logic_vector가 양수 또는일 수 있음을 의미합니다. 음수. 서명되지 않은 데이터는 std_logic_vector가 유일한임을 의미합니다. 양수. 아래 예는 unsigned() typecast 하지만 데이터가 음수일 수 있는 경우 signed()를 사용해야 합니다. 타이프캐스트. 입력 std_logic_vector를 unsigned 또는 signed로 캐스팅하면 아래와 같이 정수로 변환할 수 있습니다.

signal input_4   : std_logic_vector(3 downto 0);
signal output_4a : integer;
signal output_4b : integer;
  
-- This line demonstrates the unsigned case
output_4a <= to_integer(unsigned(input_4));

-- This line demonstrates the signed case
output_4b <= to_integer(signed(input_4));

Numeric_Std를 사용하여 Std_Logic_Vector에서 Signed로 변환

이것은 쉬운 변환입니다. 아래에 표시된 대로 서명된 std_logic_vector를 캐스팅하기만 하면 됩니다.

signal input_6  : std_logic_vector(3 downto 0);
signal output_6 : signed(3 downto 0);

output_6 <= signed(input_6);

Numeric_Std를 사용하여 Std_Logic_Vector에서 Unsigned로 변환

이것은 쉬운 변환입니다. 다음과 같이 std_logic_vector를 unsigned로 캐스팅하기만 하면 됩니다.

signal input_5  : std_logic_vector(3 downto 0);
signal output_5 : unsigned(3 downto 0);
  
output_5 <= unsigned(input_5);

Numeric_Std를 사용하여 부호 있는 정수에서 정수로 변환

이것은 쉬운 변환입니다. 아래와 같이 numeric_std에서 to_integer 함수 호출을 사용하기만 하면 됩니다.

  
signal input_10  : signed(3 downto 0);
signal output_10 : integer;

output_10 <= to_integer(input_10);

Numeric_Std를 사용하여 Signed에서 Std_Logic_Vector로 변환

이것은 쉬운 변환입니다. 아래 표시된 대로 std_logic_vector 캐스트를 사용하기만 하면 됩니다.

signal input_11  : signed(3 downto 0);
signal output_11 : std_logic_vector(3 downto 0);

output_11 <= std_logic_vector(input_11);

Numeric_Std를 사용하여 부호 있음에서 부호 없음으로 변환

이것은 쉬운 변환이며 아래와 같이 서명되지 않은 캐스트를 사용하기만 하면 됩니다.

signal input_12  : signed(3 downto 0);
signal output_12 : unsigned(3 downto 0);
  
output_12 <= unsigned(input_12);

Numeric_Std를 사용하여 부호 없는 정수에서 정수로 변환

이것은 쉬운 변환입니다. 아래와 같이 numeric_std에서 to_integer 함수 호출을 사용하기만 하면 됩니다.

signal input_7  : unsigned(3 downto 0);
signal output_7 : integer;

output_7 <= to_integer(input_7);

Numeric_Std를 사용하여 서명되지 않은 상태에서 서명된 상태로 변환

이것은 쉬운 변환입니다. 아래와 같이 서명된 캐스트를 사용하기만 하면 됩니다.

signal input_9  : unsigned(3 downto 0);
signal output_9 : signed(3 downto 0);

output_9 <= signed(input_9);

Numeric_Std를 사용하여 Unsigned에서 Std_Logic_Vector로 변환

이것은 쉬운 변환입니다. 아래 표시된 대로 std_logic_vector 캐스트를 사용하기만 하면 됩니다.

  
signal input_8  : unsigned(3 downto 0);
signal output_8 : std_logic_vector(3 downto 0);

output_8 <= std_logic_vector(input_8);

Std_Logic_Arith를 사용하여 정수에서 부호로 변환

아래 예에서는 두 개의 입력 매개변수가 필요한 conv_signed 변환을 사용합니다. 첫 번째는 변환하려는 신호이고 두 번째는 결과 벡터의 길이입니다.

signal input_3  : integer;
signal output_3 : signed(3 downto 0);
  
output_3 <= conv_signed(input_3, output_3'length);

Std_Logic_Arith를 사용하여 정수에서 Std_Logic_Vector로 변환

아래 예에서는 2개의 입력 매개변수가 필요한 conv_std_logic_vector 변환을 사용합니다. 첫 번째는 변환하려는 신호이고 두 번째는 결과 벡터의 길이입니다.

여기서 주의할 점은 이 변환에 음수를 입력하면 출력 std_logic_vector가 2의 보수 부호 표기법으로 표시된다는 것입니다.

signal input_1  : integer;
signal output_1 : std_logic_vector(3 downto 0);

output_1 <= conv_std_logic_vector(input_1, output_1'length);

Std_Logic_Arith를 사용하여 정수에서 부호 없음으로 변환

아래 예에서는 두 개의 입력 매개변수가 필요한 conv_unsigned 변환을 사용합니다. 첫 번째는 변환하려는 신호이고 두 번째는 결과 벡터의 길이입니다.

signal input_2  : integer;
signal output_2 : unsigned(3 downto 0);
  
output_2 <= conv_unsigned(input_2, output_2'length);

Std_Logic_Arith를 사용하여 Std_Logic_Vector에서 Integer로 변환

먼저 std_logic_vector가 나타내는 데이터에 대해 생각해야 합니다. 서명된 데이터입니까 아니면 서명되지 않은 데이터입니까? 서명된 데이터는 std_logic_vector가 양수 또는일 수 있음을 의미합니다. 음수. 서명되지 않은 데이터는 std_logic_vector가 유일한임을 의미합니다. 양수. 아래 예는 unsigned() typecast 하지만 데이터가 음수일 수 있는 경우 signed()를 사용해야 합니다. 타이프캐스트. 입력 std_logic_vector가 부호가 없거나 부호가 있으면 아래와 같이 정수로 변환할 수 있습니다.

signal input_4   : std_logic_vector(3 downto 0);
signal output_4a : integer;
signal output_4b : integer;
  
-- This line demonstrates the unsigned case
output_4a <= conv_integer(unsigned(input_4));

-- This line demonstrates the signed case
output_4b <= conv_integer(signed(input_4));

Std_Logic_Arith를 사용하여 Std_Logic_Vector에서 Signed로 변환

이것은 쉬운 변환입니다. 아래에 표시된 대로 서명된 std_logic_vector를 캐스팅하기만 하면 됩니다.

signal input_6  : std_logic_vector(3 downto 0);
signal output_6 : signed(3 downto 0);

output_6 <= signed(input_6);

Std_Logic_Arith를 사용하여 Std_Logic_Vector에서 Unsigned로 변환

이것은 쉬운 변환입니다. 다음과 같이 std_logic_vector를 unsigned로 캐스팅하기만 하면 됩니다.

signal input_5  : std_logic_vector(3 downto 0);
signal output_5 : unsigned(3 downto 0);
  
output_5 <= unsigned(input_5);

Std_Logic_Arith를 사용하여 부호 있는 정수에서 정수로 변환

이것은 쉬운 변환이며 아래와 같이 std_logic_arith에서 conv_integer 함수 호출을 사용하기만 하면 됩니다.

  
signal input_10  : signed(3 downto 0);
signal output_10 : integer;

output_10 <= conv_integer(input_10);

Std_Logic_Arith를 사용하여 Signed에서 Std_Logic_Vector로 변환

이것은 쉬운 변환입니다. 아래 표시된 대로 std_logic_vector 캐스트를 사용하기만 하면 됩니다.

signal input_11  : signed(3 downto 0);
signal output_11 : std_logic_vector(3 downto 0);

output_11 <= std_logic_vector(input_11);

Std_Logic_Arith를 사용하여 부호 있는 상태에서 부호 없는 상태로 변환

이것은 쉬운 변환이며 아래와 같이 서명되지 않은 캐스트를 사용하기만 하면 됩니다.

signal input_12  : signed(3 downto 0);
signal output_12 : unsigned(3 downto 0);
  
output_12 <= unsigned(input_12);

Std_Logic_Arith를 사용하여 부호 없는 정수에서 정수로 변환

이것은 쉬운 변환이며 아래와 같이 std_logic_arith에서 conv_integer 함수 호출을 사용하기만 하면 됩니다.

signal input_7  : unsigned(3 downto 0);
signal output_7 : integer;

output_7 <= conv_integer(input_7);

Std_Logic_Arith를 사용하여 Unsigned에서 Signed로 변환

이것은 쉬운 변환입니다. 아래와 같이 서명된 캐스트를 사용하기만 하면 됩니다.

signal input_9  : unsigned(3 downto 0);
signal output_9 : signed(3 downto 0);

output_9 <= signed(input_9);

Std_Logic_Arith를 사용하여 Unsigned에서 Std_Logic_Vector로 변환

이것은 쉬운 변환입니다. 아래와 같이 std_logic_vector typecast를 사용하기만 하면 됩니다.

  
signal input_8  : unsigned(3 downto 0);
signal output_8 : std_logic_vector(3 downto 0);

output_8 <= std_logic_vector(input_8);


가장 인기 있는 Nandland 페이지

VHDL

  1. 튜토리얼 - VHDL 소개
  2. 절차문 - VHDL 예
  3. 레코드 - VHDL 예
  4. VHDL에서 서명된 것과 서명되지 않은 것
  5. 변수 - VHDL 예
  6. PSL을 사용한 VHDL 형식 검증
  7. VHDL에서 문자열 목록을 만드는 방법
  8. VHDL 테스트벤치에서 시뮬레이션을 중지하는 방법
  9. VHDL에서 PWM 컨트롤러를 만드는 방법
  10. VHDL에서 난수를 생성하는 방법