본문 바로가기

Digital Design42

[논리회로] Synchronous, Asynchronous 이번 글은 Synchronous 회로와 Asynchronous 회로에 대한 글입니다. Synchronous Circuit (동기 회로) clock에 의해 동기화되는 방식의 회로입니다. clock이 계속 동작하므로 전력소비가 높습니다. 또한 clock skew 문제가 발생합니다. Pipelining으로 throughput을 높일 수 있습니다. 보통 동기 방식을 선택하는 것으로 알고 있습니다. Asynchronous Circuit (비동기 회로) 주기적인 clock을 사용하지 않는 비동기 방식의 회로입니다. 따라서 실제 동작에 참여하는 부분만 작동하므로 전력소비를 줄일 수 있습니다. clock 배치 문제를 줄일 수 있기 때문에 설계시간이 줄어들고 면적 또한 줄일 수 있습니다. 하지만 설계가 어렵다는 단점이 .. 2023. 1. 2.
[논리회로] Combinational Circuit, Sequential Circuit Combinational Circuit과 Sequential Circuit에 대한 글입니다. Combinational Circuit (조합 논리회로) 특정 시점의 출력이 그 시점의 입력에 의해서면 결정되는 회로입니다. 출력값 = 입력값 Sequential Circuit (순차 논리회로) Feedback을 가진 조합회로 clock에 의해 동기화 상태값을 저장해두고 다시 입력으로 들어가서 다음 상태값과 출력을 결정하는 회로입니다. 출력값 = 입력값 + 상태값 2023. 1. 2.
[논리회로] Multiplexer (Design with Verilog) 이번에 다룰 회로는 Multiplexer, MUX 입니다. MUX는 2^N개의 입력을 N개의 select 신호에 따라 선택하는 모듈입니다. 4 to 1 MUX의 진리표 먼저 보겠습니다. INPUT OUTPUT S0 S1 Y 0 0 I0 0 1 I1 1 0 I2 1 1 I3 Y = s0's1'I0 + s0's1I1 + s0s1'I2 + s0s1I3 이 결과를 게이트로 나타내보겠습니다. ※ Demux Demultiplexer는 MUX와 반대입니다. 1개의 input을 n개의 select 신호를 이용해 2^n개의 출력을 만들어냅니다. 마치 디코더와 같은 모양인데 enable이 1개의 input 역할을 한다고 보면 됩니다. MUX와 DEMUX를 사용하는 이유는, 여러 입력을 하나의 데이터 스트림으로 병합할 수 .. 2023. 1. 2.
[논리회로] Decoder (Design with Verilog) 이번에 다룰 논리회로는 Decoder 입니다. Decoder는 N개의 입력을 해독하여 2^N개의 출력으로 내보내는 역할을 합니다. 2 to 4 Decoder의 진리표부터 보겠습니다. INPUT OUTPUT A0 A1 D0 D1 D2 D3 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 D0 = A0'A1' D1 = A0'A1 D2 = A0A1' D3 = A0A1 위 결과를 게이트로 나타내면 다음과 같습니다. Decoder를 반대로 만들면 Encoder입니다. Encoder는 2^N개의 신호를 N개로 만들어주는 역할을 합니다. Verilog Code Decoder를 Verilog로 설계하였습니다. 이번에는 이전과는 조금 다르게 clock을 이용하여 Synchronous.. 2023. 1. 2.
[논리회로] Full Subtractor (Design with Verilog) Full Subtractor (전감산기) 입니다. 먼저 진리표입니다. INPUT OUTPUT X Y Borrow_in Difference Borrow_out 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 Difference = X ⊕ Y ⊕ B_in Borrow_out = X'Y + YBin + BinX' 이 결과를 바탕으로 회로를 만들어보면 다음과 같습니다. Full Subtractor 역시 마찬가지로 Full Adder에 NOT gate만 추가해 주면 됩니다. 또한 Half Subtractor 두 개로 나누어 표현하여도 됩니다. Verilog Code Full Subtractor를 Verilog로 설계하였.. 2023. 1. 2.
[논리회로] Half Subtractor (Design with Verilog) 이번 게시글은 Half Subtractor (반감산기) 입니다. 먼저, Half Subtractor의 진리표부터 보겠습니다. INPUT OUTPUT X Y Difference Borrow 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 Difference = X ⊕ Y Borrow = X'Y 이것을 Gate로 나타내면 Half Adder에 NOT Gate만 하나 추가해주면 Half Subtractor가 됩니다. Verilog Code Half Subtractor를 Verilog로 설계하였습니다. DUT `timescale 1ns / 1ps module half_subtractor( i_x, i_y, o_diff, o_bor ); input i_x, i_y; output o_diff, o_bor;.. 2022. 12. 30.
[논리회로] Full Adder (Design with Verilog) Full Adder는 Input X, Y에 들어온 Carry_in 까지 합쳐서 더하는 모듈입니다. 이번에도 Verilog를 이용해 Full Adder를 설계하였습니다. 진리표부터 보겠습니다. INPUT OUTPUT X Y Cin Cout Sum 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 Half Adder와 다르게 경우의 수가 많아져서 카르노맵을 그려보는 것이 좋습니다. 카르노맵을 그리는 과정은 생략하고 바로 결과를 보면, Sum = X ⊕ Y ⊕ Cin Cout = XY + YCin + CinX 이것을 게이트로 표현한 그림입니다. 중간에 XOR gate와 AND gate가 보이시나요? 맞습니다. Half.. 2022. 12. 29.
[논리회로] Half Adder (Design with Verilog) 첫 논리회로이기 때문에 과정까지 작성하였습니다. Half Adder는 Input인 X와 Y를 더했을 때, 합은 Sum 올림은 Carry로 나타내 줍니다. 먼저 진리표를 보겠습니다. INPUT OUTPUT X Y Carry Sum 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 Half Adder는 간단하기 때문에 따로 카르노맵을 그리지 않아도 쉽게 구할 수 있습니다. Carry의 경우, Input이 모두 1일 때 1이 출력됩니다. 따라서 AND 연산임을 알 수 있겠죠? Carry = XY Sum의 경우 두 Input이 서로 다를 때 1을 출력하고 있습니다. 따라서 XOR 연산임을 알 수 있습니다. Sum = X ⊕ Y = X'Y + XY' 이제 게이트로 회로를 구성해 보겠습니다. Verilog .. 2022. 12. 29.