2017-12-30 34 views
-1

파이프 라이닝 할 때 디지털 회로에서 클럭 속도가 어떻게 증가하는지 평가하는 간단한 테스트를하고 있습니다.hdl의 파이프 라인 muxes

2 5to1과 1 2to1을 사용하여 10to1 멀티플렉서를 파이프 라인합니다. 나는 FPGA 신디사이저 (알테라)에서 약간의 클럭 속도 증가를 얻는다. 그 다음에는 5to1 멀티플렉서를 2to1과 3to1 및 적절한 레지스터로 대체하여 스테이지를 하나 더 추가합니다. 후자의 경우 클럭 속도가 떨어집니다. 레지스터와 파이프 라인 단계를 추가하면 클록 속도가 떨어지는 이유는 모르겠다.

+0

Fpga에 mux가 없습니다. 합성 툴은 VHDL 코드를 변환하여 FPGA 빌딩 블록에 적합한 로직으로 최적화합니다. 블록 간의 라우팅 지연은 종종 지배적입니다. – JHBonarius

답변

0

대부분의 FPGA에서 최소 로직 게이트는 3 ~ 6 개의 입력을 갖는 룩업 테이블 (LUT)입니다. 알테라의 ALM은 다양한 방식으로 구성 가능하다. 어느 쪽이든 멀티플렉서 크기가 등가 LUT 크기보다 낮 으면 Fmax가 더 이상 향상되지 않습니다.

모든 멀티플렉서 크기를 2 : 1 멀티플렉서 트리로 설명 할 수 있습니다. 합성은 결과 방정식을 최적화하고이를 FPGA 디바이스의 LUT 구조 및 구성에 매핑합니다.

당신은 더 변수 파이프 라인을 만들기 위해 사용자 정의 rising_edge 기능을 사용할 수 있습니다

:

function registered(signal Clock : std_logic; constant IsRegistered : boolean) return boolean is 
begin 
    if IsRegistered then 
    return rising_edge(Clock); 
    end if 
    return TRUE; 
end function; 

(출처 : PoC-Library-components 패키지)

이 기능을 사용하면 selectivly 할 수 있도록하고 파이프 라인 단계를 해제 .

+0

최소 LUT 입력 번호가 3 인 경우 두 개의 2to1에서 4to1 멀티플렉서를 '중단'하지 않는 것이 좋습니다. – user2609910

+0

예. 자일링스는 LUT6 구조를 가지고있다. 이것은 4 개의 데이터 입력과 2 개의 선택 신호가있는 4 : 1 먹스와 일치합니다. 더 작은 mux는 사용하지 않는 기능을 가진 LUT6 구조가됩니다. – Paebbels