Vitis - 08. Application Software(AP) 구성
·
AMBA BUS/Vitis
소프트웨어를 작성할 때 작업을 효율적으로 관리하고 코드를 체계적으로 구성하기 위해 전체 과정을입력(INPUT)처리(PROCESSING)출력(OUTPUT)의 세 단계로 나눌 수 있다. 이 각각의 단계를 담당하는 역할을 Listener, Controller, Presenter라는 이름으로 정의하면 다음과 같이 설명할 수 있다:1. Listener (입력 담당)외부에서 들어오는 데이터를 수집하고 감지하는 부분데이터를 입력받고 이를 처리할 수 있는 형태로 가공해 Controller에게 전달한다.2. Controller (처리 담당)Listener로부터 받은 데이터를 분석하고 논리적인 처리를 수행하는 부분Controller는 입력 데이터를 기반으로 무엇을 할지 결정한다. 조건을 판단하고, 계산을 수행하며, 필요한..
Vitis - 07. Interrupt
·
AMBA BUS/Vitis
이번에는 Vitis를 통해 Interrupt를 구현해보자. 우선 Interrupt를 구현하기 위해서는 Interrupt Timer를 위한 Counting Module, 그리고 Block Design에서 몇가지가  추가되어야 한다.1. Timer IP (Interrupt Tick 발생기) 설계module Timer ( input wire clk, input wire resetn, input wire enable, input wire clear, input wire [31:0] PSC, output wire [31:0] TCNT, input wire [31:0] ARR, output wire ..
Vitis - 06. FND 제어
·
AMBA BUS/Vitis
Vitis와 AXI4-Lite Interface를 이용해 소프트웨어적으로 FND를 제어해보자.1. FND CONTROLLER 구현 후, AXI Interface로 연결module fndController ( input clk, input reset, input en, input [ 3:0] fndDot, input [13:0] fndData, output [ 3:0] fndCom, output [ 7:0] fndFont); wire [3:0] digit_1, digit_10, digit_100, digit_1000; wire [3:0] bcdData; wire tick_1khz; wire ..
Vitis - 05. Common Code 작성
·
AMBA BUS/Vitis
펌웨어에서 보통 여러 모듈이나 프로젝트에서 공통으로 사용되는 유틸리티 함수나 기본 기능을 common 폴더로 만들어 모아 놓는다. 그 중 시간 관리와 관련된 역할을 하는 delay와 Tick_timer를 구현해보자.1. Tick Generator를 구현 후, AXI Interface로 연결module basicTimer ( input wire clk, input wire resetn, input wire enable, input wire clear, input wire [31:0] PSC, output wire [31:0] TCNT); reg [31:0] counter; reg [31:0] timer; ..
Vitis - 04. Driver Code 작성
·
AMBA BUS/Vitis
드라이버 코드는 하드웨어와 소프트웨어 간의 인터페이스 역할을 하며, 특정 하드웨어를 추상화하여 쉽게 제어할 수 있도록 돕는 역할을 한다. 본 글에서는 GPIO를 이용한 LED 제어에 사용될 간단한 Driver Code를 작성해보고자 한다.1. GPIO1) Header File#ifndef DRIVER_GPIO_GPIO_H_#define DRIVER_GPIO_GPIO_H_#include #include "xparameters.h"typedef struct { uint32_t DDR; uint32_t ODR; uint32_t IDR;}GPIO_TypeDef;#define GPIOA_BASE_ADDR XPAR_GPIO_0_S00_AXI_BASEADDR#define GPIOB_BASE_ADDR XPAR_GP..