Top Banner
2006년 1학기 논리설계 실험 77 제7장 Flip-Flops and Registers 실험의 목표 - S-R Latch 의 동작을 이해하도록 한다. - Latch 와 Flip-flop 의 차이를 이해한다. - D-FF 과 JK-FF 의 동작 원리를 이해한다. - Shift-register MSI 의 동작을 익히도록 한다. - Timing 시뮬레이션 방법에 대하여 습득한다. 실험 도움 자료 1. Universal Shift Register 1-1 shift register 란 ? Shift register는 데이터 저장 기능뿐 아니라 데이터를 각각의 저장소자 사이에서 쉬프트 할 수 있다. 아래 그림에서 보면 알 수 있듯이 shift 펄스가 발생할 때 마다 데이터가 왼 쪽에서 오른쪽으로 이동하게 된다. [그림 7-1] shift register
12

제7장 Flip-Flops and Registers - :: Network Convergence and …mmlab.snu.ac.kr/courses/2006_logic_design_lab/07.pdf · 2006-09-04 · to parallel conversion을 담당한다. parallel

Jun 19, 2018

Download

Documents

dangnhi
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 제7장 Flip-Flops and Registers - :: Network Convergence and …mmlab.snu.ac.kr/courses/2006_logic_design_lab/07.pdf · 2006-09-04 · to parallel conversion을 담당한다. parallel

2006년 1학기 논리설계 실험

77

제7장 Flip-Flops and Registers

실험의 목표

- S-R Latch 의 동작을 이해하도록 한다.

- Latch 와 Flip-flop 의 차이를 이해한다.

- D-FF 과 JK-FF 의 동작 원리를 이해한다.

- Shift-register MSI 의 동작을 익히도록 한다.

- Timing 시뮬레이션 방법에 대하여 습득한다.

실험 도움 자료

1. Universal Shift Register

1-1 shift register 란 ?

Shift register는 데이터 저장 기능뿐 아니라 데이터를 각각의 저장소자 사이에서 쉬프트

할 수 있다. 아래 그림에서 보면 알 수 있듯이 shift 펄스가 발생할 때 마다 데이터가 왼

쪽에서 오른쪽으로 이동하게 된다.

[그림 7-1] shift register

Page 2: 제7장 Flip-Flops and Registers - :: Network Convergence and …mmlab.snu.ac.kr/courses/2006_logic_design_lab/07.pdf · 2006-09-04 · to parallel conversion을 담당한다. parallel

2006년 1학기 논리설계 실험

78

1-2 universal shift register

1-1의 shift register의 경우에는 초기 데이터를 로드 할 방법이 존재하지 않는 문제점이

있다. 때문에 모든 shift register의 경우는 초기 데이터를 로드할 수 있는 기능이 있으며

이것은 크게 serial input과 parallel input으로 나누어진다. 이러한 초기 데이터 로딩 기능

과 양방향으로의 쉬프트기능을 모두 가지고 있는 shift register가 universal shift

register이다.

아래 그림은 Universal shift register인 74LS194의 schematic이다.

[그림 7-2] 74LS194

74LS194가 어떻게 작동하는지 간단히 살펴보면, S1S0 이 ‘00’ 이면 값을 홀드하고, ‘01’

인 경우는 오른쪽으로 쉬프트, ‘10’인 경우는 왼쪽으로 쉬프트, ‘11’인 경우는 A,B,C,D를

통하여 parallel input을 받아들인다. SL은 왼쪽으로 쉬프트가 일어날 때 QD의 input을,

SR은 오른쪽으로 쉬프트가 일어날 때 QA의 input을 의미한다.

이것을 정리하여 function table로 나타낸 것이다.

Page 3: 제7장 Flip-Flops and Registers - :: Network Convergence and …mmlab.snu.ac.kr/courses/2006_logic_design_lab/07.pdf · 2006-09-04 · to parallel conversion을 담당한다. parallel

2006년 1학기 논리설계 실험

79

CLR S1 S0 CLK SL SR A B C D QA QB QC QD

L X X X X X X X X X L L L L

H X X ↑ X X X X X X Qa Qb Qc Qd

H H H ↑ X X a b c d a b c d

H L H ↑ X H X X X X H Qb Qc Qd

H L H ↑ X L X X X X L Qb Qc Qd

H H L ↑ H X X X X X Qa Qb Qc H

H H L ↑ L X X X X X Qa Qb Qc L

H L L ↑ X X X X X X Qa Qb Qc Qd

[표 7-1] 74LS194의 function table

2. Serial-to-parallel, parallel-to-serial conversion

두개의 PC 혹은 하나의 PC와 하나의 단말기를 시리얼 포트를 통하여 연결한 경우 시리

얼 라인을 통해서는 시리얼 데이터가 오고 가지만 PC 혹은 단말기 내부에서는 시리얼 데

이터를 모아서 패러럴한 형태(바이트)로 변환한 후에 이것을 이용한다. PC에서 시리얼 라

인으로 데이터를 보낼 때는 parallel to serial conversion을 그 반대의 경우는 serial to

parallel conversion이 일어나게 된다.

74LS194를 cascading하여 8비트 parallel/serial transmission subsystem을 아래처럼 구

성해볼 수 있다.

Page 4: 제7장 Flip-Flops and Registers - :: Network Convergence and …mmlab.snu.ac.kr/courses/2006_logic_design_lab/07.pdf · 2006-09-04 · to parallel conversion을 담당한다. parallel

2006년 1학기 논리설계 실험

80

[그림 7-3] parallel/serial transfer subsystem

왼편의 두개의 74194는 parallel to serial converson을, 오른편의 두개의 74194는 serial

to parallel conversion을 담당한다. parallel to serial conversion의 경우 s1s0=’11’일 때

8비트의 데이터를 한번에 input으로 받아들인 후 매 clock마다 왼쪽으로 쉬프트한다.

serial to parallel conversion은 이 반대로 작동한다.

3. MAX plus II 를 이용한 Timing 시뮬레이션

아래의 VHDL코드는 다음과 같은 input, output을 가지는 심볼로 표시할 수 있다.

Page 5: 제7장 Flip-Flops and Registers - :: Network Convergence and …mmlab.snu.ac.kr/courses/2006_logic_design_lab/07.pdf · 2006-09-04 · to parallel conversion을 담당한다. parallel

2006년 1학기 논리설계 실험

81

[그림 7-4] shift register의 schematic

동작을 간단히 설명하면 기본적으로 input은 serial, parallel 둘 다 지원하고, output인 경

우는 serial output만 지원하는 4bit shift register이다. LOAD신호가 high일 경우는

LOAD_DATA의 4bit를 input으로 읽어 들이고, 그 외의 경우에는 DIN의 serial input을

읽어 들인다. 위의 이러한 동작은 다 CLK에 동기화 되어 동작을 하며, output역시 마찬가

지로 CLK에 동기화 되어 한 bit씩 output을 내보낸다.

Altera Max Plus II를 이용하여 시뮬레이션을 수행할 경우, 4번의 VHDL소스를 이용하

여 .vhd파일을 만든 후, 컴파일과 시뮬레이션 과정을 한다. 이 때 주의해야 할 점은 타이

밍 시뮬레이션을 하기 위해서는 컴파일을 할 때 꼭 timing 컴파일을 하여야 하고, 디바이

스는 기본적으로 Altera MAX 7000으로 설정되어 있다. (자세한 것은 Altera Max Plus II

의 매뉴얼을 참조하라.)

Page 6: 제7장 Flip-Flops and Registers - :: Network Convergence and …mmlab.snu.ac.kr/courses/2006_logic_design_lab/07.pdf · 2006-09-04 · to parallel conversion을 담당한다. parallel

2006년 1학기 논리설계 실험

82

[그림 7-5] timing 시뮬레이션이 가능하도록 컴파일

위의 과정을 통하여 컴파일이 성공적으로 수행되었다면, 이제 타이밍 시뮬레이션을 수행

할 수가 있다. 시뮬레이션을 수행할 waveform을 작성해야 하는데. 이때 우리는 setup

time과 hold time의 변화가 어떤 식으로 영향을 미치는지를 시뮬레이션 해봐야 하므로 먼

저 각각의 flipflop의 setup time과 hold time에 대한 추정치를 알고 있어야 한다. 이것은

메뉴의 “MAX+plus II >> Timing Analyzer”를 통하여 할 수 있다. 이 때 “Setup/Hold

Matrix”를 선택하여 분석을 하여야 한다.

체크되어 있나 확인 후 컴파일

Page 7: 제7장 Flip-Flops and Registers - :: Network Convergence and …mmlab.snu.ac.kr/courses/2006_logic_design_lab/07.pdf · 2006-09-04 · to parallel conversion을 담당한다. parallel

2006년 1학기 논리설계 실험

83

[그림 7-6] setup/hold time analysis

위의 그림을 보면 setup time이 5ns, hold time이 0ns임을 알 수 있다. 이 값을 알았으니,

이제 이 값에 위배되는 값을 일부러 waveform에 넣어보고 어떻게 동작하는지 알아본다.

아래 그림처럼 setup time이 5ns보다는 커야 하지만 일부러 3ns를 넣어보자. Waveform

editor를 통하여 test waveform을 그릴 때 주의 할 점은 전체 시뮬레이션 시간을 얼마로

할 것인가와 grid의 단위 이하의 시간 단위로는 waveform을 그릴수가 없으므로 하나의

grid를 몇 ns로 할지를 정하여야 한다. 우리는 대략 clock의 반주기로 10ns정도, 그리고

setup time이 3ns 정도이므로 grid단위를 2ns로 한다고 가정하자. 시뮬레이션 시간은 메

뉴 중 “File >> End Time” 로, grid단위는 “options >> Grid Size”를 통하여 정한다.

체크

Page 8: 제7장 Flip-Flops and Registers - :: Network Convergence and …mmlab.snu.ac.kr/courses/2006_logic_design_lab/07.pdf · 2006-09-04 · to parallel conversion을 담당한다. parallel

2006년 1학기 논리설계 실험

84

[그림 7-7] setup time 이 4ns

이제 waveform은 완성이 되었고 이것을 시뮬레이션 시켜본다.

[그림 7-8] simulatin 실행

setup time 이 4ns 이기 때문에 setup time violation warning이 뜨고, 시뮬레이션 결과

를 보아도 (DOUT, REG) data load가 일어나지 않았음을 알 수 있다.

4ns

이 부분을 체크하면, 위와 같은

setup/hold violation error를 볼 수 있다.

Page 9: 제7장 Flip-Flops and Registers - :: Network Convergence and …mmlab.snu.ac.kr/courses/2006_logic_design_lab/07.pdf · 2006-09-04 · to parallel conversion을 담당한다. parallel

2006년 1학기 논리설계 실험

85

setup time을 5ns 이상 주면, 아래와 같이 데이터의 로드와 쉬프트가 제대로 되는 것을

알 수 있다.

[그림 7-9] 성공한 simulatin 결과

4. VHDL 를 이용한 shift-register 의 기술

library IEEE;

use IEEE.std_logic_1164.all;

use IEEE.std_logic_arith.all;

use IEEE.std_logic_signed.all;

entity ShiftRegister is

Port (

CLK: in STD_LOGIC;

DIN: in STD_LOGIC;

LOAD: in STD_LOGIC;

LOAD_DATA: in STD_LOGIC_VECTOR(3 downto 0);

DOUT: out STD_LOGIC

);

end ShiftRegister;

architecture Behavioral of ShiftRegister is

signal REG: STD_LOGIC_VECTOR(3 downto 0);

begin

process (CLK)

Page 10: 제7장 Flip-Flops and Registers - :: Network Convergence and …mmlab.snu.ac.kr/courses/2006_logic_design_lab/07.pdf · 2006-09-04 · to parallel conversion을 담당한다. parallel

2006년 1학기 논리설계 실험

86

begin

if CLK'event and CLK='1' then

if (LOAD='1') then

REG <= LOAD_DATA;

else

REG <= DIN & REG(3 downto 1);

end if;

end if;

DOUT <= REG(0);

end process;

end Behavioral;

[표 7-2] shift register의 vhdl 표현

module ShiftRegister(CLK, DIN, LOAD, LOAD_DATA, DOUT);

input CLK;

input DIN;

input LOAD;

input [3:0] LOAD_DATA;

output DOUT;

reg DOUT;

reg [3:0] REG;

always @(posedge CLK)

begin

if (LOAD == "1") begin

REG <= LOAD_DATA;

end else begin

REG <= { DIN, REG[3:1] };

end

DOUT <= REG[0];

end

endmodule

[표 7-3] shift register의 verilog 표현

Page 11: 제7장 Flip-Flops and Registers - :: Network Convergence and …mmlab.snu.ac.kr/courses/2006_logic_design_lab/07.pdf · 2006-09-04 · to parallel conversion을 담당한다. parallel

2006년 1학기 논리설계 실험

87

예비보고서

1-1 R-S latch의 진리표를 작성하고 NOR 게이트만 이용해서 구현하여라.

1-2 [시뮬레이션] 그리고 시뮬레이션을 통하여 동작을 확인하여라. Forbidden state 에서

의 동작에 대하여 시뮬레이터는 어떤 결과값을 내는지 확인하여라.

2-1 위에서 구현한 R-S latch를 이용해서 Level-sensitive D latch를 구현하여라.

2-2 [시뮬레이션] 위에서 구현된 Level-sensitive D latch를 schematic로 작성한 후 시

뮬레이션 하여라.

3-1 1.1에서 구현한 R-S latch를 이용해서 J-K latch를 구현하여라.

4-1 [시뮬레이션] Level Sensitive D latch 와 D Flip-flop 간의 차이를 시뮬레이션을 통

해 waveform 으로 확인하여라 (74LS74 vs 74LS75). 어느 경우에 level-sensitive latch

가 flip-flop 을 대치할 수 있을 것인가?

5-1 Clear입력을 지원하는 D flip-flop 4개를 이용하여 4-bit right shift register를 구현

하여오. 단, parallel input load가 가능해야 한다.

5-2 [시뮬레이션] 5.1의 schematic을 그리고, waveform viewer로 결과를 확인하여라.

5-3. [시뮬레이션] 1번과 4번 flip-flop 의 출력을 XOR 하고 이것을 shift register 의

shift-in 입력으로 사용하였을 때, shift register 의 shift-out 되는 출력의 파형을 확인하

여라. 어떤 규칙성이 있는가?

5-4. Serial-to-parallel, Parallel-to-serial conversion 이 사용되는 예를 3가지 조사하

여라.

6-1. [시뮬레이션] “실험 도움 자료” 절에서 주어진 VHDL 코드/Verilog 코드를 시뮬레이

션 하여라. 그리고, Universal shift register 가 되도록 코드를 수정하여라.

Page 12: 제7장 Flip-Flops and Registers - :: Network Convergence and …mmlab.snu.ac.kr/courses/2006_logic_design_lab/07.pdf · 2006-09-04 · to parallel conversion을 담당한다. parallel

2006년 1학기 논리설계 실험

88

실험 및 토론

1. 2-input NOR 게이트를 이용하여 R-S latch 를 구현하여라.

(가) 진리표를 실험을 통하여 확인하여라. Forbidden state 에서의 동작을 실험을 통하여

확인하여라.

(나) RS latch 의 입력을 묶고 함수 발생기를 이용하여 구형파를 인가한다. 클럭 입력과

RS latch 의 두 출력 Q, Q’ 의 값을 오실로스코우프를 이용하여 2개씩 각각 비교해

본다. 이로 인하여 알 수 있는 사실이 있다면 무엇인가?

(다) Debouncing switch 를 구현하고 파형을 관찰하여라.

2. 예비보고서 2-1 의 회로를 구현하고 실험으로 확인하여라.

3. 예비보고서 3-1 의 회로의 구현하고 실험으로 확인하여라.

4. D-latch와 D-FF에 대하여 다음을 실험으로 확인하여라.

(가) D-latch와 D-FF의 동작에 차이가 나타나도록 입력과 클럭을 인가하고 그 결과를 도

시하여라.

(나) D-FF의 입력과 클럭을 묶고 동시에 구형파 입력을 인가하여 보아라. 출력은 어떻게

되는가? Data sheet 를 조사하여 D-FF 과 D-latch 의 setup-time 과 hold-time 을

조사하여라.

(다) D-FF 과 D-latch 에 대하여 Setup-time 과 hold-time 의 개념을 간략히 설명하여

라.

5. 예비보고서 5-1 의 회로에 대하여

(가) 회로를 구현하고 동작을 확인하여라.

(나) 예비보고서 5-3 과 같이 연결을 하고 출력을 확인하여라.

(다) Parallel-to-serial converter 가 되는 것을 확인하여라. 어떻게 실험을 하면 좋을지

설명하고 그 결과를 구하여라.