470 likes | 1.74k Views
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).
E N D
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) • LED(Light Emitting Diode) • 화합물 반도체의 PN접합 다이오드로 양단에 전압의 차를 가하면 빛을 방출하는 발광소자 • 그림 (A)와 같이 2개의 다리가 나와있는데 긴 쪽이 애노드(+)이며 짧은 쪽이 캐소드(-)이다 • 약 2.5V정도의 전압차가 2개의 다리 양단에 걸리면 빛을 방출하는데, 보통 디지털소자의 출력이 5V이므로 그림 (B)와 같이 저항을 직렬로 연결하여 다이오드를 보호한다 그림 (B) 그림 (A)
7-Segment FND (1) • 7-Segment FND • 숫자나 문자를 표시하는데 사용되는 7개의 발광다이오드(LED)의 모임 • 공통 애노드(Common Anode) 형 : • 다이오드의 애노드를 공통 단자로 사용한다 • 애노드 단자에 5V를 주고 캐소드의 각 단자 a~g 까지 0V를 주면 다이오드에 전류가 흐르게 되어 발광한다 • 다이오드의 파손 방지를 위해 저항을 연결 한다 Common Anode 형
7-Segment FND (2) • 7-Segment FND • 공통 캐소드(Common Cathode) 형 : • 다이오드의 캐소드를 공통 단자로 사용한다 • 캐소드를 접지 시키고, 다이오드의 애노드 단자에 5V를 주면 전류가 흐른다 • 다이오드의 파손 방지를 위해 저항을 연결 한다 Common Cathode형
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를 제어하기 위한 전체 핀의 개수를 줄일 수 있는 장점이 있으나 컨트롤은 조금 복잡해진다
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가 발광한다
7-Segment FND Array (3) • Common Cathode형 7-Segment FND 4개의 제어(Dynamic Display) 고정된 방식이 아닌 순차적으로 번갈아 가면서 LED를 켜는 방식으로 제어 : 통상 1초당 60번 이상 켜지면 항상 켜지는 것으로 보이는 잔상효과이용. 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가 켜짐 Seg_out=0110000 a=0,b=1,c=1,d=e=f=g=0을 의미함.
7-Segment LED Array (4) • PXA255-FPGA Board – 7-Segment FND 6 Array
Common Cathod 단자 Anode 단자 7-Segment LED Array (5) • FND를 이용한 데이터 표현 예:
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 설정에 따라 동작 모드를 결정
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 파일 소스는 별도의 유인물 참조
7-Segment FND Controller 설계 (3) • 7-Segment FND Controller 구성 • io_top.bdf - top-level block diagram file
Quartus II Project 파일 생성 (1) • New Project Wizard를 통한 Quartus II Project 생성하기 • File 메뉴에서 New Project Wizard를 실행하여 새로운 프로젝트를 생성
Quartus II Project 파일 생성 (2) • New Project Wizard ① • Project를 설치할 경로 와 프로젝트의 이름과 top-level entity 이름을 지정
Quartus II Project 파일 생성 (3) • New Project Wizard ② • 오른쪽의 그림은 다음 단계인 설계된 파일이 있으면 추가 하는 단계 • 추가할 파일이 프로젝트 디렉토리에 있다면 [ADD ALL] 버튼을 클릭하면 모두 추가 • [...] 버튼을 클릭하여 그림과 같이 4개의 파일을 추가 • [Next]버튼을 눌러 다음 설정으로 이동
Quartus II Project 파일 생성 (4) • New Project Wizard ③ • EDA Tool 에 대한 설정을 하는 부분 • Thirth party EDA tool을 사용한다면 설정하고, 사용하지 않는다면 [Next]버튼을 눌러 다음 설정으로 이동
Quartus II Project 파일 생성 (5) • New Project Wizard ④ • Device Family를 설정하는 부분 • PXA255-FPGA보드는 Cyclone을 사용
Quartus II Project 파일 생성 (6) • New Project Wizard ⑤ • PXA255-FPGA에는 EP1C12Q240C8을 사용하고 있으므로 해당 Device를 선택 • 오른쪽 메뉴의 Filter사용 하면 쉽게 선택할 수 있다
Quartus II Project 파일 생성 (7) • New Project Wizard ⑥ • 지금까지 설정을 확인하는 단계 • 프로젝트경로와 프로젝트 이름, top-level design entity 이름, 추가한 파일의 개수를 확인
Quartus II Project 파일 생성 (8) • Project 생성
VHDL Compilation (1) • Pin Assignment • Pin assignment 메뉴를 이용하여 pin 정보 입력 • Pin Assign File 수정 - io_top.qps 파일을 열어서 옆 그림에 제시된 정보를 고려하여 핀 매핑에 대한 정보를 수정
VHDL Compilation (3) • 사용하지 않는 핀들에 대한 설정 • Device 설정 창에서 Device & Pin Options을 선택
VHDL Compilation (4) • Unused Pin에 대한 설정 • Reserve all unused pins에서 As Input, tri stated를 선택 • 외부에 아무런 영향을 주지 않기 위함
VHDL Compilation (5) • Configuration에 대한 설정 • 그림과 같이 Configuration scheme와 device를 설정
VHDL Compilation (6) • 기타 설정 • General 탭에서Auto-restart configuration after error을 선택 • FPGA에서 에러가 발생하면 자동으로 다시 Configuration하게 설정
VHDL Compilation (7) • Compilation • 지금까지의 설정이 정상적으로 이루어졌다면 Processing 메뉴에서 Start Compilation을 실행 • 컴파일이 완료되면 ‘Full compilation was successful‘이라는 메시지를 보여주며 컴파일이 끝나게 된다
FPGA Configuration (1) • Configuration • 지금까지의 과정이 모두 끝났다면 FPGA로 Configuration을 하여야 한다 • Programmer 실행 - EPC2에 다운로드 하거나 FPGA에 Configuration 하기 위해서 Programmer를 실행
FPGA Configuration (2) • Configuration 파일 불러오기 • Byteblaster 케이블이 JTAG 포트에 연결된 상태에서 [Auto Detect] 를 하면 EPC2와 EP1C6 두 개의 장치를 검출 • <none>를 더블 클릭하여 EPC2에는 io_top.pof 파일을, EP1C6에는 io_top.sof파일을 설정한다
FPGA Configuration (3) • Configuration • Program/Configure에 체크 옵션에 체크를 한다 • [Start]버튼을 클릭하면 체크한 항목에 대해서만 Download 및 Configuration을 수행한다 • [Start]버튼을 클릭하여 실행한다
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>