본문 바로가기

verilog HDL

[Verilog] 기초문법

사전적 규약(Lexical conventions)

  • 기본 사항
문자 대문자, 소문자 구별
키워드 반드시 소문자
문장의 맺음 반드시 세미콜론으로 끝남
단, end~ 식별자는 예외

 

  • 수 표현

크기 지정 가능 수

<크기>'<기본 형식><숫자>

<크기> - 오직 10진수만 가능

형식

- b (binary) : 2진수

- o (octal) : 8진수

- d (decimal) : 10진수

- h (hexadecimal) : 16진수

ex) 8'b1101 // 8bit 2진수 1101

 

크기 지정 불가능 수

기본으로 10진수

크키가 지정되지 않은 숫자는 기계/시뮬레이터마다 다른 값 가질 수 있음

최소 32비트

ex) 1004 // 32bit 10진수 1004

     'h1f // 32bit 16진수 1f

 

  • 연산자
산술 연산자 연산자 의미
+ 덧셈
- 뺄셈
* 곱셈
/ 나눗셈
% 나머지
관계 연산자 연산자 의미
== 같다
!= 같지 않다
< 작다
> 크다
<= 작거나 같다
>= 크거나 같다
논리 연산자 연산자 의미
&& 논리적 AND
|| 논리적 OR
! 논리적 NOT
& 비트 AND
| 비트 OR
! 비트 NOT
^ 비트 XOR
~^, ^~ 비트 XNOR
  연산자 의미
시프트 연산자 >> shift right
<< shift left
그 외 ? : 조건 연산자
{} 결합 연산자

ex) A=1'b1 , B=2'b00 , C=4'b1100

C >> 1; → 4'b0110

C << 2; → 4'b0000

{B,C} → 6'b00_1100

out = cnt ? in1 : in2 → cnt가 참(1)이면 out은 in1, 거짓(0)이면 out은 in2

 

  • 데이터형

데이터값

논리값 수준 회로의 상태
0 논리적 0, 거짓 상태
1 논리적 1, 참 상태
x 알 수 없는 값 (unknwon)
z high impedance

 

  • Net (wire)

하드웨어 요소 사이의 연결

연결된 디바이스값으로 출력값을 갖음

default 값 = z

 

  • register

하드웨어 요소 사이의 연결

데이터 저장하는데 사용한 변수 지정

키워드 정의
reg 일반적 레지스터
real 실수, 과학적 표기에 의해 사용되는 레지스터
time 시뮬시간을 저장하기 위한 레지스터
integer 정수 양을 다루기 위한 범용 레지스터, signed 형태가 가능

 

  • 벡터

<데이터형>[ MSB : LSB ]<신호 이름>

n-비트 폭을 가진 하나의 원소

 

  • 배열

<데이터형><벡터 데이터 폭><배열 이름>[서브 스크립트]

1비트 혹은 n-비트를 가지는 여러 원소

 

  • 파라미터(parameter)

모듈 내에서 상수를 정의 가능

변수로는 사용할 수 없음

 

  • 컴파일러 지시어

`define : 덱스트 매크로

`include : 다른 verilog 파일에 있는 소스 파일의 전체 내용을 컴파일하는 동안 포함

`timescale : 모듈의 참조 시간 단위 지정 <시간 단위 > / <시간 정밀도> (소수점 얼마까지)

'verilog HDL' 카테고리의 다른 글

[Verilog] Behavior modeling 설계  (0) 2022.03.19
[Verilog] Behavior modeling  (0) 2022.03.18
[Verilog] Data flow modeling  (0) 2022.03.17
[Verilog] Gate level modeling  (0) 2022.03.16
[Verilog]  (0) 2022.03.16