HDL = Hardware Description Language
HDL의 종류에는 verilog, VHDL 두 가지가 있다
프로그래밍 언어가 아니라는 것을 인지해야 한다.
HDL을 설계할 때는, 회로를 염두해 두고 작성해야 한다. 프로그래밍적 사고로 접근하면 어렵다.
프로그래밍과 가장 큰 차이는 순차적 실행이 아니라 병렬적 실행이라는 것이다.
z[3]<=a[3]+b[3];
z[2]<=a[2]+b[2];
z[1]<=a[1]+b[1];
z[0]<=a[0]+b[0];
위와 같은 코드가 만약 C언어 같은 프로그래밍 언어라면, 순차적으로 실행됐을 것이다.
하지만 HDL은 동시에 수행하는 것을 알아야 한다. 그림을 보면 느낌이 올 것이다.
Compile
컴파일에 차이가 존재한다. 순서는 아래와 같다.
프로그래밍 언어의 컴파일은
source -> compile -> 실행파일
HDL의 컴파일은
source -> compile -> simulation -> 합성 (synthesis) -> Hardware
컴파일 과정중에 합성을 좀 더 보면 합성 ( synthesis )이란,
- RTL 수준의 HDL 코드를 게이트 수준으로 변환하는 과정이다. 이때 제한 조건 ( Constrain )과 Target library의 조건을 고려하여 합성한다
제한 조건
- 목표하는 스펙이다. 예를 들어, 동작 주파수, 면적, 클럭의 사양, 규칙 등등이 있다
Target library
- 어떤 게이트들의 구성으로 사용할 것인지 정하는 것이다. 특정 회사의 FPGA 디바이스 또는 셀 라이브러리를 정하는 것이다.
합성에 성공하면 나오는 결과를 Gate-level Netlist라고 한다. 거미줄처럼 회로가 얽혀있다고 하여 이렇게 부른다
HDL의 장점
설계 시간의 단축
- 설계 오류 수정이 용이
- 합성에 의한 회로 생성과 설계 변경이 용이
설계의 질 향상
- 광범위한 하드웨어 기술 능력, 상위 수준의 설계 가능
- 다양한 설계 기법에 의한 최적화 도달
- 선택적 최적화 기법
특정 설계 기술이나 공정과 무관한 설계
- 특정 ASIC 제조 업체 및 구현 기술과 무관한 설계 가능
- 다른 라이브러리 이용한 합성
- 신속한 하드웨어 원형화(prototyping) 가능
낮은 설계 비용
- 설계 생산성 향상
- 설계 비용의 감소
- 설계 자산의 재사용
표준 HDL 및 사용자의 확대
- IEEE 표준인 동시에 미국 정부의 공인 HDL
- 전 세계적으로 설계 및 설계 정보 교환의 수단
효율적인 설계 관리
- 전체 설계의 기능별 분할 설계, 설계 관리, 문서화 용이
논리 값 종류
기본적으로 0, 1이 존재하는데 2가지 추가 논리 값이 존재한다.
Tri-state
- 제3의 상태라고 하며 z라고 표시한다. high-impedance ( disconnected ) 즉. 아무것도 연결된 것이 없는 걸 말한다.
en이 0이면 다 끊어져서 z가 출력된다.
Unknown (또는 Don't care)
- x라고 표시하며 뭐가 출력될지 모르는 상태를 말한다. 예로는 아래와 같은 경우가 있다.
Pull -
Pull-up
- 전원 쪽으로 연결할 때, Vcc, 보통 저항을 같이 달아준다. (N)AND게이트에 자주 사용한다.
Pull-down
- 접지 쪽으로 연결할 때, Vdd, (N)OR 게이트에 자주 사용한다
댓글