Documentos de Académico
Documentos de Profesional
Documentos de Cultura
endmodule
and inst1(aux1,ai,bi);
xor inst2(aux2,ai,bi);
and inst3(aux3,cini,aux2);
or inst4(couti,aux1,aux3);
xor inst5(sumi,cini,aux2);
endmodule
assign {cout,sum}=a+b+cin;
endmodule
SUMADOR COMPLETO 4 BIT, v2.0
module sumador4bits(a, b, cin, sum, cout);
input cin;
input [3:0] a, b;
output [3:0] sum, cout;
endmodule
FUNCIÓN TEMPERATURA
// Cuerpo de la función
// ------------------------------------
temp=((9*gc)/5)+32;
endfunction
endmodule
CONTADOR
initial
begin
salida=0;
end
if (reset)
begin
salida=0;
end
else
if (bandera)
begin
salida=salida+1;
$display("Salida=%d",salida);
end
else
begin
salida=salida-1;
$display("Salida=%d",salida);
end
end
endmodule
PARALELO SERIE
input [7:0]entrada;
input clk;
output salida;
reg salida;
integer i;
initial
i=0;
always@(clk)
for (i=0;i<8;i=i+1)
begin
$display ("i=%d",i);
salida=entrada[i];
$display ("entrada=%d,salida=%d",entrada, salida);
end
endmodule
UNIDAD ARITMÉTICA LÓGICA
// siempre que se detecte un cambio en algún valor de entrada (a, b ó sel), hacer lo que sigue
UTILIZA ALU
endmodule
FACTORIAL
always@(entrada) // siempre que se detecte un cambio en el valor de entrada, hacer lo que sigue
begin
salida=0;
if (entrada<=10) //verifica que el numero a calcular el factorial no exceda el 10
begin
salida=1; // asignación del valor 1 a la salida
for(i = 1; i <= entrada; i = i + 1)
salida = salida*i; //almacena el producto para calcular el factorial
$display ( "%d!= %d" , entrada, salida);
//muestra por consola el valor del factorial
end
else // en caso de que el numero de entrada sea mayor que 10
$display ("%d!= indeterminado (max. 10)",entrada);
//muestra por consola un mensaje de advertencia al usuario
end
endmodule
CICLO FOR
module forv(sum, mult, num);
input [7:0] num;
output [7:0] sum;
output [15:0] mult;
reg [7:0] n, sum;
always @(num)
begin
sum=0;
for (n=0;n<5;n+=1) //while (n<5)
sum=sum+num;
end
endmodule
CICLO WHILE
always @(num)
begin
sum=0; n=0;
while (n<5)
begin
n=n+1;
sum=sum+num;
end
end
endmodule
FLIP-FLOP D
module FFD(d,clk,reset,set,q,qnot);
input [3:0] d;
input clk,reset,set;
output [3:0] q,qnot;
reg [3:0] q;
wire set, reset;
assign qnot=~q;
endmodule
FLIP- FLOP JK
module FFJK(J, K, RESET, CLK, Q);
input J, K, RESET;
input CLK;
output Q;
reg Q;
MEMORIA
module Memoria(RegEnt, Leer, Escribir, Clk, Select, RegSal);
initial
begin
for (n=0;n<=31;n=n+1)
Mem[n]=n;
end
input clk;
input reset;
output [1:0] q;
reg [1:0] q;
reg [1:0] Estd, PxEstd;
initial
begin
PxEstd=0;
q=0;
end
`define S0 0
`define S1 1
`define S2 2
`define S3 3
input clk;
input reset;
output [1:0] q;
reg [1:0] q;
initial
begin
PxEstd=0;
q=0;
end
always @(Estd)
begin
case (Estd)
`S0: begin
q='b00;
PxEstd=`S1;
end
`S1: begin
q='b01;
PxEstd=`S2;
end
`S2: begin
q='b10;
PxEstd=`S3;
end
`S3: begin
q='b11;
PxEstd=`S0;
end
endcase
end
endmodule
MAQUINAS DE ESTADO – CONTADOR ASCENDENTE – DESCENDENTE
initial
begin
Q[3:0] = 4'b0000;
end