Verilog describe un sumador completo de 8 bits utilizando un módulo de canalización de 4 etapas
salida[7:0] suma;
salida cout;
entrada[ 7:0] ina,inb;
entrada cin,clk;<
reg[7:0] tempa,tempb,sum;
reg tempci, firstco,segundoco,terceroco,cout;
reg[1:0] primeros,tercero,tercerob;
reg[3:0] seconda,segundob,segundos;
reg[5:0] firsta,firstb,thirds;
siempre @(posedge clk)
comenzar
tempa=ina; ; tempci=cin; //ingresar caché de datos
fin
siempre @(posedge clk)
comenzar
{firstco,firsts }=tempa[1:0]+tempb[1:0]+tempci;
//Adición de primer nivel (2 bits inferiores)
firsta=tempa[7:2] ; //Datos de caché no involucrados en el cálculo
firstb=tempb[7:2]
end
always @(posedge clk)
comenzar
{ secondco,segundos}={firsta[1:0]+firstb[1:0]+firstco,firsts};
// Suma de segundo nivel ( agregar bit 2 y bit 3)
segundo=firsta[5:2]; //Caché de datos
segundob= primerob[5:2]
finalizar
siempre @(posedge clk)
comenzar
{thirdco,thirds}={segundoa[1:0]+segundob[1:0]+ secondco,segundos};
//Adición de tercer nivel (sumando el cuarto y quinto dígito)
thirda=segundo[3:2] //Caché de datos
tercerb=segundob[3:
fin
siempre @(posedge clk)
comenzar<
{cout,sum} ={thirda[1:0]+thirdb[1:0]+thirdco,thirds};
// Suma de cuarto nivel (suma de dos dígitos altos)
fin p>
módulo final