VHDL语言详解
- 格式:pdf
- 大小:1.19 MB
- 文档页数:131


蜂鸣器输出报警声实验
一.实验目的
学习交流蜂鸣器的发音原理。
二.实验内容
在SmartSOPC实验箱上的蜂鸣器输出报警笛声。
三.实验原理
SmartSOPC实验箱上有1个交流蜂鸣器BUZZER,通过跳线JP6的BEEP与芯片相连接。为了增强I/O口的驱动能力,在此采用了PNP型三极管,这样只要在BEEP上输入一定频率的脉冲蜂鸣器就会发出音乐。
四.实验程序
实验源程序如下:
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.std_logic_unsigned.all;
Entity aa is
Port( clk:in std_logic;
beep:out std_logic);
end aa;
Architecture m1 of aa is
signal beep_r:std_logic;
signal count:std_logic_vector(15 downto 0);
begin
beep<=beep_r;
process(clk)
begin
if clk'event and clk='1' then
count<=count+'1'; end if;
end process;
process(count(15))
begin
beep_r<=not beep_r ;
end process;
end m1;
五.实验步骤
(1)、在QuartusII中建立一个工程项目文件beep.qpf,并在该项目下新建VHDL源程序文件输入源程序代码并保存。
(2)、选择目标器件并对相应的引脚进行锁定,在这里在这里所选择的目标器件为Altera公司Cyclone系列的EP1C12Q240C8芯片,引脚锁定的方法如表6.1,将未使用的管脚设置为三态输入。
YIBIN UNIVERSITY
EDA技术及应用期末设计报告
题 目: PWM信号发生器的设计
专 业: 电子信息科学与技术
姓 名:
学 号:
2013 年 12月 20 日 摘要:
PWM,即脉冲宽度调制。脉冲宽度,即一个脉冲信号所占时间的长度。所以脉冲宽度的调制就是调制脉冲信号的时间长度。一个完整的脉冲信号是有高电平部分和低电平部分共两部分组成的。所以,脉冲宽度调制可以简单的理解为就是调制脉冲信号的高电平或者低电平时间的长度。而控制时间的长度,可以用计数器对时钟脉冲信号的计数来实现:通过计数器的数值设定以及对溢出信号的使用,就可以实现对脉冲信号中的高电平或者低电平的时间进行限定。
在本次设计中,一共有两个设计方案,分别用不同的器件进行设计,但其中最重要的,最关键的部分,都是有关计数器的设计,用信号赋值的方式决定输出的电平的高低,通过相关计数器的数值设定,调制脉冲输出的电平的时间长度。
关键词:
1) 脉冲宽度调制
2) 时钟信号
3) 计数器
4) D触发器
目录
摘要--------------------------------------------------------------------------------2
关键词-----------------------------------------------------------------------------2
引言--------------------------------------------------------------------------------4
设计概述--------------------------------------------------------------------------4
VHDL学习
(本学习以MAXPLUS10为工具软件)
第一章、 VHDL程序的组成
一个完整的VHDL程序是以下五部分组成的:
库(LIBRARY):储存预先已经写好的程序和数据的集合
程序包(PACKAGE):声明在设计中将用到的常数、数据类型、元件及子程序
实体(ENTITY):声明到其他实体或其他设计的接口,即定义本定义的输入输出端口
构造体(ARCHITECTUR):定义实体的实现,电路的具体描述
配置(CONFIGURATION):一个实体可以有多个构造体,可以通过配置来为实体选择其中一个构造体
1.1库
库用于存放预先编译好的程序包(PACKAGE)和数据集合体,可以用USE语句调用库中不同的程序包,以便不同的VHDL设计使用。
库调用的格式:
LIRARY 库名
USE 库名.所要调用的程序包名.ALL
可以这样理解,库在硬盘上的存在形式是一个文件夹,比如库IEEE,就是一个IEEE的文件夹,可以打开MAX PLUSR安装源文件夹,进入VHDL93的文件夹,就可以看到一个IEEE的文件夹,这就是IEEE库,而里面的文件就是一个个对程序包或是数据的描述文件,可以用文本打开来查看文件的内容。
例如在VHDL程序里面经常可以看到“USE IEEE.STD_LOGIC_1164”,可以这样解释这句话,本序里要用到IEEE文件夹下程序包STD_LOGIC_1164,而STD_LOGIC_1164是可以在IEEE文件夹的STD1164.vhd文件里面看到的,用文本打开STD1164.vhd,可以看到有一名为“IEEE.STD_LOGIC_1164”PAKAGE定义。
简单的来说,库相当于文件夹,而程序包和数据就相当于文件夹里面的文件的内容(注意:不是相当于文件,因为程序包和数据都是在文件里面定义的,而文件名是和实体名相同的,可以说实体相当于文件)。
到了这里就可以考虑一个问题,“在安装MAX PLUS时有多少个库已经存在的呢”,要得到这个问题的答案,可以打开安装目录下的“VHDL93”文件夹,就可以看到里面有五个文件夹,分别是ATERA、IEEE、LPM、STD、VITAL,也就是说你看到了五个库,分别是
.
. VHDL语言实例
例1:设计一七段显示译码器,用它来驱动七段发光管LED显示十六进制数字0到9和字母A到F。LED显示数码管为共阳极。
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY HEX2LED
IS
PORT(
HEX :IN std_logic_vector(3 DOWNTO
0);
LED : OUT std_logic_vector(6 TO
0)
);
END
HEX2LED; 图例1 七段显示译码器实体
ARCHITECTURE HEX2LED_arc OF HEX2LED IS
BEGIN
-- HEX-TO-SEVEN-SEGMENT DECODER
-- SEGMENT ENCODING
-- 0 .
. -- ----
-- 5 | |1
-- ---- <--6
-- 4 | |2