~
, también
conocido como NOT a nivel de bits (no confuncir con el NOT
lógico, cuyo símbolo es el signo de cierre de
admiración "!
"):
NOT |
~
1011101010101011 |
0100010101010100 |
|
.
No se debe confundir con el operador lógico OR
(||
).
Por ejemplo, si queremos activar los bits primero, tercero
y séptimo de un registro empezando a contar por la
izquierda, la máscara debe ser
'b1000101
:
BIT SET |
1011101010101011 |
|
0000000001000101 |
1011101011101111 |
&
. No debe confundirse con la operación
lógica AND que se escribe &&
:
Desactivemos los bits primero, tercero
y séptimo de un registro empezando a contar por la
izquierda, la máscara debe ser
~'b1000101
que, para 16 bits es lo que
aparece en la figura:
BIT RESET |
1011101010101011 |
&
1111111110111010 |
1011101010101010 |
^
.
Se voltean ahora los bits primero, tercero
y séptimo de un registro empezando a contar por la
izquierda, la máscara debe ser
'b1000101
:
BIT COMPLEMENT |
1011101010101011 |
^
0000000001000101 |
1011101011101110 |
r
está a 1, haríamos algo como:
if ((r & 'b100000) != 0) begin // Hacemos lo que hay que hacer cuando el bit estA activado end else begin // Hacemos lo que hay que hacer cuando el bit estA desactivado end
r
de dieciséis bits sin signo.
Para ello, construid la máscara
con valor 'h8000
. Efectuad mediante un
while
(*) dieciséis
vueltas comprobando
bit a bit el registro con ayuda de la máscara, que
se desplazará un bit a la derecha en cada iteración.
_________________________
(*) La sintaxis de la orden while
en
Verilog es idéntica a la de C, salvo que el cuerpo del bucle
puede estar rodeado por las sentencias begin
y end
,
en lugar de por llaves.
r
de cuatro bits, cuyo valor es 'b1100
,
la reducción AND se expresa como &r
y consiste
en aplicar la operación AND a todos los bits del registro
de derecha a izquierda, o sea, &r
es lo mismo que
0 & 0 & 1 & 1
en el ejemplo.
Se pueden aplicar reducción con todas las operaciones principales:
Operación | Símbolo | Operación | Símbolo | |||
---|---|---|---|---|---|---|
and | & |
nand | ~& |
|||
or | | |
nor | ~| |
|||
xor | ^ |
xnor | ~^ o ^~ |
while
, similarmente a cómo se hizo en el
ejercicio anterior para contar los bits de un registro que son 1Decidir, sin ayuda de Verilog, si al recibirse
8'b10101010
con
el bit de paridad impar almacenado en el bit más significativo
si dicho valor es un error de transmisión o no.
¿Cómo haríamos esa comprobación con una única instrucción de Verilog?
{ }
). Los registros o constantes que se
quieren concatenar se separan por comas.
El operador de replicación permite concatenar varias copias seguidas de un mismo registro. Se expresa anteponiendo el número de veces que se quiere replicar el registro a las llaves, como se ve en el siguiente ejemplo general:
reg A; reg [1:0] B, C; A=1'b1; B=2'b00; C=2'b10; // { 4{A}, 2{C}, B, 3{3'b011} } da como resultado // 19'b1111101000011011011. // // ExplicaciOn: 1111 (4xA) 1010 (2xC) 00 (B) 011011011 (3x3'b011)
ls
cd
rm
man
cat