현재 칩 레벨 설계에서 구현할 때 어떤 알고리즘이 더 나은지를 찾는 프로젝트에서 작업 중입니다. 나는 이것을 FPGA 보드로 밀어 넣고있다. 나는 Verilog에서 코드를 작성하고있다. 내가 필요한 것은 비교할 내용입니다.컴퓨터 산술 알고리즘의 시간 및 시간 복잡도 비교
a) 2 가지 기능의 시간 복잡도.
b) 최악의 타이밍 예를 들어
C) 소비 전력
,방법 1 : 자극 = mult1 * mult2;
여기서 mult1과 mult2는 두 개의 8 비트 입력입니다.
방법 2 : 자극 = ((+ mult1 mult2-100) × 100) + ((100 mult1) * (100 mult2)) mult1 mult2 및 두 8 비트 입력이
.
그래서 두 입력이 전달되고 제품이 계산 된 시간부터 칩이 제품을 계산하는 데 걸리는 총 시간을 알고 싶습니다.
내가 처리중인 알고리즘은 모두 O (n)입니다. 그래서 나는 그것이 점근 적으로 중요하지 않다는 것을 안다. 그러나 FPGA 또는 ASIC 보드에서 구현할 때 정확한 최악의 타이밍을 파악하여 기능을 향상시키려는 시도에 관심이 있습니다. 그러나 이러한 계산에 나노초가 걸리므로이를 개선하려고 노력하고 있습니다.
더 빠른 알고리즘을 가지고 있다고 주장하는 몇 개의 저널 간행물을 보았습니다. 그러나 자일링스를 사용하여 동일한 기능을 구현하고 합성 보고서를 사용할 때 다른 결과를 얻고있었습니다.
전력 소비량과 최악의 타이밍을 계산하는 소프트웨어가 있습니까? 아니면 누군가 나를 도와 줄 수있는 몇 가지 기사를 알려줄 수 있습니까?
감사합니다. 그것은 많은 의미가 있습니다. 호기심에서 파이프 라인 단계 추가에 대해 언급했습니다. Verilog에서 어떻게 구현할 수 있습니까? 구성 요소를 다양한 모듈로 나누는 것입니까? 아니면 다른 절차가 있습니까? –
실제로 파이프 라인 단계를 추가하는 일반적인 방법은 없습니다. 본질적으로 클록 에지에서 캡처 할 수있는 중간 용어가 있도록 논리를 분할하면됩니다. verilog에'a * b'와 같은 일반적인 문장을 제공한다면 파이프 라인을 만드는 방법은 없을 것입니다. 그러나 곱셈을 작은 작업 청크로 분해하면 중간 제품 사이에 플롭 스테이지를 삽입 할 수 있습니다. 곱셈은 일반적인 연산이기 때문에, 합성 도구는 이미 파이프 라이닝 된 곱셈기를 제공 할 수있는 방법을 가지고 있을지도 모르지만 이것은 도구에 따라 다릅니다. – Tim