본문 바로가기

논리회로13

[논리회로] Register (Design with Verilog) 디지털회로에서는 연산을 할 때 Register에 값을 저장하곤 합니다. 오늘은 간단한 레지스터를 게이트로 나타내보고 verilog로 설계하려고 합니다. 4 bit 병렬 register입니다. 가운데에 있는 combinational 회로는 MUX와 유사하게 보아도 됩니다. Load 신호에 따라 D0~3이 R0~3에 저장됩니다. Verilog Code 4bit Register를 Verilog로 설계하였습니다. Register를 memory처럼 사용하였습니다. 추후에 SRAM을 다룰 때 다시 한 번 다룰건데 미리 코드를 봐두시면 좋을 것 같아요. Read와 Write로 memory에 값을 쓰거나 읽었습니다. DUT `timescale 1ns / 1ps module register4b( i_clk, i_rese.. 2023. 1. 7.
[논리회로] Counter (Design with Verilog) 논리회로에서 중요한 회로인 카운터 (Counter) 에 대한 글입니다. RTL로 설계를 할 때, 카운터는 자주 쓰이는 회로입니다. 카운터의 동작만 잘 알아두어도 설계를 할 때 유용하게 쓸 수 있다고 합니다. Synchronous Counter (동기식 카운터) JK FlipFlop으로 이루어진 동기식 카운터입니다. Synchronous Counter는 비동기식보단 복잡하지만 빠르다는 장점이 있습니다. Asynchronous Counter (비동기식 카운터) JK FlipFlop으로 구성된 비동기식 카운터입니다. Synchronous Counter보다 간단하지만 clock에 의해 동작하지 않으므로 느릴 수 있습니다. 비동기식 카운터는 Ripple Counter라고 부르기도 합니다. 앞 F/F의 출력을 뒤 .. 2023. 1. 6.
[논리회로] T Latch와 FlipFlop T Latch와 T FlipFlop에 대한 글입니다. T F/F는 JK F/F에서 파생되었는데요, J와 K의 입력을 하나의 T로 묶은 구조입니다. INPUT OUTPUT T Q 0 Q 1 Q_bar T가 0이면 그대로 유지하고, T가 1이면 보수를 출력합니다. 2023. 1. 6.
[논리회로] JK Latch와 FlipFlop 오늘은 JK Latch와 FlipFlop에 대한 글을 쓰도록 하겠습니다. JK는 SR F/F에서 (1, 1)이 들어왔을 때 문제점을 보완하기 위해 만들어졌습니다. (J, K)가 (0, 0)이면 이전 값을 유지하고 (1, 1)이면 반대 값을 출력합니다. 2023. 1. 6.
[논리회로] 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.