본문 바로가기
# Semiconductor/[Semicon Academy]

[Harman 세미콘 아카데미] 4일차 - 7_segment로 디코더 회로 출력하기

by Graffitio 2023. 6. 22.
[Harman 세미콘 아카데미] 4일차 - 7_segment로 디코더 회로 출력하기
728x90
반응형
[BCD 7-segment decoder]

 

<7-segment란?>

위 그림처럼 8개의 LED(a, b, c, d, e, f, g, dot) 합쳐놓은 것을 말하며, 각 LED를 on하여 숫자 또는 문자를 표현한다. 

a' = 0을 줬을 때 켜진다는 의미

 

<7-segment coding>

 

4 bit의 입력으로 출력할 수 있는 경우의 수

→ 2⁴(=16) 가지(0~9, A~F)

case를 써주지도 않고, default도 안 만들어주면, LATCH가 만들어진다. → 주의할 것

보드를 통해 출력하기 위해서는 top module을 따로 코딩해줘야 한다.

※ 분주기

   (2진수에서 다음 bit의 주기는 이전 bit 주기의  2배)

    위 코드를 예로 들면,

    i) 1 clk rising edge일 때, clk_div = clk_div +1

       즉, clk 1주기 동안 clk_div[0]는 1회 rising/falling 한다.

       → clk의 주기는 clk_div[0]의 주기의 1/2

    ii) clk_div[25] 는 clk의 주기의 2^26배가 되므로 8ns x 2^26 = 0.56 [sec]

        ∴ count는 약 0.56초마다 실행된다.

 

<Connect  FPGA board with Segment display>

 

 

7-segment 전면
7-segment 후면
display와 board를 연결한 모습
버튼이랑 LED는 안 쓸 거니까 주석처리

tip) 한 번에 주석처리 하는 단축키 : [Ctrl + /]

io[7]에 a, io[6]에 b ...... io[0]에 g 연결
이 문장에서 보드의 주기를 변경시킬 수 있다.
이 것만 눌러도 synthesis부터 끝까지 다 진행됨.

저번처럼 open target → auto connect → program device까지 해주면,

정상적으로 잘 작동하는 것을 볼 수 있다.

 

<Bread board를 활용한 실습>

 

Display board 를 활용한 실습은 순서대로 연결하면 되기에 쉽게 동작시킬 수 있었다.

port 배정에 대해 좀 더 심화적으로 이해하기 위해 Bread board를 사용하여 실습하였다.

위의 핀 정보를 보면, display board 처럼 순서대로 설정되어 있지 않으므로 Chipkit의 포트를 새로 배정해줘야 한다.

 

 O   O   O   O   O   O   O   O       ㅁ      ㅁ      ㅁ      ㅁ

     b    a    f    e    d   dp   c    g     com4 com3 com2 com1

io7 io6 io5 io4 io3 io2 io1 io0     io11   io10    io9     io8

 

현재 위와 같이 연결되어 있으므로 일치하는 port에 seg_7를 다음과 같이 배정해주면 된다.

(선을 바꿔줘도 되는데, 그럼 지저분하므로 비추)

com = 4'b1000; 이고 해당 seg7은 common cathode type이므로 1을 주면 출력된다.

 

port를 배정해주고 programing해주면, 아래와 같이 결과가 출력된다.

 

 

※ Common Cathod / Anode type

[Common Cathode type]

모든 LED의 공통 단자가 GND에 물려 있어, 각 단자에 Vcc를 연결할 때 불이 들어오는 방식

= 각 단자에 1을 주면 불 켜짐

[Common Anode type]

모든 LED의 공통 단자가 Vcc에 물려 있어, 각 단자에 GND를 연결할 때 불이 들어오는 방식

= 각 단자에 0주면 불 켜짐

 

728x90
반응형