第一范文网 - 专业文章范例文档资料分享平台

eda1

来源:用户分享 时间:2025/5/19 20:39:49 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

2.3.2 电子钟计数电路设计 1.电子钟计数结构分析 电子钟电路中小时用两个74160实现二十四进制计数器,计数器输出通过7448译码器驱动数码管实现从零到二十四的计数显示,而分和秒各采用了74160实现的两个六十进制的计数器来实现,电路结构框图如图2.35所示。 秒计数器 分计数器 时计数器 时钟脉冲 数码管显示 数码管显示 数码管显示 2.二十四进制计数器设计 (1)电路设计 本电路采用74l60实现,首先设计出一个一百进制的计数器,在24(00100100)处直接取出所有为1的端口,给所有为0的 端口加非门,然后经过与非门后输出给清零端,使用清零的方法完成二十四进制计数,计数范围为0~23。用图形编辑方法实现二十四进制计数器的设计,小时计数的二十四进制计数器电路图如图2.36所示。 图2.40 新的图新界面找打包文件

3. 六十进制计数器设计

六十进制计数器也采用74l60实现,首先设计出一个一百进制的计数器,在60(01100000)处直接取出所有为1的端口,给所有为0的端口加非门,然后经过与非门后给清零端,使用清零法完成六十进制计数器设计。分钟和秒计数的六十进制计数电路如图2.41所示。

图2.41 分钟和秒计数的六十进制电路

图2.36 二十四进制计数器电路 (2)电路仿真 二十四进制计数器电路仿真波形如图2.37所示,给clk一个时钟信号,开始计数,当b计数到9(译码输出是67)时a就加一位,直到a为2(译码输出是5B)b为4(译码输出是4F)时,又开始重新计数,因此电路与设计要求完全符合。 分钟和秒计数的六十进制计数电路波形仿真如图2.42所示,给clk一个时钟信号,开始计数,b由0 (3f)开始计数每到9(67)时,a加一位,当a到5(6d)时b到9(67)时全部清零重新计数,完成了0-60的计数。然后将元件打包,方法与二十四进制计数器的打包方式相同。 4. 顶层电路设计

有了时、分、秒各个计数模块,就可以设计顶层文件,将各个模块连起来组成一个完整的功能电路。最终的电子钟计数电路顶层电路图如图2.43所示,其仿真波形图如图2.44所示。

图2.37 二十四进制计数器仿真波形图 (3)元件打包 元件打包是将设计电路打包成为一个模块或元件,以便于设计顶层文件或其它电路时调用。点击project,然后点击set as top-level entity ,然后点击 file/create/update/create symbol files for current file 则可。如图2.38和图2.39所示。然后在新的图形文件中能找打包的文件,已经是一个元件,如图2.40所示。

图2.43 电子钟计数电路顶层电路图

- 9 -

图2.44 电子钟计数电路仿真波形

5.数码管显示电路

(1)数码管静态显示原理图

数码管的a、b、c、d、e、f、g分别接到时、分、秒计时器的输出端即可。

第3章 VHDL语言的基本结构

通过本章学习应掌握VHDL体系结构、库与程序包、实体部分结构、结构体部分结构; 3.1 VHDL体系结构

相对完整的VHDL设计由以下几个部分组成:

? (1)库、程序包; ? (2)实体; ? (3)结构体; ? (4)配置。

VHDL程序基本结构如图3.1所示,图中显示了其各自的作用。

图3.1 VHDL程序基本结构

从图3.1中可以看出VHDL程序结构由4个部分组成,这4个部分并不是每一个VHDL程序都必须具备的,其中只有实体和与之对应的结构体是必须的,其余两部分根据实际情况可选择。

例3.1:一个二输入比较器VHDL描述 a(4)b(4)eqcompequal a(4)?b(4) equal?1 a(4)?b(4) equal?0

1 -- eq2 is a two equality comparatot 2 library ieee;

3 use ieee.std_logic_1164.all;

4 entity eq2 is

5 port(a,b:in std_logic_vector(3 downto 0);

6 equal:out std_logic); 7 end eq2;

8 architecture rtl of eq2 is 9 begin

10 equal<=’1’ when (a=b) else ’0’; 11 end rtl;

构造体 实体说明

库声明:欲使用 该库中的内容

一个设计区别于其他设计的特征是设计实体(Design Entity)

- 10 -

entity eq is

“实体说明”:描述一port(a,b:in bit; 个设计的外部结构特 equal:out bit);

end eq; 征。

architecture rtl of eq is begin

“构造体”:描述实体

equal<=’1’ when (a=b)

的功能

else ’0’; End rtl;

3.2 实体说明

? 实体说明的格式

ENTITY 实体名 IS

[类属参数说明]; [端口说明];

END 实体名;

? 类属参数说明(GENERIC)

用来指定参数,实现不同层次之间的数据传递。

1、实体名

实体名是一个标识符,具体取名由设计者自定。由于实体名实际上表达的是该设计电路的器件名,所以最好根据相应电路的功能来确定,如4位二进制计数器的实体名可取为counter4b,8位二进制加法器的实体名可取为adder8b。

2、端口

实体说明中每一个I/O信号被称为端口,一个端口就是一个数据对象。

端口说明的格式如下:

PORT(端口名:模式 数据类型名; . . .

端口名:模式 数据类型名);

描述电路的端口及其端口信号必须用端口语句PORT( )引导,并在语句结尾处加分号“;”。

每一个端口必须具有名称、方向(模式)和数据类型

.端口名:用英文字母,或在英文字后加数字构成,端口信号名在实体中必须是唯一的,信号名应是合法的标识符。 .端口模式:说明信号传输通过该端口的方向 .数据类型:允许在该端口输入、输出信号的类型

(1)端口的模式的说明 输入(In):仅允许数据流进端口,端口的驱动源由外部向实体内进行。 输出(Out):仅允许数据从内部输出端口,端口驱动由内部向外进行。输入模式通常用于诸如终端计数输出、数据输出等。 双向(Inout):对于双向信号,端口定义是必须定义为双向模式。允许数据流进或流出端口,端口的驱动源在外部向实体内,也可以由实体内向外。如RAM的数据端口、单片机的I/O口。 缓冲(Buffer):这种模式用于内部反馈需求时(即需要使

?

?

用一个端口作为构造内部驱动)。与INOUT区别在于当需

要输入数据时,只允许内部回读输出的信号,即允许反馈。 如计数器设计,可将计数器输出的计数信号回读,以作下一计数值的初值。与INOUT模式相比,BUFFER回读的信号不是由外部输入的,而是由内部产生、向外输出的信号。

? 各种端口模式图

(2)端口的数据类型:即信号的形式。

? VHDL中传输或存储的数据的类型要做明确的界

定,因此,在VHDL设计中必须预先定义好要使用的数据类型, VHDL共定义了十种数据类型。相关的数据类型有INTEGER类型、BOOLEAN类型、STD_LOGIC、STD_LOGIC_VECTOR和BIT类型等。

? 在逻辑电路设计中,可用于端口的数据类只有四

种: BIT、BIT_VECTOR、STD_LOGIC、STD_LOGIC_VECTOR。

? BIT、BIT_VECTOR只有两种取值:‘0’或‘1’。

STD_LOGIC、STD_LOGIC_VECTOR 是IEEE预定义的数据类型,在IEEE库的程序包STD_LOGIC_1164中。更接近于硬件电路实际情况的数据类型。 标准逻辑位:STD_LOGIC

标准逻辑矢量STD_LOGIC_VECTOR

共有9中取值, 各值的含义是:?U?--未初始化,?X?--强未知的,?0?--强0,?1?--强1,?Z?--高阻态,?W? --弱未知的,用此?L?--弱0,?H?--弱1,以及?-?--忽略。包括?0?、?1?、?X?、?Z?等等。

在程序中数据类型前,需加入下面的语句: LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

例1: 用BIT和BIT_VECTOR定义端口 PORT(d1,d2:in bit; q:out bit;

bus:out bit_vector(7 downto 0));

例2:用STD_LOGIC和STD_LOGIC__VECTOR定义端口 PORT(d1,d2:in std_logic; q:out std_logic;

bus:out std_logic _vector(7 downto 0));

例:四选一电路实体说明

input1 input2 input3 input4

MUX

y

a b

ENTITY mux4 IS

PORT(input1,input2,input3,input4:IN STD_LOGIC;

a,b:IN STD_LOGIC;

- 11 -

y:OUT STD_LOGIC);

例:二输入与非门

END mux4;

a &

3.3 构造体

q

是设计的核心,附属于实体说明。

b

构造体用来描述实体的功能,是对实体内部的数学行为或

文件名:nand2

信号传输过程的详细描述。

library ieee;

一个实体说明可以有多个构造体。

use ieee.std_logic_1164.all;

entity eq is port(a,b:in bit; entity nand2 is equal:out bit); port (a,b:in std_logic; end eq; q:out std_logic); end nand2; architecture rtl of eq is begin architecture rtl of nand2 is equal<=?1? when (a=b) signal c:std_logic; else ?0?; begin end rtl; c<=a and b; q<=not c; 构造体的结构 end rtl; ARCHITECTURE 构造体名 OF 实体名 IS [定义语句]内部信号,常数,数据类型等; 3.4 库、包集合 BEGIN VHDL提供了一种基于库的设计机制 [并行处理语句]; 可以实现层次化的设计 . 包集合、库是独立进行编译的源设计单元 . library ieee; . use ieee.std_logic_1164.all; [并行处理语句]; END 构造体名; 3.4.1 库 库(library)是经过编译后的数据集合

? 构造体由ARCHITECTURE作为关键词,并对该库是存放预先做好的元件(设计实体)、函数、过程的最高

构造体命名。 层次 ? 描述的内容有BEGIN开始,到END结束。 类似DOS系统的目录

? 构造体内部的信号、常数等,在BEGING之前定库的好处在于,使设计者可以共享已经经过编译的设计结

义。 果

ENTITY AND2 IS 库的种类 PORT(a,b:IN BIT;

1、IEEE库:最常见的库,包含IEEE标准的程序包和其他

c:OUT BIT);

一些支持工业标准的程序包。 END AND2;

2、 STD库:VHDL标准库,为所有设计单元共享、默认ARCHITECTURE RTL1 OF AND2 IS

的库,只要在VHDL环境下,就可随时调用库中的内容 BEGIN

c<=a AND b; 3、WORK库:用户的VHDL设计的现行工作库,存放用END RTL1; 户定义和设计的设计单元和程序包。 4、 面向ASIC的库:提高门级时序仿真的精度 构造体描述中应注意的问题 5、自定义库:设计者自己所开发的设计单元的集合库 构造体名称:是对本构造体的命名,OF后面紧跟实体名, 表明该构造体对应那一个实体。 库的使用

定义语句:只能定义信号和常量,必须说明其形式、名称、1、说明库: 数据类型,并非是必须的。 LIBRARY 库名; 功能描述语句:结构体中必须给出相应的电路功能描述语2、说明要使用的库中的包集合: 句,可以是并行语句、顺序语句或它们的混合。 例:library ieee;

所有描述本构造体功能的语句必须出现在BEGIN和END use ieee.std_logic_1164.all; 之间。 3、使用STD库、WORK库不需声明 4、库说明的作用范围 ★文件取名和存盘 从一个实体说明开始,到它所属的构造体、配置结束为止。 一般地,文件名可以由设汁者任意给定,但文件后LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; 缀扩展名必须是“.vhd”,如 adder_f.vhd。

ENTITY AND2 IS

但考虑到某些EDA软件的限制和VHDL程序的特点,以及 PORT(a,b:IN STD_LOGIC; 调用的方便性,建议程序的文件名与该程序的实体名一致。 c:OUT STD_LOGIC);

END AND2;

ARCHITECTURE RTL1 OF AND2 IS

- 12 -

搜索更多关于: eda1 的文档
eda1.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c30rli57uuj10e609mkl5_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top