본문으로 이동

미디어위키 1.45 안정화가 거의 끝났습니다. 다만 Flow 확장 기능 관련 이슈가 있어서 대체하는 작업을 수행할 계획입니다.

  1. 큰숲백과:청사진에서 위키 발전의 대략적인 방향성을 제시했습니다. 의견이 있으신 분은 큰숲백과토론:청사진에서 의견을 남겨주시면 좋겠습니다.
  2. 기능상의 오류로 지원하지 않고 있는 기능에 대해서는 큰숲백과토론:이슈 트래커에 요약했습니다. 참고하시기 바랍니다.
  3. 데이터베이스 덤프 받고싶으신 분은 큰숲백과 가입 후에 사용자토론:Bigforest에 의견 남겨주시면 ftp 주소, 계정, 비밀번호를 특수:EmailUser를 통해서 공개할 예정입니다.

VHDL

큰숲백과, 나무를 보지 말고 큰 숲을 보라.


VHDL(VHSIC Hardware Description Language)는 하드웨어 설계를 기술하는 언어이다.(VHSIC는 Very High-Speed Intergrated Circuit의 약자다)

Ada 프로그래밍 언어를 응용해 미합중국 국방부 주도로 IBM, 텍사스 인스트루먼트 등의 반도체 설계 회사에서 개발되었으며 오늘날 Verilog와 함께 하드웨어 설계용 언어 표준으로 많이 쓰인다. 다만 요즘은 VHDL은 비주류로 전락한지 오래인 Ada처럼 점점 퇴물이 되어가는 상황이다. 어쨌든 문법은 Ada와 비슷하기에 Ada를 알고 있으면 입문이 쉬운 편이고 대부분의 로직이 Ada 함수처럼 A is begin B end 구조를 띤다.다. 그래서 베릴로그보다 더 빨리 퇴물이 된 것일 수도 있다.

프로그래밍 과정 특징

[편집 | 원본 편집]
  • 주석은 - 두 개(--) 뒤에 쓴다.
  • 먼저 Entity를 정의한다. Entity는 반도체 칩 내에서 처리 작업을 하는 최소 단위의 개별 유닛이 어떤 입력을 받아 어떤 출력을 내는지 정의한 것이다. 보통 다음 구조를 가진다.
entity FIRST_ENTITY is
    port(A, B : in  std_logic;
         C_OUT    : out std_logic);
end entity FIRST_ENTITY;
  • 그 다음 각 엔티티들의 내부 구조를 묘사하는 Architecture를 정의한다. 가령 FIRST_ENTITY 유닛이 비트 AND 연산을 한다면 다음과 같이 아키텍처의 동작(Behavioral_FE)을 정의한다.
architecture Behavioral_FE of FIRST_ENTITY is
begin
    process(A, B)
    begin
        C_OUT <= A and B;
    end process;
end archtecture Behavioral_FE;
  • package 접두어로 모듈화를 할 수 있다. package 내의 function과 procedure로 C++ 클래스 작성하듯 유닛을 정의하고 호출할 수 있다.
    • 모듈/외부 라이브러리를 가져와야 할 경우 library (라이브러리 이름);을 쓴 다음 use (라이브러리 이름).(기능 이름).(세부 기능)과 같이 가져온다. 세부 기능에는 all을 넣어서 기능 전부를 가져올 수 있다.
  • process를 사용하는 대신 다른 엔티티의 아키텍처를 가져오는 component를 사용한 뒤 map(…)으로 개별적인 signal 변수가 어디로 이어지는지 선언하는 방법도 있다. 주로 개별 유닛을 결합할 때 이 방법을 사용한다.
  • 테스트벤치(Testbench)를 작성할 때에는 configuration을 사용하면 여러 유닛을 단일 configuration 서술을 조금씩 변경하는 방법으로 테스트할 수 있다.
  • loop는 소프트웨어 프로그래밍 언어들의 반복문(작업을 순차적으로 반복)과 달리 loop 내에 정의된 유닛을 정해진 횟수만큼 복사하는 작업이다. 즉 순차 회로 구현이 아닌 조합 회로에 쓴다.