概述
EDA
文章目录
- EDA
- EDA 技术概述
- 程序结构和数据对象
- 数据类型与顺序语句
- D 触发器
- 含异步复位和时钟使能 D 触发器
- 基本锁存器
- 含清零控制锁存器
- 4 位二进制加法计数器
- 计时器
- LOOP 循环语句
- 二选一多路选择器
- 并行语句
- 并行信号赋值语句
- VHDL 运算操作符
- 仿真延迟
EDA技术概述
- 现在电子设计技术的核心已日趋转向基于计算机的电子设计自动化系统,及 EDA 技术。EDA 技术就是依赖功能强大的计算机,在 EDA 工具软件上,对以硬件描述语言 (HDL) 为系统逻辑描述手段完成的设计文件。
- EDA 技术的发展分为 3 个阶段:20 世纪 70 年代,在集成电路制作方面,MOS 工艺已得到广泛的应用;20 世纪 80 年代,集成电路进入了 CMOS (互补场效应管) 时代;20 世纪 90 年代,计算机辅助工程、辅助分析和辅助设计在电子技术领域获得更加广泛的应用。
- 利用 EDA 技术进行电子系统设计的最后目标,是完成专用集成电路 (ASIC) 或印制电路板 (PCB) 的设计和实现。
- 专用集成电路就是具有专门用途和特定功能的独立集成电路器件,作为 EDA 技术最终实现目标的 ASIC,可以通过 3 中途径完成:可编程逻辑器件、半定制或全定制 ASIC、混合 ASIC。
- 硬件描述语言 (HDL) 是 EDA 技术的重要组成部分,常用的 HDL 语言主要有 VHDL、Verilog HDL、System Verilog、和 System C。
- 在传统的数字电子系统或 IC 设计中,手工设计占了很大的比例。EDA 有很大不同。
- 一个完整的、典型的 EDA 设计流程是自顶向下设计方法的具体实施途径,也是 EDA 工具软件本身的组成结构。
- 综合:把抽象的实体结合成单个或统一的实体。自上而下的设计过程中每一步都可成为一个综合环节。
- 自然语言综合、行为综合、逻辑综合、版图综合或结构综合。
- Quartus II。
- IP 就是知识产权核或知识产权模块的意思。IP 分软 IP、固 IP 和硬 IP。软 IP 是用 HDL 等硬件描述语言描述的功能块,但并不涉及用什么具体电路元件实现这些功能;固 IP 是完成了综合的功能块;硬 IP 提供设计的最终阶段产品 —— 掩模。
程序结构和数据对象
-
实体功能是对这个设计实体与外部电路进行接口描述。
ENTITY 实体名 IS
[GENERIC (参数名;参数类型);]
[PORT (端口表:数据类型);]
END ENTITY;
IN:输入端口;OUT:输出端口;INOUT:双向端口;BUFFER:缓冲端口 (BUFFER 回读的信号不是由外部输入的,二十由内部产生、向外输出的信号)。
-
结构体描述设计实体的内部结构和外部端口间的逻辑关系。
ARCHITECTURE 结构体名 OF 实体名 IS
[说明语句]
BEGIN
[功能描述语句]
END ARCHITECTURE
-
VHDL 语言的库分为两类:设计库 (WORK 库)、资源库 (IEEE 库、STD 库、WORK 库、VITAL 库)。
-
IEEE 库中的标准程序包主要包括 STD LOGIC 1164、HUMERIC BIT 和 HUMERIC_STD 等程序包。STD LOGIC 1164 是最重要和最常用的程序包,大部分基于数字系统设计的程序包都是以此程序包中设定的标准为基础的。
-
VHDL 定义了两个标准程序包,即 STANDARD 和 IEXTIO 程序包,他们都被收入在 STD 库中。
-
WORK 库使用户的 VHDL 设计的现行工作库,用于存放用户设计和定义的一些设计单元和程序包,因而是用户自己的仓库,用户设计项目的成品、半成品模块,以及前期已设计好的元件都放在其中。
-
VITAL 库可以提高 VHDL 门级时序模拟的精度,因而旨在 VHDL 仿真器中使用。
-
VHDL 语言中,库的使用语句总是放在实体单元前面。
LIBRARY 库名;
USE 库名。程序包名.ALL;
-
数字:整数、实数 (必须带有小数点,e.g. 44.99E-2 (=0.4499))、以数制基数表示 (e.g. d1<=16#A#E3 (十六进制,等于 16#A000#))。
-
字符,单引号。字符串,双引号。
-
关键字,VHDL 中预定义的有特殊含义的英文词语。
-
标识符,26 个英文大小写、数字、下划线组成;英文字母为开头;单一下划线_前后必须有英文字母或数字;英文字母不区分大小写,允许包含图形符号和空格。
-
—— 为注释。
-
VHDL 中没数据对象有三类,变量 (VARIABLE 变量名:数据类型 := 初始值;),常量 (CONSTANT 常数名:数据类型 := 表达式;) 和信号 (SIGNAL 信号名:数据类型 := 初始值)。
数据类型与顺序语句
-
VHDL 数据类型:
BIT 和 BIT_VECTOR、STD_LOGIC 和 STD_LOGIC_VECTOR、INTEGER (整型)、BOOLEAN (布尔)、SIGNED 和 UNSIGNED、实数、字符、字符串。
-
数据类型转换函数。
-
SIGNED 在进程最后才对信号赋值,有延迟。
-
CASE 语句,描述多路选择逻辑功能。
CASE sel IS
WHEN 4 TO 7|2 => Z1 <=‘011’ -- 当 sel 为 2、4、5、6 或 7 时,Z1 赋值为’011’。
-
PROCESS
[进程标号:] PROCESS [(敏感信号参数表)] [IS]
[进程说明部分]
BEGIN
顺序描述语言
END PROCESS [进程标号];
-
&
“VH”&“DL” “VHDL”
-
IF
IF 条件句 Then
顺序语句
ELSIF 条件句 Then
顺序语句
…
ELSE
顺序语句
END IF
D触发器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTTY DFF1 IS
PORT (CLK,D : IN STD_LOGIC; --CLK,D 为输入。
Q : OUT STD_LOGIC); – Q 为输出。
END;
ARCHITECTURE bhv OF DFF1 IS
SIGNAL Q1 : STD:LOGIC;
BEGIN
PROCESS (CLK,Q1) BEGIN
IF CLK’EVENT AND CLK = ‘1’ -- 检测上升沿,边沿敏感表述。CLK’EVENT–发生跳变
THEN Q1 <= D;
END IF;
END PROCESS;
Q <= Q1;
END bhv;
含异步复位和时钟使能D触发器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTTY DFF2 IS
PORT (CLK,D,RST,EN : IN STD_LOGIC; --CLK,D,RST,EN 为输入。
Q : OUT STD_LOGIC); – Q 为输出。
END;
ARCHITECTURE bhv OF DFF2 IS
SIGNAL Q1 : STD:LOGIC;
BEGIN
PROCESS (CLK,Q1,RST,EN) BEGIN
IF RST=‘1’
THEN Q1<=‘0’;
ELSIF CLK’EVENT AND CLK = ‘1’
THEN IF EN=‘1’
THEN Q1<=D;
END IF;
END IF;
END PROCESS;
Q <= Q1;
END bhv;
基本锁存器
> LIBRARY IEEE;
>
> USE IEEE.STD_LOGIC_1164.ALL;
>
> ENTITY LTCH2 IS
>
> PORT(CLK,D : IN STD_LOGIC;
>
> Q: OUT STD_LOGIC);
>
> END;
>
> ARCHITECTURE bhv OF LTCH2 IS
>
> BEGIN
>
> PROCESS (CLK,D) BEGIN
>
> IF CLK='1'
>
> THEN Q <= D;
>
> END IF;
>
> END PROCESS;
>
> END bhv;
含清零控制锁存器
> LIBRARY IEEE;
>
> USE IEEE.STD_LOGIC_1164.ALL;
>
> ENTITY LTCH3 IS
>
> PORT(CLK,D,RST : IN STD_LOGIC;
>
> Q : OUT STD_LOGIC);
>
> END;
>
> ARCHITECTURE bhv OF LTCH3 IS
>
> BEGIN
>
> PROCESS (CLK,D,RST) BEGIN
>
> IF RST='1'
>
> THEN Q<='0';
>
> ELSIF CLK='1'
>
> THEN Q <= D;
>
> END IF;
>
> END PROCESS;
>
> END bhv;
4位二进制加法计数器
> ENTITY CNT4 IS
>
> PORT (CLK : IN BIT;
>
> Q : BUFFER INTEGER RANGE 15 DOWNTO 0);
>
> END;
>
> ARCHITECTURE bhv OF CNT4 IS
>
> BEGIN
>
> PROCESS (CLK) BEGIN
>
> IF CLK'EVENT AND CLK = '1'
>
> THEN Q<Q+1;
>
> END IF;
>
> END PROCESS;
>
> END bhv;
计时器
> LIBRARY IEEE;
>
> USE IEEE.STD_LOGIC_1164.ALL;
>
> USE IEEE.STD_LOGIC_UNSIGNED,ALL;
>
> ENTITY CNT4 IS
>
> PORT (CLK : IN STD_LOGIC;
>
> Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
>
> END;
>
> ARCHITECTURE bhv OF CNT4 IS
>
> SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);
>
> BEHIN
>
> PROCESS (CLK) BEGIN
>
> IF CLK'EVENT AND CLK = '1'
>
> THEN Q1 <= Q1+1;
>
> END IF;
>
> END PROCESS;
>
> Q <= Q1;
>
> END bhv;
LOOP循环语句
> [LOOP标号:] LOOP
>
> 循环语句
>
> END LOOP [LOOP标号];
> [LOOP标号:] FOR 循环变量 IN 循环次数范围 LOOP
>
> 循环语句
>
> END LOOP [LOOP标号];
-
NEXT 语句
-
EXIT 语句
-
WAIT 语句
二选一多路选择器
>ENTITY mux21a IS
>
> PORT(A,B,S : IN BIT;
>
> y : OUT BIT);
>
>END ENTITY mux21a;
>
>ARCHITECTURE bhv OF mux21a IS
>
> BEGIN
>
> PROCESS(a,b,s)
>
> BEGIN
>
> IF (S='1')
>
> THEN Y<=a;
>
> ELSE y<=b;
>
> END IF;
>
> END PROCESS;
>
>END ARCHITECTURE bhv;
并行语句
- 并行语句间再执行顺序的地位上是平等的,执行顺序与书写顺序无关。
并行信号赋值语句
-
简单信号赋值语句
赋值目标 <= 表达式
-
条件信号赋值语句
辅助目标 <= 表达式 WHEN 赋值条件 ELSE
表达式 WHEN 赋值条件 ELSE
…
表达式;
-
选择信号幅值语句
WITH 选择表达式 SELECT
赋值目标信号 <= 表达式 WHEN 选择值
表达式 WHEN 选择值
…
表达式 WHEN 选择值;
VHDL 运算操作符
类型 | 操作符 | 功能 | 操作数数据类型 |
---|---|---|---|
算术操作符 | + | 加 | 整数 |
- | 减 | 整数 | |
& | 并置 | 一维数组 | |
* | 乘 | 整数和实数 (包括浮点数) | |
/ | 除 | 整数和实数 (包括浮点数) | |
MOD | 取模 | 整数 | |
REM | 取余 | 整数 | |
SLL | 逻辑左移 | BIT 或布尔型一维数组 | |
SRL | 逻辑右移 | BIT 或布尔型一维数组 | |
SLA | 算术左移 | BIT 或布尔型一维数组 | |
SRA | 算术右移 | BIT 或布尔型一维数组 | |
ROL | 逻辑循环左移 | BIT 或布尔型一维数组 | |
ROR | 逻辑循环右移 | BIT 或布尔型一维数组 | |
** | 乘方 | 整数 | |
ABS | 取绝对值 | 整数 | |
关系操作符 | = | 等于 | 任何数据类型 |
/= | 不等于 | 任何数据类型 | |
< | 小于 | 枚举与整数类型,及对应的一维数组 | |
> | 大于 | 枚举与整数类型,及对应的一维数组 | |
<= | 小于等于 | 枚举与整数类型,及对应的一维数组 | |
>= | 大于等于 | 枚举与整数类型,及对应的一维数组 | |
逻辑操作符 | AND | 与 | BIT,BOOLEAN,STD_LOGIC |
OR | 或 | BIT,BOOLEAN,STD_LOGIC | |
NAND | 与非 | BIT,BOOLEAN,STD_LOGIC | |
NOR | 或非 | BIT,BOOLEAN,STD_LOGIC | |
XOR | 异或 | BIT,BOOLEAN,STD_LOGIC | |
XNOR | 异或非 | BIT,BOOLEAN,STD_LOGIC | |
NOT | 非 | BIT,BOOLEAN,STD_LOGIC | |
符号操作符 | + | 正 | 整数 |
- | 负 | 整数 |
仿真延迟
VHDL 有两类延时模型能用于行为仿真建模,即固定延时和传输延时。
最后
以上就是温柔航空为你收集整理的EDAEDA的全部内容,希望文章能够帮你解决EDAEDA所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复