전체 글 129

[Verilog_RTL]_모듈 분할

목적입력 신호들(A, B, C)을 조합 논리로 처리한 결과를 클록 동기 방식으로 저장하고, 이를 조건부로 다음 단계에 전달하는 플립플롭 기반의 순차 논리 회로를 모듈화하여 설계하는 것.모듈 분할의 목적복잡도 감소 (Reduce complexity)→ 큰 회로를 작은 단위로 나눠 설계를 쉽게 만들기 위함재사용성 향상 (Enhance reusability)→ 동일한 모듈을 여러 설계에 재사용 가능디버깅 및 유지보수 용이 (Improve maintainability & debugging)→ 오류를 쉽게 찾고 수정하기 쉬움계층적 설계 적용 (Enable hierarchical design)→ 상위 시스템을 하위 블록으로 나눠 체계적으로 구성협업 효율 향상 (Facilitate team-based developm..

Verilog_RTL 설계 2025.06.26

[Raspberry_PI]_Implementation of Sparse Matrix Transposition Using Structures

목적 희소 행렬을 (행, 열, 값) 형태로 구성된 구조체 배열로 표현함으로써, 0이 아닌 원소만을 효율적으로 저장하고, 이를 기반으로 전치 연산을 수행하여 메모리 절약과 구조체 기반 데이터 처리 방법 확인C 언어의 구조체를 활용하여 희소 행렬(Sparse Matrix)의 전치 연산(transpose)**을 구현하는 것을 목적환경Raspberrypi 3B, 64bit, 6.12, y-ssh로 접속Matrix 사용 코드#include #include #define MAX_TERMS 100 // 저장할 수 있는 최대 비영(非零, 0이 아닌) 항의 개수// 희소 행렬의 하나의 항을 표현하는 구조체typedef struct { int row; // 행 인덱스 int col; // 열 인덱스 ..

[Raspberry_PI]_Square Matrix / Sparse Matrix

목적 C 언어를 사용하여 정방 행렬(밀집 행렬)과 희소 행렬의 전치 연산을 각각 구현하고, 이들의 데이터 표현 방식, 메모리 효율성, 알고리즘적 특성을 비교 분석환경Raspberrypi 3B, 64bit, 6.12, y-ssh로 접속정방 행렬_Square Matrix행과 열의 개수가 같은 행렬특징대부분의 원소가 0이 아닌 일반적인 밀집 행렬일반적인 2차원 배열 사용 _2D 배열(연속 메모리)간단히 index 교환으로 수행 _ 단순 인덱스 교환메모리 접근이 연속적이므로 일반적으로 빠름_ 메모리 사용량이 높음이미지 처리, 선형대수 등에 사용범용 수학 연산, 기초 행렬 연산사용 코드#include // 두 값 중 큰 값을 반환하는 매크로 (삼항 연산자 사용)#define MAX(a,b) (((a) > (b))..

[Raspberry_PI]_Kernel Thread-Based LED Blinking in Linux

목적 Linux kernel thread 를 활용하여 사용자 개입 없이 주기적으로 LED를 점멸시키는 기능을 구현함으로써, kernel 수준에서의 병행 처리 및 하드웨어 제어 기법을 이해하고, GPIO 인터페이스와 커널 스레드의 동작 원리를 확인.환경Raspberrypi 3B, 64bit, 6.12, y-ssh로 접속구현 과정Mobaxterm 에서 ssh pi@192.168.0.36 접속mkdir ~/c_project // 홈 디렉토리에 'c_project'라는 새 디렉토리 생성mkdir ~/c_project/led_blink // 'c_project' 디렉토리 안에 'led_blink'라는 하위 디렉토리 생성cd ~/c_project/led_blink // 'l..

[Raspberry_PI]_QEMU

QEMU_(Quick_Emulator)하드웨어(프로세서, 메모리 등)를 가상화하거나 Emulation하는 오픈 소스 소프트웨어이다.무료, 공개 소스, x86, ARM, PowerPC, RISC-VEmulator : 상이한 프로세러를 동작을 모사하여 작동하는 시스템다른 아키텍처의 CPU까지 소프트웨어적으로 모사 가능 바이너리 설치 프로그램 https://qemu.weilnetz.de/w64/ QEMU for Windows – Installers (64 bit)QEMU Binaries for Windows (64 bit) Here you get QEMU related binaries for 64 bit versions of Microsoft Windows. Name Last modified Size Des..

[Verilog_RTL]_FSM_mealy

유한 상태 머신 (Finite State Machine, FSM)디지털 논리 설계, 컴퓨터 제어 시스템의 동작을 상태와 상태 간의 전이로 표현하는 개념적 모델이다. 입력에 따라 일정한 상태(state)를 가지며, 현재 상태와 입력 값에 의해 다음 상태(next state) 와 출력이 결정된다.시스템이 가질 수 있는 상태의 수가 유한하므로 Finte(유한) 상태 머신이라 부른다.동작 방식에는 Mealy model 과 Moore model 이 있다.Mealy Machine 특징입력이 변할 때 마다 상태(state) 변화가 가능하다.상태(state) 변화와 함께 출력이 생성된다.입력이 변하면 상태가 같더라도 출력이 바로 변할 수 있다.출력이 입력과 상태에 의존하므로 Moore FSM과 상대적으로 복잡하다.신호..

Verilog_RTL 설계 2025.06.20

[Verilog_RTL]_FSM_moore

유한 상태 머신 (Finite State Machine, FSM) 디지털 논리 설계, 컴퓨터 제어 시스템의 동작을 상태와 상태 간의 전이로 표현하는 개념적 모델이다. 입력에 따라 일정한 상태(state)를 가지며, 현재 상태와 입력 값에 의해 다음 상태(next state) 와 출력이 결정된다.시스템이 가질 수 있는 상태의 수가 유한하므로 Finte(유한) 상태 머신이라 부른다.동작 방식에는 Mealy model 과 Moore model 이 있다.Moore Machine 특징출력이 현재 상태에만 의존한다. _출력이 상태에만 의존하므로 Mealy FSM와 비교적 간단하다출력 = f(현재 상태)출력이 state가 바뀔 때만 변한다.건트롤러, 상태 기반 시스템 저어 등에서 사용된다.출력이 상태에만 의존하므로..

Verilog_RTL 설계 2025.06.20

[Verilog_RTL]_7-Seg_DECODER

7-세그먼트 디코더 숫자(digit) 7개, 소수점(dot point) 1개로 구성된 출력장치 발광 다이오드의 배열단자: 애노드(anode), 캐소드(cathod)seg_datasheet사용 코드module 7_seg_decoder( iCLK, // 클록 신호 (ex. 1MHz) iRESETn, // Active-Low 리셋 신호 (0이면 리셋, 1이면 동작) iBCD, // 4비트 BCD 입력 (0~9) oCOM_FND, // 7-Segment 공통 단자 출력 (여기서는 고정값 출력) oDATA_FND // 7-Segment LED에 출력할 제어 신호); // 입력 포트 선언 input iCLK;..

Verilog_RTL 설계 2025.06.20

[Rasberry_PI]_Thread_

GPIO 라이브러리 수동 설치소스 파일 복사cp led_blink.c led_thread.cled_blink.c를 led_thread.c로 복사 기존 코드 기반으로 새로운 스레드용 코드 작성하기 위한 준비새 파일 코드 편집bash복사편집nano led_thread.cled_thread.c 파일을 nano 에디터로 열어 코드 수정 시작 새 코드 컴파일gcc -o led_uni_thread led_uni_thread.c -lwiringPiled_uni_thread.c를 led_uni_thread 실행 파일로 빌드lwiringPi: WiringPi 라이브러리를 링크기존 WiringPi 디렉토리 삭제rm -rf WiringPi/혹시 남아있던 WiringPi 소스 디렉토리를 강제로 삭제WiringPi 소스 코드 ..

[Raspberry_PI]_GPIO PIN 제어

gcc 컴파일러 작업라즈베리파이의 GPIO핀을 제어하기 위한 라이브러리를 설치git clone cd WiringPi./buildgpio -v. GPIO readall 명령을 이용하여 Pin 번호 확인#include // WiringPi 라이브러리 헤더 (GPIO 제어 함수 제공)#include // 표준 입출력 함수 헤더 (printf 사용)// 사용할 핀 번호 정의 (WiringPi 번호 체계)// 실제 라즈베리 파이 BCM 핀 번호와 다를 수 있음 (예: GPIO 17이 WiringPi 0)#define LED_PIN 0 int main(void) { // WiringPi 라이브러리 초기화 // 실패하면 -1을 반환하므로, 에러 메시지를 출력하고 프로그램 종료 ..