하드웨어 기술 언어
위키백과 ― 우리 모두의 백과사전.
이 문서는 en:Hardware description language에서 한국어로 번역 중입니다. 원문은 글 안에 주석 처리되어 있습니다. 같이 번역해 주세요. |
전자공학에서 하드웨어 기술 언어(- 記述 言語, hardware description language)는 전자회로를 정밀하게 기술하는데 사용하는 컴퓨터 언어이다. 흔히 HDL이라고 줄여쓰기도 한다. 회로의 원하는 동작을 기술할 수도 있고, 원하는 회로 구조를 기술할 수도 있으며 시뮬레이션을 통해 제대로 동작하는지 검증할 수도 있다. HDL의 문법과 의미(semantics)는 소프트웨어 프로그래밍 언어와 달리 하드웨어의 주요한 특징인 시간과 동시성(concurrency)를 표현할 수 있는 notation들이 명시적으로 존재한다.
종종 사용되는(그리고 자주 남용되는) 단어인 programming은 HDL의 목적이 하드웨어의 동작을 정의하는 것이기 때문에 '하드웨어를 기술하는 것'과 자주 동의어로 쓰인다.
물론 특수한 라이브러리등을 이용한다면 C++ 같은 일반 프로그래밍 언어를 가지고도 하드웨어의 기능을 표현할 수 있다. 그러나, 일반 프로그래밍 언어들은 회로가 시간에 따라 어떻게 동작해야 하는지 명확하게 기술할 능력이 없으며 따라서 올바른 하드웨어 기술 언어라고 할 수 없다.
목차 |
[편집] HDL을 이용한 설계
HDL은 두가지 종류의 시스템을 설계하기 위해 만들어 졌다. 첫번째는, 프로세서나 기타 여러가지 디지털 칩과 같은 특정한 집적회로를 설계하기 위해 사용된다. 이런 경우 HDL은 회로가 설계되고 만들어지기 전에 그 회로의 동작을 예측하는 모델을 제공한다. 두번째는 FPGA같은 PLD를 프로그램하기 위해 사용한다. HDL로 작성된 코드는 로직 컴파일러를 이용하여 컴파일한 후 해당 기기에 올려진다. 대개의 경우, 테스트를 진행하며 여러번 코드를 수정하여 기기에 올려볼 수 있다.
[편집] HDL 시뮬레이션
HLD 설계의 가장 중요한 부분은 HDL 프로그램을 시뮬레이트 할수 있는 능력이다. HLD 프로그램은 PLD 같은 장비에 업로드하여 테스트를 하거나, 칩으로 제작하여 테스트 할 수 있다. 그러나 이러한 테스트는 대개 비용이 비싸며 시간이 오래 걸리기 때문에 대부분의 테스트와 디버깅은 시뮬레이터를 사용하여 수행한다. 시뮬레이터는 디지털 기기의 실제 클럭과 유사한 리셋가능한 클럭을 유지하고 설계자가 코드를 디버그하기 위해 특정 시간동안의 다양한 레지스터의 값들을 볼수 있도록 해준다.
[편집] HDL과 프로그래밍 언어의 비교
HDL은 소프트웨어 프로그래밍 언어와 유사하지만, 약간의 차이가 있다. 두 언어는 컴파일러(HDL의 경우에는 보통 synthesizer라고 불린다)에 의해 처리되지만, HDL은 다음과 같은 단계를 거쳐 컴파일된다. 먼저 HDL 고유의 포맷으로 칩의 logic을 기술한 파일을 생성하고, 다음으로 산업 표준(industry-standard)인 EDIF 포맷으로 변환한다. 마지막으로 JEDEC 포맷 파일로 변환하는데, JEDEC 파일은 PLD programmer가 PLD를 프로그램 하는데 필요한 명령어를 담고 있다.
이와는 달리, 소프트웨어 컴파일러는 마이크로프로세서에서 직접 실행되는 명령어를 생성한다. HDL과 소프트웨어 프로그래밍 언어의 차이는 두 언어의 특징을 결합한 reconfigurable system이 시작됨에 따라서 점점 모호해지고 있다.
현재는 회사 고유의 포맷을 이용하기 보다는 VHDL과 Verilog로 대표되는 표준 HDL로 넘어가고 있는 추세이다.
[편집] 실제 예
[편집] 디지털 회로 설계
- ABEL ("Advanced Boolean Expression Language")
- AHDL (알테라 HDL, Altera가 만든 상용 언어)
- Confluence (a functional programming language for reactive system design).
- CUPL (Logical Devices, Inc.의 상용 언어)
- HDCaml (a hardware description language based on the Objective Caml programming language)
- JHDL (자바에 기반한 언어)
- Lava (하스켈에 기반한 언어)
- Lola (교육용으로 만들어진 단순한 언어)
- MyHDL (based on Python)
- PALASM
- RHDL (based on Ruby)
- 베릴로그
- VHDL
[편집] 아날로그 회로 설계
- Verilog-AMS
- VHDL-AMS
[편집] 같이보기
- SystemC
- SystemVerilog
- Property Specification Language
[편집] 바깥고리
- Research labs at various universities
- HDL listing at the Open Directory
- Lava at Chalmers
- Verilog-AMS Technical Subcommittee
분류: 번역중 | 하드웨어 기술 언어