본문 바로가기

verilog14

[Verilog] 조합회로(Combinational logic) : 인코더(Encoder)와 디코더(Decoder) 인코더와 디코더 차이비교 항목인코더 (Encoder)디코더 (Decoder)입력(Input)여러 개의 신호 중 하나만 활성화압축된(코드화된) 데이터를 입력출력(Output)코드화된 신호 (예: 2진수)원래 의미 있는 정보 (예: BCD, 7세그먼트 신호)예시10진 → 2진 (Decimal to Binary) 변환기2진 → 10진 (Binary to BCD) 변환기사용처키패드 입력, 우선순위 인코딩7세그먼트 디스플레이, 주소 해석 BCD(Binary-Coded Demical)이란?10진수2진수(8비트)BCD 코드 (4비트 × 3)156100111000001 0101 011047001011110000 0100 0111255111111110010 0101 01012진수(Binary)로 10진수(Demical).. 2025. 3. 4.
[Verilog] 순차 회로(Sequential logic) : D-플립플롭(Flip-Flop) 조합회로와 순차회로조합회로논리 게이트들의 조합입력의 변화에 대해 바로 출력이 결정정보(상태)를 저장하는 소자는 필요 없음전가산기, 멀티플렉서, ALU 등순차회로현재의 입력 뿐만 아니라 과거의 입력이나 현재 상태 값을 저장하는 기억소자와 조합회로로 구성상태 값을 기억하기 위한 플립플롭과 순차적 처리의 기준이 되는 클록이 필요 D-플립플롭 심볼 상승에지 트리거 D-FF의 동작클럭의 상승 엣지(↑)에서 입력 d의 값이 출력 q로 전달됨전달된 신호의 값은 다음 번 clk의 상승에지까지 유지클럭이 하강 엣지(↓)이거나 안정된 상태에서는 q가 유지 상승에지 트리거 D-FF 진리표입력출력dclkq0↑01↑1x0qnqn : 동작 전 q의 값clk = ↑ : clk의 상승에지(positive edge) verilog 코.. 2025. 3. 4.
[Verilog] 조합회로(Combinational logic) : ALU(산술 논리 장치) 산술 논리 장치란?명령어에 따라 산술연산, 논리연산, 시프트연산 등의 기능을 수행할 수 있는 조합논리회로ALU(Arithmatic Logic Unit)라고 부른다.CPU에서 가장 중요한 요소 회로(4bit ALU)  ALU의 명령어와 연산명령어연산의미산술연산0000a + b덧셈0001a - b뺄셈0010a x b곱셈0011a / b나눗셈0100a % b나머지비트 단위 논리연산0101~a비트 NOT0110a & b비트 AND0111a | b비트 OR1000a ^ b비트 XOR1001a ~^ b비트 XNOR비트단항 논리연산1010& a비트단항 AND1011| a비트단항 OR1100~& a비트단항 NAND1101^ a비트단항 XOR시프트 연산1110a >> ba를 b비트 우측 이동1111a a를 b비트 좌측 .. 2025. 3. 4.
[Verilog] 조합회로(Combinational logic) : 멀티플렉서(Multiplexer) 멀티플렉서란?멀티플렉서는 2^n개의 입력을 받아 그들 중 하나를 선택하여 출력으로 연결해주는 조합회로데이터 선택기라도고 하며 간단히 MUX라고 부름.한개의 입력을 받아서 2^n개의 출력 중 하나의 출력에 회로를 디멀티플래서 또는 DEMUX라고 함.멀티플렉서나 디멀티플렉서는 여러 개의 데이터 중에서 하나를 선택하기 위해 제어신호가 필요함.회로(8비트 4-to-1 Multiplexer) 진리표(8비트 4-to-1 Multiplexer)sel[1]sel[0]out00a01b10c11d verilog 코드// case문을 이용한 4x1 MUX 설계module mux(a, b, c, d, sel, out); input [7:0] a, b, c, d; input [1:0] sel; output reg [7.. 2025. 3. 3.
[Verilog] 조합회로(Combinational logic) : 전가산기(Full Adder) 전가산기란?두 개의 값(a, b)과 하위 올림 수(cin)를 입력 받아 입력의 합(sum)과 올림 수(carry)를 출력하는 전가산기 회로반가산기 두 개가 합쳐진 것 진리표abcinsumcarry0000001010100101100100110011011010111111  verilog 코드//full adder(전가산기)module fadder(a, b, cin, sum, carry); input a, b, cin; output sum, carry; wire s0, c0, c1; assign s0 = a ^ b; assign c0 = a & b; assign c1 = s0 & cin; assign sum = s0 ^ cin; assign carry = c1 | c0; endmod.. 2025. 3. 3.
[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.