그러한 프로젝트에 FPGA가 가능한가?


12

현재 화면 디스플레이 프로젝트 인 Super OSD에서 작업하고 있습니다. http://code.google.com/p/super-osd 에 자세한 내용이 있습니다.

현재 dsPIC MCU를 사용하여 작업을 수행하고 있습니다. 이것은 매우 강력한 DSP (40MHz @ 80MHz, 3 레지스터 단일 사이클 작업 및 MAC 장치)이며, DIP 패키지로 제공됩니다 (브레드 보드를 사용하여 프로토 타입을 제작하기 때문에). m OSD를 실행하면서 실제로 모든 마지막 성능을 얻습니다. 칩은 출력 단계에서 픽셀 당 약 200ns 또는 10 사이클을 갖기 때문에이 부분에서 코드를 매우 최적화해야합니다 (이러한 이유로 항상 작성됩니다) 어셈블리.)

이제 이러한 칩의 병렬 아키텍처로 인해 OSD를 실행하는 간단한 논리 프로그램을 가질 수 있기 때문에 FPGA를 사용하는 것을 고려하고있었습니다. 드로잉 라인 및 알고리즘 코드와 같은 것은 MCU에 의해 처리되지만 실제 출력은 FPGA로 수행됩니다. 픽셀을 설정하거나 수평 및 수직선을 그리는 것과 같은 간단한 것들을 속도를 높이기 위해 FPGA에 통합하고 싶습니다.

질문이 몇 개 있습니다:

  1. 훨씬 더 많은 비용이 듭니까? 내가 찾은 가장 저렴한 FPGA는 각각 ~ £ 5 였고 dsPIC는 각각 £ 3입니다. 더 많은 비용이 들지만 얼마만큼 비용이 듭니까?
  2. dsPIC는 SO28 패키지에 적합합니다. SO28 또는 TQFP44보다 더 크게 가고 싶지 않습니다. 필자가 보았던 대부분의 FPGA는 BGA 또는 TQFP> 100 패키지로 제공되는데, 전단 크기로 인해 현재 옵션이 아니며 직접 납땜하기가 어렵습니다.
  3. FPGA는 얼마나 많은 전류를 사용합니까? dsPIC 솔루션은 현재 약 55mA +/- 10mA를 소비하는데, 현재로서는 괜찮습니다. FPGA가 다소 소비합니까? dsPIC처럼 가변적입니까, 아니면 정적입니까?
  4. OSD 그래픽을 저장하려면 12KB 이상의 그래픽 메모리가 필요합니다. FPGA의 칩에 이런 종류의 메모리가 있습니까? 아니면 외부 칩에서만 사용할 수 있습니까?

답변:


7

원칙적으로 이것은 FPGA 기반 설계에 적합한 후보입니다. 요구 사항과 관련하여 :

ad 1. FPGA는 사용자가 선택한 디바이스에 따라 얼마나 비싸지 않을까요? 처음에 Xilinx (XC3S50AN)의 가장 작은 스파르타 3은이 작업에 충분할 것입니다 (Farnell에서 ~ 10 £). 나는 이것이 비용의 상한이라고 가정 할 수 있다고 생각합니다 (56kB RAM이 있으므로 필요한 것 이상입니다). Xilinx 제품 또는 경쟁 업체 인 Altera 및 Lattice에서 더 저렴한 장치를 찾을 수 있습니다.

ad 2. 패키지는 까다로운 문제이므로 설치 공간이 작은 FPGA도 보지 못했습니다. 그러나 더 작은 패키지 (PLCC 또는 QFN)에있을 수있는 CPLD 장치 (CPLD는 소형 FPGA 임)를 사용할 수 있습니다. 플러스 측면에서 그들은 부정적인 측면에서 더 저렴합니다 (단일 $). RAM이 없을 것입니다. CPLD를 사용하면 외부 SRAM 칩이 필요할 것입니다.

ad 3. FPGA 및 CPLD 전류 소비는 프로그래밍 된 설계에 크게 의존합니다. 그러나 FPGA, 특히 CPLD 디자인은 현재 솔루션보다 적은 양을 소비 할 가능성이 높습니다.

ad 4. FPGA는 CPLD 내부에 이런 종류의 메모리를 가지고 있지만 CPLD는 그렇지 않습니다. 이것은 외부 스램 칩 (또는 2 개)에 의해 해결 될 수 있습니다. 예를 들면 다음과 같습니다.

| SRAM 1 | <-> | CPLD | <-> | uC |
| SRAM 2 | <->

uC가 SRAM 1에 쓰는 동안 이러한 배열에서 CPLD는 SRAM 2의 데이터를 표시합니다. CPLD는 두 작업을 동시에 처리 할 수 ​​있어야합니다.

물론 다른 방법으로도 이것을 해결할 수 있습니다 :
1) 더 빠른 uController (ARM 예
)를 사용하십시오 .2) 프로그래밍 가능한 패브릭과 uC가 내부에있는 장치를 사용하십시오 (예 : Atmel의 FPSLIC). 그에 대해 조금)

표준 고지 사항-> 디자인이 공개적 인 문제이므로 위의 내용에 대한 많은 제약과 가능한 해결책이 귀하의 경우에 맞지 않을 수 있습니다. 그래도 그 옵션을 확인하는 것이 가치가 있다고 생각합니다.


4

Altera MAX II 부품 중 하나와 같은 FPGA 대신 CPLD를 사용할 수 있습니다. FPGA와 달리 QFP44 패키지로 제공됩니다. 이들은 실제로 작은 FPGA이지만 Altera가 그 측면을 보여줍니다. CPLD는 온칩 구성 메모리가 있다는 점에서 대부분의 FPGA에 비해 이점이 있으며, FPGA에는 일반적으로 외부 플래시 칩이 필요합니다. 물론 다른 CPLD도 있지만 MAX II를 좋아합니다.

클럭 속도와 실제로 사용중인 로직의 양에 따라 전류 소비량을 말하는 것은 불가능합니다.

FPGA에는 일반적으로 사용할 수있는 제한된 양의 온칩 메모리가 있지만 CPLD가있는 외부 메모리가 필요합니다.

다른 옵션은 XMOS 칩이지만 가장 작은 것 (XS1-L1)은 QFP64 패키지에 있습니다. 많은 온칩 RAM-64k가 있습니다.


2

1) 그렇습니다. FPGA는 더 비쌀 것입니다. 칩 자체가 더 비쌀뿐만 아니라 프로그래밍을 저장하려면 플래시 메모리도 필요합니다. FPGA + 플래시는 아마도 dsPIC의 3 배에 불과할 것입니다. 작은 FPGA의 경우 약 10 달러, 작은 플래시의 경우 3 달러입니다.

2) 그것들은 존재할 수 있지만 표면 장착이 아닌 FPGA는 실제로 알지 못합니다. 대부분 QFP 또는 BGA 일 것입니다.

3) FPGA는 아마도 dsPIC가하는 전류의 약 3 배를 끌어 올릴 것입니다. 그러나 사용하는 기능에 따라 올라가거나 내려갈 수 있습니다. FPGA에는 전력 소모를 증가시킬 수있는 많은 기능이 있습니다. 그러나 최소 150mA를 기대하십시오.

4) FPGA는 일반적으로 그 안에 블록 RAM이 있습니다. 가장 작은 FPGA를 제외한 모든 메모리에는 많은 메모리가 있어야합니다.

다른 사람들은 CPLD를 언급합니다. 디자인을 신중하게 분할하면 작지만 값 비싼 작업을 CPLD로 옮길 수 있습니다. 미니 코 프로세서와 같습니다.


2

학습 곡선이 가장 낮은 가장 저렴한 솔루션은 ARM과 같은 고성능 프로세서로 이동하는 것입니다.

VHDL / Verilog에서 FPGA / CPLD를 프로그래밍하는 것은 많은 사람들에게 C에서 나오는 매우 가파른 학습 곡선입니다. 그들은 또한 너무 싼 부품이 아닙니다.

괜찮은 수준의 ARM을 사용하면 LPC1769일까요? (cortex-M3) 디자인에서 PIC18을 대체 할 수도 있습니다.

스루 홀 문제는 노출 된 핀 QFP 유형 패키지로 SoC를 얻을 수있는 한 프로토 타이핑에 필요한 핀아웃을 위해 이러한 어댑터 중 일부를 가져 옵니다.


그는 PIC18이 아닌 dsPIC을 사용하고 있습니다.
Leon Heller

2
그는 두 가지를 모두 사용하고 있으며, 연결된 문서의 회로도를 살펴보십시오. PIC18이 버튼 / 인터페이스를 실행 중이며 I2C를 통해 dsPIC와 통신 중입니다. dsPIC은 비디오 처리 만합니다.
Mark

1

내 성향은 프로세서와 디스플레이 사이의 타이밍을 버퍼링하기 위해 무언가를 사용하는 것입니다. 프로세서 개입없이 전체 비디오 프레임을 표시 할 수있는 하드웨어가 있으면 좋을 수도 있지만 너무 과도 할 수도 있습니다. 하드웨어와 소프트웨어의 복잡성 사이의 가장 좋은 타협은 아마도 2 개 또는 3 개의 독립적 인 1024 비트 시프트 레지스터 (픽셀 당 2 비트, 검은 색, 흰색, 회색 또는 투명을 허용하기 위해)와 수단으로 무언가를 만드는 것입니다. 그들 사이의 전환. PIC가 시프트 레지스터를로드하도록 한 다음, PIC가 다음 레지스터를로드 할 수 있도록 플래그를 설정하는 동안 하드웨어가 해당 레지스터를 시프트하도록 시작하십시오. 두 개의 시프트 레지스터를 사용하면 PIC는 시프트 레지스터를 사용할 수 있다고 알려주는 시간과 모든 데이터를 시프트해야하는 시간 사이에 64us를 갖게됩니다. 3 개의 시프트 레지스터로

1024 비트 FIFO는 2 개의 1024 비트 시프트 레지스터만큼이나 좋은 반면 CPLD에서는 FIFO는 비트 당 하나의 매크로 셀과 일부 제어 로직 (대부분의 다른 유형의 논리에서는 2 비트의 시프트 레지스터) 만 소비합니다. 1 비트의 FIFO보다 저렴합니다.

다른 방법은 CPLD를 SRAM에 연결하고 간단한 비디오 서브 시스템을 만드는 것입니다. 미적으로, 나는 온더 플라이 비디오 생성을 좋아하고 누군가가 저렴한 1024 비트 시프트 레지스터 칩을 만들었다면 그것이 선호하는 접근 방식이지만 외부 SRAM을 사용하는 것이 충분한 리소스가있는 FPGA를 사용하는 것보다 저렴할 수 있습니다 여러 개의 1024 비트 시프트 레지스터를 만듭니다. 출력 해상도의 경우 12M 픽셀 / 초 또는 3MBytes / 초로 데이터를 클럭 아웃해야합니다. 메모리 사이클을 인터리빙하여 너무 많은 어려움없이 데이터를 최대 10mbps의 속도로 클럭킹 할 수 있도록 구성 할 수 있어야합니다. 가장 큰 트릭은 동기화 펄스가 예상 한 순간에 오지 않으면 데이터 손상을 방지하는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.