You are on page 1of 7

module newatm1(wen,ren,ip,locn,clk,rst,userpswd,useractno,useramt,invalid,invalidpswd,nobalance,lang,ch,tr); input clk,rst,ch,tr; input [15:0] useractno; input [7:0] userpswd; input [15:0] useramt; input [1:0]

lang; input [39:0] ip; input ren,wen; input [3:0] locn;

output invalid,invalidpswd,nobalance; reg invalid,invalidpswd,nobalance,flag; reg [3:0] addr,addr1; reg [2:0] state; reg [39:0] mem [9:0]; reg [15:0] balance,acctno; reg [7:0] pswd; always @(posedge clk ) begin if(wen) begin mem[locn]<=ip; end if(ren ) begin acctno=mem[addr][39:24]; pswd=mem[addr][23:16];

balance=mem[addr][15:0]; end end always@(posedge clk) begin if(rst) begin addr<=4'b0000; invalid<=0; flag<=0; invalidpswd<=0; nobalance<=0; state<=3'b000; end else begin case(state)

3'b000: begin

//$display("Welcome to state bank of India"); //$display("Enter the account no:"); if(useractno==acctno) begin

state=3'b001; flag=1;

addr1=addr; end else if(addr==4'd10) begin state=3'b111; invalid=1; end else addr=addr+1; end 3'b001: begin //$display("Enter the password"); if(userpswd==pswd) state=3'b010; else begin //$display("Your password is wrong"); invalidpswd<=1; end

end 3'b010: begin //$display("Enter the language 1:English 2:Malayalam 3:Hindi"); if(lang==2'b00) state=3'b011; end

3'b011: begin //$display("Enter the transaction required 0:Balance Enquiry 1:withdrawal"); if(ch==0) state=3'b100; else state=3'b101; end 3'b100: begin //$display("The balance is %h",mem[addr1][15:0]); state=3'b110; end 3'b101: begin if(useramt>40'h4000) begin nobalance<=1; //$display("Invalid amount"); end else if((balance-useramt)<10'h500) begin //$display("No balance"); end

else begin

mem[addr1]<={acctno,pswd,mem[addr1][15:0]-useramt};

end state=3'b110; end 3'b110: begin //$display("Do you want another transaction"); if(tr==1) state=3'b011;

end 3'b111: begin //$display("Invalid account"); state=3'b000; end endcase

end

end

always@(state) begin

case(state)

3'b000: begin $display("Welcome to state bank of India"); $display("Enter the account no:");

end 3'b001: begin $display("%h",mem[addr1][39:24]); $display("Enter the password"); $display("%h",pswd); if(userpswd!=mem[addr1][23:16]) $display("INvalid password"); end 3'b010: begin $display("Enter the language 1:English 2:Malayalam 3:Hindi"); end 3'b011: begin

$display("Enter the transaction required 0:Balance Enquiry 1:withdrawal"); $monitor("%b",ch); end 3'b100: begin

$display("The balance is %h",mem[addr1][15:0]); end 3'b101: begin $display("Enter the amount"); $display("%h",useramt); if(useramt>40'h4000) begin nobalance<=1; $display("Invalid amount"); end else if((balance-useramt)<10'h500) begin $display("No balance"); end end 3'b110: begin $display("Do you want another transaction"); $monitor("%b",tr); end 3'b111: begin $display("Invalid account"); end endcase end endmodule

You might also like