논리회로 설계

논회설 bit storage

cheesecrust1008 2022. 5. 23. 22:42

우리가 앞서 학습한 combinational logic 에서는 자신의 현상태 저장이 불가능하다. 

따라서 자신의 현상태를 bit의 형태로 저장하기 위해서 bit storage를 필요로 한다. 따라서 이를 구현하기 위해서 feedback 을 활용하여 상태를 저장하게 된다. 

하지만 아래와 같은 간단한 feedback을 사용하게 된다면 자신의 상태가 한번 업데이트 된후에 다시 바꾸는 것이 불가능하다. 

따라서 고안하게 된것이 바로 SR latch 이다. 

하지만, 이의 문제는 1,1이 동시에 들어왔을때에 값이 일정하지 못하고 자꾸 바뀌게 된다는 것이다. 

따라서 1,1 이 동시에 들어오는 것을 방지 하기 위해서 clock을 도입하게 된다. 

위에서 clock의 역할은 만약 1,1이 입력으로 들어오게 된다면, clock 에 0이 들어가게 된다면 1,1 이 입력으로 들어가지 않게 된다. 하지만 clock 이 1이 될 경우에 1,1이 들어가게 될 수 도 있으므로 이를 미연에 방지하고자 아래와 같이 and gate를 사용하여 이조차 막는다.

하지만 SR Latch 의 경우 y 가 and gate 를 거치기 때문에 delay 가 발생되어 1,1 이 순간 적으로 들어올 경우가 발생하게 된다. 따라서 clock의 period를 설정 해주는데에 있어서 민감하게 되는 문제가 발생하게 된다. 따라서 이를 해결하기 위해서 x, y 를 입력 받지 않고 아래와 같이 인버터로 바로  r 에 연결해주는 d-latch 를 고안하게 된다. 

하지만 이런 d-latch에도 문제점이 존재하는데 바로 clock 이 1인 동안에는 계속 값을 받게 된다는 것이다. 값을 계속 받게 되면 신호가 feedback 회로를 따라서 계속 순환하게 된다. 따라서 한번만 받고 싶어서 고안한것이 바로 flip-flop 이다. 

 위는 flip-flop 의 예시인데, d-latch 두개를 이어 붙여서 구현한다. 따라서 이의 원리는 clock 이 0이 들어올 동안은 앞의 master d-latch 에서 값을 받고 뒤의 servant d-latch 는 값을 받지 않는다. 그리고 1이 되는 순간 앞의 master는 더이상 값을 받지 않고 뒤의 servant 가 값을 받기 시작하기 때문에 0 에서 1이 되는 순간에만 값을 받게 된다. 

위처럼 master쪽에 inverter 가 붙어 있다면 0 에서 1일 될때, rising 일때에 값을 받지만, 반대로 servant 에 붙어 있다면 값이 떨어질 떄에 값을 받게 된다. 

따라서 위의 원리에 따라서 d-flip-flop 또한 여러개가 붙어 있더라도 하나씩 밖에 통과하지 못한다. 

위는 d-flip-flop의 perset 과 claer 를 추가한 것인데, preset은 enable signal과 비슷한 것으로 들어오는 값을 사용할 것인지를 결정한다. clear는 회로를 초기화 시켜주는 것이다. 이때의 중요한 개념은 active low 로 이는 perset 이나, clear 를 사용하고 싶다면, 0을 입력하면 해당 동작을 실행하는 것이다. 

위는 t-flip-flop 인데, 이때의 t는 toggle의 약자이다. toggle 은 0을 1로 1을 0으로 바꾸어주는 역할이다. 

위는 sequential logic의 변천사 이다.

'논리회로 설계' 카테고리의 다른 글

register  (0) 2022.06.01
Sequential circuit  (0) 2022.05.30
논회설 addition  (0) 2022.05.22
mux & decoder  (0) 2022.05.16
petrick method  (0) 2022.05.16