龙空技术网

用FPGA点亮一盏闪烁的LED灯

microFPGA 2042

前言:

现在兄弟们对“fpga数码管闪烁原理”大概比较注重,咱们都想要了解一些“fpga数码管闪烁原理”的相关文章。那么小编在网摘上收集了一些对于“fpga数码管闪烁原理””的相关文章,希望我们能喜欢,各位老铁们快快来学习一下吧!

写过软件的朋友一般都写过”hello world!”,因为这个是最简单的程序。在FPGA上最简单的应用就是点亮一盏闪烁的LED。

FPGA驱动LED示意图

首先用ISE新建一个工程,双击Xilinx ISE Design Suite 12.4图标

启动软件,打开ISE Project Navigator窗口,如下图

ISE软件界面

点击New Project...按钮

新建工程

打开New Project Wizard

创建新工程

输入新工程名字和路径,按Next按钮

输入工程名和路径

在下一个窗口中指定所使用的FPGA芯片类型,封装,速度

指定FPGA芯片

点击Next弹出确认新建工程信息窗口,确认无误后点Finish

确认工程信息

至此工程已经建好的,但是仅仅是一个空工程,里面没有任何文件。现在为工程加入源文件,右键单击xc3s200a-4vq100,选择New Source Wizard

新建源文件

左边是源文件的类型,选VHDL Module,输入blinker,点Next

定义输入轮输出信号

在Port Name中输入 clk_i 方向 in ,blinker_o 方向out ,点Next

确认端口信息

确认无误后点Finish 。

将生成的源文件模板做如下修改

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

-- Uncomment the following library declaration if using

-- arithmetic functions with Signed or Unsigned values

--use IEEE.NUMERIC_STD.ALL;

-- Uncomment the following library declaration if instantiating

-- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

entity blinker is

Port ( clk_i : in STD_LOGIC;

blinker_o : out STD_LOGIC);

end blinker;

architecture Behavioral of blinker is

signal cnt_r : std_logic_vector(22 downto 0) := (others=>'0');

begin

process(clk_i) is

begin

if rising_edge(clk_i) then

cnt_r <= cnt_r + 1;

end if;

end process;

blinker_o <= cnt_r(22);

end Behavioral;

其中信号cnt_r将输入时钟做2^23次分频,下图直观的显示了输入时钟分频得到输出信号的过程。

分频输入时钟得到输出信号

保存文件,然后双击Floorplan Area/IO/Logic(PlanAhead)标签

分配引脚

点I/O Ports标签

I/O Ports标签

在Package Pins窗口中指定引脚

指定引脚

保存,退出PlanAhead,在ISE中双击Generate Programming File 生成可下载的位流文件

生成位流文件

在工程文件夹内可找到生成的位流文件

位流文件

用FRF_Loader将位流文件配置进FPGA即可看到LED闪烁

配置FPGA

最后效果

点亮后的LED

这是最简单的应用,以后会为大家带来更多,更好玩的……

标签: #fpga数码管闪烁原理