// General Register for D40 ( 4 bit Simple Microprocessor ) // Words Length : 4 bit // Functionality : reset, load // Date : 97/12/01 (Mon) // Author : tootsuka@de.tokyo-ct.ac.jp module gr4(clk,in,out,ctl) ; input clk ; // system clock input [3:0] in ; // input of general register output [3:0] out ; // output of general register input [1:0] ctl ; // General control // ctl = 00 : reset // 01 : load // 10 : hold // else : hold reg [3:0] a4 ; // General Register assign out = a4 ; always @(posedge clk) begin a4 <= a4_mux(ctl) ; end function [3:0] a4_mux ; input [1:0] ctl ; begin case ( ctl ) 2'b00 : a4_mux = 4'b0000 ; // reset 2'b01 : a4_mux = in ; // load 2'b10 : a4_mux = a4 ; // hold default : a4_mux = a4 ; // hold endcase end endfunction endmodule