2017-01-11 2 views
1
input x; 
input y; 
input[10:0] z; 

wire a; 

assign a = x & y & (|z); 

코드를보고 있는데 할당 할 줄을 이해하지 못합니다. 이 줄의 의미에 대한 설명은 높이 평가 될 것입니다!로직 뒤 Verilog 코드

답변

0

wire a은 일부 조합 논리에 의해 구동됩니다. 조합 로직에서 input [10:0] z의 모든 비트는 함께 OR 연산됩니다 (즉, |z의 의미입니다). 그런 다음 ORing (즉, 11- 입력 OR 게이트의 출력) 결과는 xy 입력과 함께 논리 연산됩니다. ANDing 결과 (즉, 3 입력 AND 게이트의 출력)는 wire a에 할당됩니다 (즉, 3 입력 AND 게이트 드라이브 wire a).

0

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))이므로 & 또는 &&을 동등하게 사용할 수 있습니다.

개략도 간단한 2 입력 게이트와 당신의 발현 상태는 다음과 같다 일을 : 연산자에 대한

Simple gates schematic of the assignment

더 많은 정보와 하드웨어에서 그들을 번역이 this site에서 발견 할 수있는 방법.