Verilog HDL module ( 모듈, 연결, 합성, 인스턴스, instance, 여러개, 탑모듈, named mapping, ordered mapping )
module 합성을 하기 전에 먼저 module이란 뭔지 알아야 한다. module이란, verilog에서 기본적인 블록 단위로 c언어의 함수와 비슷하다. 아래 그림처럼 도식화할 수 있다. module_name = module의 이름을 적어준다. port_list = 입출력을 말한다. 어떤 입출력이 들어가는지 쭉 적으면 된다. port 선언 = 뭐가 입력, 출력인지 정의한다. 파란색 박스 = 아래 사용할 변수를 선언한다. 빨간색 박스 = 실제로 동작할 코드를 작성한다. module 연결 아래 그림에서 stage 1과 stage 2 모듈을 만들고 top 모듈을 만들어보자. 즉, stage 1과 stage 2를 연결시켜보자. stage 1은 입력이 a, b, c, clk 출력이 ff1으로 이루어져 있다. 이..
2022. 2. 15.
Verilog HDL 연산자 ( 산술 연산자, 비트 연산자, 논리 연산자, 축약 연산자, 등가 연산자, 시프트 연산자, 결합 연산자, 반복 연산자 )
산술 연산자 예를 보는 게 더 이해가 쉽다. // a = 4'b0011; (== 3) // b = 4'b0100; (== 4) // d = 6; // e = 4; a * b // 4'b1100 (== 12), 10진수 값으로 곱한다 d / e // 1, 소수점 이하는 버림 a + b // 4'b0111, 비트 연산 b - a // 4'b0001 13 % 3 // 1, 나머지 연산 값 16 % 4 // 0, 나머지 연산 값 -7 % 2 // -1, 첫번째 값의 부호와 일치해야 한다 7 % -2 // 1, 첫번째 값의 부호와 일치해야 한다 더하기 ( + )와 빼기 ( - )는 비트로 더하든 10진수로 더하든 똑같다. 나누기 ( / )와 나머지 ( % ) 연산자는 두 번째 피연산자가 0인 경우 결괏값은 x인 ..
2022. 2. 9.
Verilog HDL 자료형 (주석, 수의 표현, 상수 표현, 논리값 종류, 문자열, reg, wire, 식별자, vector, 메모리, 파라미터)
논리 값 종류 논리 값으로는 0, 1, z, x가 존재한다. 0과 1은 기본적으로 알 테니 z와 x에 대해 알아보자 Tri-state - 제3의 상태라고 하며 z라고 표시한다. high-impedance ( disconnected ) 즉. 아무것도 연결된 것이 없는 걸 말한다. en이 0이면 다 끊어져서 z가 출력된다. Unknown (또는 Don't care) - x라고 표시하며 뭐가 출력될지 모르는 상태를 말한다. 예로는 아래와 같은 경우가 있다. 주석 // : 한 줄 주석 /* */ : 부분 주석 수의 표현 표현방법으로는 아래와 같다. ' 예를 들면, "16'b0000_1000_1000_0000"의 의미는 을 의미한다. ( '_'는 표현의 편리성을 위해 사용 가능하다 ) 조금 더 자세히 보면 비트수..
2022. 2. 9.