OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 35|回复: 1

[XILINX] 初学求助,例程触摸案件控制流水灯

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2025-11-18
在线时间
0 小时
发表于 3 天前 | 显示全部楼层 |阅读模式
1金钱
module Touch_Led (
    input   sys_clk,
    input   sys_rst_n,
    input   Touch_Key,
    output  reg [3:0] Led
);
parameter CNT_MAX = 25'd2500_0000;
reg [24:0] cnt;

always@(posedge sys_clk or negedge sys_rst_n) begin
    if(!sys_rst_n)
        begin
        cnt <= 25'd0;

        end
    else
        begin
            if(cnt < CNT_MAX -25'd1)
                begin
                cnt <= cnt +25'd1;

                end
            else
                begin
                    cnt <= 25'd0;

                end
        end
end
reg Touch_Key_d0;
reg Touch_Key_d1;
wire Touch_Key_en; // touch valid

always @(posedge sys_clk or negedge sys_rst_n) begin
    if (!sys_rst_n) begin
        Touch_Key_d0 <= 1'b0;
        Touch_Key_d1 <= 1'b0;
    end
    else begin
        Touch_Key_d0 <= Touch_Key;
        Touch_Key_d1 <= Touch_Key_d0;
    end
end
assign Touch_Key_en = (~Touch_Key_d1)&Touch_Key_d0;
reg flag_Led;
always @(posedge sys_clk or negedge sys_rst_n) begin
    if (!sys_rst_n) begin
        flag_Led <= 1'b1;
    end
    else if(Touch_Key_en)
        flag_Led <= ~flag_Led;
end
always @(posedge sys_clk or negedge sys_rst_n) begin
    if (!sys_rst_n) begin
        Led <= 4'b1000;
    end
    else if(flag_Led && (cnt == CNT_MAX -25'd1))
        Led <= {Led[2:0],Led[3]};
    else
        Led <= Led;
end
endmodule触摸按键控制LED流水,理论上应该是上板后呈现流水效果,触摸一次暂停,在触摸恢复, 我看QuestaSIM  波形吻合,但是实际上板 需要手动复位(或者触摸一下)之后才开始流水,  看不出代码有什么问题,请各位佬指点


回复

使用道具 举报

4

主题

2149

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
6046
金钱
6046
注册时间
2018-10-21
在线时间
1776 小时
发表于 昨天 09:17 | 显示全部楼层
reg flag_Led;改成reg flag_Led = 1'b1;试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


关闭

原子哥极力推荐上一条 /1 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-11-25 11:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表