在本周的FPGA生产实习中,我们小组学习使用8×8led点阵实现简易动画
我使用的quartus为13.0版本,使用芯片为EP1C3T144C8,下面为部分的代码展示
`bash
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity led_88 is
port
(
clkin,resetin:in std_logic;--时钟,复位信号输入
line:out std_logic_vector(7 downto 0);--点阵列
row:out std_logic_vector(7 downto 0)--点阵行
);
end led_88;
architecture behave of led_88 is
component gen_div is--分频元件调用声明
generic(div_param:integer:=2);--默认是4分频
port
(
clk:in std_logic;
bclk:out std_logic;
resetb:in std_logic
);
end component;
component led_display is
port
(
clkin,resetin:in std_logic;--时钟,复位信号输入
clk_change:in std_logic;
clk_cnt:in std_logic;
line:out std_logic_vector(7 downto 0);--点阵列
row:out std_logic_vector(7 downto 0)--点阵行
--
);
end component;
signal clk_cnt:std_logic;--800Hz
signal clk_change:std_logic;--4Hz
----
begin
gen_100k: --分频产生800hz脉冲
gen_div generic map(25000)--50000分频的,产生800Hz脉冲
port map--分频元件例化
(
clk=>clkin,
resetb=>not resetin,
bclk=>clk_cnt
);
----
gen_4Hz: --分频产生4hz脉冲
gen_div generic map(6000000)--6000000分频产生4Hz脉冲
port map--分频元件例化
(
clk=>clkin,
resetb=>not resetin,
bclk=>clk_change
);
--点阵显示
led_displayU: led_display
port map
(
clkin=>clkin,
clk_change=>clk_change,
resetin=>resetin,--时钟,复位信号输入
clk_cnt=>clk_cnt,
line=>line,--点阵列
row=>row--点阵行
);
end behave;
以上为部分代码,最终实现的简易动画为一个移动的箭头,需要完整代
码和引脚连接图的朋友们可以私信我。