第10章 VHDL基本语句
8.VHDL基本语句和函数

4)
格式
IF
条件1 THEN 条件1 顺序语句1 顺序语句1; 条件2 ELSIF 条件2 THEN 顺序语句2 顺序语句2; …… 条件n ELSIF 条件n THEN 顺序语句n; 顺序语句n; ELSE 顺序语句n+1; 顺序语句n+1; IF; END IF;
注意
这类语句可以实现不同类型电路的描述。 这类语句可以实现不同类型电路的描述。 其任一分支顺序语句的执行条件是以上各分支 条件相与, 条件相与,即语句中顺序语句的执行条件具有 向上相与的功能。 向上相与的功能。
注意ቤተ መጻሕፍቲ ባይዱ
•条件句中的选择值必须在表达式的取值范围内; 条件句中的选择值必须在表达式的取值范围内; 条件句中的选择值必须在表达式的取值范围内 •CASE语句中每一条件句的选择只能出现一次,相同 CASE语句中每一条件句的选择只能出现一次 CASE语句中每一条件句的选择只能出现一次, 选择值的条件语句不能重复出现; 选择值的条件语句不能重复出现; •所有表达式的值都必须穷举,不能穷举的值用 所有表达式的值都必须穷举, 所有表达式的值都必须穷举 OTHERS表示 表示。 OTHERS表示。
Library ieee; use ieee.std_logic_1164.all; entity test_06 is port( d: in std_logic; x: out std_logic); end test_06; architecture test_06 of test_06 is signal a: std_logic_vector(3 downto 0); signal b: std_logic_vector(2 downto 0); begin process begin a<="1010"; b<="111"; if(a>b) then x<=d; else x<='0'; end if; end process; end test_06;
VHDL语句

VHDL的顺序语句和并行语句一、顺序语句顺序语句只能出现在进程(PROCESS)、子程序(过程(PROCEDURE)和函数(FUNCTION))中,其特点与传统的计算机编程语句类似,是按程序书写的顺序自上而下、一条一条地执行。
利用顺序语句可以描述数字逻辑系统中的组合逻辑电路和时序逻辑电路。
VHDL的顺序语句有赋值语句、流程控制语句、等待语句、子程序调用语句、返回语句、空操作语句等六类。
<1>赋值语句赋值语句的功能是将一个值或一个表达式的运算结果传递给某一个数据对象。
(1)变量赋值语句格式:目标变量名:=赋值源(表达式);例如:x:=5.0;(2)信号赋值语句格式:目标信号名<=赋值源;例如:y<=…1‟;说明:该语句若出现在进程或子程序中则是顺序语句,若出现在结构体中则是并行语句。
( 3 )数组元素赋值例如:SIGNAL a,b:STD LOGIC VECTOR(1 TO 4);a<=“1101”;a(1 TO 2)<=“10”;a(1 TO 2)<=b(2 TO 3);<2>流程控制语句通过条件控制开关决定是否执行一条或几条语句,或重复执行一条或几条语句,或跳过一条或几条语句。
流程控制语句共有5种:IF语句CASE语句LOOP语句NEXT语句EXIT语句(1)IF语句1、IF 条件句Then 顺序语句END IF ;2、IF 条件句Then 顺序语句ELSE 顺序语句END IF ;3、IF 条件句Then 顺序语句ELSIF 条件句Then 顺序语句...ELSE 顺序语句END IF4、IF 条件句ThenIF 条件句Then...END IFEND IF例子:8线-3线优先编码器的设计LIBRARY IEEE;USE IEEE.STD LOGIC 1164.ALLENTITY coder ISPORT(a:IN STD LOGIC VECTOR(0 TO 7);y:OUT STD LOGIC VECTOR(0 TO 2));END coder;ARCHITECTURE example2 OF coder ISBEGINPROCESS(a)BEGINIF (a(7)=…0‟)THEN y<=”111”;ELSIF (a(6)=‟0‟) THEN y<=”011”;ELSIF (a(5)=‟0‟) THEN y<=”101”;ELSIF (a(4)=‟0‟) THEN y<=”001”;ELSIF (a(3)=‟0‟) THEN y<=”110”;ELSIF (a(2)=‟0‟) THEN y<=”010”;ELSIF (a(1)=‟0‟) THEN y<=”100”;ELSE y<=”000”;END IF;END PROCESS;END example2;(2)CASE语句格式:CASE 表达式ISWhen 选择值=>顺序语句;When 选择值=>顺序语句;…When OTHERS =>顺序语句;END CASE;说明:“=>”不是运算符,相当“THEN”。
vhdl基本语法 ifdef

VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,用于描述数字电路和系统。
它是由美国国防部(DOD)于20世纪80年代初期的VHSIC(Very High Speed Integrated Circuits)项目中开发的。
VHDL的基本语法包括一些常用的关键字和结构,其中ifdef是其中之一。
ifdef是VHDL中的一个条件编译指令,用于根据给定的条件来判断是否包含某段代码。
在VHDL中,ifdef语句的基本语法如下:```vhdl`ifdef condition-- code to be included if condition is true`else-- code to be included if condition is false`endif```在上面的代码中,condition是一个条件表达式,可以是一个参数、宏定义或者其他已经定义过的条件。
如果condition为真,则会编译`ifdef和`endif之间的代码;如果condition为假,则会编译`else和`endif之间的代码。
使用ifdef可以让我们根据不同的条件来控制代码的编译和包含,这在一些复杂的项目中非常有用。
下面是使用ifdef的一个简单示例:```vhdl`ifdef DEBUGreport "Debug mode is enabled";`elsereport "Debug mode is disabled";`endif```在上面的代码中,如果DEBUG宏被定义了,那么report语句"Debug mode is enabled"将被编译进去;否则将编译进去"Debug mode is disabled"。
除了`ifdef语句外,VHDL还提供了一些其他的条件编译指令,如`ifndef(如果给定条件为假则编译)、`elsif(如果前面的条件为假则继续判断下一个条件)、`elsif和`endif。
VHDL基本语句

例
ARCHITECTURE example OF mux4 IS BEGIN PROCESS (sel) 注 BEGIN ●CASE中的选择值必须在表达式的取值范围内; CASE sel IS WHEN 0=> q <= d0 ; ●CASE语句是无序的,所有表达式值都是并行 WHEN 1=> q <= d1 ; 处理;而IF语句是有序的,最起始、最优先 WHEN 2=> q<= d3 ; WHEN 3=> q<= d4 ; 的先处理; WHEN others => NULL; ●可以有很多分支,但OTHERS分支只能有一个, END CASE; 且只能位于最后;用来使所有选择值能涵盖表 END PROCESS; END example; 达式的所有取值,以免插入不必要的锁存器
3、用于多选控制的IF语句:
格式 IF 条件1 THEN
<顺序处理语句1>;
ELSIF 条件2 THEN <顺序处理语句2>; : ELSIF 条件n-1 THEN <顺序处理语句n-1>; ELSE <顺序处理语句n>; END IF;
P1: PROCESS (clk) BEGIN
IF (clk‘ event and clk=‗1‘ ) THEN
顺序语句
赋值语句
VHDL设计实体内的数据传递以及对端口界面外部数据的读写 都必须通过赋值语句的运行来实现。 功能是将一个值或表达式的运算结果传递给某一数据对象。 赋值语句有两种: 信号赋值语句和变量赋值语句 区别
第10章 VHDL基本语句-ST

15
10.1 顺 序 语 句
10.1.9 RETURN语句
过程 函数
返回语句仅用于子程序
16
10.1 顺 序 语 句
10.1.10 NULL语句 空操作语句不完成任何操作,常用于CASE语句。
17
10.2 VHDL并行语句
结构体中可综合并行语句:
18
10.2 VHDL并行语句
10.2.1 并行信号赋值语句 赋值目标必须都是信号
28
10.2 VHDL并行语句
10.2.6 REPORT语句 REPORT语句用来报告计算的有关信息,本身不可综合,仅用于仿真。
29
10.2 VHDL并行语句
10.2.7 断言语句 断言语句也不可综合,仅用于仿真
30
10.3 属性描述与定义语句
1. 信号类属性
2. 数据区间类属性
'RANGE [(n)]
EDA技术实用教程
第10章 VHDL基本语句
1
10.1 顺 序 语 句
顺序语句的特点:(仿真)执行顺序与其书写顺序是一致的 进程与子程序(函数、过程) 10.1.1 赋值语句
信号赋值 赋值目标 <= 赋值源 变量赋值 赋值目标 := 赋值源 注意赋值符号左右两端数据类型一致,以及与=>的区别 10.1.2 IF语句
32
10.1.3 CASE语句 单个普通数值数、数值选择范围、并列数值、混合方式
IF语句中条件句逐项顺序执行,具有向上相与的逻辑功能 CASE语句中条件句的次序不重要,其执行过程接近于并行方式
2
10.1 顺 序 语 句
10.1.3 CASE语句
3
10.1 顺 序 语 句
VHDL语言的基本语法

B:二进制基数符号,表示二进制数位0或1。 二进制基数符号,表示二进制数位0 O:八进制基数符号。 八进制基数符号。 X:十六进制基数符号(0~F) 。 十六进制基数符号(0~ (0 例如: 1_1101_1110 1_1101_1110” 例如:B“1_1101_1110 --二进制数数组,位矢数组长度是9 --二进制数数组,位矢数组长度是9 二进制数数组 AD0 X“AD0” AD --十六进制数数组,位矢数组长度是12 --十六进制数数组,位矢数组长度是12 十六进制数数组
4、下标名及下标段名 下标名用于指示数组型变量或信号的某一 下标名用于指示数组型变量或信号的某一 元素, 元素,如:a(2) , b(n) 下标段名则用于指示数组型变量或信号的 下标段名则用于指示数组型变量或信号的 某一段元素,其语句格式如下: 某一段元素,其语句格式如下:
数组类型信号名或变量名(表达式 表达式2]); 数组类型信号名或变量名 表达式1 [TO/DOWNTO 表达式 ; 表达式
信号的使用和定义范围是实体、结构体和程序包 信号的使用和定义范围是实体、结构体和程序包.
在程序中: 在程序中 (1) 信号值的代入采用“<=”代入符,而且信号 信号值的代入采用“ ”代入符, 代入时可以附加延时。 代入时可以附加延时。 (2) 变量赋值时用“:=”,不可附加延时。 变量赋值时用“ ” 不可附加延时。 (3) 信号的初始赋值符号仍是“:=”。 信号的初始赋值符号仍是“ ” 例: X<=Y AFTER 10 ns; ; --X,Y都是信号,且Y的值经过 都是信号, 的值经过10ns延 , 都是信号 的值经过 延 时以后才被代入X。 时以后才被代入 。
(1) 赋值语句右方的表达式必须是一个与目标变量有相同 数据类型的数值。 数据类型的数值。 (2) 变量不能用于硬件连线和存储元件。 变量不能用于硬件连线和存储元件。 (3) 变量的适用范围仅限于定义了变量的进程或子程序中。 变量的适用范围仅限于定义了变量的进程或子程序中。 (4) 若将变量用于进程之外,必须将该值赋给一个相同的 若将变量用于进程之外, 类型的信号,即进程之间传递数据靠的是信号。 类型的信号,即进程之间传递数据靠的是信号。
VHDL基本语句

PROCESS(a, b) BEGIN y<=a AND b; WAIT ON a, b; END PROCESS;
- - 错误语句
WAIT UNTIL表达式; WAIT UNTIL((x*10)<100); 建立一个隐式的敏感信号量表 一个隐式的敏感信号量表
WAIT FOR 时间表达式 WAIT FOR 20 ns; WAIT FOR (a*(b+c));
例:
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux4 IS PORT(a,b,i0,i1,i2,i3: IN STD_LOGIC; q: OUT STD_LOGIC); END mux4; ARCHITECTURE mux4_behave OF mux4 IS SIGNAL sel: INTEGER RANGE 0 TO 3; BEGIN B: PROCESS(a,b,i0,i1,i2,i3) BEGIN
LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL; ENTITY dff IS PORT (clk,d: IN STD_LOGIC; q: OUT STD_LOGIC); END dff; ARCHITECTURE rtl OF dff IS BEGIN PROCESS(clk) BEGIN IF(clk′EVENT AND clk=′1′) THEN q<=d; END IF; END PROCESS; END rtl;
顺序语句
· WAIT语句; · 断言语句; · 信号代入语句; · 变量赋值语句; · IF语句; · CASE语句; · LOOP语句; · NEXT语句; · EXIT语句; · 过程调用语句; · NULL语句。
第10章VHDL基本语句

END LOOP L2; ...
11
11
10.1.4 LOOP语句
(2) FOR_LOOP语句,语法格式如下: [LOOP标号:] FOR 循环变量 IN 循环次数范围 顺序语句
LOOP
END LOOP [LOOP标号];
SIGNAL tmp :STD_LOGIC ;
BEGIN
奇校验就是看2进制数旳1旳个数为奇数
PROCESS(a)
就在校验位填0 偶数就填1 使1旳个数
BEGIN
变成奇数个. 偶校验相反 把1旳个数变
tmp <='0';
成偶数.
FOR n IN 0 TO 7 LOOP 然后传送数据,接受后在做相应旳奇偶
FOR后旳”循环变量”是一种临时变量,属LOOP语句旳局 部变量,不必事先定义. 这个变量只能作为赋值源,不能被赋值,它 由LOOP语句自动定义. 使用时应该注意,在LOOP语句范围内不 要再使用其他与此循环变量同名旳标识符.
“循环次数范围”要求LOOP语句中旳顺序语句被执行次数. 循环变量从范围初值开始,每执行完一次顺序增1,直至最大值.
第 10 章 VHDL基本语句
1
1
10.1 顺序语句
VHDL有6种基本顺序语句:赋值语句、流程控制语句、等待 语句、子程序调用语句、返回语句、空操作语句.
10.1.1 赋值语句
信号赋值语句
10.1.2 IF语句
10.1.3 CASE语句
变量赋值语句
多条件选择
值体现式旳 4种形式
单个一般数值,如6。
数值选择范围,如(2 TO 4)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10.1 顺 序 语 句
10.1.5 NEXT语句
10.1 顺 序 语 句
10.1.5 NEXT语句
10.1 顺 序 语 句
10.1.6 EXIT语句
10.1 顺 序 语 句
10.1.6 EXIT语句
10.1 顺 序 语 句
10.1.7 WAIT语句
10.1 顺 序 语 句
10.1 顺 序 语 句
10.1.8 子程序调用语句
1. 过程调用
10.1 顺 序 语 句
10.1.8 子程序调用语句
2.函数调用
函数调用与过程调用十分相似,不同之处是,调用函数 将返回一个指定数据类型的值,函数的参量只能是输入值。
10.1 顺 序 语 句
10.1.9 RETURN语句
10.1 顺 序 语 句
实验与设计
10-2 等精度频率/脉宽/占空比/相位多功能测试仪设计
(1)实验目的: (2)实验原理:
接下页
接上页
实验与设计
10-2 等精度频率/脉宽/占空比/相位多功能测试仪设计
(1)实验目的: (2)实验原理:
接下页
接上页
实验与设计
10-2 等精度频率/脉宽/占空比/相位多功能测试仪设计
(1)实验目的: (2)实验原理:
(1)实验原理:
实验与设计
10-3 PC机键盘经UART串口控制模型电子琴电路设计
(2)实验内容1:本项实验基于5E+系统的示例演示文件: /KX_7C5EE+/EXPERIMENTs/EXP42_RS232_PIANO/ECHD。 (3)实验内容2: (4)实验内容3: (5)实验内容4:
实验与设计
实验与设计
10-2 等精度频率/脉宽/占空比/相位多功能测试仪设计
(1)实验目的: (2)实验原理:
实验与设计
10-2 等精度频率/脉宽/占空比/相位多功能测试仪设计
(1)实验目的: (2)实验原理:
实验与设计
10-2 等精度频率/脉宽/占空比/相位多功能测试仪设计
(1)实验目的: (2)实验原理:
EDA技术实用教程
第10章
VHDL基本语句
10.1 顺 序 语 句
10.1.1 赋值语句
10.1.2 IF语句
10.1.3 CASE语句
10.1 顺 序 语 句
10.1.3 CASE语句
10.1 顺 序 语 句
10.1.3 CASE语句
10.1 顺 序 语 句
10.1.3 CASE语句
10.1 顺 序 语 句
10.3 属性描述与定义语句
4. 数组属性'LENGTH
10.3 属性描述与定义语句
5. 用户定义属性
习
题
10-1 进程有哪几种主要类型?不完全组合进程是由什么原因引起的?有什么特点? 如何避免? 10-2 给触发器复位的方法有哪两种?如果时钟进程中用了敏感信号表,哪种复位方 法要求把复位信号放在敏感信号表中? 10-3 详细讨论并用示例说明WITH_SELECT_WHEN语句和CASE语句的异同点。 用WITH_SELECT_WHEN语句描述4个16位至1个16位输出的4选1多路选择器。 10-4 为什么说一条并行赋值语句可以等效为一个进程?如果是这样的话,该语句怎 样实现敏感信号的检测? 10-5 用两种方法设计比较器,比较器的输入是两8位数A[7..0]和B[7..0],输出是 D、 E、F。当A=B时D=1;当A>B时E=1;当A<B时F=1。第一种设计方案是常规的 比较器设计方法,即直接利用关系操作符进行编程设计;第二种设计方案是利用 减法器来完成,通过减法运算后的符号和结果来判别两个被比较值的大小。对两 种设计方案的资源耗用情况进行比较并给以解释。 10-6 设计VHDL程序,产生0至100间的随机数,其中小于50的数的比例是70%。
实验与设计
10-6 正交幅度调制与解调系统实现
(1)实验目的: (2)实验原理:
实验与设计
10-6 正交幅度调制与解调系统实现
(1)实验目的: (2)实验原理:
实验与设计
10-6 正交幅度调制与解调系统实现
(3)实验内容1: (4)实验内容2:
实验与设计
10-1. 直流电机综合测控系统设计
(1) 实验目的: (2))实验原理: (3) 实验内容1: (4) 实验内容2: (5) 实验内容3: 基于5E+系统的示例演示文件: /KX_7C5EE+/EXPERIMENTs/EXP28_DC_MOTO/PW1。
实验与设计
10-1. 直流电机综合测控系统设计Fra bibliotek接下页
接上页
实验与设计
10-2 等精度频率/脉宽/占空比/相位多功能测试仪设计
(1)实验目的: (2)实验原理:
实验与设计
10-2 等精度频率/脉宽/占空比/相位多功能测试仪设计
(1)实验目的: (2)实验原理:
实验与设计
10-2 等精度频率/脉宽/占空比/相位多功能测试仪设计
(1)实验目的: (2)实验原理:
10.2.5 生成语句
10.2 VHDL并行语句
10.2.5 生成语句
10.2 VHDL并行语句
10.2.5 生成语句
10.2 VHDL并行语句
10.2.5 生成语句
10.2 VHDL并行语句
10.2.5 生成语句
10.2 VHDL并行语句
10.2.5 生成语句
接下页
10.2 VHDL并行语句
实验与设计
10-5 单片全数字型DDS函数信号发生器综合设计实验
基本功能包括: 1、PSK、MSK、AM、FM、FSK;PSK信号发生器(调制信号、载波信号频率可 设); 2、移相信号发生器(两路频率同步可数控,相差可数控); 3、里萨如图信号发生器(两路频率独立可数控,相差可数控); 4、扫频信号源,要求最大单程扫频0.1Hz至10MHz,在此范围内,扫频频幅可设 (最小0.05Hz)、扫速可设、扫频起始终止点可设、线性/对数扫频方式可选、 内外扫频时钟可选; 5、三角波、锯齿波、方波(频率/占空比可数控); 6、频率、脉宽、占空比、相位可测。基于5E+系统的演示示例: /KX_7C5EE+/DEMOs/EXP10_DDS_Core_DAC0832/。操作方法参考所附资料。
实验与设计
10-2 等精度频率/脉宽/占空比/相位多功能测试仪设计
(1)实验目的: (2)实验原理:
实验与设计
10-2 等精度频率/脉宽/占空比/相位多功能测试仪设计
(1)实验目的: (2)实验原理:
实验与设计
10-2 等精度频率/脉宽/占空比/相位多功能测试仪设计
(1)实验目的: (2)实验原理:
10.2 VHDL并行语句
10.2.2 块语句
10.2 VHDL并行语句
10.2.3 并行过程调用语句
10.2 VHDL并行语句
10.2.3 并行过程调用语句
10.2 VHDL并行语句
10.2.3 并行过程调用语句
10.2 VHDL并行语句
10.2.4 元件例化语句
10.2 VHDL并行语句
实验与设计
10-2 等精度频率/脉宽/占空比/相位多功能测试仪设计
(3) 实验内容1:。 (4) 实验内容2:本项设计的另一同等示例是: /KX_7C5EE+/EXPERIMENTs/EXP18_KX8051_FTEST_K4X4/。 (5) 实验内容3:
实验与设计
10-3 PC机键盘经UART串口控制模型电子琴电路设计
10.2.1 并行信号赋值语句
3. 选择信号赋值语句
10.2 VHDL并行语句
10.2.2 块语句
10.2 VHDL并行语句
10.2.2 块语句
10.2 VHDL并行语句
10.2.2 块语句
10.2 VHDL并行语句
10.2.2 块语句
接下页
10.2 VHDL并行语句
10.2.2 块语句
接上页
(1) 实验目的: (2))实验原理: (3) 实验内容1: (4) 实验内容2: (5) 实验内容3: 基于5E+系统的示例演示文件: /KX_7C5EE+/EXPERIMENTs/EXP28_DC_MOTO/PW1。
实验与设计
10-1. 直流电机综合测控系统设计
(1) 实验目的: (2))实验原理: (3) 实验内容1: (4) 实验内容2: (5) 实验内容3: 基于5E+系统的示例演示文件: /KX_7C5EE+/EXPERIMENTs/EXP28_DC_MOTO/PW1。
10-4 AM幅度调制信号发生器设计
(1)实验原理:
实验与设计
10-4 AM幅度调制信号发生器设计
(2)实验任务1:基于5E+系统的演示示例设计是: /KX_7C5EE+/DEMOs/EXPL10_DDS_Core_DAC0832/;或 /EXPL11_DDS_Core_HSpeed/ (3)实验任务2:
(1)将IN和INOUT模式的实参值赋给欲调用的过程中与它们对应的形参; (2)执行这个过程。 (3)将过程中IN和INOUT模式的形参值返回给对应的实参。
10.1 顺 序 语 句
10.1.8 子程序调用语句
1. 过程调用
接下页
10.1 顺 序 语 句
10.1.8 子程序调用语句
1. 过程调用 接上页
10.2.1 并行信号赋值语句
2. 条件信号赋值语句
10.2 VHDL并行语句
10.2.1 并行信号赋值语句
2. 条件信号赋值语句
10.2 VHDL并行语句
10.2.1 并行信号赋值语句