예를 들어이 스레드에서 How to NOT use while() loops in verilog (for synthesis)? 인 Brian Carlton은 Verilog에서 for 및 while 루프를 사용하는 대신 always
루프를 사용해야한다고 설명합니다. 나는 특정 조건이 만족되면 반복을 벗어나는 방법이 무엇인지 궁금해하고있었습니다. 나는 다음을 사용할 수 있는지 궁금 해서요 :Verilog의 "항상"블록에서 벗어날 수있는 다양한 구성 요소는 무엇입니까?
@ (posedge의 CLK 또는 VAR == 3)`
경우 var
모듈의 변수 또는 차단입니까?
예를 들어 다음 코드를 XST로 합성 할 수있는 코드로 변환하는 방법은 무엇입니까?
//******************************************************
//Check whether randp is prime or not
//******************************************************
for(i = 0; i < 100; i = i+1)
begin
assign PRIME_CHECK = randp;
assign sqroot = PRIME_CHECKED;
for(i = 0 ; i <= sqroot ; i=i+1)
begin
if((sqroot%i) == 0)
begin
break;
end
end
break;
randp = RANDP;
end
그래서 while 루프를 대체하려면'(@posedge clk or a == 2) begin'을 사용할 수 있습니까? – Prateek
다시 만들려고하는 while 루프를 표시해야합니다. @ (expession)은 루프 내부의 문장 일뿐입니다. '(@posedge clk or a == 2)'는 합법적 인 구문이지만 의미가 없습니다. clk가 0에서 1로 갈 때까지 현재 프로세스를 차단하고, 식 a == 2의 결과가 변경 될 때까지 _block을 의미합니다. 하드웨어와 확실히 합성 할 수 없습니다. –
편집 된 질문입니다. – Prateek