tb_52507_9-2 - "PLDWorld.com"

Download Report

Transcript tb_52507_9-2 - "PLDWorld.com"

쉬프트 레지스터 용어
• Shift Register: N-bit 데이터를 직렬 혹은 병렬로 N-bit 레지스터에 이동
저장하는 동기식 순차회로.
• Left Shift: 쉬프트 레지스터에서의 데이터의 이동이 오른쪽에서 왼쪽으로
(MSB방향으로) 이동하는 동작으로 한 클록 펄스마다 한 비트씩 이동한다.
• Right Shift: 쉬프트 레지스터에서의 데이터의 이동이 왼쪽에서 오른쪽으로
(LSB방향으로) 이동하는 동작으로 한 클록 펄스마다 한 비트씩 이동한다.
• Rotation: 마지막 플립플립의 출력이 처음 플립플롭의 입력과 연결되어 직렬
쉬프트(오른쪽 또는 왼쪽)하는 동작으로, 데이터가 계속적으로 순환한다.
Fig. 9.57
316
양방향 쉬프트 레지스터
317
병렬 로드를 가진 쉬프트 레지스터
318
Bi-SR
shift_left
shift_right
PL-SR
319
유니버셜 쉬프트 레지스터
01
11
10
00
320
유니버셜 쉬프트 레지스터의 시뮬레이션
sht_right
sht_left
par_load
321
쉬프트 레지스터 VHDL
 Structured VHDL Design
• 내부 신호들을 이용하여 미리 설계된 컴포넌트들을 연결시키는
VHDL 설계기법.
• LSR, RSR과 같은 상이한 형태를 구성하기 위해 DFF primitive들을
사용한다.
• DFF Primitive Port Map은 D, CLK, Q이다.
 DataFlow Design
• 입력과 출력사이의 관계를 정의하기 위해 부울식을 사용하는
VHDL 설계 접근방법.
• Entity는 알테라 라이브러리가 필요 없는 것을 제외하고는 구조적
접근방법과 동일하다.
• 레지스터 Qi 는 여전히 ‘Buffer’로 선언된다.
 Behavioral design
• 설계를 행위적으로 기술하는 VHDL 설계 기법.
322
Structured VHDL I
(BUFFER 사용)
323
Structured VHDL II
(signal 사용)
324
Dataflow VHDL
concurrent
325
Behavioral VHDL
326
Ex. 9.15 Bidir. SRG VHDL
327
Ex. 9.15 Bidir. SRG Simulation
328
Generic Width Shift Register
• VHDL 컴포넌트의 엔티티 선언에서의
Generic 절(clause) 은 컴포넌트가 사례화될
때 규정될 수 있는 파라미터들을 열거한다.
• 변수 ‘Width’를 규정하기 위해, 엔티티내의
Generic 절을 사용하라. 일반적인 형식은
GENERIC(Clause := Value).
• 4-Bit 쉬프트 레지스터에 대해서는,
GENERIC(Width: Positive := 4).
329
GENERIC절을 사용한 4-bit Shit Right 레지스터
330
GENERIC절을 사용한 8-bit Shit Right 레지스터
(4-bit SRG를 사례화)
331
8-bit Universal SRG
CONV_STD_LOGIC_VECTOR(value, number_of_bits)
다른 표현으로는
q <= (others => ‘0’); -- q = 00000000; -- aggregate
q <= (‘0’, ‘1’ others => ‘0’); -- q = 01000000
332
16-bit Universal SRG
(8-bit universal SRG를 사례화)
333
LPM 쉬프트 레지스터
• lpm_shiftreg라고 불리는 프로그램이
가능한 LPM 쉬프트 레지스터의 사용을
허용한다.
• LPM_WIDTH, LPM_DIRECTION과 같은
여러 가지 옵션 파라미터들을 가지고 있다.
(표 9.16 참조)
• 설계 접근방법은 구조적 VHDL 방법으로
설계한 카운터와 유사하다.
334
8-bit LPM SRG(Shift left)
335
8-bit LPM 쉬프트 레지스터의 시뮬레이션(Shift left)
Buried nodes
336
8-bit LPM SRG(Shift right)
337
8-bit LPM 쉬프트 레지스터의 시뮬레이션(Shift Right)
338
8-bit LPM SRG(shift left, pl, aclr)
s
q_out(7)과 serial_out은 동일
339
8-bit LPM SRG Simulation(shift left, pl, aclr)
AA
340
쉬프트 레지스터 카운터(Ring Counters)
• 기본적인 링 카운터는 피드백 루프를 가진 D-FF으로 구성된다.
• 리셋이나 프리셋을 사용하여 초기 데이터가 쉬프트 레지스터로 로드된다.
• 카운터는 “1000” 또는 “0111” 의 로딩 값에 따라서 1 또는 0이 순환한다.
• 링 카운터의 모듈러스는 고유상태의 최대 값으로 정의된다.
• 모듈러스는 초기 로드 값에 의존한다: {1000, 0100, 0010, 0001} = Mod4,
{1010, 0101} = Mod2.
• 일반적으로 N개 플립플롭으로 구성되는 링 카운터는 N-상태를
가진다.(이진 카운터의 2N 과는 다르다.)
• 디코딩 회로가 필요 없다(장점).
341
쉬프트 레지스터 카운터(Johnson Counters)
• Q0가 아닌 !Q0(Complement)가 D3에 피드백 되는 점을 제외하고는 링
카운터와 동일하다.
• 데이터가 보수 혹은 “twist”되므로 “Twisted Ring Counter”라 불린다.
• 일반적으로 카운터는 클리어 동작에 의해 “0000”으로 초기 화 된다.
• 일반적으로 링 카운터보다 더 많은 상태를 가진다.
• 카운터의 진행순서= {0000, 1000, 1100, 1110, 1111, 0111, 0011, 0001}.
• N-비트 존슨 카운터의 최대 모듈러스는 2N이다.
• 카운터 디코딩을 위해 단지 2-input AND(or NAND) 게이트가 요구된다.
(표 9.18 & 9.19).
342
4-bit Johnson counter with a synchronous clear
343
8-bit Johnson counter with a synchronous clear
344
8-bit 존슨 카운터의 시뮬레이션
345
Summary
 Counter는 behavioral description이나 LPM 에서 컴포넌트를 사용하는
Structural description으로 설계될 수 있다.
 Behavioral counter design은 process 문을 사용한다. 프로세서 문 내에
if문은 클럭 이벤트나 동기/비동기 입력들을 감지한다.
(clk’EVENT and clk =‘1’)
 Variable는 := 연산자로 할당한다.
 비동기 입력은 process의 sensitivity list내에 포함되고 클럭보다 먼저
평가된다.
 동기입력은 process의 sensitivity list내에 포함되지 않고 클럭보다
나중에 평가된다.
 VHDL component는 컴포넌트가 사례화 될 때 규정되는 parameter를
가지고 생성될 수 있다. 이들 parameter들은 component entity 선언에서의
GENERIC 절에서 열거된다.
346