전체 글 60

[Harman 세미콘 아카데미] Day_75(VGA)

오늘은 STM32Nucleo 보드를 통해 카메라 모듈을 제어하는 것을 배웁니다. 카메라 모듈은 OV7670 모델을 사용합니다.ST32Nucleo 보드와 Basys3보드와의 I2C 통신을 시켜서 카메라를 사용하게 됩니다. Basys3 - STM32Nucleo - Camera 와 같이 연결됩니다. STM32 Cube IDE를 활용하여 코딩을 진행합니다. STM32F411RE Board를 선택하고 파일을 생성하면 아래와 같은 칩이 생성됩니다. 카메라 모듈에 대한 Block Diagram을 그려보면 Camera와 VGA RGB Port 사이에 1Frame을 담는 Buffer가 존재하게 됩니다. RAM과 같은 동작을 하면서, Camera의 Data를 RAM에 Write하고 VGA RGB Port에 Read하여..

[Harman 세미콘 아카데미] Day_74(VGA)

오늘의 시작은 SW[15]번을 on/off하여 0일때는 RGB의 색상 조합 및 세기를 Switch를 통해 조절하고, 1일 경우에는 어제 만들었던 조정화면을 출력하도록 설계하였습니다. 아래의 코드는 RGB에 대한 출력 red, green, blue port를 분리하여 sw_mode(SW[15])에 따라 출력을 다르게 하도록 설정하였습니다. 아래는 생성된 Schematic에 대한 그림입니다. RGB에 대한 출력이 MUX를 통해 제어됨을 확인할 수 있습니다. 이번에는 비동기/ 동기 ROM에 이미지를 넣어 16bit의 image Data를 출력하여 VGA port를 통해 출력하고자 합니다. 아래의 그림을 보면, ROM Memory는 Controller로부터 x_pixel, y_pixel에 대한 좌표를 받..

[Harman 세미콘 아카데미] Day_73(VGA)

오늘부터 영상처리에 대한 VGA를 배웁니다. 먼저, 디스플레이의 기초에 대해 알아 보았습니다.브라운 박사가 진행한 음극선 실험으로 처음 영상에 대한 개념이 등장하였습니다. 진공관 내에서 가속화된 전자를 형광 물질 (= 음극선)에 쏘았을 때 발생하는 빛을 발견하였고, 이를 통해 CRT가 등장하였습니다. 저희가 옛날에 쓰던 브라운관이 되는 것이죠 필라멘트 코일을 통해 전자를 활성화하고, Annode를 통해 전자를 모으고 가속화합니다. 과속화된 전자들을 상하, 좌우 편향판을 거쳐 방향을 조절하여 형광물질이 발린 화면에 쏘게 됩니다. 전자를 받은 화면은 빛을 방출하게 되고, 이 빛의 조합으로 영상이 출력됩니다. FPGA와 디스플레이를 연결해줄 VGA Port에 대해 간략히 설명하면 - R, G, B : 아..

System Verilog 발표자료 : AMBA AXI BUS & Peripheral(SPI, I2C) 설계 및 UVM 검증

개발환경: Xilinx Vivado, Xilinx Vitis, Verilog, SystemVerilog, Synopsys, VerdiBOM : Digilent Basys3 FPGA Board, Logic Analyzer 주제 : AXI BUS Protocol 활용 및 SPI, I2C 통신 Protocol 설계 및 구현-> SPI, I2C의 Protocol의 Slave로 LED 제어 및 검증 번외,, SPI 통신 Protocol 설계 및 UVM 검증 + Verdi 활용 PPT 자료 : 코드 : 1) AXI Protocol (Master & Slave)https://github.com/Heeju99/Code_Verilog_SystemVerilog/tree/main/workspace/250512_AXI..

[Harman 세미콘 아카데미] Day_68(System Verilog)

I2C Protocol : 직렬 통신 프로토콜, 단거리 통신에 활용합니다. 특징 : 1) 두개의 wire(SDA, SCL)로 Master - Slave 간 통신 진행 2) 한번에 한 bit씩 전송하는 직렬 통신 3) 송/수신이 동시에 불가능 (Half Duplex) 4) 동기식 통신 Protocol 5) 두개의 wire는 Pullup 저항 존재 (내부 회로가 Open Drain 구조) 장점 : 1) wire가 두개이므로 단순하고 저렴하게 구현 가능 2) 여러 Peripheral을 연결할 수 있음 ㄴ Slave에 고유한 주소를 할당하여 통신 3) 다중 Master를 지원하여, 여러 Master와의 연결 가능 (잘..

[Harman 세미콘 아카데미] Day_67(System Verilog)

SPI Slave 설계 : CPOL = 0, CPHA = 0 기준, Rising Edge 발생 시 Data Sampling, Falling Edge 발생 시, Data bit 전송 Slave는 SCLK를 기준으로 동작하는데, SCLK의 Edge를 검출할 방법이 필요했습니다. 그래서, Button_Debounce 로직을 짜면서 Edge Detector를 활용했던 방법을 이용하여 검출합니다. SCLK의 Rising Edge와 Falling Edge를 아래의 그림과 같이 Tick의 형태로 검출하여, Slave Interface의 FSM을 설계하며 Sampling과 Data 출력의 Timing을 정하기 위해 사용합니다.F/F 두개를 두어 SCLK를 기준으로 동작하도록 설계합니다. Sync1의 경우, SCLK가..

[Harman 세미콘 아카데미] Day_66(System Verilog)

통신 프로토콜의 차이UART vs SPI vs I2C UART : 비동기 통신이면서 오버헤드(Start/Stop bit) 때문에 느리고, 1:1 연결이기 때문에 확장성이 적다.SPI : 동기 통신이면서 CS로 연결하기 때문에 빠르다I2C : Half Duplex, CS 없이 주소를 통해 동작하기 때문에 SPI 보다 느림 ㄴ But, 많이 쓰이는 이유 : 필요한 라인이 적고, 하나의 선에 주소와 데이터를 한번에 보내 편리하다 빠른 속도를 원할때 : SPI Protocol 사용Simple한 통신 원할때 : I2C 사용 SPI Master 설계 : IDLE : 신호를 대기하는 state로, Start 신호를 받으면 CP0 state로 천이합니다. CP..

[Harman 세미콘 아카데미] Day_65(System Verilog)

어제의 Testbench를 이어서 몇 가지의 수정사항이 있었습니다.먼저, Driver와 Monitor의 Timing 문제입니다. Driver가 DUT에 item을 던질 때와 Monitor가 DUT로부터 item을 받을 경우를 위해 #1 ns를 추가하여 약간의 waiting timing을 걸어줍니다. 또한, Simulation 시 Sequence가 두 번 발생하였는데, adder_test라는 handler를 하나 더 추가하고 new를 통해 하나의 instance를 불러오기 때문이었습니다. 그래서 이를 제거해 줍니다. 그리고, test Class의 run_phase를 하기 전에 topology를 추가하여 Tree 구조를 이루고 있는 Component에 대해 확인할 수 있습니다. 그래서, 아래의 그림과 같이 ..

[Harman 세미콘 아카데미] Day_64(System Verilog)

UVM 프레임워크 : 새로운 디렉토리를 생성하고 rtl, tb의 파일을 하나씩 만들어 줍니다. rtl에는 우리가 검증할 RTL Design인 Adder.v를 만들어 주고, tb의 파일에는 이를 검증하기 위한 tb_adder.sv를 만들어 줍니다. TestBench는 SystemVerilog를 하면서 작성했던 것처럼 위의 그림과 같이 module을 설계하고 테스트벤치를 진행합니다. 먼저, RTL adder.v file입니다. 간단한 8bit adder module로 Testbench를 통해 이 모듈을 검증할 것입니다. 이를 검증하기 위해, Testbench를 구성합니다. DUT에는 저희가 생성한 adder module이 들어가게 되고, sequence_item을 통해 adder의 port 값인 a, b..

[Harman 세미콘 아카데미] Day_63(System Verilog)

- MicroBlaze : CPU- Local Memory : Memory- MDM : Debugging Tool- InterConnector : AXI Protocol을 위한 교환원- CLK : System Clock Peripheral을 위한 GPIO와 UART를 추가하고 이들을 HDL로 Wrapping을 하게 되면, Application을 동작하기 위한 플랫폼이 생성이 되는 것입니다. HDL Wrapping 후 생성되는 Top Module의 Instance들을 Constraints에 적용을 시켜 (ex. GPIOA에 대한 0~8번은 Switch로, 8~16번은 LED에 할당) BitStream을 만들어 사용하면 됩니다. 플랫폼은 Application을 동작하기 위한 준비 단계입니다. C..