【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
在fpga上面进行按键的输入,要比stm32编写按键输入要容易的多。这里面最主要的工作就是把led输出和按键输入绑定在一起。当然,因为按键抖动的关系,需要进行一定的节拍延迟,再将信号传递给led。
1、普通按键输入
module key_test(clk, key, led);
input clk;
input key;
output led;
wire clk;
wire[3:0] key;
wire[3:0] led;
reg[3:0] tmp1;
reg[3:0] tmp2;
always @(posedge clk)
tmp1 <= ~key;
always @(posedge clk)
tmp2 <= tmp1;
assign led = tmp2;
endmodule
如上面代码所示,按键因为是被按下的时候是低电平,所以需要进行取反的动作。按键输入key首先会被传递给tmp1,tmp1会传递给tmp2。最后led输出的时候,才会将tmp2输出给led灯。
等完成了verilog编译之后,就需要把信号和pin脚bind在一起。这里需要注意的是key[0]。原来key0用的是reset引脚,因为这里是对key输入进行测试,取消了复位信号,所以这里的key[0]指向了N13这个引脚。
做好了上面这几个步骤之后,就完成了按键和led灯之间的映射关系。按下key0,led0灯亮;按下key1,则led1灯亮,以此类推。
2、fpga程序的保存和烧入
前面fpga虽然也生成了sof文件,但是这是通过jtag烧入的。如果断电之后,fpga的程序就丢失了。所以,最好的方法还是需要把程序保存在spi norflash里面。正好quartus也提供了这样的接口,选择“File”-》“Convert Programming Files”,
这个时候,不出意外就会出现这样的窗口,
需要配置的有4个地方。1是设置最终要烧入的文件类型。2是选择norflash的类型。3是选择fpga的类型。4是选择要转化的文件。其中2和3根据自己开发板的情况灵活进行选择。如果一切OK,单击Generate按钮即可。
有了生成的jic文件,下面就可以准备烧入了。选择“Tools”-》“Programmer”。这时双击文件,重新选择刚刚生成的jic文件,
等选择之后,会发现烧入的界面发生了改变。
先勾上Erase,单击start,过一会应该就能erase完毕。
再次勾上Program/Configure,单击start。注意先把Erase取消掉,
等到这些都做完之后,整个烧入就结束了。为了测试jic是不是真的烧入到flash当中了,可以先断电,再上电。如果相关功能还保留着,那说明确实烧入到flash里面去了。否则,就需要检查一下为什么烧入失败了。