- 순차회로 : 출력이 ‘현재 입력’과 ‘과거 입력’에 의해 결정되는 회로이다.
현재 입력 > 지금 인가하는 입력 ,, '과거 입력'은 어떻게 사용하는 걸까 ??
하드웨어에서는 입력된 데이터를 저장할 수 있는 모듈 >> 플립플롭 ( flip - flop )
>> 과거의 입력을 가공해 형태를 바꿔 flip-flop에 저장하면 state ( 상태 ) 라고도 부른다.
따라서, 순차회로를 다시 표현하면 출력이 '현재 입력'과 '현재 상태'에 의해 결정되는 회로
ex) 300원짜리 콜라를 빼 먹는 자동판매기
>> 지금까지 200원을 넣은 '현재 상태'에서 , 여기에 추가로 100원 ('현재 입력') 을 넣으면 출력으로 콜라를 뺄 수 있다.
Clock , 클럭 = 오실레이터 , 크리스탈 , 크리스탈 오실레이터 , 주파수 으로 혼용
>> 플립플롭에 입력 데이터를 저장할 때 , 저장할 시점을 알려주는 중요한 신호
cf) synchronous logic > 하드웨어를 말할때 synchronous라는 단어가 들어 있으면 클럭에 동기화되어 동작한다는 말이다
+) synchronous sequential logic, asynchronous sequential logic
플립플롭 >> 데이터를 저장하기 위해 사용하는모듈이다
>> clock의 상승에지에서 input 값을 output에 저장
>> 플립플롭을 만들때는 항상 always @ (posedge clk)을 넣어야 한다.
>> 시간에 따라 입력 D에 임의의 값을 넣어주고 출력 Q가 제대로 나오는지 확인 하는 것
매 rising-edge마다 입렫 D값을 출력 Q에 저장한다.
여기서 delay는 flip-flop의 cell delay를 의미한다.
** 출력 Q에 저장할때 하면 안되는 상황
>> 플립플롭이 입력D를 Q에 저장하려는 순간 (클럭의 rising-edge) 입력 D가 다른 값으로 변했다.
sol ) rising-edge 전과 후 잠시 입력 D가 변하면 안된다!
그러면 입력 D가 rising-edge 전과 후 입력이 변하지 말아야 할 구간 조건은 어떤게 있을까?
>> (1) Setup time = 클럭의 rising-edge 전에 입력 D가 안정되어 있어야 할 (변하지 말아야 할) 최소 시간을 말한다.
(2) hold time = 클럭의 rising-edge 후에 입력 D가 변하지 말고 그대로 유지되어 있어야 할 최소시간을 말한다.
** 조건이 지켜지지 않으면 violation이 발생되는데 합성하는 CADtool이 발생하지 않도록 자동으로 하드웨어를 만든다.
그럼에도 violation이 발생한다면 그 지점을 찾아 조치를 해야한다.
ex) RV32I CPU와 같은 간단한 로직을 설계할때는 이런 violation이 발생하지 않지만
AP 같은 큰 디지털 로직설계에서는 자주 발생한다.
출처 : 원리부터 설계까지 쉽고 명확한 컴퓨터구조 RISC-V 중심으로 - 서태원 지음
'RISC-V CPU 설계' 카테고리의 다른 글
[RISC-V ] single-cycle CPU 설계 (1) | 2024.05.24 |
---|---|
[RISC-V] CPU Architecture : Harvard Architecture 하버드 아키텍쳐 / von Neumann 폰노이만 아키텍쳐 (1) | 2024.05.24 |
[RISC-V ] single-cycle CPU 설계 / pipeline 소개 (0) | 2024.05.24 |
[RISC-V] 4.2 순차회로 : Enable D flip-flop , set/reset D flip-flop (0) | 2024.05.22 |