2017-01-02 6 views
1

차동 클록 입력 (자일링스 AC701 키트)을 사용하는 깜박이는 디자인의 LED가 있습니다. 는 here을 jkoening에 의해 설명 된 바와 같이 나는 블랙 박스를 사용하고 자일링스 차동 버퍼를 인스턴스화하려면chisel3 top 모듈의 클럭 신호를 삭제하는 방법은 무엇입니까?

작동하지만 최고를 Verilog 모듈에 내가 쓸모 클럭 입력이
class Top extends Module { 
    val io = IO(new Bundle{ 
    val clock_p = Input(Clock()) 
    val clock_n = Input(Clock()) 
    val led = Output(Bool()) 
    }) 

    val ibufds = Module(new IBUFDS) 
    ibufds.io.I := io.clock_p 
    ibufds.io.IB:= io.clock_n 

    val blink = Module(new Blink) 
    blink.clock := ibufds.io.O 
    io.led := blink.io.led 

} 

: 다음

module Top(
    input clock, 
    input reset, 
    input io_clock_p, 
    input io_clock_n, 
    output io_led 
); 
... 

을 타겟에서만 io_clock_p 및 io_clock_n은 클럭 입력에 사용됩니다. 'clock'신호는 쓸모가 없다. 그것을 숨길 수있는 적절한 방법이 있습니까?

+0

왜 '리셋'에 대해 같은 질문을하지 않습니까? 나는'clock'과'reset'이 항상 근본적으로 존재하기 때문에 하드 코딩되어 있다고 생각합니다. –

+0

사실 리셋에 대해서도 똑같은 질문을하고 있습니다. 시계 및 재설정이 항상 존재하는 것은 아니며, 예를 들어 블랙 박스에 존재하지 않습니다. – FabienM

답변

1

Chisel3 팀의 discussion 이후에이를 지원하는 기능이 추가되었습니다.

용액은 RawModule 사용하는 것이다

class Top extends RawModule { 
    val clock_p = IO(Input(Clock())) 
    val clock_n = IO(Input(Clock())) 
    val led = IO(Output(Bool())) 

    val ibufds = Module(new IBUFDS) 
    ibufds.io.I := clock_p 
    ibufds.io.IB:= clock_n 

    withClockAndReset(ibufds.io.O, false.B) { 
    val blink = Module(new Blink) 
    led := blink.io.led 
    } 
} 

원시 모듈 암묵 신호가없는, 그리고 이름 반영를 Verilog에 접두사 파일없이«io_»생성«그것을 가지고»이.

전체 깜박이는 led 프로젝트의 소스 코드는 this github project (led 프로젝트가 blp으로 깜박임)에 있습니다.

Here은 프랑스어로 작성하는 방법에 대한 설명입니다. 이 기능을 사용하려면 chisel3의 마지막 git 마스터 버전을 사용해야합니다.

1

Chiesel 모듈에서 clockreset을 삭제하거나 이름을 바꿀 수있는 방법이 없습니다. 그들은 항상 거기에 있습니다. Chisel은 포지티브 에지 클럭을 사용하기 때문에 io_clock_p을 제거하고 clock을 대신 사용하는 것이 좋습니다.

이것은 향후에 추가 될 수 있으므로 자주 요청되는 기능이지만 현재 지원되지 않습니다.

+0

blackbox처럼 'Top'모듈에 특수 모듈 클래스를 추가해야 할 수도 있습니다. – FabienM