Computer Architecture
Computer Architecture
output out; input in; input rst; input clk; reg out;
begin
if (rst)
out = 0;
else
out = in;
end
endmodule
module onebitreg(y1,load1,x1,rst1,clk1);
input x1,rst1,clk1,load1;
endmodule
module fourbitreg(y,load,x,rst2,clk2);
endmodule
module register(dataoutreg1,dataoutreg2,datain,load2,rst3,clk3,s,s1);
wire [3:0]dataout1,dataout2,dataout3,dataout4,loadi;
Muhammad Usman CA Lab 12-ENC-17
output [3:0]dataoutreg1,dataoutreg2;
assign loadi=(load2==0)?4'b0000:(s==2'b00)?4'b0001:(s==2'b01)?4'b0010:(s==2'b10)?4'b0100:4'b1000;
assign dataoutreg1=(s1==2'b00)?dataout1:(s1==2'b01)?dataout2:(s1==2'b10)?dataout3:dataout4 ;
assign dataoutreg2=(s1==2'b00)?dataout1:(s1==2'b01)?dataout2:(s1==2'b10)?dataout3:dataout4;
endmodule
module test_reg;
register z3(dataoutreg1,dataoutreg2,datain,load2,rst3,clk3,s,s1);
always #5clk3=~clk3;
initial
begin
clk3=1;rst3=1;load2=0;datain=4'b0010;
#5 rst3=0;load2=1;datain=4'b0010;s=2'b00;s1=2'b00;
end