Mojo Board FPGA EP.3 - Run LED On

เป็นตัวอย่างโปรแกรมสำหรับสั่งให้ไฟวิ่งบนบอร์ด MOJO ให้สร้าง VHDL ให้ใส่โค๊ดตามนี้

use IEEE.STD_LOGIC_1164.ALL;
entity moving_led_1 is
port (reset, clk: in std_logic;
yout : out std_logic_vector(7 downto 0));
end moving_led_1;
architecture beh of moving_led_1 is
signal q : std_logic_vector(7 downto 0);
signal sq : std_logic;
component DIVIDER is
port (CLK : in std_logic;
Q : out std_logic);
end component;
begin
PROCESS (clk,reset)
BEGIN
IF(reset = '0') THEN
q <= "00000001";
ELSE
IF(sq'EVENT and sq = '1') THEN
q(0) <= q(7);
q(7 downto 1)<=q(6 downto 0);
ELSE
q <= q;
END IF;
END IF;
END PROCESS;
yout <= q;
c1: DIVIDER port map(CLK, sq);
end beh;

ต่อมาก็เป็นการสร้าง โปรแกรม Divider โดยการสร้างหน้า VHDL ใหม่อีกหน้าและใส่โค๊ดนี้

library IEEE;
use IEEE.std_logic_1164.all;
entity DIVIDER is
generic (fin: integer := 50000000;
fout: integer := 4);
port (CLK: in std_logic;
Q : out std_logic );
end DIVIDER;
architecture RTL of DIVIDER is
signal COUNT : integer range 0 to (fin/(2*fout)) ;
signal qs : std_logic := '0';
begin
process (CLK)
begin
if CLK'event and CLK = '1' then
if (COUNT >= (fin/(2*fout)-1)) then
COUNT <= 0;
qs <= not(qs);
else
COUNT <= COUNT +1;
end if;
end if;
end process;
Q <= qs ;

end RTL;


สุดท้ายจะเป็นการสร้างไฟล์สำหรับกำหนดขาของบอร์ดให้กำหนดขาตามนี้

# “moving_led_1.ucf” File
NET "clk" TNM_NET = clk;
TIMESPEC TS_clk = PERIOD "clk" 50 MHz HIGH 50%;
NET "CLK" LOC = P56 | IOSTANDARD = LVTTL;
NET "yout<0>" LOC = P134 | IOSTANDARD = LVTTL;
NET "yout<1>" LOC = P133 | IOSTANDARD = LVTTL;
NET "yout<2>" LOC = P132 | IOSTANDARD = LVTTL;
NET "yout<3>" LOC = P131 | IOSTANDARD = LVTTL;
NET "yout<4>" LOC = P127 | IOSTANDARD = LVTTL;
NET "yout<5>" LOC = P126 | IOSTANDARD = LVTTL;
NET "yout<6>" LOC = P124 | IOSTANDARD = LVTTL;
NET "yout<7>" LOC = P123 | IOSTANDARD = LVTTL;
NET "reset" LOC = P38 | IOSTANDARD = LVTTL;
#PACE: Start of PACE Area Constraints
#PACE: Start of PACE Prohibit Constraints
#PACE: End of Constraints generated by PACE


จะได้ไฟ LED วิ่งบนบอร์ด MOJO อย่างสวยงาม

ความคิดเห็น

บทความที่ได้รับความนิยม