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장 그 밖의 시스템 설계 끝