본문 바로가기

분류 전체보기70

[논리회로] D Latch와 FlipFlop (Design with Verilog) 이전 글에서 작성했던 것처럼 FlipFlop은 Latch에 edge detector circuit을 붙여서 사용합니다. 이번 F/F 설명부터는 edge detector circuit을 생략하겠습니다. D Latch (FlipFlop) Latch의 경우 CLK가 1이면 Q 2023. 1. 2.
[논리회로] SR Latch와 FlipFlop 이전 글에서 작성했던 것처럼 FlipFlop은 Latch에 edge detector circuit을 붙여서 사용합니다. SR Latch with NAND S는 set, R은 reset을 의미합니다. INPUT OUTPUT S R Q Qb 0 0 1 (금지) 1 (금지) 0 1 0 1 1 0 1 0 1 1 Q (유지) Qb (유지) S와 R이 0일 때는 (1, 1)이 나오지만 Q = Qb가 되어버리므로 타당한 값이 아닙니다. S와 R이 1일 때는 이전 값을 그대로 사용합니다. SR이 (1, 1)에서 (0, 0)이 되면 (1, 1) -> (0, 0) -> (1, 1) -> (0, 0) -> ··· 으로 발진하는 Race 현상이 발생합니다. Gated SR Latch INPUT OUTPUT CP R S Q Q.. 2023. 1. 2.
[논리회로] 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.
[논리회로] 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.