ETRI 과제 진행 사항

Download Report

Transcript ETRI 과제 진행 사항

ABEL
SOC 연구실
최지호
원천관 339-2호
([email protected]/219-2390)
2004/07/08
1/8
Comm DSP & SOC
PLD 란?
PLD (Programmable Logic Device)
PLD는 사용자가 필요로 하는 논리기능을 직접 program하여
사용할 수 있는 IC
PROM (Programmable Read Only Memory)
PLA (Programmable Logic Array)
PAL (Programmable Array Logic)
SPLD (Simple Programmable Logic Device)
CPLD (Complex Programmable Logic Device)
FPGA (Field Programmable Gate Array)
2/33
Comm DSP & SOC
PLD의 종류 (1)
PROM (Programmable Read Only Memory)
한 개의 디코더(AND 배열부분)와 메모리셀(Memory array)
의 이차원 배열(OR 배열)로 이루어짐
PLA(Programmable Logic Array)
PROM과 달리 AND 배열은 입력에 관한 어떤 논리곱을 표현
할 있고, OR 배열은 앞에서 구현된 논리곱들의 논리합을 구
현  SOP(Sum of Product) 구현에 잘 맞는 구조이나, 두개
의 배열을 통해서 신호가 전달되므로 delay를 가지는 단점
3/33
Comm DSP & SOC
PLD의 종류 (2)
PAL (Programmable Array Logic)
PAL은 PLA의 구조와 비슷하나 PAL은 AND 배열은 사용자
가 프로그램 할 수 있고, OR 배열은 고정  생산 비용이 비
교적 적게 들고, 속도가 빠름
SPLD(Simple Programmable Logic Device)
PAL과 거의 유사한 구조를 가지며 사용할 수 있는 게이트의
개수는 약 200개 정도
4/33
Comm DSP & SOC
PLD의 종류 (3)
CPLD(Complex Programmable Logic Device)
CPLD는 Altera에서 상업용으로 제품화
CPLD는 빠른 성능이나 정확한 타이밍의 예측이 필요로 하
는 곳에 적합
여러 개의 LAB (Logic Array Block)와 연결선인 PIA
(Programmable Interconnection Array)로 구성되며, LAB은
PAL과 같은 logic임
5/33
Comm DSP & SOC
PLD의 종류 (4)
FPGA (Field Programmable Gate Array)
CPLD와 달리 복잡한 LAB을 사용하지 않고 비교적 간단하
고 동일한 PLD가 여러 개 나열되는 구조
구현 가능한 게이트의 수와 구조의 복잡도가 가장 높음
6/33
Comm DSP & SOC
PLD를 이용한 회로 개발 과정
소스 파일 작성
(파일이름.abl)
롬 라이터를 사용
PLD에 회로 구현
컴파일
Target board
장착
파일이름.JED
PLD 프로그래밍 언어
ABEL (Advanced Boolean Expression Language)
PALASM
CUPL (University Compiler for Programmable Logic)
7/33
Comm DSP & SOC
ABEL의 기본 문법 (1)
예약어 : 대문자, 소문자, 대
소문자 혼용 가능  식별자
로 사용 불가능
식별자 : 프로그래머 정의
case
goto
property
declarations
in
state_diagram
device
istype
test_vectors
else
library
then
enable
if
state
end
macro
title
endcase
module
trace
endwith
node
truth_table
equations
options
when
flag
pin
With
fuses
8/33
Comm DSP & SOC
ABEL의 기본 문법 (2)
Logical Operator
Operator
Example
Description
Priority
!
!A
NOT : one’s complement
1
&
A&B
AND
2
#
A#B
OR
3
$
A$B
XOR
3
!$
A !$ B
XNOR
3
9/33
Comm DSP & SOC
ABEL의 기본 문법 (3)
Arithmetic Operator
Operator
Example
Description
Priority
-
-A
Two’s complement
1
-
A–B
Subtraction
3
+
A+B
Addition
3
*
A*B
Multiplication
2
/
A/B
Unsigned integer Division
2
%
A%B
Modulus : reminder form
2
<<
A << B
Shift A left by B bits
2
>>
A >> B
Shift A right by B bits
2
10/33
Comm DSP & SOC
ABEL의 기본 문법 (4)
Relational Operator (unsigned)
Operator
Example
Description
Priority
==
A == B
Equal
4
!=
A != B
Not equal
4
<
A<B
Less than
4
<=
A <= B
Less than or equal
4
>
A>B
Greater than
4
>=
A >= B
Greater than or equal
4
11/33
Comm DSP & SOC
사용하는 PLD의 핀 배치
P22V10
Pin 1 : Clock
Pin 12 : GND
Pin 24 : VCC
Pin 1, 12와 24를 제외하고 자유
롭게 입출력으로 사용하면 됨
 편의상 입력은 2번부터 순서
대로, 출력은 23번부터 순서대로
사용하는 것으로 함
12/33
Comm DSP & SOC
Typical structure of an ABEL program
Device를 알려준다.
Pin declaration
function을 정의한다
test_vectors –
입력과 출력을 예상하여 적는다
안 적어도 상관없다.
목적은 이 chip이 원하는 대로 동작하는지
시뮬레이션 해보기 위한 목적이다.
13/33
Comm DSP & SOC
Example ABEL Program 1
MODULE Example1
TITLE 'My Sample Program'
myExam1 DEVICE 'P22V10';
"INPUT PINS
X, Y, Z
PIN 2,3,4;
"OUTPUT PINS
D0,D1
PIN 23,22;
"SYMBOL DEFINE
H,L = 1,0;
EQUATIONS
D0 = Z & Y & X;
D1 = Z # Y # X;
TEST_VECTORS
([Z,Y,X]->[D0,D1])
[L,L,L]->[L,L];
[L,L,H]->[L,H];
[L,H,L]->[L,H];
[L,H,H]->[L,H];
[H,L,L]->[L,H];
[H,L,H]->[L,H];
[H,H,L]->[L,H];
[H,H,H]->[H,H];
END Example1
14/33
Comm DSP & SOC
Example ABEL Program 1
MODULE Example1
TITLE 'My Sample Program'
myExam1 DEVICE 'P22V10';
"INPUT PINS
X, Y, Z
PIN 2,3,4;
1. Module Name을 시작과 끝을 항상 일치시켜줌
 어떤 이름이든 관계는 없음
 편의상 자신이 짜는 프로그램과 관계
있는 것으로 함
"OUTPUT PINS
D0,D1
PIN 23,22;
"SYMBOL DEFINE
H,L = 1,0;
EQUATIONS
D0 = Z & Y & X;
D1 = Z # Y # X;
X
Y
Z
TEST_VECTORS
([Z,Y,X]->[D0,D1])
[L,L,L]->[L,L];
[L,L,H]->[L,H];
[L,H,L]->[L,H];
[L,H,H]->[L,H];
[H,L,L]->[L,H];
[H,L,H]->[L,H];
[H,H,L]->[L,H];
[H,H,H]->[H,H];
END Example1
15/33
3 input AND
D0
3 input OR
D1
Comm DSP & SOC
Example ABEL Program 1
MODULE Example1
TITLE 'My Sample Program'
myExam1 DEVICE 'P22V10';
"INPUT PINS
X, Y, Z
PIN 2,3,4;
1. Module Name을 시작과 끝을 항상 일치시켜줌
2. Title Name은 어떤 이름이든 상관 없음
"OUTPUT PINS
D0,D1
PIN 23,22;
"SYMBOL DEFINE
H,L = 1,0;
EQUATIONS
D0 = Z & Y & X;
D1 = Z # Y # X;
TEST_VECTORS
([Z,Y,X]->[D0,D1])
[L,L,L]->[L,L];
[L,L,H]->[L,H];
[L,H,L]->[L,H];
[L,H,H]->[L,H];
[H,L,L]->[L,H];
[H,L,H]->[L,H];
[H,H,L]->[L,H];
[H,H,H]->[H,H];
END Example1
16/33
Comm DSP & SOC
Example ABEL Program 1
MODULE Example1
TITLE 'My Sample Program'
myExam1 DEVICE 'P22V10';
"INPUT PINS
X, Y, Z
PIN 2,3,4;
"OUTPUT PINS
D0,D1
PIN 23,22;
"SYMBOL DEFINE
H,L = 1,0;
EQUATIONS
D0 = Z & Y & X;
D1 = Z # Y # X;
1. Module Name을 시작과 끝을 항상 일치시켜줌
2. Title Name은 어떤 이름이든 상관 없음
3. DeviceName이 출력파일의 이름
 저장하는 소스 파일의 이름과
일치 시키는 것이 좋음(편의상)
 DeviceName.JED
즉, 오류없이 올바로 수행되면 결과물로
myExam1.JED파일이 생성되며, 이 파일을
이용하여 롬라이터로 P22v10을 구울수 있음
TEST_VECTORS
([Z,Y,X]->[D0,D1])
[L,L,L]->[L,L];
[L,L,H]->[L,H];
[L,H,L]->[L,H];
[L,H,H]->[L,H];
[H,L,L]->[L,H];
[H,L,H]->[L,H];
[H,H,L]->[L,H];
[H,H,H]->[H,H];
END Example1
17/33
Comm DSP & SOC
Example ABEL Program 1
MODULE Example1
TITLE 'My Sample Program'
myExam1 DEVICE 'P22V10';
"INPUT PINS
X, Y, Z
PIN 2,3,4;
"OUTPUT PINS
D0,D1
PIN 23,22;
"SYMBOL DEFINE
H,L = 1,0;
EQUATIONS
D0 = Z & Y & X;
D1 = Z # Y # X;
1. Module Name을 시작과 끝을 항상 일치시켜줌
2. Title Name은 어떤 이름이든 상관 없음
3. DeviceName이 출력파일의 이름
 DeviceName.JED
즉, 오류없이 올바로 수행되면 결과물로
myExam1.JED파일이 생성되며, 이 파일을
이용하여 롬라이터로 P22v10을 구울수 있음
4. DeviceType을 적어준다. 여러 종류가 있을 수
있는데, 여기에선 P22v10을 사용
TEST_VECTORS
([Z,Y,X]->[D0,D1])
[L,L,L]->[L,L];
[L,L,H]->[L,H];
[L,H,L]->[L,H];
[L,H,H]->[L,H];
[H,L,L]->[L,H];
[H,L,H]->[L,H];
[H,H,L]->[L,H];
[H,H,H]->[H,H];
END Example1
18/33
Comm DSP & SOC
Example ABEL Program 1
MODULE Example1
TITLE 'My Sample Program'
myExam1 DEVICE 'P22V10';
"INPUT PINS
X, Y, Z
PIN 2,3,4;
"OUTPUT PINS
D0,D1
PIN 23,22;
"SYMBOL DEFINE
H,L = 1,0;
1. Module Name을 시작과 끝을 항상 일치시켜줌
2. Title Name은 어떤 이름이든 상관 없음
3. DeviceName이 출력파일의 이름
 DeviceName.JED
즉, 오류없이 올바로 수행되면 결과물로
myExam1.JED파일이 생성되며, 이 파일을
이용하여 롬라이터로 P22v10을 구울수 있음
EQUATIONS
D0 = Z & Y & X;
D1 = Z # Y # X;
4. DeviceType을 적어준다. 여러 종류가 있을 수
있는데, 여기에선 P22v10을 사용
TEST_VECTORS
([Z,Y,X]->[D0,D1])
[L,L,L]->[L,L];
[L,L,H]->[L,H];
[L,H,L]->[L,H];
[L,H,H]->[L,H];
[H,L,L]->[L,H];
[H,L,H]->[L,H];
[H,H,L]->[L,H];
[H,H,H]->[H,H];
5. P22v10에 대해 Input Output pin declaration
을 한다. 아무렇게나 할 수 있는 것이 아니고
datasheet를 참고하여 작성
 교재의 경우 Output Pin에는 istype ‘com’을
기술하나 제공한 컴파일러는 인식하지 못함
END Example1
19/33
Comm DSP & SOC
Example ABEL Program 1
20/33
Comm DSP & SOC
Example ABEL Program 1
21/33
Comm DSP & SOC
Example ABEL Program 1
22/33
Comm DSP & SOC
Example ABEL Program 1
MODULE Example1
TITLE 'My Sample Program'
myExam1 DEVICE 'P22V10';
"INPUT PINS
X, Y, Z
PIN 2,3,4;
6. Symbol을 정의. 목적은 readability를 개선하기
위함이다. 사용자의 기호에 맞게 정의
 꼭 정의해서 사용하지 않아도 관계는 없음
정의하지 않을 경우 0과 1을 사용
"OUTPUT PINS
D0,D1
PIN 23,22;
"SYMBOL DEFINE
H,L = 1,0;
EQUATIONS
D0 = Z & Y & X;
D1 = Z # Y # X;
TEST_VECTORS
([Z,Y,X]->[D0,D1])
[L,L,L]->[L,L];
[L,L,H]->[L,H];
[L,H,L]->[L,H];
[L,H,H]->[L,H];
[H,L,L]->[L,H];
[H,L,H]->[L,H];
[H,H,L]->[L,H];
[H,H,H]->[H,H];
END Example1
23/33
Comm DSP & SOC
Example ABEL Program 1
MODULE Example1
TITLE 'My Sample Program'
myExam1 DEVICE 'P22V10';
6. Symbol을 정의. 목적은 readability를 개선하기
위함이다. 사용자의 기호에 맞게 정의
"INPUT PINS
X, Y, Z
PIN 2,3,4;
7. Equation을 기술. D0는 X and Y and Z이고
D1은 X or Y or Z이다.
& 기호는 ‘logical and’
# 기호는 ‘logical or’
"OUTPUT PINS
D0,D1
PIN 23,22;
"SYMBOL DEFINE
H,L = 1,0;
EQUATIONS
D0 = Z & Y & X;
D1 = Z # Y # X;
TEST_VECTORS
([Z,Y,X]->[D0,D1])
[L,L,L]->[L,L];
[L,L,H]->[L,H];
[L,H,L]->[L,H];
[L,H,H]->[L,H];
[H,L,L]->[L,H];
[H,L,H]->[L,H];
[H,H,L]->[L,H];
[H,H,H]->[H,H];
END Example1
24/33
Comm DSP & SOC
Example ABEL Program 1
MODULE Example1
TITLE 'My Sample Program'
myExam1 DEVICE 'P22V10';
6. Symbol을 정의. 목적은 readability를 개선하기
위함이다. 사용자의 기호에 맞게 정의
"INPUT PINS
X, Y, Z
PIN 2,3,4;
7. Equation을 기술. D0는 X and Y and Z이고
D1은 X or Y or Z이다.
& 기호는 ‘logical and’
# 기호는 ‘logical or’
"OUTPUT PINS
D0,D1
PIN 23,22;
"SYMBOL DEFINE
H,L = 1,0;
EQUATIONS
D0 = Z & Y & X;
D1 = Z # Y # X;
TEST_VECTORS
([Z,Y,X]->[D0,D1])
[L,L,L]->[L,L];
[L,L,H]->[L,H];
[L,H,L]->[L,H];
[L,H,H]->[L,H];
[H,L,L]->[L,H];
[H,L,H]->[L,H];
[H,H,L]->[L,H];
[H,H,H]->[H,H];
END Example1
8. Test_Vectors를 기술. 이 블록은 빼도 전혀
상관은 없다. 다만, 이 chip이 올바로 동작하는지
확인하기 위해서 기술.
이 예에서는 모든 가능한 입력에 대해서 출력을
기술해 주고 있음.
25/33
Comm DSP & SOC
Structure of ABEL truth table
test_vector에서 .X.가 들어간 value는 don’t care
설계한 회로의 정확한 동작을 검증하기 위해 Truth_table은 모
든 경우를 입력해 주는 것이 좋으나 그렇지 못한 경우 가급적 많
이 기술해 주는 것이 좋음
26/33
Comm DSP & SOC
Example ABEL Program 2
4bit 2by1 Mux
"MUX2TO1.ABL 프로그램
MODULE MULTIPLEXER
TITLE 'Quadruple 2-to-1 line MULTIPLEXER'
MUXTTO DEVICE 'P22V10';
“INPUT PINS
A3,A2,A1,A0, B3,B2,B1,B0, S PIN 2,3,4,5,6,7,8,9,10;
"OUTPUT PINS
Y3,Y2,Y1,Y0 PIN 23,22,21,20;
"Variable
A = [A3, A2, A1, A0];
B = [B3, B2, B1, B0];
Y = [Y3, Y2, Y1, Y0];
SEL =[S,S,S,S];
EQUATIONS
Y = A & !SEL # B & SEL;
END MULTIPLEXER
27/33
Comm DSP & SOC
ABEL compiler
Web 에 올린 ABEL 컴파일러 다운로드 및 압축 풀기
ABEL.zip
가급적 최상위 경로에 압축 푸는 것이 경로 찾기 쉬움 (예) c드라이
브 바로 밑에
28/33
Comm DSP & SOC
ABEL compiler
윈도우 시작 메뉴의 ‘실행’ 메뉴 실행  cmd 입력
도스창에서 ABEL.zip 압축을 해제한 경로로 이동
“cd ..”입력 (한폴더 상위로 이동) “cd ..” 입력
 “cd ABEL”입력
(ABEL 폴더로 이동)
 “dir/w” 입력
(폴더에 있는 파일 display)
29/33
Comm DSP & SOC
ABEL compiler
설계한 코드 컴파일
ABEL.BAT 배치 파일에 컴파일 설정을 해 놓았음
ABEL DeviceName  ABEL 확장자는 입력하지 않음
컴파일 실행 결과
DeviceName.DOC
DeviceName.JED
DeviceName.LST
DeviceName.OUT
DeviceName.SIM
 5개 파일 생성
30/33
Comm DSP & SOC
ABEL compiler
DeviceName.DOC : Document 파일
DeviceName.JED : 롬파이터로 구울 파일
DeviceName.SIM : 시뮬레이션 결과 파일
자신이 설정한 테스트 벡터에 대해서 모두
pass하면 오류 없이 설계한 것임
31/33
Comm DSP & SOC
ABEL compiler
에러 발생
5개의 파일이 모두 생성되지 않음
아래와 같이 에러라고 표시됨
구체적으로 어디에 에러가 났다고 표시해주는 경우도 있으
나 단순히 에러라고만 표시하는 경우가 더 많음  직접 분
석해서 찾아야 함
32/33
Comm DSP & SOC