|
|
用的是ACX720开发板,在尝试按键消抖后控制LED灯改变状态,时钟频率是50Mhz,仿真波形符合预期,硬件上没有检测出问题。但是烧入比特流文件后,LED灯始终无法点亮。
Verilog代码如下:
module light
#(
parameter cnt=20'd999999
)
(
input clk,
input arst,
input rkey,
output reg light
);
reg rkey_1;
reg rkey_2;
reg arst_1;
reg arst_2;
reg key;
reg [19:0] counter;
//先处理一下异步输入
always @(posedge clk or posedge arst) begin
if(arst) begin
counter<=0;
key<=0;
rkey_1<=0;
rkey_2<=0;
arst_1<=1;
arst_2<=1;
light<=0;
end
else begin
rkey_1<=rkey;
rkey_2<=rkey_1;
arst_1<=arst;
arst_2<=arst_1;
end
end
//接着来处理按键消抖,按键本身摁下为低电平,但是处理后的按键信号key用高电平来表示摁下
always @(posedge clk) begin
if(!arst_2)begin
if(rkey_2==0&&counter<cnt) begin
counter<=counter+1;
end
else begin
if(rkey_2==1)
counter<=0;
end
end
if(counter==cnt-1) key<=1;
else key<=0;
end
//最后处理LED灯的变化
always @(posedge clk) begin
if(!arst_2)begin
if(key==1) light<=~light;
end
end
endmodule
引脚绑定情况为异步复位接拨码开口,其它端口与名称对应
set_property DRIVE 12 [get_ports light]
set_property IOSTANDARD LVCMOS33 [get_ports arst]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports light]
set_property IOSTANDARD LVCMOS33 [get_ports rkey]
set_property PACKAGE_PIN G22 [get_ports arst]
set_property PACKAGE_PIN M22 [get_ports light]
set_property PACKAGE_PIN B21 [get_ports rkey]
set_property PACKAGE_PIN Y18 [get_ports clk]
|
|