input x;
input y;
input[10:0] z;
wire a;
assign a = x & y & (|z);
코드를보고 있는데 할당 할 줄을 이해하지 못합니다. 이 줄의 의미에 대한 설명은 높이 평가 될 것입니다!로직 뒤 Verilog 코드
input x;
input y;
input[10:0] z;
wire a;
assign a = x & y & (|z);
코드를보고 있는데 할당 할 줄을 이해하지 못합니다. 이 줄의 의미에 대한 설명은 높이 평가 될 것입니다!로직 뒤 Verilog 코드
wire a
은 일부 조합 논리에 의해 구동됩니다. 조합 로직에서 input [10:0] z
의 모든 비트는 함께 OR 연산됩니다 (즉, |z
의 의미입니다). 그런 다음 ORing (즉, 11- 입력 OR 게이트의 출력) 결과는 x
및 y
입력과 함께 논리 연산됩니다. ANDing 결과 (즉, 3 입력 AND 게이트의 출력)는 wire a
에 할당됩니다 (즉, 3 입력 AND 게이트 드라이브 wire a
).
z
은 11 비트 폭 신호입니다. 신호의 or reduction
입니다.에 적어도 하나의 비트가있는 경우 1
인 경우
(|z)
이 참입니다 (1
). 한편 의 모든 비트가 0
인 경우 (|z)
은 false (0
)가됩니다. 즉 신호가 0
인 경우 신호의 or reduction
이 짧은 테스트 방법입니다.
|z <==> z==0;
&
는 bitwise and
입니다. 즉, 멀티 비트 신호의 경우 각 비트 인덱스간에 and
연산을 수행합니다. 결과는 입력과 동일한 크기가됩니다. 예 :
wire [2:0] signal1, signal2, result;
assign result = signal1 & signal2;
는 (비트 비트)와 동등하다 :
assign result[0] = signal1[0] && signal2[0];
assign result[1] = signal1[1] && signal2[1];
assign result[2] = signal1[2] && signal2[2];
또는 (연결 포함) : 비록 표현식에서
assign result = {signal1[0] && signal2[0],signal1[1] && signal2[1],signal1[2] && signal2[2]}
모든 신호는 1 비트만큼 (a
, b
및 (|z)
)이므로 &
또는 &&
을 동등하게 사용할 수 있습니다.
더 많은 정보와 하드웨어에서 그들을 번역이 this site에서 발견 할 수있는 방법.