新闻  |   论坛  |   博客  |   在线研讨会
FPGA实验二 LED灯闪烁
0750long | 2010-02-04 21:14:51    阅读:5300   发布文章

FPGA实验二 LED灯闪烁

 

 

一 实验原理

对时钟进行分频,使占空比为50%,则只要使用一个计数器,在计数的前一半时间里,使输出电平为高电平,在计数的后一半时间里使输出的电平为低电平,这样分频出来的时钟信号即是占空比为50%的时钟信号。将分频后的时钟信号输出到接着LED灯的FPGA引脚上, LED灯就会闪烁起来。
二 实验内容
       设计程序,使LED灯按一定频率闪烁。
实验中的管脚分配如表2.2所示。
2.2     管脚分配
实验符号
对应标号
管脚
LEDn[7]
D37
PIN_75
LEDn[6]
D36
PIN_74
LEDn[5]
D35
PIN_73
LEDn[4]
D34
PIN_72
LEDn[3]
D33
PIN_71
LEDn[2]
D32
PIN_70
LEDn[1]
D31
PIN_69
LEDn[0]
D30
PIN_65
clk
CLKIN
PIN_17
三 实验电路
       LED灯电路原理图如图2.2所示。
四 实验步骤
完成LED灯闪烁的步骤如下:
1.步骤1~9参考实验2.1步骤的1~9。
2.编译通过后,选择File>New,在弹出的对话框中点击Other Files,选择Vector Waveform File,并点击OK,建立一个波形文件。如图2.2.1。

 

3.点击File>Save,在弹出的对话框中点击OK即可。如图2.2.2。

点击看大图

点击看大图

点击看大图

 

点击看大图


 

7.仿真无误后,根据表2.2-1的引脚对照表,对试验中用到的LED及时钟进行管脚绑定。选择Assignments>Assign Pins,会出现管脚分配对话框,如图2.2.5所示。

8.首先选择对应的引脚,然后在location中输入VHDL设计中对应的端口名称引脚号(参照表2.2-1),回车即可。如图2.2.6所示。

9.重复步骤8,对所有的端口进行分配。

10.编译无误后,用下载电缆通过JTAG接口将对应的LED_shining.sof文件下载到FPGA中。

11.下载结束后,观察实验结果是否与自己的仿真结果相吻合。

2.2-1引脚对照表

实验符号

对应标号

管脚

clk

CLKIN

PIN_17

LEDn

D30

PIN_65

LED_off[6]

D37

PIN_75

LED_off[5]

D36

PIN_74

LED_off[4]

D35

PIN_73

LED_off[3]

D34

PIN_72

LED_off[2]

D33

PIN_71

LED_off[1]

D32

PIN_70

LED_off[0]

D31

PIN_69


点击看大图
 

  参考程序

------------------------------库说明----------------------------------

library ieee;                                                      --IEEE标准库

use ieee.std_logic_1164.all;               --调用库中的程序包

use ieee.std_logic_unsigned.all;

use ieee.std_logic_arith.all;

-----------------------------实体说明---------------------------------

entity LED_shining is                          --LED_shining 是实体名

port(

clk : in std_logic;

LEDn : out std_logic;

LED_off : out std_logic_vector(6 downto 0)

);                                                             --定义输入输出端口

 

end LED_shining;

-----------------------------结构体说明-------------------------------

architecture shining of LED_shining is       --shining 是结构体名

signal clk_div : std_logic;                                  --分频后的时钟信号,

                                                                --周期为5000000/50000000=0.1s

begin

process(clk)

variable count : integer range 0 to 4999999;

begin

        if(clkevent and clk = 1) then

               if(count = 4999999) then

                      count := 0 ;

                      else count := count + 1 ;

                      if(count < 250000) then

                             clk_div <= 0 ;

                             else clk_div <= 1 ;

                      end if ;

               end if ;

        end if ;

end process ;

                            

LEDn <= clk_div ;                            --1LED灯闪烁,周期为分频后

LED_off <= "1111111" ;           --的时钟信号的周期,同时关闭其他7LED   

end shining;

4.在波形文件中点击鼠标右键,选择Insert Node or Bus,在弹出的对话框中点击Node Finder,在新弹出的对话框中的Filter中选择Pinsall,然后点击List,这样在Nodes Founder区域就会出现先前VHDL文件中定义的输入、输出端口,然后再点击>>,选择OK即可,然后在Insert Node or Bus对话框中也选择OK。如图2.2.3

5.对加入到波形文件中的输入端点,进行初始值设置(为了便于观察仿真结果,本实验在波形仿真时将VHDL程序中的时钟分频倍数改为了50,并取时钟信号的周期为1ns),然后点击Processing>Start Simulation,在弹出对话框中点击Yes,系统开始仿真。

6.仿真结束后,查看仿真结果是否符合实验要求。仿真结果如图2.2.4.

 

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客