(完整word版)流水灯实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FPGA流水灯实验报告
一、实验目的
熟练该软件的操作的同时,学会用VHDL语言来编程流水灯的制作
二、实验步骤
1、VHDL原程序:
library ieee;
use ieee.std_logic_1164.ALL;
use ieee.std_logic_arith.ALL;
use ieee.std_logic_unsigned.ALL;
entity lsd is
Port ( clk2,en2: in STD_LOGIC;
lsd_out : out STD_LOGIC_VECTOR(15 downto 0));
end lsd;
architecture liushuideng of lsd is
signal n:STD_LOGIC_VECTOR(3 downto 0);
signal m:std_logic_vector(1 downto 0);
signal k:std_logic;
begin
process(clk2,en2)
begin
if clk2'event and clk2='1'then if en2='1' then
if m="10" then
m<="01";
k<=not k;
else m<=m+"01";
end if;
end if;
end if;
end process;
process(k)
begin
if k'event and k='1' then
case n is
when "0000"=>
lsd_out<="0000000000000001"; when "0001"=>
lsd_out<="0000000000000010"; when "0010"=>
lsd_out<="0000000000000100"; when "0011"=>
lsd_out<="0000000000001000"; when "0100"=>
lsd_out<="0000000000010000"; when "0101"=>
lsd_out<="0000000000100000"; when "0110"=>
lsd_out<="0000000001000000"; when "0111"=>
lsd_out<="0000000010000000"; when "1000"=>
lsd_out<="0000000100000000"; when "1001"=>
lsd_out<="0000001000000000"; when "1010"=>
lsd_out<="0000010000000000"; when "1011"=>
lsd_out<="0000100000000000"; when "1100"=>
lsd_out<="0001000000000000"; when "1101"=>
lsd_out<="0010000000000000";
when "1110"=>
lsd_out<="0100000000000000";
when "1111"=>
lsd_out<="1000000000000000";
end case;
n<=n+"0001";
end if;
end process;
end liushuideng;
2、实验过程:
1)打开quartus软件,建立一个新工程,命名为liushuideng,在文件处新建一个VHDL File,编写程序。(如下图1)
2)编写好VHDL程序就进行编译,
编译成功后,新建一个波形文件,设置好初值。(如下图2)
图2
3)再打开仿真工具,设置仿真模式为Funnctional,执行仿真。(如下图3)
4)仿真结果。(如下图4)
总结: 由图显示,该结果就是十六位的流水灯,该流水灯就是以一个方向进行循环的,从一开始到十六,到了十六就有从一开始。通过n
的数值变化,进而控制lsd_out的变化,达到流水灯效果