본문 바로가기

verilog23

[논리회로] Latch와 FlipFlop의 차이 Latch와 Flipflop에 대한 글입니다. Latch clock이 High이거나 Low일 때 값을 update 입력 신호가 바로 출력으로 전달되므로 noise와 glitch에 취약합니다. ※ Verilog 설계 시 Latch가 생성되지 않도록 하는 것이 중요합니다. 합성 후 Latch가 생성되지 않도록 하려면, if 문의 경우 else로 끝나도록 하고 case문의 경우 default를 써주는 등 모든 경우에 대해서 값을 가지도록 작성해야 합니다. FlipFlop clock의 rising edge 또는 falling edge에서 값을 update FlipFlop의 경우 edge에서만 update하므로 Latch 비해 glitch 영향을 덜 받습니다. Latch와 Flipflop은 많은 사람들이 혼용해서.. 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.
[논리회로] 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.
첫 글 안녕하세요. 취업 준비를 하면서 공부했던 내용을 정리해 놓은 블로그입니다. 개인적으로 공부한 것이기 때문에 신빙성이 높지 않습니다. 그동안 무엇을 했는지 정리할 필요가 있겠다 싶어서 개설하였습니다. 다들 취업 준비 힘내세요! 2022. 12. 29.