2017-01-11 4 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 объединены вместе (это то, что означает |z). Затем результат этого ORing (т.е. выход 11-входного логического элемента ИЛИ) равен AND вместе с входами x и y. Результат этого ANDing (т.е. выход этого 3-входного логического элемента AND) назначается wire a (т. Е. 3-входные логические устройства И wire a).

0

z является сигналом в одиннадцать бит.
| - это сигнал or reduction.
(|z) будет правдой (1), если в z есть хотя бы один бит, то есть 1. С другой стороны, (|z) будет ложным (0), если все биты в z: 0. Это означает, что сигнал является коротким способом проверки, если сигнал 0.

|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.