EDA挑战题,卖报机
eda吧
全部回复
仅看楼主
level 2
设计一个5分钱卖出一份报纸的电路,收1分,2分,5分硬币,并具有找零功能。好多家公司面试时候的笔试题,求解答
2015年11月09日 01点11分 1
level 1
module fm(
clk,rst_n,A,B,C,out,out1
);
input clk,rst_n,A,B,C;//A = 1, B = 2, C =5
output reg out,out1;
//reg [19:0] count;
reg [2:0] i;
always @ (posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
i <= 3'd0;
out <= 1'b0;
out1 <= 1'b0;
end
else
begin
case(i)
3'd0://开始没有钱
if(A == 1'b1)//
i <= i + 1'b1;
else if(B == 1'b1)
i <= 3'd2;
else if(C == 1'b1)
i <= 3'd5;
else
i <= i;
3'd1://1分钱
if(A == 1'b1)
i <= i + 1'b1;
else if(B == 1'b1)
i <= 3'd3;
else
i <= i;
3'd2://2分钱
if(A == 1'b1)
i <= i + 1'b1;
else if(B == 1'b1)
i <= 3'd4;
else
i <= i;
3'd3://3分钱
if(A == 1'b1)
i <= i + 1'b1;
else if(B == 1'b1)
i <= 3'd5;
else
i <= i;
3'd4://4分钱
if(A == 1'b1)
i <= i + 1'b1;
else if(B == 1'b1)
i <= 3'd6;
else
i <= i;
3'd5://5分钱
begin
out <= 1'b1;
i <= i + 2'd2;
end
3'd6://6分钱
begin
out <= 1'b1;
out1 <= 1'b1;
i <= i+ 1'b1;
end
3'd7://清零,重新开始
begin
i <= 3'd0;
out <= 1'b0;
out1 <= 1'b0;
end
end
end
endmodule
可能会有问题,也没有仿真
2015年11月10日 11点11分 2
1