VHDL语言第5章

合集下载

VHDL硬件描述语言与数字逻辑电路设计 (5)[88页]

VHDL硬件描述语言与数字逻辑电路设计 (5)[88页]
第5章 VHDL构造体的描述方式
第5章 VHDL构造体的描述方式
5.1 构造体的行为描述方式 5.2 构造体的寄存器传输(RTL)描述方式 5.3 构造体的结构描述方式 习题与思考题
第5章 VHDL构造体的描述方式
5.1 构造体的行为描述方式
什么样的描述属于行为描述方式,这一点目前还没有确 切的定义,所以在不同的书刊中,对相同或相似的某些用 VHDL描述的逻辑电路的程序有不同的说明。有的说明为行 为描述方式,有的说明为寄存器传输描述方式。但是,有一 点是明确的,行为描述方式是对系统数学模型的描述,其抽 象程度比寄存器传输描述方式和结构描述方式更高。
第5章 VHDL构造体的描述方式
5.1.2 延时语句 在VHDL中存在两种延时类型:惯性延时和传输延时。
这两种延时常用于VHDL的行为描述方式。 1.惯性延时 在VHDL中,惯性延时是缺省的,即在语句中如果不作
特别说明,产生的延时一定是惯性延时,这是因为大多数器 件在行为仿真时都会呈现这种惯性延时。
第5章 VHDL构造体的描述方式
第5章 VHDL构造体的描述方式
在例5-2中用了两个语句:第一个语句是选择语句,第 二个语句是代入语句。这两个语句是条件代入类型语句。也 就是说,只有WHEN后面所指定的条件得到满足时,指定的 代入值才被代入信号量sel或输出量q。
当第一个语句执行时,将使用选择信号。根据选择信号 sel的当前值,后跟的5种状态下的值i0~i3、'X' 中的一个值 将通过输出端口q输出。在正常情况下,q端将选择i0~i3之 一输出,在非正常情况下将输出 'X' 值。
第5章 VHDL构造体的描述方式
几乎所有器件都存在惯性延时,因此,硬件电路的设计 人员为了逼真地仿真硬件电路的实际工作情况,在代入语句 中总要加上惯性延时时间的说明。例如:

第五章 组合逻辑电路的VHDL语言描述

第五章 组合逻辑电路的VHDL语言描述

BEGIN
PROCESS ( a, datain ) BEGIN IF ( datain = '1' ) THEN dataout <= '0' ; ELSE dataout <= '1' ; END IF ; END PROCESS ; END ARCHITECTURE behavioral_2 ; --RTL描述方式 ,MAX中需要加入时钟a
第5章
组合逻辑电路的VHDL描述
仿真波形
第5章
组合逻辑电路的VHDL描述
5.1.5 2输入同或门电路
LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY cynxor2 IS PORT ( datain1, datain2 : IN STD_LOGIC ; dataout : OUT STD_LOGIC ) ; END ENTITY cynxor2 ; ARCHITECTURE behavioral OF cynxor2 IS BEGIN
END ENTITY cyxor2 ;
ARCHITECTURE behavioral OF cyxor2 IS BEGIN dataout <= datain1 XOR datain2 ; END ARCHITECTURE behavioral ;
第5章
组合逻辑电路的VHDL描述
LIBRARY IEEE ;
第5章
组合逻辑电路的VHDL描述
LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY cynot IS
PORT ( a, datain : IN STD_LOGIC ; END ENTITY cynot ; ARCHITECTURE behavioral_2 OF cynot IS dataout : OUT STD_LOGIC ) ;

第五章_VHDL语言的主要描述语句

第五章_VHDL语言的主要描述语句

例:
library ieee; use ieee.std_logic_1164.all; entity kdec24 is port(a:in std_logic_vector (1 downto 0); en:in std_logic; f:out std_logic_vector (3
architecture d of kdec24 is begin
执行到该语句等待20ns以后,再继续执行下一条指令。
wait for( a*(b+c));
若a=2,b=50ns,c=70ns, 则执行到该语句时,就要等待2*(50+70)=240ns后, 再继续执行后续语句。
2016/3/23 20
例:利用wait for构成输入信号波形
process entity inhibittestbench is begin end entity inhibittestbench; xt<='0';yt<='0'; architecture beh of wait for 10 ns; inhibittestbench is xt<='0';yt<='1'; component inhibit is wait for 10 ns; port (x,y:in bit;z: out bit); xt<='1';yt<='0'; end component inhibit; wait for 10 ns; signal xt,yt,zt:bit; xt<='1';yt<='1'; begin wait; --进入无限期等待, u1: inhibit port map (xt, yt, 避免进入无限期循环; zt); end process; end architecture beh;

FPGA中文VHDL语言教程

FPGA中文VHDL语言教程

第5章VHDL深入本章仍将沿用第3章中通过一些实例引出了相关的VHDL语法结构和语言现象,并给予一定说明的方法,介绍一些新的实例及相关的VHDL语法知识,使读者进一步深入了解VHDL语言现象和语句规则的特点,以及应用VHDL表达与设计电路的方法。

下面首先对第3章出现的一些语法现象作更为深入的讨论,然后再引出一些新的实例,帮助读者对相关的语法现象作更详细的了解。

5.1 数据对象及其示例说明在VHDL中,数据对象有三类,即变量(V ARIABLE)、常量(CONSTANT)和信号(SIGNAL)。

如前所述,数据对象类似于一种容器,它接受不同数据类型的赋值。

变量和常量可以从软件语言中找到对应的类型,然而信号的表现较特殊,它具有更多的硬件特征,是VHDL中最有特色的语言要素之一。

尽管信号和变量已在前面一些示例中出现过,但都没有作更详细的解释,这势必影响对VHDL程序的更好理解,以下将针对数据对象给出一些示例,以作进一步的说明。

5.1.1 常数常数的定义和设置主要是为了使程序更容易阅读和修改。

例如,将逻辑位的宽度定义为一个常量,只要修改这个常量就能很容易地改变宽度,从而改变硬件结构。

在程序中,常量是一个恒定不变的值,一旦作了数据类型和赋值定义后,在程序中不能再改变,因而具有全局性意义。

常数定义的一般表述如下:CONSTANT 常数名:数据类型 := 表达式;例如:CONSTANT FBT : STD_LOGIC_VECTOR := "010110" ; -- 标准位矢类型CONSTANT DATAIN : INTEGER := 15 ; -- 整数类型第1句定义常数FBT的数据类型是STD_LOGIC_VECTOR,它等于"010110";第2句定义常数DATAIN的数据类型是整数INTEGER,它等于15 。

VHDL要求所定义的常量数据类型必须与表达式的数据类型一致。

《数字电子技术与接口技术试验教程》课件第5章

《数字电子技术与接口技术试验教程》课件第5章
8
第5章 基于HDL的时序逻辑电路实验
图5-2 边沿D触发器的仿真结果
9
第5章 基于HDL的时序逻辑电路实验 (2) 边沿D触发器的VHDL源代码如下:
--Behavioral D Flip-Flop with Clock Enable and Asynchronous Reset
entity Dflipflop is Port (D,clk,rst,ce : in STD_LOGIC; Q : out STD_LOGIC);
architecture Behavioral of DFF is begin
process(clk, rst,D) begin
if (CLK'event and CLK='1') then if rst ='1' then Q <= '0'; else Q<=D; end if;
end if; end process; end Behavioral;
end if; end process; end Behavioral;
13
第5章 基于HDL的时序逻辑电路实验
(3) 带有置位和清零端的边沿D触发器的约束文件规定
如下:
#Basys2约束文件: NET "clk" LOC ="B8"; //时钟
#Basys2约束文件: NET "clk" LOC ="B8"; //时钟
end Dflipflop;
architecture Behavioral of Dflipflop is begin
process(clk, rst,D,ce)

第五章(VHDL主要描述语句)

第五章(VHDL主要描述语句)

(4) CASE语句执行中必须选中,且只能选中所列条件语
句中一条。这表明CASE语句中至少要包含一个条件语句。
CASE语句常用来描写总线行为、编码器和译码器的结构。CASE语句 与IF语句功能相似但CASE语句的可读性好,非常简洁。
CASE语句的误用:
SIGNAL value : INTEGER RANGE 0 TO 15 ; SIGNAL out_1 : BIT ; CASE value IS -- 缺少 WHEN条件语句 END CASE ; -- 分支条件不包含2到15 CASE value IS WHEN 0 => out_1 <= „1‟; WHEN 1 => out_1 <=„0‟; END CASE ; -- 在5到10上发生重叠 CASE value IS WHEN 0 TO 10 => out_1 <= „1‟; WHEN 5 TO 15 => out_1 <= „0‟; END CASE ;
IF语句不仅可用于选择器设计,还可用于比较 器,译码器等进行条件控制的逻辑设计。IF语句 中至少应有一个条件句,条件句必须由布尔表达 式构成,条件表达式中能使用关系运算操作及逻 辑运算操作的组合表达式。 IF语句颠倒条件判别次序,会引起在综合时逻辑 功能的变化,即IF语句判别条件不可颠倒。 IF语句中,先处理最起始的条件;如果不满足, 再处理下一个条件。一般把条件约束最多的作为 起始条件。

用IF语句描述一个二位等值比较器
ARCHITECTURE a OF compare IS LIBRARY IEEE; BEGIN PROCESS(a,b) USE IEEE.STD_LOGIC_1164.ALL; BEGIN ENTITY compare IS IF(a>b) THEN eater<='1';equal<='0';less<='0'; generic(n:natural:=2); ELSIF (a=b) THEN PORT( greater<='0';equal<='1';less<='0'; ELSE a,b:IN STD_LOGIC_VECTOR(n-1 DOWNTO 0); greater<='0';equal<='0';less<='1'; greater,equal,less:OUT STD_LOGIC); END IF; END PROCESS; END; END;

EDA技术及应用 第5章

EDA技术及应用 第5章

表 5-1 端口模式说明
端口模式
端口模式说明(以设计实体为主体)
IN
OUT
BUFFER INOUT LINKAGE
输入,只读模式,将变量或信号信息通过该端口读入,与 IN、INOUT 及 BUFFER 型端口连接
输出,单向赋值模式,将信号通过该端口输出,与 OUT、INOUT 及 BUFFER 型端 口连接
第 5 章 VHDL程序结构
5.1 实体 5.2 构造体 5.3 库 5.4 程序包 5.5 配置
作为一种程序设计语言,VHDL除有上述两种基本语言结 构外,还有程序包(PACKAGE)、库(LIBRARY)和配置 (CONFIGURATION)。一个相对完整的VHDL程序(或称为设 计实体)具有如图5-1所示的结构。下面就这几部分结构作两点 说明:
(1) VHDL中实体、构造体、库、程序包是必备的结构, 而配置不是必备的,可以省略。通常我们将VHDL所描述的某 个电路称之为一个设计实体。需要注意的是,当设计中只调用 STD库时,可以省略库、程序包使用说明,这是由于STD库是 显式打开的,不用声明。
(2) 在一个VHDL设计中只能有一个实体;而同一个设计 实体可以对应多个构造体。这是因为VHDL语言支持行为级、 RTL传输级等多种抽象描述层次,而一个抽象层次通常可以对 应至少一种描述语句。
2. 类属说明 类属(GENERIC)参量是一种端口常数,用于说明端口的静 态特性。类属的值可以由设计实体外部提供,因此,设计者可 以通过重新设定类属参量来改变一个设计实体或一个元件的内 部电路结构和规模。
类属说明的格式如下: GENERIC(常量名:数据类型[:=设定值 量纲]; 常量名:数据类型[:=设定值 量纲]);
库、程序包使用说明

《VHDL语言程序设计》课程教学大纲

《VHDL语言程序设计》课程教学大纲

GDOU-B-11-213《VHDL语言程序设计》课程教学大纲课程简介课程简介:本课程为软件工程专业嵌入式专业方向的专业课,是开发基于FPGA/CPLD嵌入式系统的必备基础。

主要内容包括FPGA/CPLD目标器件的结构和工作原理、EDA技术和工作流程、VHDL基础知识、VHDL实用方法和设计深入、原理图输入法、LPM宏功能模块实用方法、状态机设计以及EDA优化设计。

目的是为后续课程的学习和嵌入式系统的设计作必须的基础准备。

课程大纲一、课程的性质与任务:本课程是软件工程专业的专业方向课程。

教学任务主要包括使学生了解EDA技术的工作流程,正确使用开发平台,掌握以VHDL为代表的硬件描述语言的基本知识、编程实用方法和工程设计方法,掌握原理图设计法、状态机设计法,能够正确使用IP Core和LPM等宏功能模块。

本课程是软件工程专业嵌入式专业方向的第一门专业方向课,是后续课程的必备基础,具有较重要的地位。

二、课程的目的与基本要求:本课程涉及到的学科基础知识面广,要求软硬件兼备,需要较好的学科基础。

通过本课程的学习,最终达到能够设计基于FPGA/CPLD的ASIC,并能进行EDA优化的目的。

三、面向专业:软件工程四、先修课程:《计算系统基础》五、本课程与其它课程的联系:本课程的先行课程是计算系统基础。

服务的主要后续课程包括基于FPGA的嵌入式软件开发、基于ARM的嵌入式软件开发等。

六、教学内容安排、要求、学时分配及作业:第一章概述(2学时)1.1 EDA技术及其发展(C)1.2 硬件描述语言硬件描述语言种类、自顶向下设计方法、EDA工程设计流程。

(A)1.3 面向FPGA/CPLD的开发流程设计输入、分析综合、布局布线、仿真、下载和硬件测试。

(A)1.4 IP Core 及EDA技术发展趋势。

(C)第二章 FPGA硬件特性与编程技术(8学时)2.1 PLD发展历程及其分类(c)2.2 低密度PLD工作原理PROM、PLA、PAL、GAL。

第5章 组合逻辑电路(combinational logic)

第5章   组合逻辑电路(combinational   logic)

o <= ‘1’ when a=’1’ and b =’1’ else ‘0’; 这表示当输入端信号a及信号b都是逻辑’1’时,输出信号o才会为’1’,否则 输出信号o都是’0’。由此可以画出其真值表如表5—1所示。
表 5-1
a
b
C
0
0
0
0
1
0
1
0
0
1
l
1
由真值表可得知它也是一个and gate。 ‘ 当 然 两 种 表 示 法 各 有 优 劣 ,第 一 种 表 示法 相 当 简 洁 ,一 眼 看 去 便 知 道 是 一 个 双输入的and gate。在输入端扩充时也相当明确,例如4输入的and gate其表示 成:
( ‘0’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’ ), --|L|
( ‘U’, ‘X’, ‘0’, ‘1’, ‘X’, ‘X’, ‘0’, ‘1’, ‘X’ ), --|H|
( ‘U’, ‘X’, ‘0’, ‘X’, ‘X’, ‘X’, ‘0’, ‘X’, ‘X’ ), --|-|
( ‘U’, ‘U’, ‘0’, ‘U’, ‘U’, ‘U’, ‘0’, ‘U’, ‘U’ ), --|U|
( ‘U’, ‘X’, ‘0’, ‘X’, ‘X’, ‘X’, ‘0’, ‘X’, ‘X’ ), --|X|
( ‘0’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’ ), --|0|
设计起来就太麻烦了,设计者可能要重写许多function来处理一些像and、or、
not等最基本的功能。
事实上如果你声明的a、b、o、o1都是std_logic,在compile时仍然不会出 现 任 何 错 误 信 息 , 这 又 是 为 什 么 呢 ?原 因 是 std_logic及 UX01都 是 由 基 本 类 型 std_ulogic所衍生的子数据类型。在IEEE的std_logic_1164 package中,虽然没 有一个如下所示的function:

第5章 可编程逻辑器件综合设计

第5章 可编程逻辑器件综合设计

图5.4 宏单元的结构
第5章 可编程逻辑器件综合设计
5.2 CPLD/FPGA结构与原理
设 组 合 逻 辑 的 输 出 (AND3 的 输 出 ) 为 f , 则 f =(A+B)*C*(!D)=A*C*!D + B*C*!D (!D表示D的“非”), CPLD将以下面的方式来实现组合逻辑f如图5.6所示,A,B, C,D由CPLD芯片的引脚输入后进入可编程连线阵列(PIA), 在内部会产生A,A反,B,B反,C,C反,D,D反8个输出。 图中每一个叉表示相连(可编程熔丝导通),所以得到 f = f1 + f2 = (A*C*!D) + (B*C*!D)。这样组合逻辑就实 现了。
图5.11 宏单元的结构
第5章 可编程逻辑器件综合设计
5.3 Xilinx公司的CPLD介绍
3. XC9500的结构
图5.12 开关矩阵的内部结构
第5章 可编程逻辑器件综合设计
5.3 Xilinx公司的CPLD介绍
3. XC9500的结构 (3) 乘积项分配器 (4) 开关矩阵 (5) 输入/输出块 CI/OB
5.1 可编程逻辑器件概述
图5.1 典型的PLD的部分结构(实现组合逻辑的部分)[u1]
图5.1 典型的PLD的部分结构(实现组合逻辑的部分)
第5章 可编程逻辑器件综合设计
5.1 可编程逻辑器件概述
5.1.1 PLD分类 PLD产品一般分为两大类。 (1) 中小规模PLD:主要指PAL,GAL和CPLD,是基于 乘积项(Product-Term)技术,EEPROM(或Flash)工艺。 EEPROM工艺的PLD密度小,多用于5000门以下的小规 模设计,适合做复杂的组合逻辑,如译码。 (2) FPGA:基于查找表(Look-Up table,LUT)技术, SRAM工艺的大规模PLD/FPGA。SRAM工艺的PLD(FPGA), 密度高,触发器多,多用于10000门以上的大规模设 计,适合做复杂的时序逻辑,如数字信号处理和各种 算法。PLD产品一般分为两大类。

第5章_VHDL_状态机

第5章_VHDL_状态机

康芯科技
; ; ; ; ;
KX
康芯科技
5.2 Moore状态机
5.2.2 单进程Moore状态机
【例5-4】
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY MOORE1 IS PORT (DATAIN :IN STD_LOGIC_VECTOR(1 DOWNTO 0);
康芯科技
5.2 Moore状态机
5.2.1 多进程状态机
图5-5 采样状态机结构框图
KX
康芯科技
【例5-2】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ADCINT IS PORT(D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--来自0809转换好的8位数据 CLK : IN STD_LOGIC; --状态机工作时钟 EOC : IN STD_LOGIC; --转换状态指示,低电平表示正在转换 ALE : OUT STD_LOGIC; --8个模拟信号通道地址锁存信号 START : OUT STD_LOGIC; --转换开始信号 OE : OUT STD_LOGIC; --数据输出3态控制信号 ADDA : OUT STD_LOGIC; --信号通道最低位控制信号 LOCK0 : OUT STD_LOGIC; --观察数据锁存时钟 Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); --8位数据输出 END ADCINT; ARCHITECTURE behav OF ADCINT IS TYPE states IS (st0, st1, st2, st3,st4) ; --定义各状态子类型 SIGNAL current_state, next_state: states :=st0 ; SIGNAL REGL : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL LOCK : STD_LOGIC; -- 转换后数据输出锁存时钟信号 BEGIN ADDA <= '1';--当ADDA<='0',模拟信号进入通道IN0;当ADDA<='1',则进入通道IN1 Q <= REGL; LOCK0 <= LOCK ; COM: PROCESS(current_state,EOC) BEGIN --规定各状态转换方式 CASE current_state IS (接下页)

EDA技术与VHDL课后答案(第3版)潘松 黄继业

EDA技术与VHDL课后答案(第3版)潘松 黄继业
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY 8f_suber IS
PORT ( x0,x1,x2,x3,x4,x5,x6,x7 : IN STD_LOGIC ;
y0,y1,y2,y3,y4,y5,y6,y7 : IN STD_LOGIC ;
sub_in : IN STD_LOGIC ;
ELSIF u2_y<= u2_b ;
ELSE u2_y<= NULL ;
END IF ;
END PROCESS p_ MUX21A_u2 ;
u1_s<= s0 ; u1_a<= a2 ; u1_b<= a3 ;
tmp<= u1_y ;
u2_s<=s1 ; u2_a<= a1 ; u2_b<= tmp;
diff=>diff2 ) ;
u3 : f_suber PORT MAP (x=>x3, y=>y3, sub_in=>c, sub_out=>d,
diff=>diff3 ) ;
u4 : f_suber PORT MAP (x=>x4, y=>y4, sub_in=>d, sub_out=>e,
diff=>diff4 ) ;
sub_in x y
sub_out
diffr
0
x
0
y
0
f_suber
sub_in x y
sub_out
diffr
1
x
1
y
1
f_suber
sub_in x y
sub_out
diffr

第5章 VHDL结构及实例

第5章 VHDL结构及实例

8.3 VHDL子程序
8.3.7 子程序调用语句
1. 过程调用
5.3 VHDL操作符
逻辑操作符(Logical Operator) 关系操作符(Relational Operator) 算术操作符(Arithmetic Operator) 符号操作符(Sign Operator) 重载操作符(Overloading Operator)
HDL可编程逻辑器件 第5章 VHDL结构及实例
5.1 VHDL程序的基本结构
通常一个完整的VHDL程序(或称为设 计实体)应该包含库(LIBRARY)、程序包 (PACKAGE)、实体(ENTITY)、结构体 ( A R C H I T E C T U R E ) 和 配 置 (CONFIGURATION)五个部分,如图5.1 所示。
VHDL重载函数:
-- 程序包首 PACKAGE STD_LOGIC_UNSIGNED is function "+" (L : STD_LOGIC_VECTOR ; R : INTEGER) return STD_LOGIC_VECTOR ; function "+" (L : INTEGER; R : STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR ; function "+" (L : STD_LOGIC_VECTOR ; R : STD_LOGIC ) return STD_LOGIC_VECTOR ; ... end STD_LOGIC_UNSIGNED ;
库、程序包使用说明 设 计 实 体 结构体(ARCHITECTURE)
GENERIC 类属说明
实体(ENTITY)

EDA技术及应用 (5)

EDA技术及应用 (5)

第 5 章 VHDL程序结构
表 5-1 端口模式说明
端口模式
端口模式说明(以设计实体为主体)
IN
OUT
BUFFER INOUT LINKAGE
输入,只读模式,将变量或信号信息通过该端口读入,与 IN、INOUT 及 BUFFER 型端口连接
输出,单向赋值模式,将信号通过该端口输出,与 OUT、INOUT 及 BUFFER 型端 口连接
第 5 章 VHDL程序结构
3. PORT端口 端口类似于原理图部件符号上的管脚,实体通过端口与外界 通信。 实体端口格式如下:
PORT(端口名:端口模式 数据类型; 端口名:端口模式 数据类型);
第 5 章 VHDL程序结构
(1) 端口名:由设计者定义的与外部通信的引脚名称,命名 应符合VHDL命名规则。
(5) 为了使同一个VHDL源程序文件能适应各个EDA开发软件 的使用要求,建议各个源程序文件的命名均与其实体名 一致。
第 5 章 VHDL程序结构
5.1 实 体
1. 实体语句结构 实体语句结构如下: ENTITY 实体名 IS
[GENERIC(类属表);] [PORT(端口表);] END [ENTITY] 实体名;
第 5 章 VHDL程序结构 (2) STD库。VHDL语言定义了两个标准程序包,即STANDARD
和TEXTIO程序包,它们都被收入在STD库中。只要在VHDL应用环 境中,可随时调用这两个程序包中的所有内容,即在编译和综合 过程中,VHDL的每一项设计都自动地将其包含进去了。由于STD 库符合VHDL语言标准,因而在应用中不必如IEEE库那样显式表达 出来。
第 5 章 VHDL程序结构 【例5.3】 构造体功能描述举例。 ARCHITECTURE bhv OF dff2 IS Signal Q1:STD_LOGIC; BEGIN PROCESS(clk0,cl) BEGIN

第5章_VHDL时序电路+状态机+交通灯

第5章_VHDL时序电路+状态机+交通灯

时序逻辑电路设计
读懂每一个时序电路的VHDL程 序,能够熟练进行分析。 能够根据已知功能写出相关的 VHDL程序。
重点内容: • 时序逻辑电路的基本概念 • 触发器 • 寄存器 • 计数器
时钟信号
任何时序电路都以时钟信号为驱动信号, 时序电路仅在时钟信号的边沿到来时,其 状态才发生改变。因此,时钟信号通常是 描述时序电路程序的执行条件. 另外,时序电路也总是以时钟进程的形式 进行描述的。
(三).计数器
1.计数器简介
定义: 数字电路中用来记忆时钟脉冲个数的逻辑电 路。 原理:采用几个触发器的状态,按照一定规 律随时钟变化来记忆时钟的个数。 计数器的模:一个计数器所能记忆时钟脉冲 的最大数目。
1.计数器简介
计数器的分类
1、同步计数器、异步计数器。
2、加法计数器、减法计数器和可逆计数器。

IF (clk′EVENT AND clk=′0′) THEN WAIT UNTIL clk=‘0’; IF (clk’last_value=‘1’ AND clk’event AND clk=‘0’) THEN

IF (falling_edge(clk)) THEN
复位信号
同步复位,就是当复位信号有效且在给 定的时钟边沿到来时,触发器才被复位 。换一句话说,即使复位信号有效,如 果时钟脉冲边沿未到来,触发器也不会 复位。 非同步复位则不同,一旦复位信号有效 ,触发器就立即复位。
第5章 VHDL基本逻辑电路设计
--时序逻辑电路
时序逻辑电路概述
回顾:
组合逻辑电路:任意时刻的输出仅取决于该 时刻数据的输入,与电路原来的状态无关。 时序逻辑电路:是指数字电路在任何时刻的 输出不仅取决于当时的输入信号,而且还取决 于电路原来的状态,或者说和以前的输入有关。

2024年verilogHDL培训教程华为(多场景)

2024年verilogHDL培训教程华为(多场景)

verilogHDL培训教程华为(多场景)VerilogHDL培训教程——华为第一章:引言随着电子设计自动化(EDA)技术的不断发展,硬件描述语言(HDL)在数字电路设计领域扮演着越来越重要的角色。

VerilogHDL 作为一种主流的硬件描述语言,因其强大的功能、灵活的语法和广泛的应用范围,已成为数字集成电路设计工程师必备的技能之一。

本教程旨在帮助读者掌握VerilogHDL的基本概念、语法和设计方法,为华为等企业培养合格的数字电路设计人才。

第二章:VerilogHDL基础2.1VerilogHDL简介VerilogHDL是一种用于数字电路设计的硬件描述语言,它可以在多个层次上对数字系统进行描述,包括算法级、寄存器传输级(RTL)、门级和开关级。

VerilogHDL的设计初衷是为了提高数字电路设计的可重用性、可移植性和可维护性。

2.2VerilogHDL编程环境(1)文本编辑器:Notepad++、SublimeText等;(2)仿真工具:ModelSim、IcarusVerilog等;(3)综合工具:XilinxISE、AlteraQuartus等。

2.3VerilogHDL语法基础(1)关键字:VerilogHDL中的关键字具有特定含义,如module、endmodule、input、output等;(2)数据类型:包括线网类型(wire)、寄存器类型(reg)、整数类型(integer)等;(3)运算符:包括算术运算符、关系运算符、逻辑运算符等;(4)模块与端口:模块是VerilogHDL设计的基本单元,端口用于模块之间的信号传递;(5)行为描述与结构描述:行为描述用于描述电路的功能,结构描述用于描述电路的结构。

第三章:VerilogHDL设计流程3.1设计流程概述(1)需求分析:明确设计任务和功能要求;(2)模块划分:根据需求分析,将设计任务划分为若干个模块;(3)编写代码:使用VerilogHDL编写各个模块的代码;(4)仿真验证:对设计进行功能仿真和时序仿真,确保设计正确;(5)综合与布局布线:将VerilogHDL代码转换为实际电路,并进行布局布线;(6)硬件测试:在FPGA或ASIC上进行实际硬件测试。

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

第5章 VHDL语言构造体的描述方式VHDL构造体的三种描述方式◆行为描述方式◆寄存器传输级(RTL)描述方式◆结构描述方式5.1 行为描述方式行为描述方式是指对系统数学模型的抽象描述,其抽象程度比寄存器传输描述方式和结构化描述方式的更高。

因此,行为描述有时被称为高级描述。

在行为描述方式的程序中,大量采用了算术运算、关系运算、惯性延时、传输延时等难于进行逻辑综合和不能进行逻辑综合的VHDL语句,一般来说,采用行为描述方式的VHDL程序主要用于系统层数学模型的仿真或者系统工作原理的仿真。

PORT(reset,clk : IN STD_LOGIC;q : OUT STD_LOGIC_VECTOR(3 downto 0)); END cnt;ARCHITECTURE behav OF cnt ISSIGNAL qo : STD_LOGIC_VECTOR(3 downto 0); BEGINPROCESS (clk,reset)BEGINIF reset='0' THENqo<="0000";ELSIF (clk'event and clk='1') THENIF qo="1001" THENqo<="0000";ELSEqo<=qo+’1’;END IF;END IF;q<=qo;END PROCESS; END behav; 异步清零的模10计数器它对计数器时钟信号的触发要求作了明确而详细的描述,对时钟信号特定的行为方式所产生的信息后果作了准确的定义。

这充分展现了VHDL最为闪光之处。

ELSIF (clk'event and clk='1') THENPORT(reset,en,load,clk : IN STD_LOGIC;din : IN STD_LOGIC_VECTOR(3 downto 0);q : OUT STD_LOGIC_VECTOR(3 downto 0)); END cntb;ARCHITECTURE behav OF cntb ISSIGNAL qo : STD_LOGIC_VECTOR(3 downto 0);BEGINPROCESS (clk,reset,en,load,qo)BEGINIF reset='0' THENqo<="0000";ELSIF (clk'event and clk='1') THENIF load='0' THENqo<=din;ELSIF en='1' THENqo<=qo+1;END IF;END IF;q<=qo;4位二进制计数器 END PROCESS;END behav;◆行为描述只描述设计电路的功能或电路的行为,而没有指明或实现这些行为的硬件结构;或者说行为描述只表示输入输出之间的转换行为,它不包含任何结构信息。

◆行为描述通常指顺序语句描述,即含有进程的非结构化的逻辑描述。

◆行为描述的设计模型定义了系统的行为,通常由一个或多个进程构成,每一个进程又包含了一系列的顺序语句。

◆在VHDL中一些专门用于描述系统行为的语句有:延时语句、决断函数、 GENERIC语句、 GUARDED BLOCK语句等。

代入语句的格式为:信号量 <= 敏感信号量表达式;例如:z <= a nor (b and c);等同于:process (a,b,c)beginz <= a nor (b and c);end process;电路信号传输必然存在延时,VHDL语言描述延时行为有如下两种类型:◆惯性延时◆传输延时1. 惯性延时:◆ 系统或器件的输出信号要发生变化必须有一段时间的延时,这段延时时间常称为系统或器件的惯性或惯性延时。

◆ 因为大多数器件在行为仿真时都会呈现惯性延时,在VHDL 语言中,惯性延时是缺省的,即在语句中如果不做特别说明,产生的延时一定是惯性延时。

◆ 惯性延时的重要特点是:当一个系统或器件,它的输入信号变化周期小于系统或器件的惯性延时时,其输出将保持不变(见惯性延时示例)。

◆ 惯性延时说明只在行为仿真时有意义,逻辑综合时将被忽略,或者在逻辑综合前必须去掉延时说明。

因为实际延时量的大小取决于最终的硬件电路的固有物理延时。

B <= a after 20ns; a b 0 10 20 30 40 50ns惯性延时示例2. 传输延时:◆ 在VHDL 语言中,传输延时不是缺省的,必须在语句中明确说明。

◆传输延时常用于描述总线延时、连接线的延时及ASIC 芯片中的路径延时。

◆具有传输延时的代入语句格式如下所示:b<=TRANSPORT a AFTER 20 ns ; 语句中“TRANSPORT ”是专门用于说明传输延时的前置词。

◆传输延时波形如图所示,当有10 ns 的脉冲波形输入时,经20ns 传输延时后,将在输出端完全复现输入端的输入波形,而不管输入波形的形状和宽窄如何。

B <= transport a after 20ns;a b0 10 20 30 40 50ns 传输延时示例LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY mux4_1 ISPORT(d0,d1,d2,d3 : IN STD_LOGIC;sel : IN STD_LOGIC_VECTOR(1 DOWNTO 0);q : OUT STD_LOGIC);END mux4_1;ARCHITECTURE behav OF mux4_1 ISBEGINWITH sel SELECTq<=d0 AFTER 10 ns WHEN ”00”,d1 AFTER 10 ns WHEN ”01”,d2 AFTER 10 ns WHEN ”10”,d3 AFTER 10 ns WHEN ”11”,’X’ AFTER 10 ns WHEN others;END behav;5.1.3 多驱动器描述语句一条并发代入语句创建一个驱动器,当多个驱动器同时驱动一个信号时,则带来多驱动器问题,多驱动器问题由决断函数解决。

所谓决断函数是指当多个驱动器同时驱动一个信号时,定义输出哪一个值的函数。

决断函数用于声明一个决断信号。

下图为一个信号具有2个驱动源的情况。

a bya b a AND b a OR b y 0 0 0 0 0 0 1 0 1 x 1 0 0 1 x 1 1 1 1 1求解多重驱动信号的真值表图示逻辑的VHDL 程序:ARCHITECTURE behav OF myd IS SIGNAL y : reso X01; BEGIN y<=a AND b; y<=a OR b; END behav;y 的决断函数模型:FUCTION reso(a,b :X01) RETURN X01 IS BEGINIF a/=b THEN RETURN(’X’); ELSE RETURN(a) ; END IF ; END reso;当多个进程同时驱动一个信号时,会带来多驱动器问题。

多驱动器问题由决断函数解决。

逻辑设计时应避免多驱动。

std_logic_1164((标准逻辑)的判决函数如下表所示。

CONSTANT resolution_table : stdlogic_table := (-- ----------------------------------------------------------- | U X 0 1 Z W L H - | |-- ---------------------------------------------------------( 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U' ), -- | U | ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ), -- | X | ( 'U','X', '0', 'X', '0', '0', '0', '0','X' ), -- | 0 | ( 'U','X', 'X','1', '1', '1', '1', '1', 'X' ), -- | 1 | ( 'U', 'X', '0', '1', 'Z', 'W', 'L', 'H', 'X' ), -- | Z | ( 'U', 'X', '0', '1', 'W', 'W', 'W', 'W', 'X' ), -- | W | ( 'U', 'X', '0', '1', 'L', 'W', 'L', 'W', 'X' ), -- | L | ( 'U', 'X', '0', '1', 'H', 'W', 'W', 'H', 'X' ), -- | H | ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ) -- | - | );FUNCTION resolved ( s : std_logic_vector ) RETURN std_logic IS V ARIABLE result : std_logic := ‘Z’; -- weakest state defaultBEGINIF (s'LENGTH = 1) THEN RETURN s(s'LOW);ELSEFOR i IN s'RANGE LOOPresult := resolution_table(result, s(i));END LOOP;END IF;RETURN result;END resolved;5.1.4 GENERIC语句GENERIC语句用于不同层次之间的参数传递。

相关文档
最新文档