FPGA 驅動 LED 靜態/動態顯示

FPGA 驅動 LED 靜態顯示

功能:譯碼輸出模塊,LED爲共陽極接法

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL; --建議資源庫同時聲明3個

entity decoder is                --譯碼器decoder 

    Port(seg;in std_logic_vector(3 downto 0); --四位二進制碼輸入

            q3;out std_logic_vector(6 downto 0) ); --輸出LED七段碼

end decoder;

architecture Behavioral of decoder is

begin

process(seg)

begin

    case seg is

      when"0000"=>q3<="0000001" ; --0

      when"0001"=>q3<="1001111" ; --1

when "0010" => q3<="0010010"; --2

when "0011" => q3<="0000110"; --3

when "0100" => q3<="1001100"  --4

when "0101" => q3<="0100100"; --5

when "0110" => q3<="0100000"; --6

when "0111" => q3<="0001111"; --7

when "1000" => q3<="0000000"; --8

when "1001" => q3<="0000100"; --9

       when others=>q3<="1111111";

    end case;

end process;

end Behavioral;

FPGA驅動LED動態顯示(4位)

--功能:動態掃描模塊,位選信號高電平有效。

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity dynamic is   --動態

    Port( clk; in std_logic;

            reset: in std_logic;

            din1 :in std_logic_vector(6 downto 0); --譯碼後的數據信號142進制數據

通過上例中的decoder模塊譯碼得到din1,din2,din3,din4

             din2 : in std_logic_vector(6 downto 0); --譯碼後的數據信號2

             din3 : in std_logic_vector(6 downto 0); --譯碼後的數據信號3

             din4 : in std_logic_vector(6 downto 0); --譯碼後的數據信號4

            shift: out std_logic_vector(3 downto 0); --位選信號

           bus4 : out std_logic_vector(6 downto 0)); --數據信號

end dynamic;

architecture Behavioral of dynamic is

  signal scan_clk:std_logic_vector(1 downto 0);

begin

process(clk,scan_clk,reset)   --分頻進程

variable scan:std_logic_vector(17 downto 0); --定義變量scan

begin

if reset='1' then

scan:="000000000000000000";

scan_clk<="00";

elsif clk'event and clk='1'then

scan:=scan+1;  --時鐘信號上升沿作用

end if;

scan_clk<=scan(17 downto 16); --取最高兩位賦值

end process;

process(scan_clk,din1,din2,din3,din4) --掃描進程

begin

case scan_clk is

when "00"=>

  bus4<=din1;    --導入數據信號

  shift<="0001";   --位選信號

when "01"=>

  bus4<=din2;

  shift<="0010";

when "10"=>

  bus4<=din3;

  shift<="0100";

when "11"=>

  bus4<=din4;

  shift<="1000";

when others=> bus4<="0000000";shift<="0000";

end case;

end process;  

 

end Behavioral;

4位數碼管以一定的頻率顯示數字,人眼即認爲常亮

NUM452

個人博客式公衆號

用心每一天

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章