CYNTH

프로그래밍으로 C의 FPGA는 Verilog가있는 FPGA가 프로그래밍과 같은 훌륭한 거래를 보입니다. 그러나 그것은 적어도 통상적 인 의미에서는 그렇지 않습니다. C 코드를 취할뿐만 아니라 하드웨어 설명 언어로 변환 할 수있는 여러 시스템이있었습니다. 이들 중 하나 인 Cynth는 GitHub에서 제공되는뿐만 아니라 활용하기 쉽습니다. STALA와 SBT라는 개발 시스템을 시도하고 싶다면 STALA를 설정해야합니다.

물론 한계가 있습니다. 전 처리기를 원한다면 별도로 실행해야합니다. 전세계 변수, 곱셈, 수레, 수많은 다른 C뿐만 아니라 수많은 C.FILLES를 사용할 수 없습니다. 컴파일러는 모든 C 함수에 대해 VERILOG 데이터를 생성합니다.

기존의 C 프로그램은 다중 프로세서에서 특별한 메소드를 사용하지 않는 한 매번 한 가지를 실행합니다. 그때조차도, 수많은 CPU가 어떻게 통제 할 수 있는지 정확히 얼마나 유용한 한도가 있습니다. 반면에 FPGA는 병렬로 발생하는 일을 실행할 수 있습니다. 예를 들어, 이것에 대해 생각해보십시오.

(1)
{
OUT1 = CTR1 ++;
OUT2 = CTR2 ++;
}
OUT1 값은 OUT2의 값 앞에 비트 비트를 수정할 것입니다. 이 많은 이들이 많으면 OUT999의 상태가 많으면 지연이 중요 할 수 있습니다. 동등한 Verilog 코드는 다음과 같습니다.

항상 @ (Posegge CLK)
시작하다
OUT1 <= CTR1; CTR1 <= CTR1 + 1; OUT2 <= CTR2; CTR2 <= CTR2 + 1; 끝 이것은 실제적으로 동일하게 보입니다. 그러나 출력은 정확히 얼마나 많은 수이 있는지 상관없이 똑같은 시간에 수정됩니다. 훨씬 더 훨씬 더 많이 볼 수없는 다른 모든 것들은 똑같이 동시에 일어날 것입니다. 출입구와 마찬가지로 입학은 입력을 "스캔"하지 않으며 FPGA는 모든 입력을 처리하고 출력을 생성합니다. Cynth의 상황에서 각 C 함수는 반환 값에 대해서는 하나의 불일치와 함께 함수와 동일한 인수를 가진 Verilog 모듈을 생성합니다. 시스템 클럭, 리셋 신호뿐만 아니라 3 개의 신호를 관리하는 경우 마찬가지로 마찬가지입니다. 하나는 처리를 허용하는 입력입니다. 두 가지 출력이 있습니다. 하나는 결과가 사용 가능한 것을 나타내는 기능을 허용하는 기능이 제공됩니다. 코드가 제공되는 예제는 4 개의 LED를 구동하는 실리콘 눈 패턴입니다. 순수한 Verilog로 생성되는 두 개의 외부 기능이 있습니다. write_leds 함수는 LED를뿐만 아니라 슬립 기능을 생성합니다. C 코드는 Roving이라는 간단한 함수입니다. (1) { if (dir && c == 8) dir = 0; 그렇지 않으면 (! dir && c == 1) dir = 1; if (dir) C << = 1; 또 다른 C >> = 1;
write_leds (c);
수면 (1000); // 1S.
}
해당 Verilog 데이터는 Verilog 에뮬레이터를 사용하여 확인할 수있는 것과 동일한 기능을 수행합니다.

제작 된 코드를 파는 것을 원한다면 일부 프로젝트가있는 Verilog에 대해 훨씬 더 많이 발견 할 수 있습니다. C가 당신의 일이 아니라면 항상 파이썬을 시도 할 수 있습니다.

Leave a Reply