EDA技术与实践 徐飞编著 第2章课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
USE IEEE.STD_LOGIC_1164.ALL; 放在VHDL程序的最前面,表示以后在实体或结构 体中要用到数据类型包中的数据类型。
二、VHDL基本结构
2、实体
设计实体
一个模块中仅有一个设 计实体。
描述设计模块的输入输出信号或引脚
VHDL实体描述方法: 实体名
ENTITY And2_gate IS PORT(a,b : 端口名 y : IN 数据类型
目标信号名<=表达式
3. 使用要点
(1)简单信号赋值语句可以在进程内使用,也可在进程外使用; (2) 表达式的数据类型必须与目标信号的数据类型一致; (3) ‚<=‛为赋值号,注意其与关系运算符‚=‛(等于号)及‚<=‛ (小于等于号)的区别。
五、小结
VHDL基本语法
实体 端口定义 端口方向 数据类型
d
e
一、选择器描述
2、4选1选择器的VHDL描述
模块符号
a b c d s1 s2 mux41 y
真值表
s1 0 0 1 1 s2 0 1 0 1 y a b c d
一、选择器描述
【例2-7】 4选1选择器的VHDL描述
LIRBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux_41 IS PORT ( s1, s2 : IN STD_LOGIC; a,b,c,d : IN STD_LOGIC; y : OUT STD_LOGIC ); END mux21a; ARCHITECTURE one OF mux21a IS SIGNAL s: STD_LOGIC_VECTOR(1 DOWNTO 0);
二、VHDL基本结构
3、结构体
描述实体内部逻辑功能和电路结构,建立设计实体 的输入输出关系。 例:与门结构体描述
结构体名 实体名
ARCHITECTURE one OF And2_gate IS BEGIN y <= a AND b;
END one;
结构体功能描述
二、VHDL基本结构
结构体表达格式 ARCHITECTURE 结构体名 OF 实体名 IS [说明语句]; BEGIN 功能描述语句; END [结构体名] ; 格式说明
(1)逻辑运算符
逻辑运算符 操作说明 AND 与 OR 或 NOT 非 NAND 与非 NOR 或非 XOR 异或 NXOR 同或
(2)关系运算符
关系运算符 操作说明 = 等于 /= 不等于 < 小于 > 大于 <= 小于等于 >= 大于等于
(3)算术运算符
算术运算符 操作说明 + 加 减 * 乘 / 除
逻辑表达式: y ab ab 真值表
a
0 0 1
b
0 1 0
y
0 1 1
1
1
0
内部结构图
二、VHDL基本结构
方法1:直接用‚异或‛运算符描述
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY led_a IS PORT (a,b: IN STD_LOGIC ; y:OUT STD_LOGIC); END led_a; ARCHITECTURE one OF led_a IS BEGIN y<=a XOR b; END ONE;
库与程序包 实体
结构体
二、VHDL基本结构
库与程序包—参数部分
VHDL 语言
实体—接口部分
结构体—描述部分
二、VHDL基本结构
1、库与程序包
IEEE标准的标准程序包
程序包
设计者自身设计的程序包 设计中的子程序和 公用数据类型的集 调用数据类型标准程序包的VHDL语言描述 合。 LIBRARY IEEE;
三、VHDL的语言要素
1.常用数据类型
BIT
BIT_VECTOR(表达式1 TO/DOWNTO 表达式2) STD_LOGIC STD_LOGIC_VECTOR (表达式1 TO/DOWNTO 表达式2) INTEGER BOOLEAN
三、VHDL的语言要素
2. 常用运算操作符
(4)并臵运算符‚&‛,用于逻辑量的位连接
三、VHDL的语言要素
3. 文字规则 (1)数字引用
引用1位逻辑量数据时,必须加单引号
如‘0’、‘1’、‘Z’ 、‘X’等。
引用多位的逻辑矢量型数据时,需加双引号 如二进制数: ‚0101‛、‚110000‛等。
16进制: x‚8F‛、x‚5A‛等。
以“ARCHITECTURE„ IS”开始,“END 结构体名” 结束
说明语句:SIGNAL,CONSTANT,COMPONENT
功能描述以“BEGIN”作为开始 功能描述语句:顺序语句、并行语句
二、VHDL基本结构
【例2-5】设计一个用两个开关控制一 个发光二极管亮灭的逻辑电路,要求 任一开关状态切换时,发光二极管亮 灭状态改变。
STD_LOGIC;
OUT STD_LOGIC); 端口方向
END And2_gate;
二、VHDL基本结构
实体表达格式
ENTITY 实体名 IS PORT ( 端口名1 :端口方向 数据类型; ... 端口名n :端口方向 数据类型); END [实体名];
格式说明
以“ENTITY 实体名 IS”开始,“END 实体名”结
一、门电路的描述
【例2-1】与门的VHDL描述
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY And2_gate IS PORT(a, b:IN STD_LOGIC; y :OUT STD_LOGIC); END And2_gate; ARCHITECTURE one OF And2_gate IS BEGIN y<= a AND b; End one;
END count4_a;
二、VHDL基本结构
ENTITY count4_b IS PORT( clk,rst: IN STD_LOGIC; d: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
); END count4_b;
结构体
信号说明
信号赋值符
逻辑操作符
VHDL电路设计
门电路的描述
门组合电路的描述
课堂练习
写出下图电路的VHDL程序。
2.2 选择器的描述
选择器描述 PROCESS语句 CASE语句
一、选择器描述
1、2选1选择器的VHDL描述 【例2-6】 2选1选择器的VHDL描述
2选1选择器实体
2选1选择器结构体
一、选择器描述
方法2:2选1选择器的VHDL描述
LIRBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux21b IS PORT ( a, b : IN STD_LOGIC; s : IN STD_LOGIC ; y : OUT STD_LOGIC); END mux21b; ARCHITECTURE two OF mux21b IS SIGNAL d,e : STD_LOGIC; BEGIN d <= a AND (NOT s) ; e <= b AND s ; y <= d OR e ; END two ;
引用整数数据时,直接用十进制数表示 如 25,200等
三、VHDL的语言要素
(2)标识符的要求
使用的字符由26个英文字母、数字0~9以及下划线组成
标识符必须以英文字母开始,不区分大小写 不能以下划线结尾,下划线不能连续 标识符中不能有空格 标识符不能与VHDL的关键字重名。
三、VHDL的语言要素
4.其它说明
VHDL语言对字母大小写不敏感; 实体名与保存文件名必须相同; VHDL语言由保留关键字组成; 每条VHDL语句由一个分号(;)结束; 自定义符号需符合VHDL对标识符的规定; VHDL语言对空格不敏感,增加可读性;
程序中所有标点符号均为半角形式,不能用全角
二、VHDL基本结构
方法2:用基本的‚与、来自百度文库、非‛逻辑运算描述
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;
ENTITY led_a IS PORT (a,b: IN STD_LOGIC ; y:OUT STD_LOGIC); END led_a;
ARCHITECTURE two OF led_a IS SIGNAL d,e: STD_LOGIC; BEGIN d<=(NOT a ) AND b; 信号定义说明语句: e <=a AND (NOT b ); SIGNAL 信号名:数据类型 y<=d OR e; END ONE;
二、VHDL基本结构
方法3:行为描述
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY led_a IS PORT (a,b: IN STD_LOGIC ; y:OUT STD_LOGIC); END led_a; ARCHITECTURE two OF mux21 IS BEGIN y<=‘0’ WHEN a=b ELSE ‘1’; END ONE;
束
端口声明关键词:PORT 端口方向:IN、OUT、INOUT、BUFFER
二、VHDL基本结构
端口方向
IN OUT INOUT BUFFER
BIT:’1’
‘0’
数据类型 Std_logic: '0', '1', 'Z', '-', 'X' ; BOOLEAN:TRUE,FALSE
INTEGER: 0,1,2,3….
二、VHDL基本结构
【例2-4】如图四位二进制加法计数器元件符号, 用VHDL描述其实体程序。
ENTITY count4_a IS
PORT(clk: IN STD_LOGIC ; rst: IN STD_LOGIC; d0,d1,d2,d3: IN STD_LOGIC; q0,q1,q2,q3: OUT STD_LOGIC);
END PROCESS;
END one ;
二、PROCESS语句
1、基本格式
[进程标号]:PROCESS(敏感信号量表) [进程说明语句]; BEGIN
二、VHDL基本结构
【例2-2】三输入门电路的实体描述。
ENTITY and3_gate IS
PORT(a,b,c:
y:
IN BIT;
OUT BIT);
END and3_gate;
二、VHDL基本结构
【例2-3】D触发器的实体描述。 ENTITY dff_a IS PORT(d: IN STD_LOGIC ; clk: IN STD_LOGIC; q,nq: OUT STD_LOGIC); END dff_a;
第2章 基本逻辑电路的VHDL描述
2.1 门电路的描述 2.2 选择器的描述
2.3 译码器的描述
2.4 编码器的描述
2.5 触发器的描述
2.6 计数器的描述 2.7 移位寄存器的描述 2.8 加法器的描述
2.1 门电路的描述
门电路描述
VHDL基本结构 VHDL的语言要素 信号赋值语句
逻辑表达式:y = as+bs
一、选择器描述
方法1:2选1选择器的VHDL描述
LIRBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux21a IS PORT ( a, b : IN STD_LOGIC;
s : IN STD_LOGIC; y : OUT STD_LOGIC ); END mux21a; ARCHITECTURE one OF mux21a IS BEGIN y <= (a AND (NOT s)) OR (b AND s) ; END one ;
BEGIN s<=s1&s2;
“&”并臵运算符用于位连接
一、选择器描述
PROCESS(s,a,b,c,d)
BEGIN
CASE s IS WHEN “00”=>y<=a; WHEN “01”=>y<=b; WHEN “10”=>y<=c; WHEN “11”=>y<=d; WHEN OTHERS=>y<=„X‟; END CASE;
在语句后的“--”之后的是VHDL的注释语句;
四、信号赋值语句
1、表达格式 2. 格式说明
(1) 目标信号名可以是端口名,也可以是中间信号量名。 (2) ‚<=‛为赋值号,表示将其右边表达式的值送给左边的信号量。 (3) 表达式可以是单个信号,也可以是一个运算表达式,但不能为关系运 算表达式。
二、VHDL基本结构
2、实体
设计实体
一个模块中仅有一个设 计实体。
描述设计模块的输入输出信号或引脚
VHDL实体描述方法: 实体名
ENTITY And2_gate IS PORT(a,b : 端口名 y : IN 数据类型
目标信号名<=表达式
3. 使用要点
(1)简单信号赋值语句可以在进程内使用,也可在进程外使用; (2) 表达式的数据类型必须与目标信号的数据类型一致; (3) ‚<=‛为赋值号,注意其与关系运算符‚=‛(等于号)及‚<=‛ (小于等于号)的区别。
五、小结
VHDL基本语法
实体 端口定义 端口方向 数据类型
d
e
一、选择器描述
2、4选1选择器的VHDL描述
模块符号
a b c d s1 s2 mux41 y
真值表
s1 0 0 1 1 s2 0 1 0 1 y a b c d
一、选择器描述
【例2-7】 4选1选择器的VHDL描述
LIRBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux_41 IS PORT ( s1, s2 : IN STD_LOGIC; a,b,c,d : IN STD_LOGIC; y : OUT STD_LOGIC ); END mux21a; ARCHITECTURE one OF mux21a IS SIGNAL s: STD_LOGIC_VECTOR(1 DOWNTO 0);
二、VHDL基本结构
3、结构体
描述实体内部逻辑功能和电路结构,建立设计实体 的输入输出关系。 例:与门结构体描述
结构体名 实体名
ARCHITECTURE one OF And2_gate IS BEGIN y <= a AND b;
END one;
结构体功能描述
二、VHDL基本结构
结构体表达格式 ARCHITECTURE 结构体名 OF 实体名 IS [说明语句]; BEGIN 功能描述语句; END [结构体名] ; 格式说明
(1)逻辑运算符
逻辑运算符 操作说明 AND 与 OR 或 NOT 非 NAND 与非 NOR 或非 XOR 异或 NXOR 同或
(2)关系运算符
关系运算符 操作说明 = 等于 /= 不等于 < 小于 > 大于 <= 小于等于 >= 大于等于
(3)算术运算符
算术运算符 操作说明 + 加 减 * 乘 / 除
逻辑表达式: y ab ab 真值表
a
0 0 1
b
0 1 0
y
0 1 1
1
1
0
内部结构图
二、VHDL基本结构
方法1:直接用‚异或‛运算符描述
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY led_a IS PORT (a,b: IN STD_LOGIC ; y:OUT STD_LOGIC); END led_a; ARCHITECTURE one OF led_a IS BEGIN y<=a XOR b; END ONE;
库与程序包 实体
结构体
二、VHDL基本结构
库与程序包—参数部分
VHDL 语言
实体—接口部分
结构体—描述部分
二、VHDL基本结构
1、库与程序包
IEEE标准的标准程序包
程序包
设计者自身设计的程序包 设计中的子程序和 公用数据类型的集 调用数据类型标准程序包的VHDL语言描述 合。 LIBRARY IEEE;
三、VHDL的语言要素
1.常用数据类型
BIT
BIT_VECTOR(表达式1 TO/DOWNTO 表达式2) STD_LOGIC STD_LOGIC_VECTOR (表达式1 TO/DOWNTO 表达式2) INTEGER BOOLEAN
三、VHDL的语言要素
2. 常用运算操作符
(4)并臵运算符‚&‛,用于逻辑量的位连接
三、VHDL的语言要素
3. 文字规则 (1)数字引用
引用1位逻辑量数据时,必须加单引号
如‘0’、‘1’、‘Z’ 、‘X’等。
引用多位的逻辑矢量型数据时,需加双引号 如二进制数: ‚0101‛、‚110000‛等。
16进制: x‚8F‛、x‚5A‛等。
以“ARCHITECTURE„ IS”开始,“END 结构体名” 结束
说明语句:SIGNAL,CONSTANT,COMPONENT
功能描述以“BEGIN”作为开始 功能描述语句:顺序语句、并行语句
二、VHDL基本结构
【例2-5】设计一个用两个开关控制一 个发光二极管亮灭的逻辑电路,要求 任一开关状态切换时,发光二极管亮 灭状态改变。
STD_LOGIC;
OUT STD_LOGIC); 端口方向
END And2_gate;
二、VHDL基本结构
实体表达格式
ENTITY 实体名 IS PORT ( 端口名1 :端口方向 数据类型; ... 端口名n :端口方向 数据类型); END [实体名];
格式说明
以“ENTITY 实体名 IS”开始,“END 实体名”结
一、门电路的描述
【例2-1】与门的VHDL描述
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY And2_gate IS PORT(a, b:IN STD_LOGIC; y :OUT STD_LOGIC); END And2_gate; ARCHITECTURE one OF And2_gate IS BEGIN y<= a AND b; End one;
END count4_a;
二、VHDL基本结构
ENTITY count4_b IS PORT( clk,rst: IN STD_LOGIC; d: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
); END count4_b;
结构体
信号说明
信号赋值符
逻辑操作符
VHDL电路设计
门电路的描述
门组合电路的描述
课堂练习
写出下图电路的VHDL程序。
2.2 选择器的描述
选择器描述 PROCESS语句 CASE语句
一、选择器描述
1、2选1选择器的VHDL描述 【例2-6】 2选1选择器的VHDL描述
2选1选择器实体
2选1选择器结构体
一、选择器描述
方法2:2选1选择器的VHDL描述
LIRBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux21b IS PORT ( a, b : IN STD_LOGIC; s : IN STD_LOGIC ; y : OUT STD_LOGIC); END mux21b; ARCHITECTURE two OF mux21b IS SIGNAL d,e : STD_LOGIC; BEGIN d <= a AND (NOT s) ; e <= b AND s ; y <= d OR e ; END two ;
引用整数数据时,直接用十进制数表示 如 25,200等
三、VHDL的语言要素
(2)标识符的要求
使用的字符由26个英文字母、数字0~9以及下划线组成
标识符必须以英文字母开始,不区分大小写 不能以下划线结尾,下划线不能连续 标识符中不能有空格 标识符不能与VHDL的关键字重名。
三、VHDL的语言要素
4.其它说明
VHDL语言对字母大小写不敏感; 实体名与保存文件名必须相同; VHDL语言由保留关键字组成; 每条VHDL语句由一个分号(;)结束; 自定义符号需符合VHDL对标识符的规定; VHDL语言对空格不敏感,增加可读性;
程序中所有标点符号均为半角形式,不能用全角
二、VHDL基本结构
方法2:用基本的‚与、来自百度文库、非‛逻辑运算描述
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;
ENTITY led_a IS PORT (a,b: IN STD_LOGIC ; y:OUT STD_LOGIC); END led_a;
ARCHITECTURE two OF led_a IS SIGNAL d,e: STD_LOGIC; BEGIN d<=(NOT a ) AND b; 信号定义说明语句: e <=a AND (NOT b ); SIGNAL 信号名:数据类型 y<=d OR e; END ONE;
二、VHDL基本结构
方法3:行为描述
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY led_a IS PORT (a,b: IN STD_LOGIC ; y:OUT STD_LOGIC); END led_a; ARCHITECTURE two OF mux21 IS BEGIN y<=‘0’ WHEN a=b ELSE ‘1’; END ONE;
束
端口声明关键词:PORT 端口方向:IN、OUT、INOUT、BUFFER
二、VHDL基本结构
端口方向
IN OUT INOUT BUFFER
BIT:’1’
‘0’
数据类型 Std_logic: '0', '1', 'Z', '-', 'X' ; BOOLEAN:TRUE,FALSE
INTEGER: 0,1,2,3….
二、VHDL基本结构
【例2-4】如图四位二进制加法计数器元件符号, 用VHDL描述其实体程序。
ENTITY count4_a IS
PORT(clk: IN STD_LOGIC ; rst: IN STD_LOGIC; d0,d1,d2,d3: IN STD_LOGIC; q0,q1,q2,q3: OUT STD_LOGIC);
END PROCESS;
END one ;
二、PROCESS语句
1、基本格式
[进程标号]:PROCESS(敏感信号量表) [进程说明语句]; BEGIN
二、VHDL基本结构
【例2-2】三输入门电路的实体描述。
ENTITY and3_gate IS
PORT(a,b,c:
y:
IN BIT;
OUT BIT);
END and3_gate;
二、VHDL基本结构
【例2-3】D触发器的实体描述。 ENTITY dff_a IS PORT(d: IN STD_LOGIC ; clk: IN STD_LOGIC; q,nq: OUT STD_LOGIC); END dff_a;
第2章 基本逻辑电路的VHDL描述
2.1 门电路的描述 2.2 选择器的描述
2.3 译码器的描述
2.4 编码器的描述
2.5 触发器的描述
2.6 计数器的描述 2.7 移位寄存器的描述 2.8 加法器的描述
2.1 门电路的描述
门电路描述
VHDL基本结构 VHDL的语言要素 信号赋值语句
逻辑表达式:y = as+bs
一、选择器描述
方法1:2选1选择器的VHDL描述
LIRBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux21a IS PORT ( a, b : IN STD_LOGIC;
s : IN STD_LOGIC; y : OUT STD_LOGIC ); END mux21a; ARCHITECTURE one OF mux21a IS BEGIN y <= (a AND (NOT s)) OR (b AND s) ; END one ;
BEGIN s<=s1&s2;
“&”并臵运算符用于位连接
一、选择器描述
PROCESS(s,a,b,c,d)
BEGIN
CASE s IS WHEN “00”=>y<=a; WHEN “01”=>y<=b; WHEN “10”=>y<=c; WHEN “11”=>y<=d; WHEN OTHERS=>y<=„X‟; END CASE;
在语句后的“--”之后的是VHDL的注释语句;
四、信号赋值语句
1、表达格式 2. 格式说明
(1) 目标信号名可以是端口名,也可以是中间信号量名。 (2) ‚<=‛为赋值号,表示将其右边表达式的值送给左边的信号量。 (3) 表达式可以是单个信号,也可以是一个运算表达式,但不能为关系运 算表达式。