MAX+PLUSII TOOL - Here is "PLDWorld.com"

Download Report

Transcript MAX+PLUSII TOOL - Here is "PLDWorld.com"

MAX+PLUS II 개요
43
단원목차
1. PLD란 무엇인가?
2. MAX+PLUS II를 사용하여 PLDs를 프로그
래밍
3. 그래픽 설계 파일(Graphic Design File)
4. MAX+PLUS II 파일의 컴파일
5. 계층적 설계
6. 문자 설계 파일(VHDL)
7. 물리 디자인 생성
44
Programmable Logic Device (PLD)
• 미리 정해지지 않은 로직 기능으로
제공된다.
• 임의의 디지털 로직 기능을 구현하기
위해서는 사용자에 의해 프로그래밍 된다.
• 설계와 프로그래밍을 위해서는 특별한
소프트웨어가 요구된다.
45
PLDs 사용 시의 장점
• 사용되는 칩의 수를 줄일 수 있다.
(예4.1 참조)
• 사용되는 칩의 종류를 줄일 수 있다.
• 설계과정이 빨라진다.
• 설계의 융통성이 있다.
46
Complex PLD (CPLD)
• A PLD that has several programmable
sections with internal interconnections
between the sections.
• In effect, CPLD is several interconnected
PLDs on a single chip.
47
PLD 프로그래밍
• 특별한 컴퓨터 소프트웨어가 요구된다.
• PLD Design Cycle로 알려진 일련의
과정을 통해 프로그램 된다.
• 한 가지 가능한 프로그램은 Altera사의
MAX+PLUS II 이다.
48
PLD Design Cycle - 1
• Design entry – 회로를 설계한다.
• Simulation – 설계회로출력이 입력에 따라
올바르게 동작하는 지를 입증한다.
• Compilation – CPLD를 프로그램 하기
위해서 설계 정보를 발생시키는 과정이다.
49
PLD Design Cycle - 2
• Fitting – 요구된 설계에 대해 회로를
할당하기 위해 CPLD의 일부를 결정한다.
• Programming – 원하는 로직 기능을
수행하기 위해 CPLD를 배열한다.
50
Altera Target Devices
• 설계를 구현하기 위해 CPLDs를
사용한다.
• MAX7000S family – EPM7128SLC84-7,
비휘발성(non-volatile) CPLD, EEPROM
셀을 이용하여 프로그램.
(128 : number of macrocells, S : in-system programmable)
• FLEX10K family – EPF10K20RC240-4,
휘발성(volatile) CPLD, LUT SRAM을
이용하여 프로그램.
51
Volatile vs. Non-Volatile
• 휘발성(Volatile)
– 정보(프로그램)은 단지 소자에 전원이
공급되는 동안만 유지된다.
• 비휘발성(Non-Volatile)
– 정보(프로그램)은 전원이 제거되고 다시
공급되어도 유지된다.
52
CPLD Design Entry
• 두 가지 일반적인 방법
1. 회로도 입력(그래픽)
2. 문자기반 입력(VHDL, Verilog HDL)
53
MAX+PLUS II Graphic Entry
• 디지털 설계를 회로도로 입력하기위해
‘Graphic Design File(.gdf)’을 사용하라.
• 컴포넌트와 이들의 연결과 회로의 입력,
출력 이름을 보여라.
(Figure 4.3 참조)
54
Figure 4.3
• Majority Vote Circuit
55
Graphic Design File 생성
• 회로도 입력방법을 사용하라.
• MAX+PLUS II는 프로그램을 위해
요구되는 파일들을 생성시킨다.
• 모든 파일은 프로젝트(project)로
제시된다.
• Figure 4.6 참조
56
Figure 4.6
57
MAX+PLUS II Project
• 특정 PLD 설계와 관련되는 일련의 파일.
• PLD를 위한 프로그램 파일을 생성하기
위해서 프로젝트 상에서 수행되는 모든
동작.
• 항상 현재 프로젝트가 어디인 지를 그
트랙을 유지하라.
58
MAX+PLUS II Graphic Design Files 생성
• 먼저, 적절한
폴더에 파일을
Save 하라.
• 두 번째, Set
Project to Current
File.
• Figure 4.8
59
Components 불러오기
• 컴포넌트 위치를
지정하기 위해 커서를
사용하고, 마우스의 왼쪽
버튼을 누른다.
• 삽입 메뉴를 활성화
하기위해 마우스 오른쪽
버튼을 사용한다.
• ‘Enter Symbol’을 선택
• Figure 4.9
60
‘Enter Symbol’ 메뉴
• 기본 컴포넌트를
이름이나 라이브러리
로부터 선택한다.
• 기본 컴포넌트를
‘프리미티브(primitive)’
라 한다.
• 컴포넌트의 각 copy는
‘인스턴스(instance)’ 라
한다.
• Figure 4.10
61
심볼 배열과 이동하기(1)
• Symbol은 마우스 왼쪽버튼을 이용하여
클릭함으로써 밝게 되고, 이 때 드래그
함으로 원하는 위치로 이동시킬 수 있다.
• Figure 4.11
62
심볼 배열과 이동하기(2)
• Figure 4.12
• Figure 4.13
63
컴포넌트 연결
• 컴포넌트는 한 컴포넌트의 한 끝을 클릭하고, 다른
컴포넌트의 또 다른 끝으로 선을 드래그함으로 연결된다.
Figure 4.14
64
핀 이름의 할당
• 입력과 출력은 이름이 할당되어야 한다.
• 핀 이름을 더블 클릭하면 밝게 되고(e.g. INPUT_VCC, 그
때 이름을 입력한다.
Figure 4.17
65
Target Device(1)
• 컴파일 하기 전에
타깃 디바이스를
규정해야 한다.
• 타깃 디바이스를
선택하기 위해
Assign 메뉴를
사용하라.
• Figure 4.18, 4.19
66
Target Device(2)
• Device Dialog Box
67
Compile Options(1)
• Design Doctor :
좋은 설계 습관을 위해 체크하라.
• Timing SNF Extractor :
타이밍 시뮬레이션을 위해 필요한 파일을
생성한다.
• Smart Recompile :
이전에 컴파일 한 부분을 바꾸지 않고 다시
사용할 수 있다.
68
Compile Options(2)
• Figure 4.20
MAX+PLUS II
Compiler 세팅
• Figure 4.21
MAX+PLUS II
Compiler 동작
69
Compile 메세지
• 3가지 종류의 메시지가 있다.
• 첫 번째, Info (green text)로 단지 정보용임.
• 두 번째, Warning (blue text)으로 잠정적
문제를 가리킴. 그러나 치명적이지는 않음.
• 세 번째, Error (red text)로 디자인을
사용할 수 없는 설계 결점임.
70
Compile Files
• non-volatile CLPDs (e.g. MAX series)를
위한 Programmer Object File(.pof) 생성
• volatile CPLDs (e.g. FLEX series)를 위한
SRAM Object File (.sof) 생성
71
계층적(Hierarchical) 설계
• PLD 설계는 층 또는 레벨로 계층화 된다.
• Top 레벨은 완전한 설계의 컴포넌트를
포함한다.
• Lower 레벨은 최상위 레벨의 컴포넌트
내에 내장되는 하위 혹은 그 이하의
컴포넌트를 포함한다.
72
Default Symbol
• 그래픽 심벌은 PLD 디자인을 블록으로
나타내기 위해 사용된다.
• 단지 디자인의 입력과 출력만을
보여준다.
• 계층적 디자인에서 하나의 컴포넌트로
사용된다.
73
문자기반 입력(Text Based Entry)
• Hardware Description Language (HDL)를
사용한다.
• 그래픽 입력방법보다 더욱 더 강력한
설계 기법이다.
74
Hardware Description Language(HDL)
• 회로를 설계할 때 설계회로를 문자형태로
기술하는 컴퓨터 언어이다.
• VHDL(VHSIC Hardware Description
Language)는 PLDs를 프로그램 하는데
사용되는 산업표준어 이다.
75
VHDL 역사
• 회로를 프로그램으로 개발하기 위해서
(미) 국방성 계약에 의해 개발되었음.
• 현재는 IEEE Std. 1076-1993에서 표준화
되었음.
76
VHDL 기본규칙
• 구성규칙은 “syntax”로 불린다.
• 대소문자를 구별하지 않는다. 하지만,
키워드, 소자, 상수, 프리미티브는 대문자로
표시할 것을 권장한다.
• 주석(Comments)은 텍스트 앞에 이중 사선(
double dashes)으로 표시한다.
• 주석은 컴파일 되지 않는다.
77
VHDL 구조
• entity 선언 과 architecture body를
요구한다.
• entity는 디자인의 입력과 출력을
정의한다.
• architecture 는 입력과 출력 및 내부
신호들 사이의 관계를 정의한다.
78
VHDL Entity
• 기능의 외부적 측면을 정의한다.
• 각 입력 혹은 출력은 포트(port) 이다.
• 포트의 형식은 모드(mode) 로 정의된다.
• Fig 4.28
VHDL Design Entity의
그래픽 표현
79
포트 모드의 형식(1)
• IN: 단지 입력으로만 사용되는 포트이다.
• OUT: 단지 출력으로만 사용되는 포트이다.
• INOUT: 양방향(bidirectional) 포트이다.
• BUFFER: OUT 포트의 특별한 경우로
CPLD 로직으로 피드백이 있을 때 사용된다.
80
포트 모드의 형식(2)
• Fig 4.29
VHDL Port Modes
• Fig 4.30
BUFFER and OUT Modes
81
Port 형식
• 포트 형식은 포트가 가질 수 있는 값을
정의한다.
• 단일비트나 복수비트를 가질 수 있다.
82
단일비트 포트형식
• BIT는 ‘0’ 혹은 ‘1’의 값을 가진다.
• STD_LOGIC는 9개의 값 중에 하나를 가질 수 있다.
• INTEGER는 전체 수 값을 가질 수 있다.
83
STD_LOGIC 형식
• 가능한 값:
‘U’ – uninitialized
‘X’ – forcing unknown
‘0’ – forcing 0
‘1’ – forcing 1
‘Z’ – high impedance ‘W’ – weak unknown
‘L’ – weak 0
‘H’ – weak 1
‘-’ – don’t care.
• 일반적으로 ‘X’, ‘0’, ‘1’, ‘Z’가 사용된다.
84
복수비트 포트형식
• BIT_VECTOR는 0 또는 1의 복수 개의
개체을 가질 수 있다.
• STD_LOGIC_VECTOR는 U, X, 0, 1, Z, W,
L, H, -의 복수 개의 개체를 가질 수 있다.
• 벡터(Vector)는 단일 복수비트 변수로
취급되는 신호그룹을 의미한다.
85
VHDL Architecture
• 내부적 측면을 정의한다. 즉, 입력과
출력이 서로서로 어떻게 행동하며, 또한
다른 내부신호 혹은 기능과 어떻게
행동하는 지를 정의한다.
• 논리적 관계를 정의하기 위해 연산자
(operators)를 사용한다.
86
Architecture Operators
• <= : 식의 오른쪽 값을 왼쪽으로 할당하는
연산자
• 논리 연산자는 ‘and’ 와 ‘or’ 과 같이
이름으로 할당한다.
87
우선순위
• 모든 논리 연산자는 동일한 우선순위를
가진다.
• 우선순위를 명확히 하고자 할 때는
괄호를 사용한다.
88
병행적 신호 할당(Concurrent Signal Assignment)
• 병행적(Concurrent)은 동시적(simultaneous)을
의미한다.
• ‘architecture body’에서 신호의 순위는 그들이
쓰여진 순서대로 평가되지 않는다.
• 일부 회로에 대한 공통입력에 변화가 있을 때,
동시에 다른 모든 회로에 영향을 미친다.
89
Example - Majority Vote2
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY maj_vot2 IS
PORT(
a, b, c
y
: IN
STD_LOGIC;
: OUT
STD_LOGIC);
END maj_vot2;
ARCHITECTURE majority OF maj_vot2 IS
BEGIN
y
<=
(a and b) or (b and c) or (a and c);
END majority;
90
Example 4.3 – 2-Line-to-4-Line Decoder
• 여러 가지
가능한 방법이
있다.
• 개별 입력이나
벡터를 사용하여
묘사될 수 있다.
• Figure 4.31
91
Example 4.3 – Vector Definitions
• 벡터는 상한선과 하한선을 정의함으로
규정될 수 있다.– (3 downto 0), (0 to 3), (4
downto 1), (1 to 4).
• 벡터는 선택적 신호 할당문(selected signal
assignment statement)을 사용하여 규정할 수
있다.
92
경우1 – Separate variables
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY decode1 IS
PORT(
d1, d0
: IN
y0, y1, y2, y3
: OUT
STD_LOGIC;
STD_LOGIC);
END decode1;
ARCHITECTURE decoder1 OF decode1 IS
BEGIN
y0
<=
(not d1) and (not d0);
y1
<=
(not d1) and (
y2
<=
(
d1) and (not d0);
y3
<=
(
d1) and (
d0);
d0);
END decoder1;
93
경우2 – Vectors(요소가 개별적으로 취급됨)
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY decode2 IS
PORT(
d
: IN
STD_LOGIC_VECTOR (1 downto 0);
y
: OUT
STD_LOGIC_VECTOR (3 downto 0));
END decode2;
ARCHITECTURE decoder2 OF decode2 IS
BEGIN
y(0)
<=
(not d(1)) and (not d(0));
y(1)
<=
(not d(1)) and (
y(2)
<=
(
d(1)) and (not d(0));
y(3)
<=
(
d(1)) and (
d(0));
d(0));
END decoder2;
94
경우3 – Vectors(요소가 그룹으로 취급됨) ; 선택적 신호 할당문
-- decode2a.vhd
-- 4-channel decoder
-- Makes one and only one output HIGH for each binary combination of (d1, d0).
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY decode2a IS
PORT(
d
: IN
STD_LOGIC_VECTOR (1 downto 0);
y
: OUT
STD_LOGIC_VECTOR (3 downto 0));
END decode2a;
ARCHITECTURE decoder OF decode2a IS
BEGIN
-- Choose a signal assignment for y based on binary value of d
-- Default case: all outputs deactivated
WITH d SELECT
y <=
"1000" WHEN "00",
"0100" WHEN "01",
"0010" WHEN "10",
"0001" WHEN "11",
"0000" WHEN others;
END decoder;
95
MAX+PLUS II VHDL Templates
• VHDL structure를
생성하는 지름길을
마련 해준다.
• Template 메뉴를
사용하여 이용
가능하다.
• Figure 4.32
96
Creating a Physical Design
• Pin Numbers 할당(1)
97
Pin Numbers 할당(2)
98
Altera UP-1 Circuit Board의 프로그래밍
• 보드와 IBM-PC의 병렬포트 사이에 리본
케이블인 ByteBlaster를 사용한다
• ByteBlaster는 컴퓨터의 LPT 포트에
연결된다.
• ByteBlaster는 또한 UP-1 보드의 JTAG
표준 포트에 연결된다.
99
ByteBlaster Download Cable
100
Altera UP-1 Circuit Board
101
JTAG Interface
• 4선 + 전원 + 접지선.
• 데이터는 TDI 선을 통해 입력되고, TDO
선을 통해 출력된다.
• 전송은 TMS 선과 TCK 선의 클록 신호에
의해 제어된다.
102
Programming the Design
103
SUMMARY
• The STD_LOGIC type can take on any of the following values:
- ‘U’ ‘X’ ‘0’ ‘1’ ‘Z’ ‘W’ ‘L’ ‘H’ ‘-’
• STD_LOGIC is defined in a library called ieee. To use STD_LOGIC,
include the following two statements at the beginning of a file.
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
• A port in VHDL is an input or output. A signal is an internal connection
like a wire.
• Concurrent signal assignment statement :
the simplest way to relate inputs and outputs in a VHDL
EX) x <= (a and b) or c;
• Selected signal assignment statement can act as a truth table in VHDL.
104