|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
小弟刚刚接触CPLD,不知道为什么,第一个念头就是实现一个抢答器的功能,但是都两天了,还是不得要领,请各位走在前面的前辈拉小弟一把,先谢过了:)
一共8个按键,分别为 keyin0 , keyin1 ,...... keyin7,
还有8个LED,分别对应 ledout0,ledout1,.......ledout7;
我要实现的功能是抢答的功能,哪个键先按下,对应的led点亮,然后再按别的6个键(不包括可keyin0,keyin0用来复位)不起作用,按理说这个很容易实现的,但是就是没搞定,我想一定是在哪个环节上钻了牛角尖。
我的想法是按复位按钮则复位,清零,
否则就开始记录按键的次数,其实每次只有复位之后才能按一次别的按钮,仅仅一次。所以
我每次按键的时候flag+1,然后判断flag的值
但是现象是我每次只有按下复位才能点亮另外的键,并且只有先抬起复位键,另外的键才可以保持,我只想请教我的代码为什么会出现这样的现象,解释解释就可以了
代码如下:盼前辈指点迷津,再次谢过了
module keyin (keyin,ledout);
input[7:0] keyin;
output[7:0] ledout;
reg[7:0] ledout;
reg[7:0] flag;
always @ (keyin)
begin
if(keyin==8'b1111_1110) //如果是复位键
begin
//flag=0; //不知道能不能这样写?????
flag=8'b0000_0000;
ledout=8'b1111_1111;
end
else //不是复位键
begin
flag=flag+1;
//if(flag==1) //不知道能不能这样写?????
if(flag==8'b0000_0001)//第一次按下
begin
ledout[7:1]=keyin[7:1];
end
end
end
endmodule |
|