2011-04-19 3 views
0

일부 임시 값을 저장하기 위해 generate 문 내에 레지스터를 선언해야합니다.generate 문 : verilog

을 인스턴스화에 사용해야합니다.

제가

generate 

for(i=0; i< N; i=i+1) 
begin: i_loop 
    Inst_file u(S1(i),P1(i),S(i),P(i)); 
    /* S1 and P1 have N bits and 
     S = S1^P1; 
     P = S1 & P1 
    */ 
end //i_loop 

는 S1과 P1 간단 combinationl 로직이고 제가

반복 전선로를 사용하고있다. 그러나 i가 반복 될 때마다 출력 S와 P를 입력으로 할당해야합니다.

(즉 S1과 P1을 S와 P로 바꿉니다).

는 내가 레지스터가 아닌 와이어를해야 이해 (내가 맞죠?)

난 레지로 S1과 P1을 필요로 이러한 경우. 항상

생성 내역을 사용해 보았습니다. 오류가 발생합니다.

는 u는 당신이 N + 1 비트 폭의 버스를 이용해야 탈출구 ..

+1

코드를 포맷하십시오. http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks를 참조하십시오. verilog에서 어떻게 보이게 될지에 대한 직관력이 생길 때까지, 먼저'generate'없이 코드를 작성하고 싶을지도 모릅니다. 'generate '는 속기를 가능하게하지만 언어의 필수적인 특징은 아닙니다. – Andy

+0

@Andy : Ok Andy, 다음은 서식을 처리합니다 :) 링크를 제공해 주셔서 감사합니다. – Nandhini

답변

2

을 제안하고, 생성 블록 이외의 모든 초기화를 당겨주십시오 수 있습니다. 나는이 같은 것을 할 것입니다 믿습니다

wire [N:0]Sarray; 
wire [N:0]Parray; 

// initialize Sarray[0] and Parray[0] here using continuous assignment 

generate 
for(i=0; i< N; i=i+1) 
begin: i_loop 

    Inst_file u(Sarray[i],Parray[i],Sarray[i+1],Parray[i+1]); 

end //i_loop 

Sarray [0] Parray [0] 첫 번째 반복에서 사용하기 위해 초기화되어야한다; Sarray [N]와 Parray [N]은 모듈 체인의 최종 출력 값이됩니다.

+0

Thnk you virtual :) 나는 이것을 시도 할 것이다. – Nandhini