반응형

FPGA - 프로세서 그리고 데이터의 이동 29

PCIe 통신 - Configuration Space, Base Address Register 개념

PCIe 통신 중 언급되는 용어인 Configuration Space, Base Address Register 에 대해 정리하였다.  Configuration Space ?  PCI configuration space is the underlying way that the Conventional PCI, PCI-X and PCI Express perform auto configuration of the cards inserted into their bus.   프로세서의 PCIe slot에 PCIe 장치들이 연결되어 있다. 프로세서는 어떻게 PCIe 장치를 인식할 수 있을까 ? PCIe장치가 나 이런 장치에요 라고 프로세서한테 알려주는것인가? 아니다! PCIe 장치는 Configuration Space를..

PCIe 속도 그리고 속도의 결정

PCIe의 속도는 다음과 같다. 등급이 다른 PCIe 기기를 서로 연결하면 어떻게 될까? 프로세서와 FPGA간에 PCIe 통신을 예로 들어보자 2종류의 프로세서가 있다 - 1. PCIe 1.0 lane 4개를 지원하는 프로세서 - 2. PCIe 3.0 lane 1개를 지원하는 프로세서 FPGA의 경우 - FPGA의 PCIe IP 모듈이 PCIe 2.0 lane 4개를 지원한다 FPGA와 위 2종류의 프로세서를 연결하여 PCIe 통신을 한다고 보자. 그러면 PCIe 통신 속도는 어떻게 될 것인가? 1번의 프로세서는 FPGA와 PCIe 1.0 Lane 4개로 통신하며 2번의 프로세서는 FPGA와 PCIe 2.0 Lane 1개로 통신한다. 즉 PCIe 등급이 서로 다른 기기가 연결되어, PCIe 통신을 한다면..

3.1 JESD204 구현에 필요한 하드웨어

JESD204를 지원하는 ADC를 FPGA와 연결하기 위해 필요한 회로구성은 다음과 같으며, JESD204B Class1을 기준으로 정리하였다. - JESD204를 지원하는 ADC 칩 - JESD204에 필요한 클럭, Sysref 신호를 출력하는 clock generator - JESD 204 RX 모듈이 구현된 FPGA - Transceiver (트랜시버) FPGA의 JESD204 RX 모듈에 트랜시버라는 것이 있다. 트랜시버는 ADC에서 고속으로 넘어오는 신호를 수신할 수 있는 하드웨어다. FPGA에서는 트랜시버가 고속의 신호를 물리적으로 수신한 다음, link layer, transport layer를 거치고, ADC 샘플링 데이터로 변환된다. - JESD204 데이터 전송 내부 프로토콜 JESD2..

ADC - 성능지표

본 글은 TI ADSJ49 ADC datasheet를 참고하였습니다. SFDR SNR SINAND THD [1] ADC 특화 지표 FFT for input signal FFT for Two Tone input signal intermodulation distortion vs input amplitude spurious free dynamic range vs input freq. signal to noise ratio vs input freq. performance vs input amplitude - SNR(DBFS) - SFDR(dBc) - SFDR(dBFs) SFDR vs input common mode voltage SFDR vs AVDD supply and temperature SFDR vs DR..

FPGA SERDES 의 쓰임 - 펄스폭을 미세하게

FPGA에서 데이터를 고속 통신할 때 언급되는 모듈이 SERDES이다. 즉 Serializer, Deserializer의 줄임말이다. Xilinx SERDES 모듈 중 Select IO가 있다. 디지털 신호의 폭을 미세하게 조정할 필요가 있을 때, SERDES가 사용된다. 예를 들어 200MHz로 데이터가 오갈 때 데이터의 통신속도는 같을지라도 데이터의 펄스폭을 더 미세하게 조정하고 싶을 때 SelectIO의 Serializer 기능을 이용하면 된다. 01001001이라는 데이터를 보낸다. 데이터의 내용은 유지하되, 위 디지털데이터의 펄스폭을 줄이고 싶다면 어떻게 해야할까? 즉 펄스폭을 더 미세하게 하려면 어떻게 해야할까? 데이터를 더 잘게 잘게 쪼개어서 더 많은 데이터를 만들고, 이것을 고속으로 데이터..

2. JESD204 데이터 전송 속도

JESD204를 지원하는 ADC의 데이터시트를 읽으면서 든 의문점은 내가 이 ADC를 사용한다면 출력 데이터 속도는 얼마인가? 였다. JESD204B의 속도의 지원범위는 315Mb/s~ 12.5Gb/s지만 제조사마다 최고 지원속도가 달랐다. AD9250은 2채널 16 비트 ADC로 샘플링속도가 최대 250MHz이며 JESD204B class1을 지원하는 ADC 칩이다. AD9250의 lane당 데이터 속도는 얼마일까? 위 그림은 AD9250의 ADC 1채널에 대해서만 그린 것이다. ADC 내부에는 16비트 ADC와 JESD204 TX 모듈이 있다. - ADC가 250MHz로 샘플링을 수행하면 초당 250MHz X 16 비트의 데이터가 발생 - 발생한 데이터는 8b/10b 인코딩 과정을 수행하는 JESD2..

3.2 JESD204 구현에 필요한 하드웨어 - SYSREF, SYNC

본 문서에서 축약한 단어는 다음과 같다 RX = JESD204B 수신부 TX = JESD204B 송신부 과거의 ADC 칩들이 LVDS신호의 형태로 데이터를 그냥 FPGA에 전달했다. JESD204B가 나온 이후 상황이 달라졌다. JESD204B 통신이 적용된 ADC 칩의 경우 ADC의 출력데이터가 JESD204B 통신 layer TX에 들어간다. 그리고 외부 선로를 지나 FPGA JESD204B 통신 layer RX에 전달이 된다. 즉 과거의 칩들과는 다르게 ADC의 데이터가 거쳐 가는 부분이 많이 생겼다. 이로 인해 ADC의 출력데이터가 FPGA가 인식하는데 소요하는 시간이 들쑥 날쑥할 수 있다. 따라서 이 소요시간을 일정하게 하기 위해서 JESD204B 통신규격은 SYSREF신호를 이용한다. 이 소요..

FIFO에 담긴 데이터를 읽는 방법- DMA

FPGA의 FIFO에 담긴 내용을 프로세서가 읽는 방법은 여러가지가 있는데, 기존의 방법과 DMA를 사용하여 읽는 방법을 정리하였다. DMA는 FPGA에 담긴 데이터를 프로세서가 빠르게 가져오는 방법 중에 한개이다. FPGA에 DMA 엔진을 구현한 다음, DMA 엔진이 FPGA에 쌓인 데이터를 순식간에 프로세서의 램에 옮겨버린다. 프로세서의 서버프로그램이 fpga에 데이터를 쌓으라고 명령을 내린다. 그러면 fpga는 데이터를 fifo에 쌓는다. 그러면 서버프로그램이 fpga dma엔진을 이용하여 fpga의 fifo에 저장된 데이터를 쭉 읽어온다. 근데 여기서 의문이 드는 것이 fifo에 저장된 것을 읽기에 기존의 fifo를 읽는 것과 똑같은것아닌가? fifo는 First input first output..

3.3 JESD204 구현에 필요한 하드웨어 - Clock

Jesd204 문서를 보면, 언급되는 클럭들이 참 많다. 용도도 다르고, 제조사마다 클럭의 용어가 달라서 헷갈린다. JESD204B를 공부하면서 Clock이 사용되는 곳과 용도에 대해 정리해보았다. JESD204B 통신을 구현할 때 TI사의 PLL, ADC를 사용하였고, Xilinx사의 FPGA를 사용하였다. Xilinx 사의 JESD204B 관련 문서(PG006 JESD204 IP)에 언급되는 클럭은 core clock, reference clock, byte clock, local multi frame clcok 등이 있다. TI사의 JESD204B 관련 문서(TI JESD204 IP 문서)에 언급되는 클럭은 sys clock, mgt ref clock 등이 있다. 다음은 JESD204B 통신을 구성..