일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- FND
- Linked List
- half adder
- dataflow modeling
- LED
- prescaling
- structural modeling
- test bench
- gpio
- soc 설계
- verilog
- Edge Detector
- KEYPAD
- behavioral modeling
- i2c 통신
- ATMEGA128A
- ring counter
- pwm
- hc-sr04
- atmega 128a
- java
- Pspice
- stop watch
- vivado
- Algorithm
- DHT11
- BASYS3
- uart 통신
- D Flip Flop
- Recursion
- Today
- Total
목록FND (8)
거북이처럼 천천히

1. 4X4 Matrix Keyboard4X4 Matrix Keyboard는 다음과 같은 회로도를 같는다.Row와 Column간에 회로 연결은 16개의 Switch간에 연결되어 있다. 2. 어떻게 버튼이 눌렀는지를 확인하는가?Row 값(R1, R2, R3, R4)들이 High-level인 상태에서 특정 버튼을 누르게 된다면 해당하는 열(C1, C2, C3, C4)의 값이 Low-Level에서 High-Level 로 변한다.ex) R1, R2, R3, R4 = 0001인 상태에서 버튼 0을 누르면 C1, C2, C3, C4 = 0100이 출력된다.ex) R1, R2, R3, R4 = 0100인 상태에서 버튼 6을 누르면 C1, C2, C3, C4 = 0010이 출력된다. 3. 만약, C1값이 H..
1. Set 모드에서 시간을 설정한 뒤, 다시 Watch 모드로 가면 초와 분이 동기화되지 않는다. 1.1 문제 현상Set 모드에서 시간을 세팅한 뒤, 다시 Watch 모드로 돌아가 시계로서 동작하면 초와 분 값이 동기화 되지 않고, 개별적으로 동작하는 문제점이 발생한다.ex) 아직 59초에서 60초로 넘어가지 않았음에도 분 값이 증가하거나 59초에서 60초로 넘아갔음에도 분 값이 증가하지 않는다. 1.2. 문제의 원인Set 모드로 돌아 왔을 경우, 분을 BCD 60진 카운터에서 기준 펄스가 되는 clk_min이 멈춰야 하지만, 멈추지 않고, 계속해서 진행하여 모드와 상관없이 계속해서 clk_min 기준 펄스가 Counting하다가 60초 되는 순간 One Cycle Pulse를 발생시켜 분 값을 증가 ..
1. Clock Pulse를 이용하여 Clock 만들기basys3의 기본 클럭 펄스의 주기는 10ns이다. 이를 활용하여 시계를 만들고자 한다.다음과 같이 동작한다.- 4개의 FND를 이용하여 첫 번째, 두 번째 FND는 초 단위, 세 번째, 네 번째 FND는 분 단위를 출력한다.- 초 단위는 0 ~ 59초 까지 Counting이 가능하며, 60초가 되면 0초로 초기화되며, 분 값이 1씩 증가한다.- 분 단위도 0 ~ 59분 까지 Counting이 가능하며, 60분이 되면 0분으로 초기화된다. 1.1. 동시에 서로 다른 숫자들을 동시에 출력하기시간을 분의 십의 자리, 분의 일의 자리, 초의 십의 자리, 초의 일의 자리로 나눈다.각각의 시간의 데이터를 Ring Counter를 이용하여 com 변수 값들..

1. 서로 다른 숫자들을 FND을 통해 동시 출력하기이번에는 4자리 16진수 데이터를 FND을 통해 한 번에 동시 출력 되도록 설계해보도록 하겠다.이번 구현 동작은 다음과 같이 동작한다.- 16개의 Switch를 활성화시켜 0 ~ 3번째 Switch는 첫 번째 FND, 4 ~ 7번째 Switch는 두 번째 FND, 8 ~ 11번째 Switch는 세 번째 FND, 12 ~ 15번째 Switch는 네 번째 FND를 컨트롤 한다.- 해당 FND의 스위치로 16진수 값을 표현하면 해당 16진수 값이 해당 FND에 출력된다 1.1. 한 번에 동시 출력하도록 만들기 위해서는 몇 초를 주기로 Shifting 시켜야 하는가?사람 눈을 속이기 위해서는 최대 10ms 정도 FND Shifting해야 사람의 눈으로 보았을..
1. 10sec 주기로 FND Left Shifting 하기이번에는 10sec 주기마다 왼쪽으로 Shifting하는 코드를 구현하도록 하겠다.다음과 같이 동작한다.- 12번째부터 15번째 Switch를 통해 16진값을 표현한다.- 가장 오른쪽 FND를 첫 번째 FND라고 하였을 때, 10sec를 주기로 왼쪽으로 Shifting한다.- 4번째 FND에 도달하게 되면 다시 첫 번째 FND으로 돌아와 무한 반복한다. 1.1. 주기가 10sec이기 위해서는 Counter는 얼마의 크기를 가져야 하는가?Basys3의 기본 클럭 주기는 10ns이다. 따라서 10sec 주기를 갖기 위해서는 10nsec을 1000000000 분주를 해야한다.따라서 Counter는 1000000000분주를 하기 위해서는 100000..

1. 4bit 데이터 변수에 담겨 있는 16진수 값을 FND에 출력하기4bit 크기를 갖는 변수에 16진수 값을 저장한 뒤, 이를 FND로 출력하도록 설계한다.동작은 다음과 같이 동작한다.- Common anode는 Switch 0번 ~ 3번를 통해 Control 한다.- Hex value는 Switch 12번 ~ 15번을 통해 표현 하게 된다.- 12번 ~ 15번까지의 Switch로 표현된 16진 값을 4개의 FND에 동시 출력되도록 한다. 1.1. Hex value를 모듈의 입력 값으로 전달하게 되면 이를 출력하기 위한 8개의 다이오드의 출력 정보를 출력한다.Hex value를 모듈의 입력 값으로 전달해야 하기 때문에 입력값은 4bit 크기를 갖는다.8개의 다이오드의 출력 정보를 출력하기 위해서는..

1. Basys3의 FND 다 켜보기Basys3의 FND를 다 켜보도록 하겠다.특별한 데이터를 FND를 통해 출력하지 않는다. 1.1. Basys3의 FND는 어떤 구조를 갖는가?Basys3의 FND의 회로도는 다음과 같은 구조를 갖는다.Basys3는 Common anode 구조로 설계되어 있다.7-Segment를 구성하는 Diode들의 cathode들은 GND로 연결되어 있는 상태이다.따라서 Diode들의 anode에 Vcc 값을 주게 되면 전위차에 의해 전류가 anode에서 cathode로 흐르게 되며, 이로인해 다이오드에 불이 들어오게 된다. 1.2. BJT는 어떻게 동작하는가?BJT의 전류의 방향을 나타내는 화살표가 emitter에서 Base로 향하고 있기 때문에 PNP형 BJT이다.따라서 Bas..

서론 FND (Flexible Numeric Display) 은 아래의 그림와 같이 여러 개의 LED를 이용하여 10진수 숫자 또는 16진수용 문자를 표시하는 소자이다. 이를 7-segement , Flexible Numeric Dispaly 이라고 한다. 이번 구현에 사용할 FND는 5161AS의 Data sheet를 보게 되면 다음과 같이 구성되어 있으며, 특히 아래 그림과 같이 Common cathode 로 구성되어 있다. 이는 3, 8핀의 GND을 모든 다이오드들이 공유하기 때문에 각각 다이오드가 연결된 핀에 전압을 인가하게 되면 전위차에 의해 전류는 다이오드를 통해 GND로 흐르게 되며, 이를 통해 다이오드에 불이 들어오게 된다. 본론 이번에는 다음과 같은 구현을 함으로서 FND..