VHDL
다음은 VHDL에서 사용되는 가장 일반적인 변환입니다. 페이지는 두 섹션으로 나뉩니다. 페이지의 전반부는 Numeric_Std 패키지 파일을 사용한 변환을 보여줍니다. 페이지의 후반부는 Std_Logic_Arith 패키지 파일을 사용한 변환을 보여줍니다. Std_Logic_Arith를 사용해서는 안 되므로 Numeric_Std 패키지를 사용하는 것이 좋습니다. 많은 사람들이 여전히 사용을 주장하기 때문에 두 가지 예를 모두 아래에서 보여줍니다.
아래의 많은 예에서 'length VHDL 속성. 이 속성은 코드를 더 이식성 있고 다재다능하게 만들어 주므로 사용해야 합니다.
아래 예에서는 두 개의 입력 매개변수가 필요한 to_signed 변환을 사용합니다. 첫 번째는 변환하려는 신호이고 두 번째는 결과 벡터의 길이입니다.
signal input_3 : integer; signal output_3 : signed(3 downto 0); output_3 <= to_signed(input_3, output_3'length);
먼저 정수에 저장된 값의 범위에 대해 생각해야 합니다. 정수가 양수일 수 있습니까 그리고 부정적인? 그렇다면 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));
아래 예에서는 두 개의 입력 매개변수가 필요한 to_unsigned 변환을 사용합니다. 첫 번째는 변환하려는 신호이고 두 번째는 결과 벡터의 길이입니다.
signal input_2 : integer; signal output_2 : unsigned(3 downto 0); output_2 <= to_unsigned(input_2, output_2'length);
먼저 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));
이것은 쉬운 변환입니다. 아래에 표시된 대로 서명된 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_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에서 to_integer 함수 호출을 사용하기만 하면 됩니다.
signal input_10 : signed(3 downto 0); signal output_10 : integer; output_10 <= to_integer(input_10);
이것은 쉬운 변환입니다. 아래 표시된 대로 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);
이것은 쉬운 변환이며 아래와 같이 서명되지 않은 캐스트를 사용하기만 하면 됩니다.
signal input_12 : signed(3 downto 0); signal output_12 : unsigned(3 downto 0); output_12 <= unsigned(input_12);
이것은 쉬운 변환입니다. 아래와 같이 numeric_std에서 to_integer 함수 호출을 사용하기만 하면 됩니다.
signal input_7 : unsigned(3 downto 0); signal output_7 : integer; output_7 <= to_integer(input_7);
이것은 쉬운 변환입니다. 아래와 같이 서명된 캐스트를 사용하기만 하면 됩니다.
signal input_9 : unsigned(3 downto 0); signal output_9 : signed(3 downto 0); output_9 <= signed(input_9);
이것은 쉬운 변환입니다. 아래 표시된 대로 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);
아래 예에서는 두 개의 입력 매개변수가 필요한 conv_signed 변환을 사용합니다. 첫 번째는 변환하려는 신호이고 두 번째는 결과 벡터의 길이입니다.
signal input_3 : integer; signal output_3 : signed(3 downto 0); output_3 <= conv_signed(input_3, output_3'length);
아래 예에서는 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);
아래 예에서는 두 개의 입력 매개변수가 필요한 conv_unsigned 변환을 사용합니다. 첫 번째는 변환하려는 신호이고 두 번째는 결과 벡터의 길이입니다.
signal input_2 : integer; signal output_2 : unsigned(3 downto 0); output_2 <= conv_unsigned(input_2, output_2'length);
먼저 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_vector를 캐스팅하기만 하면 됩니다.
signal input_6 : std_logic_vector(3 downto 0); signal output_6 : signed(3 downto 0); output_6 <= signed(input_6);
이것은 쉬운 변환입니다. 다음과 같이 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에서 conv_integer 함수 호출을 사용하기만 하면 됩니다.
signal input_10 : signed(3 downto 0); signal output_10 : integer; output_10 <= conv_integer(input_10);
이것은 쉬운 변환입니다. 아래 표시된 대로 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);
이것은 쉬운 변환이며 아래와 같이 서명되지 않은 캐스트를 사용하기만 하면 됩니다.
signal input_12 : signed(3 downto 0); signal output_12 : unsigned(3 downto 0); output_12 <= unsigned(input_12);
이것은 쉬운 변환이며 아래와 같이 std_logic_arith에서 conv_integer 함수 호출을 사용하기만 하면 됩니다.
signal input_7 : unsigned(3 downto 0); signal output_7 : integer; output_7 <= conv_integer(input_7);
이것은 쉬운 변환입니다. 아래와 같이 서명된 캐스트를 사용하기만 하면 됩니다.
signal input_9 : unsigned(3 downto 0); signal output_9 : signed(3 downto 0); output_9 <= signed(input_9);
이것은 쉬운 변환입니다. 아래와 같이 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);
VHDL
간단히 말해 VHDL은 디지털 회로 설계에 사용되는 컴퓨터 언어입니다. 저는 VHDL을 Java 또는 C++와 같은 보다 일반적인 다른 프로그래밍 언어와 구별하기 위해 컴퓨터 언어라는 용어를 사용합니다. 그러나 VHDL은 프로그래밍 언어입니까? 예, 그렇습니다. 컴퓨터 프로그램을 만들 때 아무 소용이 없는 프로그래밍 언어입니다! VHDL은 이벤트 구동 병렬 프로그래밍 언어입니다. 컴퓨터의 CPU가 실행할 수 있는 프로그램을 만드는 데는 적합하지 않지만 실제 CPU를 만드는 데는 좋습니다. 하드웨어 설명 언어로 디지털 논리
로봇이라는 단어는 많은 이미지를 떠올리게 합니다. 로봇은 경험과 마음가짐에 따라 룸바 로봇 청소기부터 전국 교육 시설에서 사용되는 레고 및 VEX 로봇, 전 세계 제조 공장 목록에 있는 모든 항목은 로봇 및 로봇 공학의 예입니다. 많은 사람들이 장난감과 미디어를 통해 로봇과 로봇 공학을 접하게 됩니다. 텔레비전 만화 The Jetsons의 로봇 가정부 Rosey를 기억하십니까? 스타워즈 영화에 나오는 R2-D2는 어떻습니까? 이러한 로봇 공학의 다른 예 종종 로봇에 대한 첫 번째 소개입니다. 이러한 로봇의 예가 조금 오래된 것