Indice

Componenti base

Registro

module registro(output[N-1:0] out,
		input [N-1:0] inp, 
		input 	      beta, 
		input 	      clock);
 
   parameter N = 32;
 
   reg [N-1:0]		     stato;
 
   initial
     begin
	stato = 0;
     end
 
   always @(posedge clock)
     begin
	if(beta)
	  stato = inp;
     end
 
   assign
     out = stato;
 
endmodule

Commutatore

module k2(output [N-1:0]z, 
	  input [N-1:0] x, 
	  input [N-1:0] y, 
	  input 	alpha);
 
   parameter N = 32;
 
   assign 
     #2 z = (alpha ? y : x);
 
endmodule

AluINC

module aluinc(output [N-1:0]z,
	      input [N-1:0] x);
 
   parameter N = 32;
 
   assign #5 z     =  x + 1;
 
endmodule

AluMeno

module alumeno(output [N-1:0]z,
	       output segno,
	       input [N-1:0]x,
	       input [N-1:0]y);
 
   parameter N = 32;
 
   assign #5 z     =  x - y;
   assign #5 segno = (y > x ? 1 : 0);
 
endmodule

Indicatore a transizione di livello in ingresso

//
// modulo RDY (transizione di livello in ingresso) 
// 
 
module rdy(output rdyout,
	   input rdyin,
	   input beta,
	   input clock);
 
   reg 		 stato;
   reg 		 inp;
 
   wire 	 in2, out3;
 
   initial
     begin
	stato = 0;
	inp = 0;
     end
 
   always @(negedge clock)
     begin
	stato = rdyin;
     end
 
   ack contmod2(in2, beta,  clock);
   comp comp2(out3,  stato, in2);
 
 
   assign
     rdyout = out3;
 
endmodule

Indicatore a transizione di livello in uscita

module ack(output ackout,
	   input beta,
	   input clock);
 
   reg stato;
 
   initial
     begin
	stato = 0;
     end
 
   always @(negedge clock)
     begin
	if(beta)
	  stato = ~stato;
     end
 
   assign
     ackout = stato;
 
endmodule

Comparatore

primitive comp(output z,
	    input x,
	    input y);
 
   table
      0 0 : 0;
      0 1 : 1;
      1 0 : 1;
      1 1 : 0;
   endtable
 
endprimitive