7-segment fnd controller 구현
DESCRIPTION
7-Segment FND Controller 구현. Lecture #10. 학습목표. 다양한 실습을 통해 VHDL 의 응용능력을 기른다 기본적인 타이밍도의 이해 및 응용능력을 배양한다 주로 사용되는 출력 장치인 FND(7 Segment) 의 특성을 이해한다. 강의순서. 7-Segment LED(FND) 장치 PXA255-FPGA – FND 회로도 구성 7-Segment LED Controller 설계 7-Segment LED Controller 테스트. 발광다이오드 (LED). - PowerPoint PPT PresentationTRANSCRIPT
7-Segment FND 7-Segment FND Controller Controller 구현구현
Lecture #10Lecture #10
2
학습목표 다양한 실습을 통해 VHDL 의 응용능력을 기른다 기본적인 타이밍도의 이해 및 응용능력을 배양한다 주로 사용되는 출력 장치인 FND(7 Segment) 의
특성을 이해한다
3
강의순서 7-Segment LED(FND) 장치 PXA255-FPGA – FND 회로도 구성 7-Segment LED Controller 설계 7-Segment LED Controller 테스트
4
발광다이오드 (LED)
LED(Light Emitting Diode) 화합물 반도체의 PN 접합 다이오드로 양단에 전압의 차를 가하면 빛을 방출하는 발광소자 그림 (A) 와 같이 2 개의 다리가 나와있는데 긴 쪽이 애노드 (+) 이며 짧은 쪽이 캐소드 (-)
이다 약 2.5V 정도의 전압차가 2 개의 다리 양단에 걸리면 빛을 방출하는데 , 보통 디지털소자의
출력이 5V 이므로 그림 (B) 와 같이 저항을 직렬로 연결하여 다이오드를 보호한다
그림 (A) 그림 (B)
5
7-Segment FND (1) 7-Segment FND
숫자나 문자를 표시하는데 사용되는 7 개의 발광다이오드 (LED) 의 모임 공통 애노드 (Common Anode) 형 :
다이오드의 애노드를 공통 단자로 사용한다 애노드 단자에 5V 를 주고 캐소드의 각 단자 a~g 까지 0V 를 주면
다이오드에 전류가 흐르게 되어 발광한다 다이오드의 파손 방지를 위해 저항을 연결 한다
Common Anode 형
6
7-Segment FND (2)
Common Cathode 형
7-Segment FND 공통 캐소드 (Common Cathode) 형 :
다이오드의 캐소드를 공통 단자로 사용한다 캐소드를 접지 시키고 , 다이오드의 애노드 단자에 5V 를 주면 전류가
흐른다 다이오드의 파손 방지를 위해 저항을 연결 한다
7
7-Segment FND Array (1)
Common Cathode 형 7-Segment FND 4 ARRAY 7-Segment FND 가 4 개 병렬로 있는 것 공통단자가 캐소드형으로 com0, com1, com2, com3 로 4 개
있으며 , 애노드 단자 a,b,c,d,e,f,g,dp 는 공통으로 사용한다 LED 를 제어하기 위한 전체 핀의 개수를 줄일 수 있는 장점이
있으나 컨트롤은 조금 복잡해진다
8
7-Segment FND Array (2)
Common Cathode 형 7-Segment FND 4 ARRAY Com0=0, Com1=Com2=Com3=1 인 경우 , 입력
a,b,c,d,e,f,g 중의 어느 하나가 1 이면 가장 왼쪽에 해당되는 Segment LED 가 발광한다
E GDB F DPC
COMMON0 COMMON1 COMMON2 COMMON3
A
D9
A
12
D17
A
12
D31
G
12
D32
DP
12
D23
G
12
D18
B
12
D30
F
12
D27
C
12
D25
A
12
D20
D
12
D24
DP
12
D29
E
12
D22
F
12
D26
B
12
D21
E1
2D28
D
12
D19
C
12
D2
B
12
R1220
D1
A
12
R2220
D3
C
12
R3220
D4
D
12
R4220
D5
E
12
D8
DP
12
R8220
R5220
R6220
D6
F
12
D7
G
12
R7220
D10
B
12
D12
D
12
D11
C
12
D14
F
12
D13
E
12
D15
G
12
D16
DP
12
9
7-Segment FND Array (3)
1 2 3 4 1 2 3 4
Com0=0 인 경우 첫 번째의 7-segment LED 가 켜짐Com1=0 인 경우 두 번째의 7-segment LED 가 켜짐Com2=0 인 경우 세 번째의 7-segment LED 가 켜짐Com3=0 인 경우 네 번째의 7-segment LED 가 켜짐
Com0=0 인 경우 첫 번째의 7-segment LED 가 켜짐Com1=0 인 경우 두 번째의 7-segment LED 가 켜짐Com2=0 인 경우 세 번째의 7-segment LED 가 켜짐Com3=0 인 경우 네 번째의 7-segment LED 가 켜짐
Common Cathode 형 7-Segment FND 4 개의 제어(Dynamic Display)
Seg_out=0110000 a=0,b=1,c=1,d=e=f=g=0을 의미함 .
Seg_out=0110000 a=0,b=1,c=1,d=e=f=g=0을 의미함 .
고정된 방식이 아닌 순차적으로 번갈아 가면서 LED 를 켜는
방식으로 제어 : 통상 1 초당 60번 이상 켜지면 항상 켜지는 것으로
보이는 잔상효과이용 .
고정된 방식이 아닌 순차적으로 번갈아 가면서 LED 를 켜는
방식으로 제어 : 통상 1 초당 60번 이상 켜지면 항상 켜지는 것으로
보이는 잔상효과이용 .
10
7-Segment LED Array (4)
PXA255-FPGA Board – 7-Segment FND 6 Array
11
7-Segment LED Array (5)
FND 를 이용한 데이터 표현 예 :
Common Cathod 단자
Anode 단자
12
PXA255-FPGA – FND 회로 구성 (1)
13
PXA255-FPGA – FND 회로 구성 (2)
14
PXA255-FPGA – FND 회로 구성 (3)
15
PXA255-FPGA – FND 회로 구성 (4)
16
7-Segment FND Controller 설계 (1) 7-Segment FND Controller 동작 모드
단독 모드 (FPGA Dip S/W – on, on) 6 자리 십진 카운터 동작을 수행 Main clock 을 분주하여 1 초 단위로 계수하고 , 계수된
값을 십진 6 자리 수로 FND array 를 통해 출력 연동 모드 (FPGA Dip S/W – off, on)
PXA255-Pro3 main board 에서 전송된 I/O 신호를 받아 FND array 에 출력
FPGA Dip S/W 설정에 따라 동작 모드를 결정
17
7-Segment FND Controller 설계 (2)
7-Segment FND Controller 구성요소 설계 fnd_6digit.vhd – 단독 동작 모드를 설계한 VHDL 파일 iom_mode.vhd – 연동 동작 모드를 설계한 VHDL 파일 mux_iom.vhd – FPGA Dip S/W 설정에 따라 I/O 을
선택하는 multiplexing 기능을 설계한 VHDL 파일 상기의 VHDL 파일 소스는 별도의 유인물 참조
18
7-Segment FND Controller 설계 (3)
7-Segment FND Controller 구성 io_top.bdf - top-level block diagram file
19
Quartus II Project 파일 생성 (1)
New Project Wizard 를 통한 Quartus II Project 생성하기 File 메뉴에서 New Project
Wizard 를 실행하여 새로운 프로젝트를 생성
20
Quartus II Project 파일 생성 (2)
New Project Wizard ① Project 를 설치할 경로 와 프로젝트의 이름과 top-level
entity 이름을 지정
21
Quartus II Project 파일 생성 (3)
New Project Wizard ② 오른쪽의 그림은 다음
단계인 설계된 파일이 있으면 추가 하는 단계
추가할 파일이 프로젝트 디렉토리에 있다면 [ADD ALL] 버튼을 클릭하면 모두 추가
[...] 버튼을 클릭하여 그림과 같이 4 개의 파일을 추가
[Next] 버튼을 눌러 다음 설정으로 이동
22
Quartus II Project 파일 생성 (4)
New Project Wizard ③ EDA Tool 에 대한 설정을 하는 부분 Thirth party EDA tool 을 사용한다면 설정하고 , 사용하지
않는다면 [Next] 버튼을 눌러 다음 설정으로 이동
23
Quartus II Project 파일 생성 (5)
New Project Wizard ④ Device Family 를 설정하는 부분 PXA255-FPGA 보드는 Cyclone 을 사용
24
Quartus II Project 파일 생성 (6)
New Project Wizard ⑤ PXA255-FPGA 에는 EP1C12Q240C8 을 사용하고
있으므로 해당 Device 를 선택 오른쪽 메뉴의 Filter 사용 하면 쉽게 선택할 수 있다
25
Quartus II Project 파일 생성 (7)
New Project Wizard ⑥ 지금까지 설정을 확인하는 단계 프로젝트경로와 프로젝트 이름 , top-level design entity
이름 , 추가한 파일의 개수를 확인
26
Quartus II Project 파일 생성 (8)
Project 생성
27
VHDL Compilation (1)
Pin Assignment Pin assignment
메뉴를 이용하여 pin 정보 입력
Pin Assign File 수정 - io_top.qps 파일을 열어서 옆 그림에 제시된 정보를 고려하여 핀 매핑에 대한 정보를 수정
28
VHDL Compilation (2)
29
VHDL Compilation (3)
사용하지 않는 핀들에 대한 설정 Device 설정 창에서 Device & Pin Options 을 선택
30
VHDL Compilation (4)
Unused Pin 에 대한 설정 Reserve all unused pins 에서 As Input, tri stated
를 선택 외부에 아무런 영향을 주지 않기 위함
31
VHDL Compilation (5) Configuration 에 대한 설정
그림과 같이 Configuration scheme 와 device 를 설정
32
VHDL Compilation (6)
기타 설정 General 탭에서 Auto-restart configuration after
error 을 선택 FPGA 에서 에러가 발생하면 자동으로 다시 Configuration
하게 설정
33
VHDL Compilation (7)
Compilation 지금까지의 설정이 정상적으로
이루어졌다면 Processing 메뉴에서 Start Compilation 을 실행
컴파일이 완료되면 ‘ Full compilation was successful‘ 이라는 메시지를 보여주며 컴파일이 끝나게 된다
34
FPGA Configuration (1)
Configuration 지금까지의 과정이 모두 끝났다면 FPGA 로 Configuration 을
하여야 한다 Programmer 실행 - EPC2 에 다운로드 하거나 FPGA 에
Configuration 하기 위해서 Programmer 를 실행
35
FPGA Configuration (2)
Configuration 파일 불러오기 Byteblaster 케이블이 JTAG 포트에 연결된 상태에서 [Auto Dete
ct] 를 하면 EPC2 와 EP1C6 두 개의 장치를 검출 <none> 를 더블 클릭하여 EPC2 에는 io_top.pof 파일을 , EP1C6
에는 io_top.sof 파일을 설정한다
36
FPGA Configuration (3)
Configuration Program/Configure 에 체크 옵션에 체크를 한다 [Start] 버튼을 클릭하면 체크한 항목에 대해서만 Download
및 Configuration 을 수행한다 [Start] 버튼을 클릭하여 실행한다
37
7-Segment FND Controller 테스트 디바이스 드라이버 설치 및 테스트 프로그램 실행
FPGA Dip S/W 를 (on, on) 으로 설정하여 연동 모드 선택 디바이스 드라이버와 테스트 프로그램을 타겟 보드에
다운로드하고 실행시킨다
# mknod /dev/FNDS c 241 0# insmod fnd_driver.o# chmod 777 test_fnd# ./test_fnd <input data>