2017-12-14 18 views
2

Queue 및 기타 표준 라이브러리 인터페이스 (Decoupled, Valid 등)는 Cheat-Sheet에, 좀 더 자세한 내용은 Chisel Manual에 있습니다. 또한 StackOverflow에서이 두 가지 대답을 발견했습니다 - herehere.Chisel 3의 대기열 표준 라이브러리 인터페이스는 무엇에 합성됩니까?

그러나 이러한 리소스 중 어느 것도 플라스틱 방식으로 설명하지 못합니다.이 인터페이스의 목적을 이해하는 데 도움이 될 것입니다.이 코드 줄은 실제 하드웨어에서 어떤 모습으로 보입니까? 정확히

class DivRecFN_io(expWidth: Int, sigWidth: Int) extends Bundle { val a = ... val b = ... val ... ... }

을 달성 무엇을 다음과 같이

val input = Decoupled(new DivRecFN_io(expWidth, sigWidth)).flip

DivRecFN_io은 클래스입니다 : 예를 들어

, 여기에 패키지 HardFloat에서 FPU 코드의 조각이다 Decouple을 포함하는 행이 있습니까?

감사합니다.

답변

2

것 :

기본값은 시추 폴더의 유틸리티 큐는 표준 circular buffer 구현 한 것입니다. 즉, 대기열에있는 작업의 결과로 이동하고 충만 함 및 비어 있음을 확인하는 대기열에 넣고 대기열에서 꺼내는 포인터가있는 일련의 레지스터가 있음을 의미합니다.

+0

@ 콜린 감사합니다.이 질문에 대한 답변으로, 위키 피 디아에서 멋진 [애니메이션] (https://en.wikipedia.org/wiki/Circular_buffer#/media/File:Circular_Buffer_Animation.gif)을 추가하기로했습니다. 완전성. – apaj

2

분리 된 와이어 DivRecFN 비트라는 필드에 번들을 추가하고 일반적으로 단일 사이클 내에서 결과를 반환하지 않는 모듈에 대한 흐름 제어를 관리하는 데 사용되는 준비가되어 유효한 신호를 추가합니다. 기본적으로 DecoupledIO의 데이터 필드는 Output입니다. 라인의 끝에 플립은 Input로 변환됩니다. 모듈 val input 및 모듈의 예를 사용하는 모듈 P 포함 C 고려 (C) C번들에 데이터,이 모듈 의 부모를 소모 될 모듈 P은 번들에 배치 된 데이터를 생성합니다. Cready을 어설 션하여 데이터 준비가되었음을 나타내며 valid이 어설트 될 때 해당 데이터를 읽거나 사용합니다. 입니다. 복제 된 번들에 필드는 실제 하드웨어에 모습을 들어

input.ready 
input.valid 
input.bits.a 
input.bits.b 
... 
+0

안녕하세요. 위대한 해석에 감사드립니다. "선언하는 모듈"을 작성할 때 좀 더 구체적으로 설명해 주시겠습니까 - 'val input'을 포함하는 모듈을 의미합니까? 왜냐하면 'val input'은 다른 'Module'(ValExec_DivSqrtRecFN_small_div)에 사용 된 또 다른 번들 ('io'라고 부름)의 일부이기 때문입니다. 또한 'bits'라는 제목의 필드는 어디에서 발견 되었습니까? 아니면 'a'와 'b'가 'Bits'유형입니까? – apaj

+0

val input = Decoupled (새 DivRecFN_io (expWidth, sigWidth)) 문에서 flip, input은 ready, valid 및 bits 필드가 포함 된 번들입니다. 비트 필드에는 Decoupled()에 전달 된 번들,이 경우 새 DivRecFN이 포함됩니다. 나는 내가 말하고자하는 모듈을 분명히하기위한 답을 편집했다. –