# 임베디드 공방 > Embedded Forge ## Posts - [Serial Communication - SPI 개념](https://embedded-forge.com/serial-communication-spi-%ea%b0%9c%eb%85%90/): Table of Contents Toggle SPI란?SPI 특징 및 장단점SPI 신호(SCLK, MOSI, MISO)SPI 동작 원리(서술)CPOL/CPHA 4가지 모드 동작 사항MODE0 (CPOL=0, CPHA=0)MODE1 (CPOL=0, CPHA=1)MODE2 (CPOL=1, CPHA=0)MODE3 (CPOL=1, CPHA=1) SPI란? => 시리얼 통신의 한 종류로서, 동기식 전이중 방식의 고속 프로토콜. SPI 특징 및 장단점 SPI 신호(SCLK, MOSI, MISO) 기본적으로 SPI는 SCLK, MOSI, MISO가 공통으로 연결된다.그리고 SS (또는 CS)라고 하는 셀렉터를 통해 Slave를 선택하게 된다. SS는 Active Low로 동작하기 때문에 Low로 떨어트려줘야 해당하는 Slave가 선택이 된다.또한 Slave는 한 번에 하나만 선택이 되며, 2개 이상의 슬레이브가 선택되면 안된다. SPI 동작 원리(서술) 일단 SPI 통신의 기본이 되는 프로토콜은 다음과 같다. 마스터의 중요한 역할 중 하나가 클럭을 생성하는 ... Read more - [AMBA - 개념](https://embedded-forge.com/amba-%ea%b0%9c%eb%85%90/): AMBA(Advanced Microcontroller Bus Architecture)란?   APB AHB AXI 특성 – 채널 1개– 읽기 쓰기 동시 불가– 핸드셰이크 최소 2클럭– 버스트 전송 없음– 로직 단순 – 채널 1개– 읽기 쓰기 동시 불가– 핸드셰이크 최소 1클럭– 버스트 가능– 파이프라이닝 가능 – 채널 5개– 읽기 쓰기 동시 가능– Outstanding Transaction(응답을 기다리지 않고 다음 요청 전송)– ID 기반 -> 여러 마스터가 동시에 전송 가능– 로직 복잡 용도 저속 페리퍼럴용 중간 성능용 고성능용 예시 UART, GPIO, Timer 등 DMA, 단순 마스터 CPU<->메모리, 대용량 전송 - [AMBA AXI - GPIO IP 설계 (3)](https://embedded-forge.com/amba-axi-gpio-ip-%ec%84%a4%ea%b3%84-3/): 개요 지난 포스팅(AMBA AXI – GPIO IP 설계(2))에 이어서, Vitis IDE에서 작업을 이어가보자.버튼을 누르면 해당 자리수의 LED가 켜지도록 구현할 것 소스 코드 작성 빌드 및 실행 빌드 상단의 망치 모양 또는 프로젝트 우클릭 후 Build Project 클릭 실행 및 실행 결과 확인 결론 각 자리수 별 버튼 입력에 맞게 LED 4개가 모두 ON/OFF되는 것을 확인 - [AMBA AXI - GPIO IP 설계 (2)](https://embedded-forge.com/amba-axi-gpio-ip-%ec%84%a4%ea%b3%84-2/): 개요 지난 포스팅(AMBA AXI – GPIO IP 설계(1))에 이어서, GPIO IP를 MicroBlaze에서 동작시키기 위해 Vitis로 올리는 작업을 해보겠다. Block Design MicroBlaze용 Vivado 프로젝트 생성 Block Design 진행 Create Block Design 클릭 Design name 마음대로 입력 MicroBlaze 추가 Diagram 탭에서 + 버튼 클릭 microblaze 검색 후 첫번째 선택 Run Block Automation 클릭 메모리 용량 넉넉하게 128KB 선택 클락 설정 변경 살구색으로 표시된 clk_wiz_1 더블 클릭 CLK_IN1을 sys clock으로 변경 후 OK Run Connection Automation 클릭 모두 선택 후 OK Regenerate Layout 클릭하여 재정렬 uart 추가 Uart 모듈은 기본적으로 추가해주는 게 좋다. 2개 뜨는 것 중 AXI Uartlite 선택 UART 모듈 더블 ... Read more - [AMBA AXI - GPIO IP 설계 (1)](https://embedded-forge.com/amba-axi-gpio-ip-%ec%84%a4%ea%b3%84-1/): 개요 목표 AXI4-Lite 인터페이스 기반 GPIO IP를 설계하고, Vitis에서 SW 프로그래밍으로 동작 검증하는 것을 목표로 한다. 환경 Target HW Board: Basys3 Processor: MicroBlaze Development Tools Vivado 2020.2 Vitis 2020.2 IP 만들기 IP Packaging용 Vivado Project 생성 프로젝트 이름을 위와 같이 설정 Vivado 창이 뜨면 Create and Package New IP … 클릭 Create AXI4 Peripheral 선택 후 Next 이름을 gpio로 변경 후 IP location 위치 확인 후 Next IP location은 현재 프로젝트 폴더의 상위 폴더의 ip_repo로 설정되어있음 디폴트로 Next IP를 수정하여 사용할 것이므로 Edit IP 클릭 후 Finish Finish 클릭 후 다음과 같은 Vivado 창이 뜨게 된다. 파일탐색기를 열어서 프로젝트의 상위 ... Read more - [Verilog - FND(7-segment) Controller 설계](https://embedded-forge.com/verilog-fnd7-segment-controller-%ec%84%a4%ea%b3%84/): 개요 환경 Target HW Basys3 Development Tools Vivado 2020.2 FND Controller 설계 개요 Basys3 보드에는 FND가 내장되어 있다. FND는 결국 LED를 제어하는 것이기 때문에 LED가 어떤 조건에서, 어떻게 켜지는지를 이해해야 한다. FND 동작 원리 Basys3 Schematic에서 FND 회로는 다음과 같이 나온다. 우측에 pnp 트랜지스터가 4개 보이고, Emitter 쪽에 VCC 3.3V가 공통으로 물려있는 것을 확인할 수 있다. 위 회로에서는 Emitter에 3.3V가 걸려있기 때문에 Base 쪽인 AN 단자에 Low가 걸려야 Tr이 동작함을 확인할 수 있다 Tr이 동작하게 되면 A단자로 VCC 3.3V가 걸리게 되고, 각 LED에 해당하는 단자가 Low가 걸리면 LED 양단의 전압차가 발생하여 LED가 켜지는 원리이다. 기본적으로 이 방식을 Common Anode 방식이라고 ... Read more - [[C++] const & constexpr](https://embedded-forge.com/c-const-constexpr/): 개념 다음의 예시를 보면 이해가 빠를 것이다. 예시 - [AMBA AXI - AXI 종류별 특징](https://embedded-forge.com/amba-axi-axi-%ec%a2%85%eb%a5%98%eb%b3%84-%ed%8a%b9%ec%a7%95/): AXI 종류 AXI Full AXI Lite AXI Stream - [AMBA AXI - AXI가 고성능일 수 있는 이유](https://embedded-forge.com/amba-axi-axi%ea%b0%80-%ea%b3%a0%ec%84%b1%eb%8a%a5%ec%9d%bc-%ec%88%98-%ec%9e%88%eb%8a%94-%ec%9d%b4%ec%9c%a0/): AXI 개념 AXI란? AXI(Advanced eXtensible Interface)는 ARM이 개발한 AMBA(Advanced Microcontroller Bus Architecture) 프로토콜 중 하나로, 고성능 SoC 내부 버스 인터페이스다. 왜 고성능일 수 있는가? AXI가 고성능인 핵심 이유 채널 분리 (Read/Write 독립) 읽기와 쓰기가 별도 채널이므로 채널별로 동시에 수행이 가능 주소/데이터 채널 분리 주소 채널과 데이터 채널이 분리되어 있기 때문에 첫번째 트랜잭션의 데이터가 전송되는 동안 다음 트랜잭션의 주소를 미리 보내어 Slave가 내부적으로 준비하게 할 수 있음 이로 인해 레이턴시가 슬레이브 내부의 처리 시간으로 숨겨져서 버스가 IDLE 상태가 되는 시간을 최소화할 수 있음 버스트 전송(AXI-Full) 주소를 한 번만 전송하여 AXI4의 경우 최대 256비트의 연속 데이터를 전송 가능 주소를 매번 보낼 경우 ... Read more [comment]: # (Generated by Hostinger Tools Plugin)