하드웨어 기술 언어

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

전자공학에서 하드웨어 기술 언어(- 記述 言語, hardware description language)는 전자회로를 정밀하게 기술하는 데 사용하는 컴퓨터 언어이다. 흔히 HDL이라고 줄여쓰기도 한다. 회로의 원하는 동작을 기술할 수도 있고, 원하는 회로 구조를 기술할 수도 있으며 시뮬레이션을 통해 제대로 동작하는지 검증할 수도 있다. HDL의 문법과 의미(semantics)는 소프트웨어 프로그래밍 언어와 달리 하드웨어의 주요한 특징인 시간과 동시성(concurrency)를 표현할 수 있는 notation들이 명시적으로 존재한다.

HDL을 이용한 설계[편집]

HDL은 두 가지 종류의 시스템을 설계하기 위해 만들어졌다. 첫 번째는, 프로세서나 기타 여러가지 디지털 칩과 같은 특정한 집적회로를 설계하기 위해 사용된다. 이런 경우 HDL은 회로가 설계되고 만들어지기 전에 그 회로의 동작을 예측하는 모델을 제공한다. 두 번째는 FPGA같은 PLD를 프로그램하기 위해 사용한다. HDL로 작성된 코드는 로직 컴파일러를 이용하여 컴파일한 후 해당 기기에 올려진다. 대개의 경우, 테스트를 진행하며 여러 번 코드를 수정하여 기기에 올려볼 수 있다.

HDL 시뮬레이션[편집]

HDL 설계의 가장 중요한 부분은 HDL 프로그램을 시뮬레이트할 수 있는 능력이다. HDL 프로그램은 PLD 같은 장비에 업로드하여 테스트를 하거나, 칩으로 제작하여 테스트 할 수 있다. 그러나 이러한 테스트는 대개 비용이 비싸며 시간이 오래 걸리기 때문에 대부분의 테스트와 디버깅은 시뮬레이터를 사용하여 수행한다. 시뮬레이터는 디지털 기기의 실제 클럭과 유사한 리셋 가능한 클럭을 유지하고 설계자가 코드를 디버그하기 위해 특정 시간 동안의 다양한 레지스터의 값들을 볼 수 있도록 해준다.

HDL과 프로그래밍 언어의 비교[편집]

HDL은 소프트웨어 프로그래밍 언어와 유사하지만, 약간의 차이가 있다. 두 언어는 컴파일러(HDL의 경우에는 보통 synthesizer라고 불린다)에 의해 처리되지만, HDL은 다음과 같은 단계를 거쳐 컴파일된다. 먼저 HDL 고유의 포맷으로 칩의 logic을 기술한 파일을 생성하고, 다음으로 산업 표준(industry-standard)인 EDIF 포맷으로 변환한다. 마지막으로 JEDEC 포맷 파일로 변환하는데, JEDEC 파일은 PLD programmer가 PLD를 프로그램하는 데 필요한 명령어를 담고 있다.

이와는 달리, 소프트웨어 컴파일러는 마이크로프로세서에서 직접 실행되는 명령어를 생성한다. HDL과 소프트웨어 프로그래밍 언어의 차이는 두 언어의 특징을 결합한 reconfigurable system이 시작됨에 따라서 점점 모호해지고 있다.

현재는 회사 고유의 포맷을 이용하기보다는 VHDLVerilog로 대표되는 표준 HDL로 넘어가고 있는 추세이다.

HDL 시뮬레이션[편집]

HDL 설계의 가장 중요한 부분은 HDL 프로그램을 시뮬레이트할 수 있는 능력이다. HDL 프로그램은 PLD 같은 장비에 업로드하여 테스트를 하거나, 칩으로 제작하여 테스트 할 수 있다. 그러나 이러한 테스트는 대개 비용이 비싸며 시간이 오래 걸리기 때문에 대부분의 테스트와 디버깅은 시뮬레이터를 사용하여 수행한다. 시뮬레이터는 디지털 기기의 실제 클럭과 유사한 리셋 가능한 클럭을 유지하고 설계자가 코드를 디버그하기 위해 특정 시간 동안의 다양한 레지스터의 값들을 볼 수 있도록 해준다.

HDL을 이용한 설계[편집]

HDL은 두 가지 종류의 시스템을 설계하기 위해 만들어졌다. 첫 번째는, 프로세서나 기타 여러가지 디지털 칩과 같은 특정한 집적회로를 설계하기 위해 사용된다. 이런 경우 HDL은 회로가 설계되고 만들어지기 전에 그 회로의 동작을 예측하는 모델을 제공한다. 두 번째는 FPGA같은 PLD를 프로그램하기 위해 사용한다. HDL로 작성된 코드는 로직 컴파일러를 이용하여 컴파일한 후 해당 기기에 올려진다. 대개의 경우, 테스트를 진행하며 여러 번 코드를 수정하여 기기에 올려볼 수 있다.

실제 예[편집]

디지털 회로 설계[편집]

아날로그 회로 설계[편집]

같이보기[편집]

바깥고리[편집]