(www.asic-world.com/verilog/veritut.html의 글을 읽고 번역한 내용입니다.)
모든 예제는 Icarus Verilog 시뮬레이터를 사용합니다.
Introduction -소개
Verilog는 HARDWARE DESCRIPTION LANGUAGE (HDL)이다. 즉, 하드웨어를 표현하기 위한 언어이다.
HDL은 digital system을 표현하기 위한 언어인데, 그 예로 network switch, microprocessor, memory, flip-flop 등이 있다.
HDL은 모든 level의 digital HW를 표현할 수 있다.
// D_Filp-Flop Code
module d_ff ( d, clk, q, q_bar);
input d, clk;
output q, q_bar;
wire d, clk;
reg q, q_bar;
always @ (posedge clk)
begin
q <= d;
q_bar <= !d;
end
endmodule
D_FF을 설명하고 있다. Verilog Code에서 D_FF가 작동하는 방법을 알 수 있다.
Verilog를 통해 Behavior Level, Register Transfer Level (RTL), Gate level, switch Level에서 디지털 설계를 할 수 있다.
Verilog를 사용하면 설계자는 동작 구성으로 설계를 간단히 표현할 수 있으며, 세부 디테일은 나중으로 미룰 수 있다.
엔지니어가 Verilog를 배우는데 얼마나 많은 시간이 걸릴까? 답은 "적어도 하나의 프로그래밍 언어를 안다면 일주일도 채 걸리지 않을 것"이다.
Design Styles -설계 방식
Verilog는 다른 HDL처럼 Bottom-Up Design 방법과 Top-Down Design 언어를 차용한다.
Bottom-Up Design
전통적인 설계 방식이다. 각 설계는 표준 Gate를 사용하여 Gate Level에서 수행된다.
새로운 설계가 복잡해짐에 따라, 이 방식을 차용하는 것이 거의 불가능해졌다.
새로운 시스템을 설계하기 위해선 수천개의 transistor로 이루어진 복잡한 ASIC 혹은, microprocessor를 구성해야 하는데, Bottom-Up Design은 이런 복잡한 시스템을 설계하기에 알맞지 않다.
Top-Down Design
거의 모든 엔지니어들이 선호하는 디자인 스타일이다. Top-Down 설계는 시범 테스트, 다양한 기술의 쉬운 변경, 구조화된 시스템을 설계하는 데에 많은 이점이 있다.
하지만 100% Top-Down 방식을 지향하는 것은 매우 어렵다는 단점도 존재한다. 대부분의 설계는 Bottom-Up 방식과 Top-Down 방식을 혼합하여, 두 방식의 핵심 요소를 구현한다.
Verilog Abstraction Levels -Verilog 추상화 수준
앞서 서술했듯, Verilog는 다양한 추상화 수준의 설계를 할 수 있다.
중요 세 가지
- Behavioral level -행위 수준
- Register-Transfer Level -레지스터 전송 수준 (RTL)
- Gate level -게이트 수준
Behavioral level -행위 수준
이 level에선 동시 알고리즘 (행위)을 통해 시스템을 설명한다,
각 알고리즘은 순차적이다. 즉, 차례대로 실행되는 명령으로 구성된다.
Functions, Tasks, Always 블록 등이 주요 요소이다.
이 level에서는 설계의 구조적 구현을 고려하지 않는다.
Register-Transfer Level -레지스터 전송 수준 (RTL)
레지스터 전송 수준(Register-Transfer Level)을 사용한 설계는 연산과 레지스터 간의 데이터 전송을 통해 회로의 특성을 지정한다.
명시적인 clock이 사용된다. RTL 설계는 정확한 타이밍 경계를 포함한다: 연산은 특정 시간에 발생하도록 예약.
현대의 RTL 코드 정의 "합성 가능한 모든 코드 = RTL 코드"
Gate level -게이트 수준
이 level 시스템은 논리적 연결과 타이밍에 의해 설명된다.
모든 신호가 이산 신호이다. 논리값 ( 0 , 1 , X , Z ) 만을 가질 수 있다.
사용 가능한 연산은 미리 정의된 AND, OR, NOT 등의 Gate 이다.
Gate level code는 합성 도구 등의 도구로 생성되며, net-list는 gate level simultaion과 Back-end에 사용된다.
Gate level까지 모델링하는 것은 별로 좋지 않다.
'Verilog HDL > 1. Verilog HDL Basic (문법)' 카테고리의 다른 글
[Basic Verilog Module] 4. 예제 풀이 (1) | 2024.01.02 |
---|---|
[Basic Verilog Module] 3. 베릴로그 모듈 예시 (2) | 2024.01.02 |
[Basic Verilog Module] 2. 모듈 인스턴스화 (2) | 2024.01.02 |
[Basic Verilog Module] 1. Verilog 의 구조 (0) | 2023.12.31 |
[LINUX] 리눅스 기본 명령어 알아보기 (0) | 2023.09.28 |