vhdl流水灯课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

院系:

姓名:

学号:

课程设计名称:

指导老师:

时间:

摘要

VHDL的特点

应用VHDL进行系统设计,有以下几方面的特点。

(一)功能强大

VHDL具有功能强大的语言结构。它可以用明确的代码描述复杂的控制逻辑设计。并且具有多层次的设计描述功能,支持设计库和可重复使用的元件生成。VHDL是一种设计、仿真和综合的标准硬件描述语言。

(二)可移植性

VHDL语言是一个标准语言,其设计描述可以为不同的EDA工具支持。它可以从一个仿真工具移植到另一个仿真工具,从一个综合工具移植到另一个综合工具,从一个工作平台移植到另一个工作平台。此外,通过更换库再重新综合很容易移植为ASIC设计。

(三)独立性

VHDL的硬件描述与具体的工艺技术和硬件结构无关。设计者可以不懂硬件的结构,也不必管最终设计实现的目标器件是什么,而进行独立的设计。程序设计的硬件目标器件有广阔的选择范围,可以是各系列的CPLD、FPGA及各种门阵列器件。

(四)可操作性

由于VHDL具有类属描述语句和子程序调用等功能,对于已完成的设计,在不改变源程序的条件下,只需改变端口类属参量或函数,就能轻易地改变设计的规模和结构。

(五)灵活性

VHDL最初是作为一种仿真标准格式出现的,有着丰富的仿真语句和库函数。使其在任何大系统的设计中,随时可对设计进行仿真模拟。所以,即使在远离门级的高层次(即使设计尚未完成时),设计者就能够对整个工程设计的结构和功能的可行性进行查验,并做出决策。VHDL的设计结构

VHDL描述数字电路系统设计的行为、功能、输入和输出。它在语法上与现代编程语言相似,但包含了许多与硬件有特殊关系的结构。

VHDL将一个设计称为一个实体Entity(元件、电路或者系统),并且将它分成外部的可见部分(实体名、连接)和内部的隐藏部分(实体算法、实现)。当定义了一个设计的实体之后,其他实体可以利用该实体,也可以开发一个实体库。所以,内部和外部的概念对系统设计的VHDL是十分重要的。

外部的实体名或连接由实体声明Entity来描述。而内部的实体算法或实现则由结构体Architecture来描述。结构体可以包含相连的多个进程process或者组建component等其他并行结构。需要说明的是,它们在硬件中都是并行运行的。

VHDL的设计步骤

采用VHDL的系统设计,一般有以下6个步骤。

1)要求的功能模块划分;

2)VHDL的设计描述(设计输入);

3)代码仿真模拟(前仿真);

4)计综合、优化和布局布线;

5)布局布线后的仿真模拟(后仿真);

6)设计的实现(下载到目标器件)。

[实验说明]

该流水灯除了输入有:时钟端、使能端和清零端,输出为8个led指示灯。清零端为低电平时回到最初始状态,输出为O1灯亮,为高电平时无作用;使能端低电平时流水灯停止,高电平时流水灯继续流动;时钟端为系统时钟输入,要求8个led指示灯每秒变化一次,向右流动,变化顺序依次为O1灯亮→O2灯亮→O3灯亮→ O4灯亮→ O5灯亮→ O6灯亮→ O7灯亮→返回O1。

电路逻辑功能实现后,可将该逻辑功能下载到CPLD中。注意选择:清零端选1脚,使能端选拨码开关,时钟端选83脚、输出线8根(接发光二极管指示灯);测试时根据输入信

[实验要求]

1用VHDL语言实现流水灯

2设计仿真文件,进行软件验证

3通过下载线下载到实验板上进行验证

4灯有两种模式每种模式有四种变化。

5第一种模式下灯的花色循环变化不能控制,第二种情况下花色可以控制并且变化间有声音。

流水灯设计

1、分频模块的VHDL设计:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity light is

PORT( CLK_IN: IN STD_LOGIC;--输入时钟信号

CLK_OUT: OUT STD_LOGIC;--分频后的输出时钟信号

);

end light;

architecture Behavioral of light is

signalcont: STD_logic_vector(1 downto 0);

begin

process(CLK_IN)

BEGIN

IF RISING_EDGE(CLK_IN) THEN

IF CONT="11" THEN

CONT<="00";

CLK_OUT<='1';

ELSE CONT<=CONT+'1';

CLK_OUT='0';

END IF;

END IF;

END PROCESS;

end Behavioral;

2、流水灯从左至右连续显示

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity light2 is

PORT(CLK :IN STD_LOGIC;--分频后的时钟信号

EN :IN STD_LOGIC;--使能控制信号

M :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--控制8个灯的输出信号 );

end light2;

architecture Behavioral of light2 is

SIGNAL SEL : STD_LOGIC_VECTOR(2 DOWNTO 0);

begin

PROCESS(EN,CLK,SEL)

BEGIN

IF RISING_EDGE(CLK) THEN

IF EN='1' THEN

相关文档
最新文档