2012-10-23 2 views
0

Quartus 보드의 LED에서 뱀을 쓰려고합니다. KITT-Leds와 비슷하지만 프로그램을 실행하려고하면 오류가 발생합니다.Verilog 오류 : "counter : counter"사용자 계층 구조를 정교화 할 수 없습니다.

Error: Can't elaborate user hierarchy "counter:counter"

정말 무슨 일인지 모르겠다 : 이것은 나에게 오류를 제공

module ukol3(KEY,LEDR); 
input[1:0]KEY; 
output[14:0] LEDR; 

counter counter(KEY[0], KEY[1], LEDR[14:0]); 

endmodule 

module counter(C,CLR,Q); 
input C, CLR; 
output [14:0] Q; 
reg [14:0] tmp; 
integer i; 

always @(posedge C or posedge CLR)  
    begin 

     if (CLR) 
      tmp = 15'b000000000000000; 

     if (tmp == 15'b111111111111111) 
      i = 0; 

     if (tmp == 15'b000000000000000) 
      i = 1; 

     if (i == 1) 
      tmp = tmp + 1'b1; 

     if (i == 0) 
      tmp = tmp - 1'b1; 
     end 
    assign Q = tmp; 


endmodule 

.

+0

오류 메시지는 항상 블록이 합성 할 수 없다고 말합니다. 유추 레지스터에 비 차단 할당을 사용하는 것을 고려하십시오. –

+0

인스턴스에 모듈과 다른 이름을 지정하십시오. 코드는 pastebin에있는 데이터의 훌륭한 복사본이지만 뱀은 무엇을해야합니까? 실제로 채워야하는 시프트 레지스터입니까 비어 있습니까? 정수 i는 최대 또는 최소 카운트에서 카운터를 잡는 클럭의 상승 에지에서만 상태를 변경합니다. 그렇지 않으면 가장 최근 설정을 래치합니다. 너가 원하는게 그거야? – mkstlwtz

답변

0

이 질문은 Verilog에 관한 것이지 vhdl에 관한 것입니다. 몇 가지 질문을하고 싶습니다. 코드를 합성 할 수 있습니까? 그리고 당신은 합성 모듈 카운터 후에 무엇을 얻습니까?

질문에 대해서는 먼저 counter을 컴파일 한 다음 ukol3을 컴파일해야한다고 생각합니다. EDA 도구는 처음 시도하지 않은 경우 카운터를 찾지 않습니다. 분리 가능한 두 개의 파일로 분할하고 카운터를 먼저 수행해야합니다.

추신 : 더 명확한 코드는 counter counter (.C(KEY[0]),.CLR (KEY[1]),.Q (LEDR[14:0]));과 같은 더 나은 매핑 포트 방법을 사용해야합니다.