【XILINX FPGA AX309开发板试用体验】+点灯

  • listen
  • LV2工程师
  • |      2018-01-29 20:22:15
  • 浏览量 2615
  • 回复:1
FPGA做LED控制还是比较简单的,先做一个计数器,然后根据计数器的值控制FPGA的引脚高低电平。AX309 开发板上共有 4 个红色的用户 LED 灯(LED1~LED4),硬件电路上设计的是高电平点亮 LED 灯。 程序中定义了一个 32 位的寄存器 timer, 用于循环计数 0~199_999_999(4 秒钟), 计数到 49_999_999(1 秒)的时候, 点灭 LED1 灯; 计数到99_999_999(2 秒)的时候, 点灭 LED2 灯; 计数到 149_999_999(3 秒)的时候, 点灭 LED3 灯;计数到 199_999_999(4 秒)的时候, 点灭 LED4 灯。 `timescale 1ns / 1ps module led_test ( clk, // 开发板上输入时钟: 50Mhz rst_n, // 开发板上输入复位按键 led // 输出LED灯,用于控制开发板上四个LED(LED1~LED4) ); //=========================================================================== // PORT declarations //=========================================================================== input clk; input rst_n; output led; //寄存器定义 reg timer; reg led; //=========================================================================== // 计数器计数:循环计数0~4秒 //=========================================================================== always @(posedge clk or negedge rst_n) //检测时钟的上升沿和复位的下降沿 begin if (~rst_n) //复位信号低有效 timer <= 0; //计数器清零 else if (timer == 32'd199_999_999) //开发板使用的晶振为50MHz,4秒计数(50M*4-1=199_999_999) timer <= 0; //计数器计到4秒,计数器清零 else timer <= timer + 1'b1; //计数器加1 end //=========================================================================== // LED灯控制 //=========================================================================== always @(posedge clk or negedge rst_n) //检测时钟的上升沿和复位的下降沿 begin if (~rst_n) //复位信号低有效 led <= 4'b1111; //LED灯输出全为高,四个LED灯亮 else if (timer == 32'd49_999_999) //计数器计到1秒, led <= 4'b1000; //LED1点灭 else if (timer == 32'd99_999_999) //计数器计到2秒, led <= 4'b0100; //LED2点灭 else if (timer == 32'd149_999_999) //计数器计到3秒, led <= 4'b0010; //LED3点灭 else if (timer == 32'd199_999_999) //计数器计到4秒, led <= 4'b0001; //LED4点灭 end endmodule 管脚约束: ## NET clk LOC = T8 | TNM_NET = sys_clk_pin | IOSTANDARD = "LVCMOS33"; TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 50000 kHz; ## ## NET rst_n LOC = L3 | IOSTANDARD = "LVCMOS33"; ## Reset Button ## ########LED Pin define##################### NET led<0> LOC = P4 | IOSTANDARD = "LVCMOS33"; ## LED1 NET led<1> LOC = N5 | IOSTANDARD = "LVCMOS33"; ## LED2 NET led<2> LOC = P5 | IOSTANDARD = "LVCMOS33"; ## LED3 NET led<3> LOC = M6 | IOSTANDARD = "LVCMOS33"; ## LED4 下载后效果:
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:1
wg3613 2018-02-23
不错哦,谢谢分享
0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子