本文主要是介绍15 、FPGA之纯PL流水灯实验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
实验基本目的:实验手册PL的流水灯,基本流程参考手册;
逻辑代码解析:
module PL_Led(clk,rst_n,led);input clk;
input rst_n;
output [3:0] led;reg [0:27] cnt;
reg [3:0] led_reg;
always@(posedge clk or negedge rst_n)if (!rst_n)begincnt<=28'h0000;endelse if (cnt== 28'h17D_7840) //50MHZ*0.5sbegincnt<=28'h0000;endelsebegincnt<=cnt+1'b1;endalways@(posedge clk or negedge rst_n)if(!rst_n)beginled_reg<=4'b0001;endelse if (cnt==28'h17D_7840)beginled_reg<={led_reg[0],led_reg[3:1]}; // 1 000 0100 0010 0001endassign led = led_reg;endmodule
主要解析一下
else if (cnt== 28'h17D_7840) //50MHZ*0.5s
FPGA的开发板的时钟是50MHZ, 计算是1/50MHZ=0.02us秒
逻辑代码中,每累加1次需要0.02us, 需要0.5s进行一次led灯变化,侧需要0.5s/0.02us次
0.5s/0.02us=0.5s/(1/50MHZ)=0.5s*50MHZ=0.5*50*1000*1000HZ=25000000=0x17D7840次
set_property PACKAGE_PIN M15 [get_ports {led[3]}]
set_property PACKAGE_PIN G14 [get_ports {led[2]}]
set_property PACKAGE_PIN M17 [get_ports {led[1]}]
set_property PACKAGE_PIN G15 [get_ports {led[0]}]
set_property PACKAGE_PIN K17 [get_ports clk]
set_property PACKAGE_PIN E17 [get_ports rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]create_clock -period 20.000 -name clk -waveform {0.000 10.000} [get_ports clk]
约束文件
这篇关于15 、FPGA之纯PL流水灯实验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!