[理学]EDA技术_项目3_数据选择器电路设计

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

0, 1, a 2, 3, f 4, 5, g 6, e 7, d 8, 9, others;
b
c
19
(2)常用程序包
• STANDARD程序包(在所有VHDL程 序的开头隐含,不需写出) • STD_LOGIC_1164程序包 • STD_LOGIC_UNSIGNED程序包 • STD_LOGIC_SIGNED程序包
等中作逻辑比较。
如,bit 值转化成boolean 值:
boolean_var := (bit_var = ‘1’);
34
2)位(bit) bit 表示一位的信号值。 放在单引号中,如 ‘0’ 或 ‘1’。 3)位矢量 (bit_vector) bit_vector 是用双引号括起来的一组位数据。 如: “001100” X“00B10B” 4)字符(character) 用单引号将字符括起来。 variable character_var : character; ... ... Character_var : = ‘A’;
子程序时,程序包体才是必须的。
程序包首可以独立定义和使用。如下:
17
package seven is subtype segments is bit_vector(0 to 6); type bcd is range 0 to 9; end seven; library work; use work.seven.all; entity decoder is port(input: in bcd; drive: out segments); end decoder; architecture art of decoder is begin
12
程序包说明的内容: 常量说明; VHDL数据类型说明; 元件说明; 子程序说明; 程序包的结构包括: 程序包说明(包首) 程序包主体(包体)
13
(1)程序包说明(包首)
语法:
package
程序包名
is
{ 包说明项 } end 程序包名;
包声明项可由以下语句组成: use 语句(用来包括其它程序包); 类型说明;子类型说明;常量说明; 信号说明;子程序说明;元件说明。
注:数据类型 time 用于仿真模块的设计。 综合器仅支持数据类型为整数的类属值。
28
(2)端口声明
端口声明:确定输入、输出端口的数目和类型。
Port ( 端口名称{,端口名称}:端口模式 … 端口名称{,端口名称}:端口模式 );
数据类型;
数据类型
其中,端口模式: in: 输入型,此端口为只读型。 out: 输出型,只能在实体内部对其赋值。 inout:输入输出型,既可读也可赋值。 buffer: 缓冲型,与 out 相似,但可读。
ENTITY <entity_name> IS Generic Declarations Port Declarations END <entity_name>; (1076-1987 version) END ENTITY <entity_name> ; ( 1076-1993 version)
25
14
例:程序包说明
15
(2)程序包包体
程序包的内容:子程序的实现算法。 包体语法: package body 程序包名 is
{ 包体说明项 } end 程序包名;
包体说明项可含: use 语句;子程序说明;子程序主体; 类型说明;子类型说明;常量说明。
16
程序包首与程序包体的关系:
程序包体并非必须,只有在程序包中要说明
20
(3)库的种类 VHDL库可分为 5种: 1)IEEE 库 定义了四个常用的程序包: • std_logic_1164
• std_logic_arith • std_logic_signed • std_logic_unsigned
21Leabharlann Type STD_LOGIC: 9 logic value system (‘U’, ‘X’, ‘0’, ‘1’, ‘Z’, ‘W’, ‘L’, ‘H’, ‘-’) • ‘W’, ‘L’, ‘H” weak values (Not supported by Synthesis) • ‘X’ - (not ‘x’)used for unknown • ‘Z’ - (not ‘z’) used for tri-state • ‘-’ Don’t Care
23
(4)库及程序包的使用
库及程序包的说明总是放在实体单元 前面,默认库及程序包可不作说明。用关 健字library说明要使用的库,用关健字 use 说明要使用的库中的程序包。 库及程序包的作用范围:仅限于所说 明的设计实体。 每一个设计实体都必须有自已完整的 库及程序包说明语句。
24
2、实体
实体: 定义系统的输入输出端口 语法:
(1)类属说明 类属说明:
确定实体或组件中定义的局部常数。模 块化设计时多用于不同层次模块之间信息的 传递。可从外部改变内部电路结构和规模。 类属说明必须放在端口说明之前。
Generic (
常数名称:类型 [:= 缺省值] {常数名称:类型 [:= 缺省值]} );
26
类属常用于定义: 实体端口的大小、 设计实体的物理特性、 总线宽度、 元件例化的数量等。 例: entity mck is generic(width: integer:=16); port(add_bus:out std_logic_vector (width-1 downto 0)); …
11
库的使用语法:
library 库名; 程序包的使用有两种常用格式: use 库名.程序包名.项目名; use 库名.程序包名.All; 例:
library ieee; use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.conv_integer;
27
例:2输入与门的实体描述 entity and2 is generic(risewidth: time:= 1 ns; fallwidth: time:= 1 ns); port(a1: in std_logic;
a0: in std_logic;
z0: out std_loigc);
end entity and2;
5
4选1数据选择器逻辑图
6
数据选择器的引脚功能图
二选一
a b s y
六选一的呢?
MUX21
四选一的呢?
7
VHDL相关语法
(1)VHDL程序的基本结构 (2)VHDL程序的库使用与实体部分描述 方法 (3)VHDL程序的结构体部分描述方法 (4)when_else并行语句与with_select 并行语句以及在数据选择器电路中的应 用
学习子领域2:数字电路的EDA设计
项目(学习情境)3
数据选择器电路设计
1
• 教学内容: 数 据 选 择 器 电 路 VHDL 程 序 设 计 (1)——库使用与实体描述部分。 • 目的: ⑴能正确分析任务要求,拟制数据选 择器电路的引脚功能图; ⑵能使用VHDL基本语句设计数据选择 器电路程序中的库使用与实体部分。
信号 s 的取值范围是0-15,可用4位二进制数表 示,因此 s 将被综合成由四条信号线构成的信号。
36
6)自然数(natural)和正整数(positive)
natural是integer的子类型,表示非负整数。
2
一、项目描述
项目工作要求:
请根据要求在EDA实验箱上设计四选 一数据选择器电路,要求: ⑴使用EDA实验箱上开关设置模块的K4、 K3、K2、K1开关作为四选一数据选择器 的4个输入,K8、K7开关作为四选一数 据选择器的两个选择控制端。实验箱上 输出指示模块中的OUT1红色LED(发光 二极管)作为四选一数据选择器的输出。 ⑵进行功能仿真。
18
with input select drive<=B“1111110” when B“0110000” when B“1101101” when B“1111001” when B“0110011” when B“1011011” when B“1011111” when B“1110000” when B“1111111” when B“1111011” when B“0000000” when end architecture art;
32
VHDL是一种强数据类型语言。 要求设计实体中的每一个常数、信号、变量、
函数以及设定的各种参量都必须具有确定的数据类
型,并且相同数据类型的量才能互相传递和作用。
33
又分为:
• 预定义数据类型、 • 用户自定义数据类型 (1)VHDL的预定义数据类型 1)布尔量(boolean) 布尔量具有两种状态:false 和 true 常用于逻辑函数,如相等(=)、比较(<)
35
5)整数(integer)
integer 表示所有正的和负的整数。硬件实现时, 利用32位的位矢量来表示。可实现的整数范围为:
-(231-1) to (231-1)
VHDL综合器要求对具体的整数作出范围限定, 否则无法综合成硬件电路。 如:signal s : integer range 0 to 15;
3
二、项目资讯
1、基于FPGA和EDA软件的数字电路设 计方法与工作流程。 2、数据选择器的工作原理。 3、使用VHDL设计数据选择器的方法。 4、VHDL相关语法知识。
4
数据选择器工作原理
数据选择器是从多路输入数据 中选择一路,送到数据总线上的电 路,它的作用类似于一个单刀多掷 开关,其示意图,如下图所示。
29
out 和 buffer 的区别:
inout 和 buffer 的区别:
30
• INOUT为输入输出双向端口,即从端口内部看,可 以对端口进行赋值,即输出数据。也可以从此端口 读入数据,即输入。 BUFFER为缓冲端口,功能与INOUT类似,区别在于 当需要读入数据时,只允许内部回读内部产生的输 出信号,即反馈。举个例子,设计一个计数器的时 候可以将输出的计数信号定义为BUFFER,这样回读 输出信号可以做下一计数值的初始值; • buffer顾名思义就是缓存,它是作为输出使用的, 因为在模块内,是不可以将输出赋值给其他信号的, 例如定义b: out std_logic;我们现在要将b赋值给 信号a,就会出错,但是如果b的类型为buffer就可 以执行操作;
31
(3)数据类型:
指端口上流动的数据的表达格式。为预先定 义好的数据类型。 常用的数据类型有:bit、bit_vector、integer、 std_logic、std_logic_vector 等。 例:
entity nand2 is entity m81 is port ( port( a,b:in bit; a:in bit_vector(7 downto 0); z: out bit sel:in bit_vector(2 downto 0); ) ; b:out bit); end entity nand2; end entity m81;
8
一、VHDL程序基本结构
基本结构包括:

库(Library)、程序包(Package) 实体(Entity) 结构体(Architecture)
配置(Configuration)
9
VHDL程序基本结构
库、程序包
实体(Entity)
结构体 (Architecture) 进程 或其它并行结构
配置(Configuration)
10
1、
程序包、库
程序包: 在 VHDL 中 , 程序包主要用来存放各个设计都能共 享的信号说明、常量定义、数据类型、子程序说明、 属性说明和元件说明等部分。如果需要使用程序包 中的某些说明和定义 , 设计人员只需要使用 USE 子句来进行一下说明就可以了。 目的:方便公共信息、资源的访问和共享。 库: 多个程序包构成库。
22
2)STD 库(默认库) 库中程序包为:standard, 定义最基本的数据类型: Bit,bit_vector ,Boolean, Integer,Real,and Time 注:Type Bit 2 logic value system (‘0’, ‘1’) 3)面向ASIC的库 4)WORK库(默认库) 5)用户定义库
相关文档
最新文档