2014-11-20 2 views
0

입력이 "ins15_0"인 곳에서이 모듈을 실행하려고합니다. 특정 조건이 충족되면 구문을 검사 할 때 if 행에서 다음 오류가 발생합니다 "operator =의 결과는 정적이 아닙니다." 당신은 질문이 해결 움직이는 표적이었다 왜냐하면연산자의 결과가 정적이 아닙니다

lw : if (ins15_0 = "000000000110000") generate 
    step_1 : for i in 0 to 31 generate 
        DFF1 : DFF_MEM port map (D=>din(i),clk=>CLK ,Q=>Q(i), reset=> Reset); 
      end generate step_1; 
    dout <= x"00000" + q; 
end generate lw; 

sw : if (ins15_0 = "000000000110100") generate 
    step_2 : for i in 0 to 31 generate 
         DFF2 : DFF_MEM port map (D=>rt(i),clk=>CLK ,Q=>Q(i), reset=> Reset); 
      end generate step_2; 

      dout <= rt; 
end generate sw; 
+0

'사례'는 순차적 진술이고, 병렬 영역에서 사용하고 있습니다. 대신에'if ... generate'를 사용하십시오 (생성을 중첩 할 수 있습니다). –

+0

나는 포트 맵을 사용하는 경우에 elsifs를 사용하려고했지만 "구문 분석 오류, 예기치 않은 포트, OPENPAR 또는 TICK 또는 LSQBRACK을 기다리는 중"오류가 발생합니다. – user998316

+0

'if ... generate'에는'elsif'가 없습니다. 너 뭐하니? –

답변

0

"연산자의 결과는 = 정적이 아닙니다." IEEE 표준 1076년부터 2008년까지합니다 (LRM) 11.8 문구 제 11 생성 가입일

:

용의 생성 파라미터 명세서에서 별개 범위 문 고정 이산 범위이어야한다 생성하고; 마찬가지로, if generate 문에서 각 조건은 정적 표현식이어야합니다.

조건 값은 정교 시간 (전역 적으로 정적)에서 가장 정적입니다. 이것은 하나 이상의 상수를 표현식으로 평가 함을 의미하며 일반식을 통해 전달 될 수 있습니다.

ins15_0의 공개 정보를 보지 않고서는 아마 std_logic_vector이고 아마 신호로 선언 된 배열 유형으로 보입니다.

디자인 사양을 더 이상 보지 않아도 솔루션을 추천하기가 어렵습니다. 11.8의 첫 번째 단락에서

살펴 보자 :

A는 문이 설명의 일부의 반복 또는 조건 정교위한 메커니즘을 제공 생성합니다.

정확하게 무엇을 의미 하는지를 아는 것이 도움이 될 수 있습니다.

은 설계 계층의 14.2 정교화를 참조하십시오

디자인 계층 구조의 정교화가 그물에 의해 상호 프로세스의 컬렉션을 생성

; 그런 다음이 프로세스 모음과 그물을 실행하여 디자인의 동작을 시뮬레이션 할 수 있습니다.

우리가 전항에 볼 수, 깨달음의 마지막 비트에 대해 14.1 일반 조 제 3 항 : 설계 계층 구조 모델 을 모델을 실행하기 위해

정의

하려면 먼저한다 정교하게. 에서 그물을 초기화 (14.7.3.4 참조)하면 모델이 생성됩니다. 마지막으로 모델 시뮬레이션이 진행됩니다. 시뮬레이션은 프로세스가 실행되고 그물이 업데이트되는 시뮬레이션 주기의 반복 실행으로 구성됩니다.

그래서 세대 값의이 설계 계층 구조로 연결되어 얼마나 많은 플립 플롭 알고 정교 시간에 알려진 데 필요한 생성하는 경우 문에서 조건에 의존 의미 실행을위한 모델을 준비 필수 . 이 효과는 시뮬레이션과 합성에서 동일합니다.

정교한 디자인 모델 계층 구조는 변경되지 않습니다. 그렇게 할 수있는 설계 사양을 아직 제공하지 않았습니다.