__________

Designing the Future with Circuits

반도체 회로설계 취준기

자습시간/Verilog 16

Pmod OLED 공룡 게임 만들기(3) - 최종

크롬 공룡 게임 구현 저번 게시글에 이어 마지막으로 Pmod KYPD와 Pmod OLED를 이용해 하드웨어 파일을 생성한 후, Vitis를 이용해 키패드로 동작하는 공룡 게임을 최종 완료했습니다. Vivado Process Vivado와 Vitis를 이용한 Pmod OLED 제어 [Pmod IP 이용]이번 게시글에서는 Digilent의 게시물과 IP 라이브러리를 통해 Pmod OLED의 데모 파일 구현을 진행합니다. 추후 이를 응용하여 Pmod OLED를 통해 다양한 기능을 구현할 예정입니다. Vivado, Vitis 이용방법semicon-circuit.tistory.com 이 게시글에서와 동일한 방법으로 Vivado Library에서 IP를 추가한 뒤, Pmod KYPD와 Pmod OLED를 추가하여 ..

Pmod OLED 공룡 게임 만들기(2)

이번에는 저번에 구현했던 비트맵에서 더 나아가 여러가지 이미지를 번갈아가며 화면에 나타내어 움직이는 듯한 모습을 구현하고자 합니다.저번에 사용했던 툴을 이용해서 공룡이 달리는 듯한 두 이미지를 생성하고, 이를 배열로 변환한 뒤 다음과 같이 코드를 작성해서 공룡이 뛰는 모션을 구현했습니다.더보기void Dino_Run() { OLED_ClearBuffer(&myDevice); OLED_MoveTo(&myDevice, 0, 0); // (0,0)에서 출력 시작 OLED_Update(&myDevice); // OLED 화면 업데이트 u8 *pat; char c; xil_printf("print dinosaur and cactus"); c = 1; while(1){ xil_pr..

Pmod OLED 공룡 게임 만들기(1) - 비트맵 이미지 구현

Vivado와 Vitis를 이용한 Pmod OLED 제어 [Pmod IP 이용]이번 게시글에서는 Digilent의 게시물과 IP 라이브러리를 통해 Pmod OLED의 데모 파일 구현을 진행합니다. 추후 이를 응용하여 Pmod OLED를 통해 다양한 기능을 구현할 예정입니다. Vivado, Vitis 이용방법semicon-circuit.tistory.com 지난 게시글에서 Vivado에서 Pmod IP를 이용해 하드웨어 파일을 만들고, Vitis로 Pmod OLED 데모 파일을 실행하는 과정까지 포스팅했습니다,이번 게시글에서는 이어서 직접 비트맵 파일을 Pmod OLED에 표시해보는 작업을 진행합니다. 앞으로 이 디스플레이를 이용해 구글의 공룡게임을 구현할 예정입니다. 먼저 공룡의 모습과 선인장을 픽셀로 ..

Vivado와 Vitis를 이용한 Pmod OLED 제어 [Pmod IP 이용]

이번 게시글에서는 Digilent의 게시물과 IP 라이브러리를 통해 Pmod OLED의 데모 파일 구현을 진행합니다. 추후 이를 응용하여 Pmod OLED를 통해 다양한 기능을 구현할 예정입니다. Vivado, Vitis 이용방법 Getting Started with Vivado and Vitis for Baremetal Software Projects - Digilent Reference digilent.com준비사항Vivado, Vitis 2023.2버전: 기존에 사용하던 2024.2버전으로는 호환이 되지 않아 해당 버전으로 수행했습니다.Digilent 보드 파일 다운로드아래의 파일을 다운로드 받아 압축을 해제한 뒤,\vivado-boards-master\vivado-boards-master\new\..

Verilog 복습 프로젝트(3) - Decoder 설계 [Pmod KYPD 이용]

계산기를 설계할 때에는 Digilent의 Pmod KYPD를 통해 값을 입력받아 숫자나 문자로 변환하는 Decoder와 Decoder로부터 받은 값을 연산하여 세그먼트 디스플레이로 보내기 위한 calculator 모듈이 필요합니다.프로젝트 소개 게시글에서 간략하게 설명했듯이, KYPD의 Schematic은 아래와 같습니다.  이 키패드를 통해 어떤 버튼이 눌리는지 감지하는 방법은 먼저 각 열(COL)을 순차적으로 LOW로 설정합니다.[ 1110->1101->1011->0111 ]이후 LOW로 설정된 열에서 키가 눌린 경우, 이에 해당하는 행(ROW) 핀에 LOW 신호가 전달됩니다. 이 과정을 반복하여 각 열을 1ms마다 LOW로 설정한 뒤 ROW 값을 입력으로 확인하면 어떤 키가 눌렸는지 파악할 수 있습..

Verilog 복습 프로젝트(2) - 스탑워치 설계

스탑워치를 표시할 7세그먼트 디스플레이 제어 모듈을 완성한 뒤 분, 초, 밀리초를 계산하여 세그먼트로 전송하는 스탑워치 모듈 설계를 진행했습니다.Stopwatch 모듈 정의Module Name: stopwatchInputsrstclk[1:0] mode:스탑워치가 Mode 1에서만 값을 세그먼트로 보낼 때 사용btn1: Start/Stop 버튼btn0: Reset 버튼Outputsreg [13:0] value: 스탑워치를 통해 계산한 네자리 값을 출력Registersreg [3:0] sec0_1, sec0_01: 0.1초, 0.01초의 값을 저장하는 레지스터. 0~9까지의 숫자를 저장하므로 4비트 사용reg [5:0] sec, min: 초, 분의 값을 저장하는 레지스터. 0~59까지의 숫자를 저장하므로 6..

Verilog 복습 프로젝트(1) - 7세그먼트 제어

스탑워치를 설계하기에 앞서, 숫자를 표시하기 위한 네자리 7세그먼트 디스플레이를 제어하기 위한 코드를 작성했습니다.이번에 사용한 디스플레이는 이전에 반도체 설계교육 중 임베디드 시스템 설계 과정에서 사용한 디스플레이를 사용했습니다. 하만(Harman) 세미콘 아카데미 11일차 - SW 구조설계( 데이터 입출력, 버튼 LED 점멸, 7세그먼트 출력 )[2024.03.21.목] 인천인력개발원 하만 세미콘 아카데미임베디드 시스템을 위한 SW 구조설계디지털 데이터 입출력1. 디지털 데이터 출력 PORT 레지스터 (출력 레지스터) 포트: 8개의 핀을 하나로 묶어semicon-circuit.tistory.com 하만(Harman) 세미콘 아카데미 12일차 - SW 구조설계( 7세그먼트 - 16진수 출력, 스톱워치 ..

Verilog 복습 프로젝트 - 스탑워치 / 계산기 / 타이머 / Pmod OLED

방학동안 verilog 복습을 진행하며 기본적인 하드웨어부터 구현해보고, 이후 pmod OLED를 활용한 장치까지 구현할 예정입니다. 프로젝트 개요기간: 2025.01.20~2025.02.28 (약 1개월)목적: verilog를 이용한 하드웨어 설계 복습 및 SoC, IP에 대한 이해목표: 7세그먼트, 키패드, 버튼, OLED 디스플레이 등을 활용한 스탑워치, 계산기 등 하드웨어 설계하드웨어 구성 1. 모드 표시 LED: 모드에 따라 LED의 색, 위치가 변함2. 스탑워치 Start/Stop 버튼3. 스탑워치 Reset 버튼4. 모드 변경 버튼5. 7세그먼트 디스플레이6. 계산기 키패드7. Pmod OLED 디스플레이 FPGA 보드: Digilent Cora Z7 기존에 반도체 설계교육에서 사용하던 Di..

UART(Universal Asynchronous Receiver/Transmitter)

UART란?UART(Universal Asynchronous Receiver/Transmitter, 범용 비동기화 송수신기)는 데이터 버스로부터 병렬로 받은 데이터를 직렬 방식으로 전환하여 다른 UART로 전송하는 컴퓨터 하드웨어의 한 종류이다.UART로부터 직렬 데이터를 수신한 다른 UART는 이를 병렬 방식으로 전환하여 데이터 버스에 전송한다.통신에 사용되는 데이터는 메모리나 레지스터에 저장되어 있으며, 이를 차례데로 읽어 직렬로 통신한다. 기본 단위는 최대 8비트이다.UART 통신의 특징 UART는 비동기식(Asynchronous) 통신 방식으로 RX와 TX 각각의 clock 신호를 사용한다. Bit 구성 Start Bit: 전송 데이터 패킷의 시작 부분을 알린다. 이 신호를 통해 RX에서 데이터 ..

UART 설계(3) - UART RX 설계 / 최종 설계 완료

FSM 순서idle: din이 1로 유지될 때 대기상태. din이 0이 되면 enable 신호에 맞춰 load로 상태 변경load: 8비트의 데이터를 받은 뒤 parity를 읽고, parity check로 상태 변경parity check: 저장한 parity bit와 data bit를 이용하여 패리티 검사transmit: 패리티 검사 이후 병렬 데이터를 dout으로 전송다음과 같이 코드를 작성했다.`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company: // Engineer: // // Create Date: 2024/07/28 13:46:57// Design..