FPGA를 선택하는 방법?


17

10kHz에서 8 개의 아날로그 라인에서 디지털 신호 처리를 수행해야합니다. 이것은 매우 까다로운 작업이며 FPGA가 올바른 접근 방법이라고 생각했습니다. 현재 Xilinx의 개발 키트를보고 있는데 FPGA에 대한 경험이 없기 때문에 올바른 칩을 선택하는 방법을 아는 것이 정말 어렵다는 것을 알게되었습니다. 개발 키트를 사용하고 I / O 핀을 사용하여 8 채널 A / D 칩 및 8 채널 D / A 칩에 연결하는 것으로 상상했습니다.

Spartan, Virtex, Altera 등의 차이점은 무엇입니까? 나는 얼마나 많은 게이트가 필요한지 추정하는 방법조차 모른다. 이에 대한 경험 규칙이 있습니까? 클록 속도가 충분한 지 (추가 및 곱하기 수의 함수로) 확인하는 방법 고정 소수점 수학을 고수해야합니까? FPGA에서 부동 소수점 처리를 수행하기가 어렵습니까? 시작하는 가장 좋은 방법은 무엇입니까?

Linux를 사용하여 프로그래밍 가능한 솔루션이 필요합니다. 자일링스는 이것을 제공하지만 한계가 무엇인지 잘 모르겠다.


5
어떤 종류의 알고리즘을 구현해야하는지 아는 것이 도움이 될 것입니다. 기회는 당신이 전혀 FPGA를 필요로하지 않기 때문에 많은 개발 시간을 절약 할 수있다 ;-)
geschema

나는 geschema에 동의합니다; FPGA가 필요하지 않을 수 있습니다. 아마도 DSP가 더 나은 솔루션 일 것입니다. 어쨌든 uC 경험 만 있으면 시작하기가 더 쉽습니다. FPGA는 매우 다릅니다!
stevenvh

답변:


13

나는 FPGA를 사용하지 않을 것이다.

FPGA에 대한 경험이 없지만 FPGA에서 디지털 신호 처리에 관심이 있다고 언급합니다 ... 수치 조작 + 신호 처리는 프로그래밍 툴이 일반적인 컴퓨터 / DSP / 마이크로 프로세서에서 올바르게 처리하기가 어렵습니다. 프로그램 작성. 첫 FPGA 프로젝트에 디지털 신호 처리 프로젝트를 사용하는 것은 좌절의 비법 일 것 같습니다.

FPGA를 배우려면 상태 머신 또는 통신 패킷 처리와 같은 개발 도구에 더 적합한 것을 수행하십시오.

설명 한 것과 같은 DSP 프로젝트의 경우 DSP 또는 Cypress PSOC 또는 Analog Devices Microconverter를 권장합니다. (= ADC + DAC가 내장 된 마이크로 컨트롤러)를 .

(자신의 충고를위한 문맥을 제공하는 완전한 공개 : FPGA를 직접 사용하지 않습니다. 드문 경우에 프로그래밍 가능한 로직 = PLD를 사용했습니다. 사무실 직원이 FPGA를 자주 사용하고 있으며, VHDL / Verilog 코드를 충분히 살펴 보았습니다. 그는 비트 조작에 매우 적합하다는 것을 알고 어깨에 많은 경험을 가진 노련한 엔지니어입니다. 최근에 그와 대화하면서 비트 폭이 다른 정수에 대해 상당히 간단한 수학을하고 있었을 때 나는 그가 필요하다고 말했습니다. 비트 너비를 더 짧게 부호를 빼서 제대로 빼려면 "오 남자, 나는 부호 확장을하고 싶지 않다 ..." 덧셈과 뺄셈 외에도 도구와 라이브러리를 알아야합니다.그리고 부동 소수점 처리 ??!? !! ??!? !!?)


2
MyHDL 은 이러한 문제 중 일부를 해결하려고합니다.
Shawn J. Goff

FPGA가 마이크로보다 사용하기가 더 어렵다고 생각하지 않으며 단순히 다른 경고 세트가 있습니다.
코너 울프

10

그들은 모두 꽤 좋습니다. 간단한 작업을 수행하기 위해 FPGA를 너무 많이 사용할 필요가 없으므로 Spartan-3 라인과 같은 초보자 FPGA로 충분합니다.

경고의 한 마디로, FPGA 프로그래밍은 C ++, C, perl과는 다른 LOOOOTTTTTT입니다. 아마도 Verilog로 시작하는 것이 더 쉬울 것입니다. VHDL은 COBOL과 매우 유사하지만 verilog는 최신 프로그래밍 언어와 더 유사합니다.

클럭 속도에 대해 걱정하지 마십시오. FPGA를 사용하면 얻을 수있는 이점은 매우 병렬 적이라는 점입니다. 따라서 50MHz 클록은 오늘날의 표준에 따르면 엄청나게 느리게 보일 수 있지만 한 번에 수백 개의 작업을 수행 할 수 있지만 3GHz의 "일반"CPU는 작업을 대기시켜야합니다. 한 번에 하나씩. 이것이 FPGA를 사용할 때의 장점입니다 : 병렬 처리. 따라서 전문화 된 작업의 경우 속도에 대해 크게 걱정할 필요가 없습니다.

그러나 다른 의견과 마찬가지로 완전히 다른 패러다임입니다. 학습 곡선은 가파르지만 일단 언어를 이해하면 모든 것이 이해됩니다 (빌딩 블록을 이해해야합니다).

행복한 FPGA :)


2
VHDL은 실제로 Ada를 기반으로합니다! 레온
레온 헬러

2
또한 Verilog 또는 VHDL을 선택할 때는 향후 시장성에 대한 투자라는 점에서 언어를 고려하십시오. 미국에서는 Verilog가 VHDL보다 IC / 칩 개발에 더 많이 사용되므로 Verilog (및 향상된 버전 인 System Verilog)를 아는 것이 장기 투자에 더 유리할 것입니다. 또한 모든 대기업 EDA 회사가 Verilog 및 시스템 Verilog에 투자하고있는 반면 VHDL은 그다지 주목을받지 않는 것으로 보입니다. (vhdl과 VCS verilog 시뮬레이터 성능 차이의 VCS 혼합 시뮬레이션 목격). 네, 둘 다 배울 수 있지만 우선 순위를 정하지 않는 이유는 무엇입니까?
Ross Rogers

어느 언어로나 쓸 수 있습니다. Xilinx 툴은 같은 프로젝트에서도 Verilog와 VHDL을 사용할 수 있다고 생각합니다. FWIW, 저는 미국에 있으며 Verilog를 사용한 적이 없습니다.
ajs410

1
"VHDL은 매우 COBOL과 같습니다". 백만 마일이 아니라!
stevenvh 2016 년

9

얼마 전 엔트리 레벨 FPGA 보드비교 차트를 작성했습니다. 두 개의 FPGA 벤더 인 Xilinx와 Altera . 이들은 PIC vs AVR 또는 Sony vs Nintendo와 같은 FPGA의 두 가지 주요 업체입니다. 그들은 최고의 벅을 제공합니다. 특정 기능을 제공하는 다른 공급 업체가 있지만 일반적으로 더 많은 비용을 지불하거나 기능 / 처리 능력을 잃게됩니다.

이것이 귀하의 특정 질문에 직접 대답하지는 않지만 FPGA 보드를 시작하려는 사람에게는 도움이 될 것입니다.


7

너무 많은 질문들; 순서대로 답변을 시도해 봅시다.

  1. 신호 처리를위한 리소스 요구 사항 : 어떤 하드웨어를 사용 / 빌드해야하는지 결정하려면 해당 신호에 대해 처리 할 처리량에 대한 아이디어가 필요합니다. 10 kHz에서 8 채널은 데이터 전송률이 높지 않으므로 요구 사항이 매우 특별하지 않으면 대부분의 FPGA 및 DSP가 데이터를 처리 할 수 ​​있어야합니다.
  2. 올바른 장치를 어떻게 선택합니까? 신호 처리 요구 사항에 따라 애플리케이션에 필요한 장치를 파악할 수 있어야합니다. 요점은 메모리 요구 사항, 하드 승수 필요, 특수 IO 고려 사항 등입니다. 대부분의 FPGA 공급 업체에는 이러한 요소를 기반으로 포트폴리오를 검색 할 수있는 도구 (웹 기반)가 있습니다.
  3. DSP를 시작하려면 어떻게해야합니까? DSP는 보통 신호 처리와 관련된 SIMD [Single Instruction, Multiple Data] 명령어가있는 일반 컴퓨터입니다. 시작하려면 "임베디드"하드웨어 및 C 컴파일러의 제한 사항을 이해하면 일반 PC에서 코드를 테스트 할 수 있습니다.
  4. FPGA를 시작하려면 어떻게해야합니까? FPGA는 하드웨어 설명 언어로 프로그래밍됩니다. 이들은 C 또는 Java와 같은 순차 언어와 크게 다릅니다. FPGA를 개발하려면 실제 하드웨어의 동시 특성을 이해해야합니다. 시작하는 데 필요한 도구는 Simili (작은 디자인에는 무료) 또는 Modelsim과 같은 HDL 시뮬레이터입니다. 이를 통해 PC에서 코드를 시뮬레이션 할 수 있습니다. 그런 다음 HDL 코드를 FPGA를 구성하는 데 사용되는 비트 파일로 컴파일하는 공급 업체별 합성 도구가 필요합니다. Altera, Actel 또는 Xilinx에서 스타터 키트를 얻는 경우 필요한 모든 도구가 키트의 일부입니다.
  5. Linux 지원 : 대부분의 공급 업체의 FPGA 도구는 Linux에서 실행되지만 DSP 필드에서는 DSP가 GCC (아날로그의 Blackfin 및 Texas Instruments의 여러 모델)에서 지원하지 않는 한 일반적으로 Windows 전용 컴파일을 사용해야합니다.

"10 kHz에서 8 채널은 데이터 전송 속도가 빠르지 않습니다"에 대해 +1입니다. 아직 아무도 말한 적이 없습니다.
Kevin Vermeer

그는 ... 8 채널 FFT를하고있어하지 않을 경우
ajs410

DSP는 종종 단일 스레드 병렬 처리 유닛으로, 각각 다른 유닛이 동일한 명령을 공유하는 SIMD와 달리 서로 다른 명령을 실행할 수 있습니다.
벤 Voigt


4

거의 모든 FPGA 벤더가 할 것입니다. 자일링스와 알테라의 차이점은 인텔 vs AMD와 비슷하지만 기능면에서는 상당히 유사하다. 귀하의 가격대에 맞는 개발 키트를 구입하십시오-저는 Xilinx의 Spartan 3을 개인적으로 좋아했습니다.

게이트 수와 관련하여 개발 키트는 일반적으로 매우 커서 필요한 것보다 훨씬 큽니다. 자체 PCB로 이동할 준비가되면 합성 툴은 설계에 필요한 게이트 수를 추정합니다. 더 작은 FPGA를 선택하기 위해 이것을 사용할 수 있지만 패키지 제약 (QFP vs BGA)도 중요한 역할을한다는 것을 알 수 있습니다.

적절한 설계 기술을 사용하면 클럭 속도는 문제가되지 않습니다. 실제로, 일반적으로 12MHz와 같은 비교적 저속의 크리스탈을 사용할 수 있으며 FPGA는 훨씬 더 빠른 클럭 (또는 더 빠른 클럭)을 합성 할 수 있습니다. 이러한 계산을 가속화 할 수있는 전용 DSP 슬라이스. 그러나 FPGA는 엄청나게 평행하므로 많은 작업을 수행하기 위해 너무 많은 MHz가 필요하지 않습니다.

나는 당신이 할 수 있다면 분명히 고정 점을 고수 할 것입니다. 부동 소수점을 수행 할 수 있으며 Xilinx에는 부동 소수점 코어를 제공하는 코어 생성기도 있지만 고정 소수점은 훨씬 빠르며 게이트 수가 훨씬 적습니다. 또 다른 장점은 홀수 고정 소수점을 할 수 있다는 것입니다. 원하는만큼의 비트를 사용할 수 있고, 2의 제곱 비트 일 필요는 없으며 중간 스테이지에 더 큰 고정 소수점을 사용할 수 있습니다.

FPGA를 시작하는 가장 좋은 방법은? 수업이나 세미나 등을 찾으십시오. 기술에 익숙하지 않은 경우 개발 도구가 매우 혼란 스러울 수 있습니다. 잘못 될 수있는 부분이 많기 때문입니다. MCU 용 도구는 훨씬 더 관대하며 기본 아키텍처와의 친밀감이 덜 필요합니다.

아, 그리고 FPGA의 데이터 시트를 앞뒤로 읽어야합니다.


0

XMOS 살펴보기

많은 어플리케이션에서 FPGA를 대체하는 데 사용될 수 있습니다.


0

게이트 수를 추정하려면 아직 하드웨어를 구입할 필요가 없습니다. 주요 FPGA 제조업체는 무료 소프트웨어를 보유하고 있으며 많은 사람들이 dsp 수행에 대한 메모를 가지고 있습니다. 하드웨어없이 물건을 디자인하고 시뮬레이션 할 수 있으며 소프트웨어는 어떤 리소스가 사용되는지 알려줍니다. 그러나 신호 처리의 경우 일반적으로 dsp가 첫 번째 단계이며 처리 성능이 부족한 경우에만 FPGA가됩니다.

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