02小项目-led灯翻转实验
FPGA Verilog LED控制 时钟频率 计数器
实验要求:
使用开发版自带的50MHz时钟,FPGA编码实现led灯每秒翻转一次。
基本思路:
50MHz时钟,要实现一秒翻转一次,那就是每计数到一秒(计数50,000,000次)改变一次输出信号电平值;50M用二进制来存储需要用26位寄存器。
硬件设计:
正点原子启明星 zynq7010开发板的底板上有4个led灯,这里使用PL端的led0来实现;从原理图可以看出,当FPGA内部输出高电平时二极管亮。
软件设计:
添加设计源文件
添加文件名,OK,finish,OK,YES
双击打开.v文件开始代码的编写
verilog代码
module led0(
input sys_clk,
input sys_rst_n,
output reg pl_led0
);
reg [25:0] led_cnt;
always @(posedge sys_clk)begin
if(!sys_rst_n)begin
led_cnt<=26'd0;
pl_led0<=1'b1;
end
else begin
if(led_cnt<26'd50000000)
led_cnt<=led_cnt+26'd1;
else if(led_cnt==26'd50000000)begin
led_cnt<=26'd0;
pl_led0<=~pl_led0;
end
end
end
endmodule
管脚约束文件的添加和.v文件的添加方法类似
根据原理图设置的管脚约束文件
set_property IOSTANDARD LVCMOS33 [get_ports sys_clk]
set_property IOSTANDARD LVCMOS33 [get_ports sys_rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports pl_led0]
set_property PACKAGE_PIN U18 [get_ports sys_clk]
set_property PACKAGE_PIN N16 [get_ports sys_rst_n]
set_property PACKAGE_PIN H15 [get_ports pl_led0]
最终实现了led灯一秒翻转一次(运行了近3s,够狠)
m0_57353297: 这里的w和h为啥是0.4啊
qq_58810091: 双击没有反应啊
Lontano。: 您好,想问一下,第4点中例化路径是怎么写的?有什么规范嘛?
bunnydou: 请问下为什么必须要使用复位,如果不使用,会怎么样呢?
叮当陈: 你第二题写错了,你的是缺陷报告主要有哪些元素,题目是测试用例主要有哪些元素