Operador de concatenación
Parte de la sección Fundamentos del Journey de Verilog de Coddy — lección 27 de 90.
El operador de concatenación { } combina múltiples señales, constantes o expresiones en un único vector más grande. Se utiliza siempre que necesites unir bits para formar valores más anchos.
Qué valores funcionan con la concatenación
Puedes concatenar:
- Wires y regs — cualquier señal
- Constantes — números como
4'b1010o8'hFF
- Expresiones — resultados de operaciones como
a + b - Replicaciones — repetir un valor varias veces
Todos los valores concatenados deben tener anchos fijos y conocidos.
Sintaxis básica: {value1, value2, value3, ...} El ancho del resultado es la suma de todos los anchos individuales.
Ejemplos
Combinar dos valores de 4 bits en 8 bits:
reg [3:0] high, low;
reg [7:0] word;
word = {high, low}; // high se convierte en los 4 bits superiores, low se convierte en los 4 inferioresCombinar con constantes:
data = {4'b1010, 4'b0000}; // 8'b10100000Combina más de dos:
full = {a, b, c, d}; // Todos los anchos se sumanReplicación
Puedes repetir un valor varias veces usando {n{value}}:
repeat = {4{4'b1010}}; // 16'b1010101010101010 (repetir 4 veces)Esto es útil para la extensión de signo:
signed_8bit = {4{sign_bit}, value_4bit};Ejemplo de código
module concatenation_demo;
reg [3:0] upper, lower;
reg [7:0] combined;
reg [11:0] repeated;
initial begin
upper = 4'b1010;
lower = 4'b1100;
combined = {upper, lower}; // 10101100
repeated = {3{4'b1010}}; // 101010101010
$display("{upper, lower} = %b", combined);
$display("{3{4'b1010}} = %b", repeated);
$finish;
end
endmoduleResultado:
{upper, lower} = 10101100
{3{4'b1010}} = 101010101010Notas importantes
- El orden importa:
{a, b}es diferente de{b, a} - Todas las partes deben tener anchos fijos (sin números sin tamaño)
- La concatenación se puede utilizar tanto en el lado izquierdo como en el derecho de las asignaciones
Desafío
Escribe las expresiones de concatenación correctas para cada tarea.
Qué hacer:
- Combina
ayben un resultado de 8 bits y almacénalo encombine1 - Combina
c,dyeen un resultado de 12 bits y almacénalo encombine2 - Combina
fy dos copias degen un resultado de 12 bits y almacénalo encombine3
Hoja de referencia
El operador de concatenación { } une bits para formar un vector más ancho. El ancho del resultado = suma de todos los anchos individuales.
// Basic: {value1, value2, ...}
reg [3:0] high, low;
reg [7:0] word;
word = {high, low}; // high = bits superiores, low = bits inferiores
// With constants
data = {4'b1010, 4'b0000}; // 8'b10100000
La replicación {n{value}} repite un valor n veces:
repeated = {3{4'b1010}}; // 12'b101010101010
signed_8bit = {4{sign_bit}, val_4b}; // extensión de signo
Reglas clave:
- El orden importa:
{a, b}≠{b, a} - Todas las partes deben tener anchos fijos y conocidos
- Se puede utilizar en ambos lados de las asignaciones
Pruébalo tú mismo
module concatenation_challenge;
reg [3:0] a, b;
reg [3:0] c, d, e;
reg [3:0] f, g;
reg [7:0] combine1;
reg [11:0] combine2, combine3;
initial begin
a = 4'b1010;
b = 4'b0101;
c = 4'b1111;
d = 4'b0000;
e = 4'b1100;
f = 4'b1001;
g = 4'b0110;
combine1 = ______; // Combine a and b into an 8-bit result
combine2 = ______; // Combine c, d, and e into a 12-bit result
combine3 = ______; // Combine f and two copies of g into a 12-bit result
$display("{a, b} = %b", combine1);
$display("{c, d, e} = %b", combine2);
$display("{f, g, g} = %b", combine3);
$finish;
end
endmoduleEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
1Introducción
¿Qué es Verilog?Hardware vs SoftwareNiveles de abstracción de diseñoTu primer móduloComentarios4Operadores Parte 1
Operadores aritméticosOperador de móduloOperadores de comparaciónRepaso - Matemáticas simplesOperadores bit a bit7Asignación y Compuertas
Asignación ContinuaAsignación con OperadoresPrimitivas de Compuertas IntegradasCompuertas AND OR NOTCompuertas XOR XNORResumen - Circuito de Compuertas Lógicas10Toma de decisiones
Sentencia IfIf - ElseRepaso - Comparador simpleSentencia CaseCasex y CasezRepaso - Diseño de ALU5Operadores Parte 2
Operadores lógicosOperadores de reducciónOperadores de desplazamientoOperador de concatenaciónOperador condicionalResumen - Desafío de operadores3Sistema de numeración
Representación binariaNúmeros con tamaño definidoNúmeros sin tamaño definidoNúmeros negativosValores especiales X y ZResumen - Formatos de números6Módulos
Estructura del móduloPuertos de entrada y salidaPuertos InoutInstanciación de módulosMapeo de puertos por nombreMapeo de puertos por ordenResumen: Construye un módulo