Main Title : Smart Mobility platform
Subtitle
AXI-based Real - time Attitude Stabilization and Autonomous Obstacle Avoidance SoC Platform via 2D Distance Mapping
Development Environment & Tools
- FPGA (Basys3): Xilinx Vivado
- Block Design, IP Integration, Verilog Compilation
- Embedded SW Development: Xilinx Vitis
- Platform Creation, C Application
- Simulation & Debugging:
- Vivado Simulator, Logic Analyzer, UART Monitor (CoolTerm)
- Python & Scripting: LUT Generation
Programming Languages
- Verilog HDL: Custom MyIP (FSM, Cartesian Transform, PWM, etc.)
- C: I²C Control, AXI Register Access, LCD/OLED/UART Logic
- Python: Sin/Cos LUT Auto-Generation Script
AXI4_Lite Interface

AXI4-Lite
- For simple, low-throughput memory-mapped communication
(Example: to and from control and status registers)
Transfer Timing Diagram

AXI4_Transactions



System Architecture

PWM (DC 모터)
🔹Forward Mode
- Start 버튼을 누르면 차량이 앞으로 이동합니다.
- Stop 버튼을 누르면 정지합니다.
🔹Turning Mode
- Left / Right 버튼을 누르면 한쪽 바퀴가 회전하여 차량의 방향을 전환합니다.
🔹Precise Angle Control
- 모터의 회전 시간을 기준으로 PWM 듀티 비율을 세밀하게 조정합니다.
- 일정하고 짧은 회전 시간 동안 동작하여 차량은 매번 약 10도씩 회전하며, 정확한 방향 제어가 가능합니다.
- 10도씩 회전하는 이유는 초음파 센서와 동일한 각도로 움직이기 위해 10도씩 회전하도록 설정하였습니다.
PWM (Servo_Motor)
- 원하는 각도는 스위치를 통해 선택되며, FND에는 현재 서보 각도가 10° 단위로 표시됩니다.
- Enable 신호가 활성화되면 서보 모터는 10°씩 단계적으로 연속 회전합니다.

🔹Servo Motor 1
- 회전 범위: 0° ~ 180°
- 환경 스캐닝(거리 측정) 용도로 사용
🔹Servo Motor 2
- 프로토타입 구조상 회전 범위가 **0° ~ 140°**로 제한됨
- 초음파 센서와 결합되어 방향 제어 수행
- 최종 각도는 MPU6050 자세 데이터에 따라 보정됨
🔹Auto-Leveling Behavior
- 자이로스코프가 수평 상태를 감지하면, Servo 2는 자동으로 **70°**로 설정됨
- 초음파 센서가 항상 수평 정렬 상태를 유지하도록 보장
Ultrasonic Sensor (HC-SR04)
- 초기 상태에서는 현재 서보 모터의 각도가 FND에 표시됩니다.
- 모드가 변경되면 FND에 초음파 센서로부터의 실시간 거리 값이 표시됩니다.
- 리셋 후 서보 모터는 0° 초기 위치로 복귀합니다.
🔹Direction Selection Based on Distance Data
- 총 19개 방향(10° 간격)에서 거리 데이터를 수집합니다.
- 가장 먼 거리를 가진 방향을 식별합니다.
- 초음파 센서는 자동으로 회전하여 가장 먼 방향을 향합니다.
Temperature and Humidity Sensor (DHT11)
- DHT11 센서를 이용해 주변 온도를 측정하고, 이를 초음파 거리 보정에 적용하여 오차를 줄입니다.
- 보정된 거리 값은 FND에 표시됩니다.
🔹Distance Adjustment Values per Temperature

🔹Equdation

I2C Communication Protocol
🔹I2C OLED Display
- MPU6050 센서 데이터를 I2C를 통해 OLED에 표시
- 자세(Attitude) 데이터를 실시간 OLED 화면으로 출력
🔹UART Serial Output
- MPU6050 센서 데이터를 UART로 출력
- 자세(Attitude) 데이터를 UART 직렬 통신으로 전송
Python Script Automation
🔹Purpose
- FPGA 메모리 IP에서 사용할 사인/코사인 값(.coe 파일) 을 자동 생성
🔹Key Features
- 0° ~ 180° 구간에서 10° 간격으로 총 19개 포인트 샘플링
- sin(θ), cos(θ) 값을 Q1.15 형식(16비트 signed 정수) 으로 변환
- Vivado Block Memory Generator에서 사용할 수 있는 .coe 파일 자동 생성
- 생성 예시 파일: sin_lut.coe, cos_lut.coe


Proto Type

🔹Specific
- MPU6050 기반 자세 안정화
- 0°~180° 스윕을 통한 장애물 거리 스캔
- HC-SR04 & DHT11을 활용한 온도 보정 거리 측정
- (각도, 거리) 데이터를 (X, Y) 좌표로 변환하여 2D 매핑
- 자율 장애물 회피 기능 구현
Implemented Code

https://juniha.tistory.com/134
[Smart Mobility platform] Implemented Code
AXI_Sensor IP 1. 사용 코드 _ Ultrasonic_DHT11// ============================================================================// module: ultrasonic_correction_dht11// - 초음파(raw) + DHT11(온도) → 보정된 거리(dist_corr)// - 나눗셈을 순
juniha.tistory.com
Summary & Conclusion
구현 과정





Summary & Conclusion


'Verilog_RTL 설계 > SoC' 카테고리의 다른 글
| [대한 상공 회의소] 광주 인력개발원_ 프로젝트 발표회 (1) | 2025.08.27 |
|---|---|
| [Smart Mobility platform] Implemented Code (4) | 2025.08.07 |
| [MicroBlaze] DHT11_iic (3) | 2025.07.29 |
| [MicroBlaze] Button_control (1) | 2025.07.28 |
| [MicroBlaze] fnd_control (1) | 2025.07.28 |