完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
一个简单的数码管按键实验,预期效果是两个按键,按下一个数码管数字加1,按下另一个减一。实际效果是按下按键,数字乱跳,检查程序逻辑没有问题(自认为),请高手看看,是不是时间上出了问题。
下面是程序: module digit_sw(clk,rst,sw1,sw2,data,data_en,led1); input clk,rst; input sw1,sw2; output [7:0]data;//段选 output [3:0]data_en;//位选 output led1; reg light; reg [1:0]key; reg [1:0]key_r; always @(posedge clk or negedge rst) if(!rst) key <= 2'b00; else key <= {sw1,sw2}; always @(posedge clk or negedge rst) if(!rst) key_r <= 2'b00; else key_r <= key; wire key_en = key_r & (~key);//脉冲边沿检测消痘 reg [19:0]cnt_key; always @(posedge clk or negedge rst) if(!rst) cnt_key <= 20'b0; else if(key_en) cnt_key <= 20'b0; else cnt_key <= cnt_key +1'b1; reg [1:0]get; reg [1:0]get_n; always @(posedge clk or negedge rst) if(!rst) get <= 2'b0; else if(cnt_key == 20'hfffff) get <= {sw1,sw2};//得到按键值 always @(posedge clk or negedge rst) if(!rst) get_n <= 2'b0; else if(cnt_key == 20'h00fff)get_n <= get; //不加延时的话,可能会出现按键不能够识别的问题,所以一定要加延时 wire [1:0]key_con = get & (~get_n); //得到按键值 /* always @ (posedge clk or negedge rst) //点灯程序,sw1关,sw2开 case(key_con) 2'b01:light <= 1'b1; 2'b10:light <= 1'b0; default: ; endcase */ reg [7:0]date; reg [3:0]date_en; reg [3:0]num; always @(posedge clk) // 估计是时序的问题,num加(减)1的时候,并不能够在数码管上显示,而是按键,出现数字乱跳。 case(key_con) 2'b01:num <= 4'd6;//num + 1'b1;// 2'b10:num <= 4'd8;//num - 1'b1;// default: ; endcase always @(num) case(num) 4'd0:date <= 8'h03; 4'd1:date <= 8'h9f; 4'd2:date <= 8'h25; 4'd3:date <= 8'h0d; 4'd4:date <= 8'h99; 4'd5:date <= 8'h49; 4'd6:date <= 8'h41; 4'd7:date <= 8'h1f; 4'd8:date <= 8'h01; 4'd9:date <= 8'h09; default: ; endcase assign led1 = light;//这个是为了验证按键是否有用,开发板上证明是可有的 assign data = date; assign data_en = 4'b1110; endmodule |
|
相关推荐
2个回答
|
|
但是,我用按键同样的子模块控制led灯的量灭没有问题啊!不管怎么样,我先试试,谢谢啦 |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1434 浏览 1 评论
助力AIoT应用:在米尔FPGA开发板上实现Tiny YOLO V4
1059 浏览 0 评论
2513 浏览 1 评论
2206 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
2475 浏览 0 评论
1936 浏览 53 评论
6021 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 00:03 , Processed in 0.683997 second(s), Total 73, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号