(完整word版)流水灯实验报告

  • 格式:doc
  • 大小:537.00 KB
  • 文档页数:5

下载文档原格式

  / 5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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的变化,达到流水灯效果