PAL (1) 실험 예비, 결과 보고서

1. PAL이란?

2. PALASM 사용법 / PAL의 문법

3. 예제 Simulation

4. ROM Writer 사용법

5. 회로 구성

6. 검토 및 토의

예비보고서 : 이 Manual에서 용어들을 자신의 언어로 요약하여 정리

1. PAL이란 무엇인가? 부분의 문제를 정리

결과보고서 : 질문) 및 검토 문제를 정리하여 결과로 제출.

1. PAL이란 무엇인가?

PAL(Programmable Array Logic)이란 PLD(Programmable Logic Device) 중의 하나로서 AMD(현재의 Vantis)社에서 만든 제품의 상표명이다. 현재는 많은 제품과 개발 툴이 지원되고 있다.

PLD는 AND, OR 게이트 등 논리 조합 회로를 임의로 설계해서 입력시켜서 여러 개의 TTL 칩을 사용하는 것과 같은 효과를 가질 수 있고, 또한 출력 핀으로 지정된 핀에서는 D-FlipFlop이 내장되어 있어서 단순한 조합 논리회로를 사용할 것인지, 시간 개념이 첨가된 플립플롭 회로를 사용할 것인지 결정할 수 있다. 일종의 LATCH처럼 사용할 수 있는 것이다.

다음은 우리가 사용하는 PALCE20V8H-4에 관한 일반적인 설명이다.

PALCE20V8는 저전력, 고속, 전기적인 설정 삭제 가능한 진보된 PAL디바이스이다. 이 칩의 매크로셀은 표준적인 장치 구조이다. PALCE20V8은 GAL20V8과 호환되며, PAL20R8으로도 대체된다.

PALCE20V8은 쉽고 효율적으로 복잡한 논리회로를 구현할 수 있는 친숙한 Sum Of Product (AND-OR)구조를 이용할 수 있다. 조합 논리의 다중 레벨은 sum of product 형태로 단순화될 수 있고, 매우 많은 입력 핀의 이점을 살릴 수 있다. 방정식(Equation)은 전기적으로 삭제 가능한 AND회로 부동 게이트 셀을 통한 장치로 프로그램될 수 있다.

고정 OR 어레이는 8개의 AND 항을 출력 핀 1개에 설정할 수 있다. 이 AND 항의 OR 합은 출력 매크로셀로 연결된다. 각각의 매크로셀은 Active Low, High 두 가지로 Registered와 Combinatorial 모드로 프로그램 할 수 있다. 출력설정은 각 매크로셀의 2개의 전역 비트와 1개의 개별 비트로 제어되는 4개의 멀티플렉서를 통해서 결정된다.

각 출력 핀의 모드를 아래와 같이 나타내었다.

질문) Registered와 Combinatorial출력과 Active Low, High를 구분하여 설명하시오.

다음에 실제 입력 핀에서 출력까지의 Logic Diagram의 일부(계속 비슷한 패턴임)를 나타내었다.

질문) 만약 I/O7 에 I1 * /I3 * I5 * /I8 가 연결되어 있다면 어디 어디가 연결되어야 할 지 그림의 8-입력 OR 게이트의 Pattern에 표시하시오

아래에 칩 외형을 나타내었다.

질문) 아래의 외형도를 보고 다음의 조건을 만족하는 부품배치도를 그리시오.

Vcc = 5V DC, GND = 0V, I1 ~ I4 : Open / Short Switch ( On : Vcc, Off : GND )

I/O0 ~ I/O3 : Active Low LED ON

2. PALASM의 사용법

PALASM이란 간단한 논리식으로 AND-OR 게이트 조합을 나타낸 것으로, PAL에 쓸 데이터 파일을 만들기 위해서 사용하는 일종의 프로그램이다. 먼저 이 프로그램을 실행하는 방법을 알아보고 다음으로 그 문법을 간단히 알아본다.

먼저 처음 실행을 시키면 다음과 같이 나오게 된다. 아무키나 누르면 넘어간다.

먼저 File 메뉴를 설명하면 다음과 같다

B : 새로운 PAL의 디자인

D : 기존의 디자인

불러오기

M : 디자인 파일 합치기

C : 현재 디렉토리 변경

D : 컴파일시 생성되는

파일들 중 필요없는

것을 지우는 옵션

G : 잠시 Dos로 돌아감

왼쪽과 같이 새로 시작할 디자인 파일의 이름을

지정하고(확장자는 PDS)

F10을 누르면 다음으로 넘어가게 된다.

Title : 각기 해당하는

내용을 쓴다.

Pattern :     〃

Revision :    〃

Author :      〃

Company :     〃

Chip : 자동 설정됨

아래를 보면 Device를 설정하는 모습이 나와 있다.

우리가 실험에서 사용할

칩은 PALCE20V8이다.

이것은 CMOS Electrical Erasable 한 PAL이다.

왼쪽 그림과 같이

각 PIN을 설정해 준다.

Number는 Chip의 핀

다리 번호로 외형도를

참고하면 된다.

(주의 : 핀마다 특징이

있다.)

NAME은 Boolean Equation에서 사용할 Signal의 이름이다.

Storage : 시간개념이 없는 조합 논리회로는 Combinatorial, 플립플롭을 사용하는 경우는 Registered로 된다.

다 마쳤으면 F10을 누른다. 그러면 다음과 같은 화면이 나타날 것이다.

다음 화면에서는 에디터에서 이미 TITLE에서 PIN 정의까지 위의 작용으로 자동으로 코딩되어 있는 것을 나타내 준다.

PageDown을 눌러

아래 EQUATION이 있는 곳을 한번 보자.

그리고 빈칸에 쓰여진 대로 하게되면 A, B, C, D, E, F를 입력으로 갖는 AND와 OR의 조합 논리회로의 예제가 된다. 아마 금방 진리표를 그릴 수 있는 이해가 충분히 될 것이라고 생각한다.

그리고 SIMULATION에는 파악해야 할 SIGNAL을

TRACE_ON으로 설정하고

SETF는 각각의 SIGNAL을 HIGH로 셋팅하는 시뮬레이션 전용 명령이다.

따라서 /A 라고 하면 A에는 LOW가 입력된다.

EDIT 메뉴는 다음과 같다

T : 텍스트 파일 편집

주로 PDS 디자인파일

S : ORCAD SCHEMATIC

파일

C : 설명 그대로

위에서 모든 것을 틀림 없이 입력하였다면,

RUN 메뉴에 가서 컴파일과 시뮬레이션을 실행시켜보자.

컴파일은 PAL 칩에 직접 들어갈 JEDEC 파일을 생성하는 것이고,

시뮬레이션은 이 파일을 바탕으로 예상되는 결과를 LOW, HIGH로 분류해 두는 것이다.

메뉴가 좌측과 같이

나오면 그대로 F10을

눌러 진행한다.

마찬가지로 진행한다.

그러면 좌측과 같은

결과가 나타날 것이다.

그리고 아래 화면에서

Simulations을 해 보면

아래 두 화면을 금방 실행할 수 있을 것이다.

3. 예제 시뮬레이션

목표 : 다음과 같은 예제를 입력하여 성공적으로 시뮬레이션을 할 수 있다.

1) 모터 구동 회로

이번에는 Full Step Stepping Motor Controller를 PAL20V8에 넣는 것을 알아본다.

먼저 COMBINATORIAL모드와 REGISTERED모드 두 가지를 알아보자.

먼저 전자는 CLOCK에 상관없이 바로바로 입력의 연산에 의해 출력 핀의 상태가 결정되는 모드이다. 그리고 후자는 CLOCK이 LOW에서 HIGH로 변할 때, POSITIVE EDGE TRIG에서 출력 핀의 다음 상태가 결정되는 모드이다.

PAL20V8은 이 두 가지를 다 지원하고, 각각 사용이 가능하며 혼용도 가능하다. 전자는 앞 시간에 한 Memory Decoder에서 CLOCK등에 상관없이 A15 A14 A13 A12 A11 A10 A9 A8 의 변화에 따라 바로 바로 변하는 것을 예로 들 수 있다. 그리고 REGISTERED모드는 프로그램 구현 방법이 다양하다. 이번에 하는 방식이 가장 단순한 방식이다. 그리고 다른 방식은DIGITAL에서 있듯이 밀리머신, 무어머신 등을 들 수 있겠다.

PAL20V8의 1번 핀은, 출력 핀에 연결된 D-FF의 Clock핀에 연결될 수 있다. 프로그램을  보면 알겠지만  "PIN 1 CLOCK  COMBINATORIAL"이다.

기본은 COMBINATORIAL이므로 위의 것은 "PIN 1 CLOCK" 이라고 써도 된다. 그리고 Clock은 내부적으로 1번 핀 하나만 연결할 수 있다. 다시 말해 출력 핀 A의 Clock은 CLKA에, 출력 핀 B의 Clock은 CLKB에 연결을 하지 못한다. 기본으로 Clock핀은 1번 핀에만 붙을 수 있는 것이다. 주의할 사항이다. 물론 CLKA와 CLKB의 PIN 번호를 "?"로 하면 시뮬레이션은 되지만 PAL에 구울 수 있는 JEDEC파일은 만들 수 없다.

DIRA는 말 그대로 방향이다. 그리고 GND와 VCC는 안 적어 줘도 알아서 처리해준다. A0..3은 실제 파형이 나가는 출력단자이다.

EQUATIONS 블럭을 보면 /ENABLE이 되면 A0..3은 모두 LOW가 된다.

그리고 이 상태에서 ENABLE로 되면 /A0 * /A1 * /A2 * /A3 에 의해 A0 와 A2가 HIGH로 A1과 A3는 /A0, /A2인 LOW로 된다. 초기화가 자동으로 되는 것이다. 단계 단계 넘어가는  것은 시뮬레이션을 돌려 파형을 보면서 해보라.

질문) 스테핑 모터 구동 시에 Bipolar구동과 Unipolar 구동이란 무엇인지 설명하시오.

그리고 조금의 팁을 말하자면 PIN정의에서 출력핀의 MODE를 정하지 않으면 EQUATIONS블럭에서의 연산자에 의해 자동으로 그 MODE가 결정된다.

TITLE    Stepper Controller

PATTERN  XTAL297

REVISION 1.0

AUTHOR   ChoiYH73 ( Choi Yong Hee 92 Ajou Univ. )

COMPANY  X-TAL CONTROL ENG. AJOU UNIV.

DATE     11/29/94

CHIP XTAL297 PALCE20V8

;///////////////////////////////////////////////////////////////

;                DEFINE PIN NAME

;///////////////////////////////////////////////////////////////

PIN  1          CLOCK           COMBINATORIAL

PIN  4          DIRA            COMBINATORIAL

PIN  6         /ENABLE          COMBINATORIAL

PIN  12         GND

PIN  19         A0              REGISTERED

PIN  20         A1              REGISTERED

PIN  21         A2              REGISTERED

PIN  22         A3              REGISTERED

PIN  24         VCC

;///////////////////////////////////////////////////////////////

;                  EQUATIONS

;///////////////////////////////////////////////////////////////

EQUATIONS

A0 :=

A2       *  DIRA * ENABLE

+                    A3 * /DIRA * ENABLE

+ /A0 * /A1 * /A2 * /A3         * ENABLE

A1 :=

A3 *  DIRA * ENABLE

+              A2       * /DIRA * ENABLE

A2 :=

A1             *  DIRA * ENABLE

+  A0                   * /DIRA * ENABLE

+ /A0 * /A1 * /A2 * /A3         * ENABLE

A3 :=

A0                   *  DIRA * ENABLE

+        A1             * /DIRA * ENABLE

;///////////////////////////////////////////////////////////////

;                 SIMULATION

;///////////////////////////////////////////////////////////////

SIMULATION

TRACE_ON ENABLE DIRA A0 A1 A2 A3

SETF /ENABLE DIRA

CLOCKF CLOCK

SETF ENABLE

CLOCKF CLOCK

FOR I := 1 TO 10 DO

BEGIN

CLOCKF CLOCK

END

SETF /DIRA

FOR I := 1 TO 10 DO

BEGIN

CLOCKF CLOCK

END

SETF DIRA /ENABLE

FOR I := 1 TO 10 DO

BEGIN

CLOCKF CLOCK

END

SETF /DIRA

FOR I := 1 TO 10 DO

BEGIN

CLOCKF CLOCK

END

TRACE_OFF

4. ROM Writer 사용법

먼저 c:\uni 라는 디렉토리에서 Access.exe라는 프로그램을 실행시키면 다음과 같은 초기화면이 뜬다.

여기서 Device 메뉴를 선택하면 다음 화면이 나타난다.

여기서 6. PLD를 선택하고

Mfr.은 1번 AMD를

Device Type은 59번 PALCE20V8H/4를 선택한다.

그러면 다음과 같은 화면이 나오게 된다.

-GAL20V8H Universal   Programmer

MODEL: PC Based

GAL2

-----------  Main Menu  -------------

1. DOS SHELL

2. Load JEDEC file to buffer

3. Save buffer to disk

4. Edit buffer    7. Display buffer

5. Change I/O base address

T. Type select    M. Mfr. select

B. Blank check    D. Display

P. Program        A. Auto(B&P&V&S)

R. Read           V. Verify

E. Erase          S. Security fuse blow

Q. Quit

--------------------------------------

Select function ?

먼저 위에 숫자로 메뉴가 나오는 것 중에서

2. Load JEDEC File 메뉴가 있다.

이 메뉴로 들어가서 우리가 전에 작업했던 PALASM \ WORK \ 에 있는 ?.JED 파일을 불러온다.

먼저 B. Blank Check를 한다.

에러가 발생하면

S. Security fuse blow

E. Erase

P. Program (한번의 OK뒤 에러는 무시)

V. Verify

에러가 발생하지 않으면

P. Program (한번의 OK뒤 에러는 무시)

V. Verify

그리고  Q. Quit 하여 ROM Writer 프로그램에서 빠져나가면 사용이 끝난 것이다.

5. 회로 구성

1) Specification : 7-Segment Driver

7-Segment는

a

□□□□

f □    □b

□□□□

e □  g □c

□□□□

d

와 같이 되어 있다.

&**&	0 - 9 까지 Dip Switch로 BCD Code를 입력하면 그 BCD Code를 7-segment LED에 Decimal 숫자로 표시해 주는 것 (관련 자료 : TTL의 74LS47)

Ex) 0 : 모두 꺼짐

1 : b, c 만 켜짐 ...

&**& 중요) 7 SEGMENT LED는 COMMON-ANODE (공통 Vcc) 형을 사용한다.

2) 필요한 부품

PALCE20V8H, Dip Switch, 7-Segment LED, Array 저항(3.3Kohm), Wire,

Bread Board, Power Supply

3) 회로도 (각자 채워넣기, 재구성)

4) Source Code (각자 채워넣기, 재구성)

단, SIMULATION 부분만 주어진다. 입력 A0 ~ A3는 각자 임의로 NAME 변경 가능!!

SIMULATION

TRACE_ON A0 A1 A2 A3 A B C D E F G

SETF	/A0 /A1 /A2 /A3

SETF	A0 /A1 /A2 /A3

SETF	/A0 A1 /A2 /A3

SETF	A0 A1 /A2 /A3

SETF	/A0 /A1 A2 /A3

SETF	A0 /A1 A2 /A3

SETF	/A0 A1 A2 /A3

SETF	A0 A1 A2 /A3

SETF	/A0 /A1 /A2 A3

SETF	A0 /A1 /A2 A3

TRACE_OFF

힌트) 입력의 10가지 상태를 각각 STRING 문을 사용하여 A,B, … , G 가 각각 어떤 상태일 때 점등되는지를 SUM-OF-PRODUCT 형식으로 나타내도록 한다.

6. 검토 및 토의

1) 여기서 사용하는 PAL 칩과 다른 모델(예를 들면 22V10 같은)의 핀 배치를 인터넷 사이트 www.vantis.com에서 참조하여 설명하시오.

2) 그림으로 설명한 PALASM 사용시의 예제에 따른 출력파형을 저장하는 파일은

testpal.trf라는 파일이다. 이 파일을 첨부하여 결과가 예상한 논리식의 결과와 일치하는지 확인하고 기록하시오.

3) Motor 회로도 2), 3)과 마찬가지로 결과를 정리하시오.

4) 7 SEGMENT 회로의 SIMULATION 논리파형(H, L)이 어떻게 나왔는지 출력파형을 표시하라.

5) 만약 7-SEGMENT LED를 COMMON-CATHODE 형을 사용할 경우, SOURCE CODE와 시뮬레이션 파형을 나타내시오.