본문 바로가기

verilog/이론9

[verilog] verilog의 추상화 수준 모델링 방법(2)(행위 수준 모델링 : always, initial, 블록킹과 논블록킹) 행위 수준 모델링 행위 수준 모델링 행위 수준 모델링이란 회로도나 논리식을 고려하지 않고 회로의 기능적 측면을 고려하는 동작(행위) 수준의 설계방법이다. 행위 수준 모델링을 위해서는 앞에서 설명한 조합논리회로 설계에 사용하는 연속 할당문(assign문) 외에도 순차논리회로 설계를 위한 절차형 할당문의 이해 필요 절차형 할당문 절차형 할당문은 레지스터 자료형(reg, integer, real 등)의 값을 할당하며, 절차형 할당문에 의해 값이 갱신될 때까지 할당된 값을 유지 절차형 할당문은 always, initial, task, function 등의 절차 구문과 함께 사용 블록킹(blocking, '=') 대입문과 논블록킹(nonblocking' 2023. 12. 3.
[verilog] verilog의 추상화 수준 모델링 방법(1)(게이트 수준 : and, or, nand, nor, xor,3-state gate primitive, 데이터 플로우 수준 : 연속 할당문, 절차형 할당문) 추상화 수준 모델링 추상화 수준 모델링 verilog HDL을 이용하여 원하는 논리회로나 디지털시스템을 표현하는 방법으로 4가지 추상화 수준의 모델링 방법이 있음.추상화 수준에 따른 모델링 종류스위치 수준 모델링, 게이트 수준 모델링, 데이터 플로우 수준 모델링, 행위 또는 알고리즘 수준 모델링스위치 수준 모델링은 스위치(On/Off), 기억노드, 그리고 그들의 연결로 구현되는 추상화 수준 모델링의 가장 하위 수준게이트 수준 모델링 게이트 수준 모델링 verilog에는 기본적인 논리 게이트가 프리미티브 연산자(primitive operator)로 미리 정의모듈 정의 없이 일반적인 모듈처럼 인스턴스화가 가능기본적인 디지털 논리 게이트에는 AND, OR, NOT, NAND, NOR, XOR가 있다.  기본적.. 2023. 11. 27.
[verilog] verilog의 연산자(2)(비트단항 논리연산자, 관계 연산자, 시프트 연산자, 조건 연산자, 결합 연산자, 반복 연산자) 비트단항 논리연산자 비트단항 논리연산자(reduction logical operator) 피연산자를 갖는 단항 연산자 비트단항 논리연산자의 진리표는 이항 연산자인 논리 연산자와 같지만, 피연산자를 구성하는 비트들에 대해 연산을 수행하여 1비트의 결과를 생성하기 때문에 축약 또는 축소 연산자라고도 한다. 오른쪽 비트에서 왼쪽 비트로 연산한다. 비트단항 논리연산자의 종류 연산자 종류 의미 & 논리 and | 논리 or ^ 논리 xor ~| 논리 nor ~^ 논리 xnor 비트단항 논리연산자의 사용 예 /* a = 4'b0101 */ &a // 논리 연산 0 & 1 & 0 & 1을 수행한 결과값 : 1'b0 |a // 논리 연산 0 | 1 | 0 | 1을 수행한 결과값 : 1'b1 ^a // 논리 연산 0 ^.. 2023. 11. 21.
[verilog] verilog의 연산자(1)(산술연산자, 논리연산자, 비트단위 논리연산자) 산술 연산자 산술 연산자 2개의 피연산자(operand)의 +, -, *, /, %(나머지) 연산을 수행하는 2항 연산자 피연산자가 네트형 또는 레지스터형이면 부호 없는 연산이 수행 정수형(integer 선언)일 경우, 부호 있는 연산 수행, 합성 제한 나눗셈과 나머지 연산에서 두 번째 피연산자가 0(zero)인 경우 결과값은 x(unknown)이 됨을 주의 산술 연산자의 종류 연산자 종류 의미 사용 예 + 덧셈 assign add = a + b; - 뺄셈 assign sub = a - b; * 곱셈 assign mul = a * b; / 나눗셈 assign div = a / b; % 나머지 assign rem = a % b; 사용 예 /* wire 또는 reg로 선언된 a = 4'h7, b = 4'h2.. 2023. 11. 15.
[verilog] 벡터(vector)와 배열(array) 벡터와 배열 벡터 자료형 선언에서 범위를 지정하지 않았을 경우, 해당 자료형은 1비트 벡터(vector)로 취급 비트 수가 2이상인 논리 값 또는 신호 값의 사용을 위해서는 다중 비트 선언 필요 다중 비트 선언을 하기 위해서는 자료형 선언 시 네트 또는 레지스터 이름 앞에 [msb : lsb]를 추가하여 범위를 지정 배열 배열(array)은 벡터들의 묶음 배열이 하나의 벡터로 구성되었다면 이 배열과 벡터는 동일 2개 이상의 벡터들로 구성되는 배열을 사용하기 위해서는 네트 또는 레지스터 이름 뒤에 [first_index : last_index]를 추가 다차원 배열을 구성하기 위해서는 네트 또는 레지스터 이름 뒤에 [first_index : last_index]를 원하는 차원 수만큼 추가 벡터와 배열 벡터와.. 2023. 11. 13.
[verilog] verilog의 자료형 자료형 자료형 verilog에서 허용되는 자료형은 net, reg, parameter가 있으며, 이들 자료형은 4가지의 논리값(0, 1, x, z)을 갖음. 네트(net)자료형은 소자(장치)간의 물리적인 연결을 나타내기 위해 사용, 논리값을 저장할 수 없다. 레지스터(register) 자료형은 프로그래밍의 변수와 같은 역할, 다른 논리값이 할당되기 전까지 이전 논리값을 유지할 수 있음. 파라미터(parameter)는 상수 혹은 결과가 상수가 되는 식을 정의하는 자료형, 보통 상수값을 설정할 때 사용 Verilog의 자료형 자료형 용도 net형 소자 간의 물리적 연결 reg형 값을 임시로 저장할 수 있는 변수 parameter 상수로 선언되는 데이터 verilog의 논리값 논리값 의미 0 논리적 0, 거짓.. 2023. 11. 11.
[verilog] verilog의 어휘요소(여백, 주석, 연산자, 식별어, 예약어) Verilog의 어휘요소 어휘요소란? Verilog HDL을 사용하기 위해서는 어위효소(lexical element)와 기본적인 문법을 알아야 한다. Verilog의 어휘요소는 여백(white space), 주석(comment), 연산자(operator), 식별어(identifier), 예약어(reserved word) 등이 있다. 어휘요소들은 대소문자를 구분하고, 연산자 및 예약어는 소문자로 이루어져 있다. 여백(white space) 여백(white space)은 빈칸(space), 탭(tab), 그리고 줄 바꿈(new line) 등을 말하며 verilog 코드의 가독성을 높일 수 있도록 적절히 사용하는 것이 좋다. 일반적으로 어휘 요소들을 분리하기 위해 사용되는 경우를 제외하고 컴파일 시 무시된다... 2023. 11. 6.
[verilog] 모듈(module)과 테스트 벤치(testbench) 모듈(Module) 모듈이란? 모듈은 설계하고자 하는 대상의 동작(절차, 방법, 기능)을 구현하는 요소(component)들의 집합 설계의 기본적인 구성 단위 모듈에는 외부 환경과 소통하기 위한 인터페이스인 입출력 포트 정의 그 입출력과 관련된 동작이 표현되어 있음. 모듈은 그 자체로서 동작할 수 있으며, 입출력 인터페이스를 통해 다른 모듈에 필요한 기능을 제공할 수 있다. 일반적으로 자주 사용되는 공통 기능은 하위 모듈로 설계 상위 모듈에서는 하나 또는 여러 개의 하위 모듈을 내부에 포함시켜 설계(보통 인스턴스화시킨다고 표현한다.) 상위 모듈의 설계에서는 하위 모듈의 세부 내용은 상관없이 입출력 인터페이스만 사용된다. 즉, 하위 모듈을 설계하여 상위 모듈에서 호출하는 방식은 객체 지향 방식으로 설계의 .. 2023. 11. 2.
[verilog] Verilog HDL과 설계 Verilog HDL이란? Verilog HDL verilog HDL에서 HDL은 Hardware Description Language의 약자로서 하드웨어를 설계하기 위한 언어. 하드웨어 설계, 즉 디지털 시스템을 설계하는 것은 0(LOW)과 1(HIGH)이라는 2가지 논리 상태에 대한 디지털 논리 게이트들(AND, OR, NOT 등)의 조합을 통해 목표로 하는 회로의 기능을 표현하는 것 가장 좋은 HDL 코딩 방법은 가능한 명확하고 간결하게 코드를 작성하여 논리 합성기(Logic Synthesizer)의 합성 부담을 줄여주는 것이다. HDL의 종류로 VHDL과 Verilog HDL이 있는데 VHDL은 복잡한 문법을 가지고 있어 verilog HDL을 많이 사용하는 편이다. Verilog HDL 설계 개.. 2023. 9. 27.