Kim Seon Deok

[Verilog] 주석, 수 표현 , 문자열, 식별자 본문

Verilog

[Verilog] 주석, 수 표현 , 문자열, 식별자

seondeok 2022. 12. 6. 23:59

 

 

 

주석 (comment)

HDL 소스코드를 설명하고 컴파일 과정에서는 무시됨

 

단일라인 주석 : //

블록 주석 : /* ~ */

 

 

 

 

 

수 표현 (number representation)

 

정수형(integer) → 2진수, 8진수, 10진수, 16진수

 

[size_constant]  `  <base_format>  <number_value>

 

[size_constant] : 비트 개수를 나타낸다. 10진수로 표현되며 생략되면 32비트를 뜻한다.

<base_format> : base를 지정하는 문자. 2진수는 b,B  8진수는 o,O  10진수는 d,D  16진수는 h,H.  생략되었다면 10진수

<number_value> : unsigned 숫자를 사용해 값을 base에 맞추어 표현. + 나 - 부호 사용 불가

 

10			// 32비트 10진수 10
2'b10		//	2비트 2진수 10
8'o5		// 8비트 8진수 5
8'HAD		// 8비트 16진수 AD
12'hx		// 12비트 16진수x
8'b0000_0001	// 8비트 2진수 0000_0001
'h837ff		// 32비트 16진수 837ff

 

수를 표현할 때 가독성을  높이기 위해 첫번째 문자 제외 _ 를 사용하기도 한다.

27_195_000
16'b0011_0101_0011_1011
32'h 12ab_f001

 

음수는 2의 보수형식으로 표현된다.

-4'b0101   // 4비트 2진수 -5

 

지정된 비트 크기보다 unsigned 수의 크기가 작다면 

MSB 왼쪽에 0 삽입된다.

MSB가 x또는 z라면 x나 z가 왼쪽에 삽입된다.

3'hx     // xxx
3'h3x    // x3x
5'hz3    // zzzz3
6'h0z3   // 0000z3

 

 

 

 

 

 

 

문자열(string)

 

문자열은 " " 사이에 있는 일련의 문자들을 말한다.

여러 라인에 걸친 문자열은 사용할 수 없고 단일라인만 사용할 수 있다.

문자열 변수는 reg형의 변수이고 문자열 내의 문자 수에 8을 곱한 크기의 비트 폭을 갖는다.

 

reg [8*12:1] string_var	;  // 8 * 공백포함한 문자 갯수

initial begin
	string_var = "Hello world~"  // 공백 포함 12문자
 end

 

 

 

 

식별자(identifier)

객체에 고유의 이름을 지정하기 위해 사용된다. 

대소문자를 구별하고 _ 사용 가능하다.

첫번째 문자는 $ 사용불가하다.

$는 system task를 의미한다.

 

확장식별자 

\ 로 시작되고 빈칸, 탭, 등으로 끝난다.

shfting_a
_bus3
n$s657
error_condition

\busa+index
\-clock
\{a,b}

 

 

 

시스템 task와 시스템 함수

 

문자 $로 시작되는 이름을 시스템 task 또는 시스템 함수라 한다.

 

$ display(" " ) 

" " 안의 문자를 터미널에 표시해줌


$ finish

시뮬레이션을 종료함

 

 

 

컴파일러 지시어

 

` 로 시작하고 베릴로그 소스코드의 컴파일 과정에 영향을 미친다.

특정 파일에 있는 컴파일러 지시어는 다른 여러개 파일의 컴파일 동작을 제어할 수 있다.

 

 

`define word size 8
`timescale 10ns / 50ns

 

 

 

 

 

'Verilog' 카테고리의 다른 글

[Verilog] Operator  (0) 2022.12.08
[Verilog] Logic status, Data type  (0) 2022.12.08
[Verilog] Verilog HDL Overview  (0) 2022.12.06
[Verilog] Clock & Testbench & DUT & Reset & Flip Flop  (0) 2022.11.30
[Verilog] $display  (0) 2022.11.30
Comments