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)와 같이 저항을 직렬로 연결하여 다이오드를 보호한다 그림 (A) 그림 (B)
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 공통단자가 캐소드형으로 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
7-Segment LED Array (5) FND를 이용한 데이터 표현 예: Common Cathod 단자 Anode 단자
PXA255-FPGA – FND 회로 구성 (1)
PXA255-FPGA – FND 회로 구성 (2)
PXA255-FPGA – FND 회로 구성 (3)
PXA255-FPGA – FND 회로 구성 (4)
7-Segment FND Controller 설계 (1) 단독 모드 (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) 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) 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)
VHDL Compilation (1) Pin Assignment Pin assignment 메뉴를 이용하여 pin 정보 입력 Pin Assign File 수정 - io_top.qps 파일을 열어서 옆 그림에 제시된 정보를 고려하여 핀 매핑에 대한 정보를 수정
VHDL Compilation (2)
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 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>