본문 바로가기

전체 글317

[Harman 세미콘 아카데미] 99일차 - SoC Design(UART Interrupt, I2C) [UART - Interrupt] 📌 Document Pmod : 보드만드는 회사의 규격, 표준은 아님. 인터럽트를 배웠으니, 이제 UART를 활용해서 수신을 할 수 있다. 인터럽트 없이도 가능하긴 한데, 계속 입력받을 수는 없으니까~ 필요할 때만 받도록 만들어 보자. 📌 Main Code 전에 만들었던 btn_intc_hw를 가져오자. #include // 표준 입력/출력 함수 #include "platform.h" // 플랫폼에 특화된 정의 및 초기화 #include "xil_printf.h" // Xilinx printf 함수 #include "xparameters.h" // 하드웨어 플랫폼의 매개변수 정의 #include "xgpio.h" // 하드웨어용 일반 I/O 함수 #include "xin.. 2023. 11. 24.
[Harman 세미콘 아카데미] 98일차 - SoC Design(AXI, SystemVerilog를 활용한 Simulation, button Interrupt, switch Interrupt) [AXI Protocol] 📌 Block Design 이번엔 얘부터 추가해준다. VIP : verification IP라고, 검증된 IP라는 뜻 📌 Simulation 현장가면 검증할 때, SystemVerilog를 대부분 사용하므로 미리 맛 좀 보고 가자. 가장 큰 차이점은 C++처럼 객체(Class)를 만들 수 있다는 장점이 있다. Class의 장점은 다른 사람이 만들어 놓은 것을 가져다 쓰기 편하다는 것이다. (Class의 Include가 가능) 그러다보니 가져다 쓸 만한 것들도 많이 만들어 놨음 가장 대표적인 것이바로 UVM Verilog vs SystemVerilog Verilog SystemVerilog include import reg bit wire logic import axi_vip_p.. 2023. 11. 23.
[Harman 세미콘 아카데미] 97일차 - SoC Design(UltraSonic, 온습도센서/DHT11) [UltraSonic] 📌 Block Design 입력을 연결해준 것처럼, 출력값 또한 레지스터에 연결해줄 수 있다. 이 방식을 사용해 초음파센서(DHT11) IP을 설계해보자 // Users to add ports here input echo, // 외부에서 입력을 받아야 하므로 output trig, // User ports ends wire [15:0] distance_cm; // Address decoding for reading registers case ( axi_araddr[ADDR_LSB+OPT_MEM_ADDR_BITS:ADDR_LSB] ) 3'h0 : reg_data_out 2023. 11. 22.
[Harman 세미콘 아카데미] 96일차 - SoC Design(Push button, PWM, Servo Motor 제어) [Push Button] 📌 Block Design GPIO 추가 Wrapper 다시 해주고, Re-load해주면 된다. 📌 Main Code 작성 1. 하드웨어 Export 해주고 2. 플랫폼 프로젝트만들고 빌드해주고 3. 어플리케이션 프로젝트 만들고 main code 창 오픈 Push Button의 번호를 알아내기 위해 LED로 테스트해보자. #include #include "platform.h" #include "xil_printf.h" #include "xparameters.h" #include "xgpio.h" #define LED_ID XPAR_AXI_GPIO_LED_DEVICE_ID #define SWITCH_ID XPAR_AXI_GPIO_SWITCH_DEVICE_ID #define FND_.. 2023. 11. 21.
[Harman 세미콘 아카데미] 95일차 - SoC Design(SoC Review, MMIO, FND Control, FND module Instance) [SoC Review] 📌 SoC 개요 우리가 만든 선풍기같은 것도 시스템이지 않느냐? 시스템은 '계'라는 뜻이니, 맞기는 하다. 하지만 SoC에서의 시스템은 다른 의미이다. CPU, RAM 등 컴퓨터 시스템을 의미한다는 것 컴퓨터 자체를 칩 안에 집어 넣었다는 뜻 모바일 기술 발전을 가장 막고 있는 것이 바로 배터리 성능 CPU는 얼마든지 더 성능을 올릴 수 있다. AP 같은 것들을 더 좋은 걸 쓰면 됨 근데 그러면 1~2시간만에 배터리 다 소모됨. 시스템에 다 넣는 것은 문제가 아닌다. IoT라던가, 가전제품이라던가, 예전에는 시스템을 쓰지 않았던 기기들이 요즘에는 시스템을 다 쓰기 시작했다. TV나 휴대폰 뜯어보면, 기판 하나 들어있고 끝. → System on a Chip 그런 기기들의 요구가 점.. 2023. 11. 20.
[Harman 세미콘 아카데미] 94일차 - SoC Design(Block Design과 Vitis를 활용한 기초 기능의 구현) [Vitis] 📌 Export Hardware 우리는 어제 UART 기능이 있는 시스템 하나를 만들었다. Generate Bitstream하고 Export Hardware시켜주도록 하자. Include bitstream은 꼭 체크해줘야 한다. 그래야 비트스트림까지 같이 Export됨 📌 Vitis AVR할 때는 마이크로칩스 CoretexM Vitis는 IDE에 해당되는 것 다른 건 보드를 고를 수 있는데, 이 건 우리가 방금 만든 거라 우리가 만들어준 보드 파일의 타입이 바로 XSA 파일 지금 뭐한거냐면, 하드웨어 플랫폼을 하나 만든 것이다. 이렇게 해주면 우리가 만든 보드에 대한 BSP들이 따라온다. - BSP(보드 서포트 팩)(드라이버 등) - Vitis에서도 ARM에서 사용했 던 HAL 함수처럼, .. 2023. 11. 17.
[Harman 세미콘 아카데미] 93일차 - SoC Design(CPU를 활용한 Calculator 구현, SoC / MicroBlaze) [Calculator] CPU와 4x4 KeyPad, FND를 활용하여 계산기를 구현해보자. 키패드 구성은 다음과 같다. 7 8 9 ÷ (D) 4 5 6 × (E) 1 2 3 - (B) C 0 = (F) + (A) 📌 Top module module Calculator_Top( input clk, reset_p, input [3:0] row, output [3:0] col, output [3:0] com, output [7:0] seg_7 ); wire [3:0] key_value; wire key_valid; key_pad_cntr key_pad(.clk(clk), .reset_p(reset_p), .row(row), .col(col), .key_value(key_value), .key_valid(ke.. 2023. 11. 16.
[Harman 세미콘 아카데미] 92일차 - Verilog(CPU Review / 시뮬레이션) [CPU Review] CPU 동작 Sequence 인스트럭션 Fetch(롬에서 명령어 읽어들임) - Decode(명령어 해석) - Execute(명령어 실행) STM보드를 예시로 들면, 윗부분이 ST Link 아랫 부분이 컴퓨팅 칩 여기서 ST Link가 프로그래머 [Simulation] 모든 경우에 대해 시뮬레이션하며 디버깅해보자. module tb_processor(); reg clk, reset_p; reg [3:0] key_value; reg key_valid; wire [7:0] outreg_data; wire [3:0] kout; // key로 입력된 값을 출력(프로세스가 키 값을 제대로 받는 지 확인하기 위한 것) processor DUT(clk, reset_p, key_value, key.. 2023. 11. 15.