# 按键实验中的两个赋值语句

0
[待解决问题]

always @(posedge clk or negedge rst_n) //检测时钟的上升沿和复位的下降沿
begin
if(!rst_n) //复位信号低有效
count <= 20'd0; //计数器清0
else
begin
if(count ==20'd999_999) //20ms扫描一次按键
begin
count <= 20'b0; //计数器计到20ms，计数器清零
key_scan <= key_in; //采样按键输入电平
end
else
count <= count + 20'b1; //计数器加1
end
end
//=====================================================
// 按键信号锁存一个时钟节拍
//=====================================================
reg [3:0] key_scan_r;
always @(posedge clk)
key_scan_r <= key_scan;
wire [3:0] flag_key = key_scan_r[3:0] & (~key_scan[3:0]); //当检测到按键有下降沿变化时，代表该按键被按下，按键有效

always @(posedge clk)
key_scan_r <= key_scan;

always @(posedge clk or negedge rst_n) //检测时钟的上升沿和复位的下降沿
begin
if(!rst_n) //复位信号低有效
count <= 20'd0; //计数器清0
else
begin
if(count ==20'd999_999) //20ms扫描一次按键
begin
count <= 20'b0; //计数器计到20ms，计数器清零
key_scan <= key_in; //采样按键输入电平
key_scan_r <= key_scan;
end
else
count <= count + 20'b1; //计数器加1
end
end
//=====================================================
// 按键信号锁存一个时钟节拍
//=====================================================
reg [3:0] key_scan_r;
//always @(posedge clk)
// key_scan_r <= key_scan;
wire [3:0] flag_key = key_scan_r[3:0] & (~key_scan[3:0]);

您需要登录以后才能回答，未注册用户请先注册