2017-01-11 6 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の意味です)。そのOR演算の結果(つまり、11入力ORゲートの出力)は、入力xyと一緒にANDされます。その論理積の結果(すなわち、その3入力ANDゲートの出力)は、wire a(すなわち、3入力ANDゲート駆動wire a)に割り当てられます。

0

zは、11ビット幅の信号である。
|は、信号のor reductionです。 zに少なくとも1ビットがあり、それが1である場合、
(|z)が真(1)になります。一方、のすべてのビットが0である場合、(|z)は偽(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で見つけることができます。

関連する問題