EDA技术的基础知识

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

进程的内部 立即赋值
2. VHDL的数据类型
(1) 标准数据类型(编程者可直接使用)
预定义类型在VHDL标准程序包 STANDARD中定义,在应用中自动包含进 VHDL的源文件,不需要USE语句显示调用。 数据类型如下:
1)整数(INTEGER) 在VHDL语言中,整数的表示范围为- 2147483647~2147483647,即从-(231-1)到 (231-1)。
The Architecture describes the box
1.实体(Entity)
? 描述此设计功能输入输出端口(Port) ? 在层次化设计时,Port为模块之间的接口 ? 在芯片级,则代表具体芯片的管脚
Entity eqcomp4 is port(a, b: in std_logic_vector(3 downto 0);
else equal <=‘0';
高层次的功能描述, 不必考虑在电路中 到底是怎样实现的。
end if;
end process comp;
end behavioral ;
数据流描述 描述输入信号经过怎样的变换得到输出信号
Architecture dataflow1 of eqcomp4 is begin
语句格式:
CONFIGURATION 配置名 OF 实体名 IS
FOR 被选结构体名 END FOR ; END 配置名;
Package
ENTITY 描述電路的I/O介面
描述電路的特性和運作
ARCHITECTURE
不同的描述風格
Structural
Data Flow
Behavioral
二、VHDL的数据对象和数据类型
1.VHDL的数据对象
类似于一种容器,接受不同数据 类型的赋值
----常数 信号 变量
数据对象—常数(Constant)
? 固定值,不能在程序中被改变
? 增强程序的可读性,便于修改程序
? 在综合后,连接到电源和地
? 可在Library、Entity、Architecture、 Process中进行定义,其有效范围也相应 限定
在系统仿真时,时间数据特别有用,用它可以表示信号延时, 从而使模型系统能更逼近实际系统的运行环境。
9)错误等级(SEVERITY LEVEL)
用来表征系统的状态,共有 4种: note (注意), warning (警告), error(出错), failure(失败)。在系统仿真过 程中可以用这4种状态来提示系统当前的工作情况,从而使设 计人员随时了解当前系统工作的情况,并根据系统的不同状 态采取相应的对策。
label1: PROCESS1 {VARIABLE 描述}
在进程的外面声明 作用范围为全局
在进程内部说明 作用范围为进程内
label2: PROCESS2 {VARIABLE 描述}
信号和变量的区别
信号
变量
赋值符号
<=
:=
功能 电路的内部连接 内部数据交换
作用范围 全局,进程和进程 之间的通信
行为 延迟一定时间后才 赋值
2)实数(REAL)
实数的定义值范围为-1.0E+38~1.0E+38。 实数有正负数,书写时一定要有小数点。例 如:-1.0,+2.5,-1.0E+38
3)位(BIT)
用来表示数字系统中的信号值。位值用字符‘ 0' 或者‘ 1' (将值放在引号中)表示。与整数中的 1和0不同,‘ 1' 和 ‘0'仅仅表示一个位的两种取值。
? 结构体有三种描述方式
? 行为描述(behavioral) ? 数据流描述(dataflow) ? 结构化描述(structural)
行为描述
Architecture behavioral of eqcomp4 is
begin
comp: process (a,b)
begin
if a=b then equal <= ‘1';
? 常数说明:Constant 常数名: 数据类 型:=表达式
例:Constant data_bus_width: integer := 8;
Constant ROM_Size: Integer := 16#FFFF#;
数据对象—变量(Variable)
? 临时数据,没有物理意义
? 只能在Process和Function中定义,必须在 进程和子程序的说明性区域说明,并只在其 内部有效
一般用于大规模电路的层次化设 计时。
三种描述方式的比较
描述方式
优点
缺点
适用场合
结构化描 述
数据流描 述
行为描述
连接关系清 电路不易理解、 电路层次化设 晰,电路模 繁琐、复杂 计 块化清晰
布尔函数定 不易描述复杂 小门数设计
义明白
电路,修改不

电路特性清 进行综合效率 大型复杂的电
楚明了
相对较低
路模块设计
? 逐位赋值赋:值标志多位赋值
temp(7) := ‘1'; 用双引号 ? 多位赋值
temp (7 downto逐4位) :=赋“值1010”; 用单引号
数据对象—信号(Signals)
? 代表连线,Port也是一种信号 ? 在Entity中和Architecture中定义 ? 用 <= 进行赋值 ? 保留字—— SIGNAL ? 信号说明: signal 信号名: 数据类型; 例:signal count:bit_vector(3 downto 0):=“0011”; ?signal Enable: Bit; ?signal CLK, CLEAR: Bit:='1';
? SIGNAL e,f : Std_Logic;
? BEGIN
? ?
e <= a or f<=not(c
b; or
d)在; 构造体内声明
? g <=e and f; 的内部连接信号
? END logic;
e
g f
信号赋值
? SIGNAL temp : Std_Logic_Vector (7
downto 0);
信号举例
? LIBRARY ieee;
? USE ieee.std_logic_1164.all;
a
? ENTITY simp IS
b
? PORT (a, b, c, d : IN Std_Logic;
?
Std_Logic);
g : OUT
c
? END simp;
d
? ARCHITE端CT口UR信E号logic OF simp IS
MATH_COMPLEX
其它库 VITAL_TIMING
VITAL_PRIMITIVE
程序包放在库中,使用时用USE语句说明 库、程序包说明语句:
Library 库名; use 库名.程序包名.项目名;
(2)配置
一个实体可以有多个结构体描述,但是在进 行仿真和综合时,只能一个实体对应一个确定的 结构体。配置语句用来确定结构体。
? 整体赋值: temp <= “10101010”; temp <= x“ AA” ;
? 逐位赋值:赋值标志 多位赋值
temp(7) <= ‘1';
用双引号
? 多位赋值:
? temp (7 do逐w位nto赋4值) <= “1010;”
用单引号
信号和变量的作用范围
ARCHITECTURE {SIGNAL 描述}
7)字符串(STRING)
由双引号括起来的一个字符序列,也称字符矢量或字符串组。 字符串常用于程序的提示和说明。字符串举例如下:
VATIABLE string_1 : STRING (0TO 3); ┇ string_1:= “ab c d”;
8)时间(TIME)
是一个物理量数据。包含整数和单位两部分,而且整数和单位 之间至少应留一个空格的位置。例如 55 sec,2 min等。在包集 合STANDARD中给出了时间的预定义,其单位为 fs,ps,ns, μs,ms,sec,min和hr。例如:20 μs,100 ns,3 sec。
EDA技术的基础知识
VHDL语言基础
一、VHDL的主要构件 参数部分——程序包
VHDL 语言
接口部分—设计实体
描述部分—结构体
Example
Library Package
VHDL 大小写不敏感
Library IEEE; use IEEE.std_logic_1164.all;
a b
AND_2
Y
entity and_2 is
4)位矢量(BIT_VECTOR)
位矢量是用双引号括起来的一组数据。例如:“ 001100”, X“00bb”。在这里位矢量前面的 X表示是十六进制 。使用位 矢量时必须注明位宽,即数组中元素个数和排列,例如:
SIGNAL s1:BIT_VECTOR(15 DOWNTO 0);
5)布尔量(BOOLEAN)
equal <= ‘1'when a=b else ‘0'; end dataflow1;
Architecture begin
dataflow2
of
eqcomp4
is
当a和b的宽度发生
equal <= not(a(0) xor b(0))
变化时,需要修改
and not(a(1) xor b(1)) and not(a(2) xor b(2))
? 要使其全局有效,先转换为Signal。
? 用 := 进行赋值
? 变量说明: variable 变量名: 数据类型
? 例:variable In_fetch: Boolean ;
?
variable result : std_logic := ‘0';
变量赋值
? 整体赋值: temp := “10101010”; temp := x “ AA” ;
entity name
port (a, b: in std_logic;
The Entity describes

Y : out std_logic); the inputs and outputs
end and_2;
architecture dataflow of and_2 is begin
Y<=a and b; end dataflow;
equal:out std_logic ); end eqcomp4;
A[3..0]
B[3..0]
equal
端口的模式
? 输入(Input) ? 输出(Output) ? 双向(Inout):可代替所有其他模式,
但降低了程序的可读性,一般用于与 CPU的数据总线接口 ? 缓冲(Buffer):与Output类似,但允 许该管脚名作为一些逻辑的输入信号, 可以返回到实体内部。
3. 库、程序包和配置 (1)库、程序包
?
预定义库
STD库
STANDARD(隐含说明) TEXTIO(用USE说明)
(隐含打开) WORK


?计 ? 库 资源库
IEEE库
(用LIBRARY)
STD_LOGIC_1164 STD_LOGIC_ARITH STD_LOGIC_UNSIGNED NUMERIC_STD NUMERIC_BIT MATH_REAL
设计,当宽度过大 时,设计非常繁琐
and not(a(3) xor b(3));
end dataflow2;
结构描述
architecture struct of eqcomp4 is begin
U0:xnor2 port map(a(0),b(0),x(0)); U1:xnor2 port map(a(1),b(1),x(1)); U2:xnor2 port map(a(2),b(2),x(2)); U3:xnor2 port map(a(3),b(3),x(3)); U4:and4 port 类似ma于p电(x(路0)的,x(网1),络x(表2),,x(3将),各equ个al器); e件nd通s过tru语ct;言的形式进行连接,与 电路有一一对应的关系。
端口说明
PORT ( 端口名{,端口名} : 方向 数据类型; : :
端口名{,端口名} : 方向 数据类型 );
端口方向
IN
OUT

INOUT

BUFFER
LINKAGE
2.结构体(Architecture)
? 描述实体硬件的互连关系、数据的传输 和变换以及动态行为。
? 语法结构:
ARCHITECTURE 结构体名 OF 实体名 IS [结构体说明语句] BEGIN [功能描述语句] END 结构体名
一个布尔量具有两种状态,“真”或者“假”。没有数值的含 义,也不能进行算术运算。它能进行关系运算。例如,它可以 在if语句中被测试,测试结果产生一个布尔量TRUE或者 FALSE。
6)字符(CHARACTER)
用单引号括起来,如‘a'。区分大小写。字符包括从a到z中的 任一个字母,从0到9中的任一个数以及空格或者特殊字符,如 $,@,%等等。包集合standard中给出了预定义的128个 ASCⅡ码字符。
相关文档
最新文档