사전적 규약(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 |