2013-07-03 5 views
-1

J-K 플립 플롭을 사용하여 32 비트 동기 카운터를 생성하려고합니다. 난 후, 카운터의 다른 기능 모듈을동기 카운터

jkff(J, K, CLK, Q) where the first three are wire inputs and the last is a reg output. 

개별 JK 플립 - 플롭을위한 기능 모듈 ... thirty_two 모듈

thirty_two(J, K, CLK, OUT[31:0]) where the first three are inputs and the last is output 

있고, I 많은 JKFF 모듈을 인스턴스화 ,하지만 내 출력으로 전선을 사용하는 것으로 제한되는 것 같습니다. 따라서 OUT [31 : 0]은 내가 원하는 원하는 레지스터 대신 와이어입니다.

제안 사항?

+0

왜 OUT [31 : 0]이 (가) 'reg'가되도록 지정할 수 있습니까? 'reg'로 구동되는'wire'는 받아 들여야합니다. – Greg

+0

'thirty_two' 모듈의 내부에 관해 질문하는 경우 관련 코드를 보여줘야합니다. 왜 당신은 '철사'에 국한되어 있다고합니까? – Vasiliy

답변

1

Verilog로 시작할 때 일반적인 실수는 와이어 & reg 유형이 계층 구조에 걸쳐 일치해야한다고 생각하는 것입니다. 모듈 입력은 항상 전선이고 출력은 reg 또는 전선이 될 수 있습니다. 모듈 간의 연결은 전선입니다. 이 둘의 사용법의 차이점은 값이 할당되거나 구동되는 방식에 달려 있습니다. 그 출력을 구동하는 등록 방식을 사용 thirty_two

예컨대 모듈 : thirty_two 인스턴스화되면

module thirty_two(
    output reg [31:0] OUT 
); 
    always @* begin 
    OUT = 32'bx; 
    end 
endmodule 

, 출력 선을 구동해야한다. 이는 서브 모듈 출력을 직접 변경할 수없는 인스턴스를 생성하는 수준에서 의미가 있습니다.

module top_level(); 
    wire [31:0] thirty_two_out; 

    thirty_two thirty_two_i0 (
    .OUT(thirty_two_out) 
); 
endmodule