VHDL을 이용한 디지털 회로 설계

Download Report

Transcript VHDL을 이용한 디지털 회로 설계

그 밖의 시스템 설계
IT CookBook, VHDL을 이용한 디지털 회로 설계
학습목표
시스템 레벨의 설계 절차
여러 응용 회로 예로 시스템 레벨 설계 기법 이해
목차
1. 직병렬 곱셈기
2. 병렬 곱셈기
3. 곱셈-누적 회로
4. 디지털 필터
5. 신경회로망
Section 12.1 직병렬 곱셈기
 serial-parallel multiplier
• a(직렬 입력 벡터) x b(병렬 입력 벡터)
- a는 LSB부터 한 비트씩 차례로 입력됨
• 사용된 부품들:
a
a
and_2, reg, fau, pipe
b
d
clk
q
y
rst
and_2
reg
q
b
a
b
s
cin
cout
fau
[그림 12-1] 직병렬 곱셈기
clk
rst
pipe
Section 12.2 병렬 곱셈기
 parallel multiplier
• a(병렬 입력 벡터) x b(병렬 입력 벡터)
- 모든 입력 벡터가 동시에 인가되므로,
레지스터 불필요
a
a
b
b
y
and_2
s
cin
cout
fau
[그림 12-3] 병렬 곱셈기
Section 12.2 병렬 곱셈기
 parallel multiplier: 더 간단한 방식
• 기정의된 “*” 연산자 이용
[그림 12-5] 기정의된“*”연산자로
도출된 병렬 곱셈기
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
------------------------------------------------LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
------------------------------------------------ENTITY multiplier3 IS
PORT ( a, b: IN SIGNED(3 DOWNTO 0);
prod: OUT SIGNED(7 DOWNTO 0));
END multiplier3;
------------------------------------------------ARCHITECTURE behavior OF multiplier3 IS
BEGIN
prod <= a * b;
END behavior;
-------------------------------------------------
Section 12.3 곱셈-누적 회로
 MAC(Multiplier-Accumulate)
• 두 값을 곱한 다음, 이전의 누적 값에 이 결과 값을 더하고, 향후의 누적
값을 위해 레지스터에 재저장
• 응용 분야
- 디지털 필터, 신경회로망, 데이터 양자화기 등 상호 연결이 많은 디지털 시스템에 유용
• 주의할 점
- 계산 값이 너무 클 수 있으므로 overflow 검사 필요
- overflow가 발생하면 가장 큰 값(음수 또는 양수)을 그 결과에 할당
- (예) 8 비트의 signed integer N의 범위 : -128 ≤ N ≤ 127
65 + 65 = 130은 그 결과가 overflow이므로 가장 큰 양수(127)로 잘라 저장
(-70) + (-70) = -140은 그 결과가 overflow이므로 가장 큰 음수(-128)로 잘라 저장
[그림 12-6] MAC 회로
Section 12.4 디지털 필터
 Digital Filter
• 디지털 신호 처리(DSP) 분야의 핵심
• FIR(Finite Impulse Response) Filter 방정식
- 여기서, FIR 필터 계수 ck = bk/a0
- 이 방정식을 하드웨어로 구현한 회로 블록도
• 장단점
[그림 12-8] 4개의 계수를 가진 FIR 필터
D 는 FF,
는 곱셈기, + 는 덧셈기
[그림 12-9] FIR 필터의 RTL 표현
Section 12.5 신경회로망
 Neural Network(NN)
• 특징
- 매우 병렬적이고 상호 연결이 많아 하드웨어가 많이 소요되므로, 조심스러운 접근 필요
• Feedforward NN
(a) 3개의 층으로 구성된 FF NN
[그림 12-12] FF NN
(b) 3개의 3-입력 신경세포로 각 층
xi = i번째 입력, wij = 입력 i와 신경 세포 j 사이의 가중치, yj = j번째 출력
y1 = f(x1.w11 + x2.w21 + x3.w31)
y2 = f(x1.w12 + x2.w22 + x3.w32)
y3 = f(x1.w13 + x2.w23 + x3.w33)
여기서, f()는 할성화 함수(선형 임계 함수, sigmoid 함수 등)
Section 12.5 신경회로망
 [그림 12-12]의 NN에 대한 링 구조(한 층의 NN)
[그림 12-13] NN 구현을 위한 링 구조
Section 12.5 신경회로망
 또 다른 방식의 NN
[그림 12-14] 가중치를 위한 단 한 개의 입력을 가진 NN 구현
12장 그 밖의 시스템 설계 끝