1998년 7월 8일 수요일

Hardware Description Language

Introduction
기존의 VHDL은 각 모듈간의 결합을 사용자가 특수하게 인식, 직접 지시하는 형식으로 되어있고, 변수(FF)등의 선언도 명확하게 구현 되어있지 않다. 이러한 것은 기존의 프로그램방식에 익숙해 있는 대다수의 학생들에게는 생소한 것이며 프로그램 작성시 실수를 유발하기가 쉽다.
고급언어의 함수처럼 모듈을 하나의 함수로 구현하여 캡슐화 시켜서 전체적인 안목으로 프로그램 할 수 있도록 하였으며 변수의 선언을 명시적으로 함으로서 기존의 불확실성에서 오는 오류를 피할 수 있다.

프로그램은 4개의 실행파일로 구성되어 있으며 컴파일 - 파형편집 - 파형시뮬레이션 - 결과보기 순으로 사용한다..

HDLC.exe 컴파일러
소스(default는 source.txt) 를 컴파일 해서 netlist.txt를 만든다.
추가적으로 컴파일 결과 보고서인 doc.txt와 port.txt를 만든다.

컴파일은 내부적으로 다음 7개 단계로 처리된다.
  • include : 선행처리기. 다른 소스파일을 삽입하는 일을 수행한다.

  • parse1 : 컴파일러가 이해하기 쉽도록 모든 소스코드를 몇가지의 표준코드로 바꾼다.

  • parse2 : 실질적인 컴파일 부분으로, 모든 변수를 표준코드로 바꾸고 명령어를 gate로 바꾼다.

  • optimize : 각 함수별로 중복되거나 불필요한 부분을 삭제하는 1차 최적화 작업을 한다.

  • merge : 각 함수별로 생성된 netlist를 하나로 만든후 다시 최적화 한다.

  • maxdelay : 컴파일과는 무관한 것으로 이 회로의 최대 지연시간을 계산한다.

  • toxnf : 컴파일과는 무관한 것으로 HDL 교유형태의 netlist로 표준형태인 XNF 형식의 파일을 만들어 낸다.
HDLW.exe 파형편집기
컴파일 결과물인 port.txt를 이용해서 시뮬레이션을 위한 파형을 편집한다.

HDLS.exe 파형모의시뮬레이션
편집된 파형과 netlist를 이용해서 시뮬레이션 한다.

HDLV.exe 파형보기시뮬레이션 결과를 보여준다.



HDL 예문

// and, or, xor gete를 실험하는 간단한 프로그램
void main () {
    wire wire1, wire2, wire3, wire4, wire5;

    inport (1, wire1);
    inport (2, wire2);
    outport (3, wire3);
    outport (4, wire4);
    outport (5, wire5);

    wire3 = wire1 and wire2;
    wire4 = wire1 or wire2;
    wire5 = wire1 xor wire2;
}

// 컴파일 결과 DOC.TXT
Gate count : total 7
    AND 3
    OR 2
    NOT 2
Port count : total 5
    INPORT 2
    OUTPORT 3
    Max fanout : 4
    Max delay : 3