Verilog에서 구조적 데이터 흐름 모델링과 행동 적 데이터 흐름 모델링의 차이점은 무엇입니까?


최상의 답변

구조적 데이터 흐름 모델링에서 디지털 설계 기능은 인버터와 같은 구성 요소를 사용하여 정의됩니다. , MUX, 가산기, 디코더, 기본 디지털 논리 게이트 등. 원하는 기능을 구현하는 데 사용할 수있는 회로의 다른 부분을 연결하고 배열하는 것과 같습니다.

구조를 사용한 반가산기 구현 데이터 흐름 모델링 : 입력 A, B; 출력 합계, 캐리; xor (.in1 (A), .in2 (B), .out (sum)); 그리고 (.in1 (A), .in2 (B), .out (carry));

행동 데이터 흐름 모델링은 디지털 회로의 동작을 설명하는 데 사용됩니다. 디자이너는 알고리즘 종류의 코드를 작성하여 디자인의 기능을 설명합니다. & (and), | (or), ~ (invert), ^ (xor),? (conditional) 등과 같은 다양한 Boolean 표현식을 사용하여 데이터의 흐름을 설명하는 데 사용됩니다.이 유형의 모델링의 두 가지 하위 범주 체계는 지속적인 데이터 흐름과 절차 적 데이터 흐름입니다.

1. 연속적인 데이터 흐름 이러한 유형의 데이터 흐름 모델링에서는 출력에 대한 데이터 할당이 연속적입니다. 이는 예제와 같이 Verilog의 “ assign “문을 사용하여 구현됩니다.

input A, B; 출력 합계, 캐리; 와이어 합계, 캐리; 할당 합계 = A ^ B; assign carry = A & B;

연속 할당이므로 입력의 변경은 제어 작업, 즉 민감도 목록이 없기 때문에 즉시 출력에 영향을 미칩니다. 여기서 출력 변수는 RHS에 정의 된 디지털 로직에 의해 지속적으로 구동되므로 “ wire “유형으로 정의해야합니다.

2. 절차 적 데이터 흐름 여기서 데이터 할당은 연속적으로 수행되지 않고 민감도 목록에 지정된 특정 이벤트에서 발생합니다. 이러한 유형의 모델링 체계는 “ always “또는 “ 초기 와 같은 절차 적 블록을 사용하여 구현됩니다. “예와 같이.

input A, B; 출력 합계, 캐리; reg 합계, 캐리; 항상 @ (A) 시작 합계 A + B; 캐리 A & B; end

모든 표현식의 RHS는 지속적으로 계산되지만 LHS에 대한 할당은 입력 A의 변경에만 발생하고 B는 변경되지 않습니다.이 경우 출력 변수는 ” reg “유형은 지정된 민감도 목록이 변경된 후 새 할당이 발생할 때까지 이전 값을 유지하기 때문입니다.

이렇게하면 의심이 사라집니다.

답변

데이터 흐름과 행동은 상호 배타적이지 않습니다. 데이터 흐름 및 기능적이거나 데이터 흐름 및 구조적도 아닙니다. 고전적으로 볼 때 “데이터 흐름”은 데이터 항목 (변수)의 값이 변경되면 해당 항목에 종속 된 다른 모든 데이터의 재 계산을 자동으로 트리거하는 아키텍처를 설명합니다.

많은 경우 잘못된 (IMHO) 아키텍처를 분류합니다. 데이터 흐름은 제어 흐름 관리가 아니라 “데이터 흐름”으로 관리됩니다. 그러나이 용어는 대체 정의가 될 수 있도록 충분한 규칙 성을 가지고 이러한 방식으로 사용됩니다.

“행동”설계를 살펴보면 모듈이 높은 수준의 추상화로 모델링되는 설계 접근 방식으로 분류 할 수 있습니다. 설계자는 모듈의 원하는 동작을 정의하고 합성 도구는 해당 동작을 RTL 또는 Structural 모델로 분해합니다. 행동 모델링에서 함수는 타이밍과 노드 로딩이 거의 무시되는 알고리즘으로 정의됩니다. 분명히, 고전적인 데이터 흐름이 수용되도록 동작을 모델링 할 수 있습니다.

덜 추상적 인 것은 “RTL”또는 레지스터 전송 로직 모델링입니다. 많은 실무자들이 데이터 흐름이 시작된다고 말하는 곳입니다. 오늘날 대부분의 합성 도구는 동작 코드를 RTL로 분해합니다. 좋은 예는 ImpulseC, Cynthesizer 등과 같은 C (또는 C ++) to RTL 도구입니다.

최소 추상은 “구조적”모델링입니다. 디자인은 레지스터와 와이어를 연결하는 구성 요소 인스턴스화로 거의 독점적으로 언급됩니다.

진흙처럼 분명 하죠?

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다