형태로 루프를 만들 수있는 가능한 모든 방법이 :사용하여 변수
for i in 0 to some_var loop
// blah,blah
end loop;
하지 않는 경우, 동일한 루프를 만들 수있는 다른 방법이있는가? While 루프는 변수를 변수로 사용할 수 있지만 프로젝트에서는 합성 할 수 없습니다. 정적 범위 미리
감사
보얀 Matovski
형태로 루프를 만들 수있는 가능한 모든 방법이 :사용하여 변수
for i in 0 to some_var loop
// blah,blah
end loop;
하지 않는 경우, 동일한 루프를 만들 수있는 다른 방법이있는가? While 루프는 변수를 변수로 사용할 수 있지만 프로젝트에서는 합성 할 수 없습니다. 정적 범위 미리
감사
보얀 Matovski
변수는 테스트 벤치 애플리케이션에서 올바르게 작동합니다.
합성의 경우 정적 범위와 종료 조건을 사용하여 동일한 효과를 얻을 수 있습니다. 범위를 필요한 최대 값으로 설정하십시오.
for i in 0 to MAX_VALUE loop
exit when i = some_var ;
// blah,blah
end loop;
당신의 합성 툴이에 질식 경우, 버그 리포트를 제출. 1076.6-1999 및 1076.6-2004 (VHDL RTL 합성 표준) 모두 정적 조건의 "for"루프에 대해 종료 조건이 지원됨을 나타냅니다. 지원되지 않는 루프 레이블 (1076.6-1999) 사용과 관련하여 지원 문제를 발견 할 수 있습니다.
버그 (또는 지원 부족)를 발견하여보고하지 않으면 해당 공급 업체가 사용자가 염려하지 않는 기능이라고 생각하므로 도구를 변경하는 데 투자하지 않습니다.
만 루프 변수가 합성된다.
some_var에 불연속 범위가있는 경우 FSM (유한 상태 시스템)을 구현할 수 있습니다. 그런 다음 각 상태에 대한 특정 루프를 작성하십시오.
Altera Quartus II에서 'exit'가있는 솔루션은 'for ... loop'의 가변 길이 범위가 실패한 경우 컴파일됩니다. Jim이 말한 것처럼 'exit'이 도구에서 작동하지 않는다면 Jim이 말한 것처럼보고해야합니다. 그러나'some_var'를'if_