第6章 VHDL程序设计
VHDL课件
2) 半加器的逻辑描述 LIBRARY IEEE; -- IEEE库的使用说明 USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS --实体h_adder的说明 PORT(a,b:IN STD_LOGIC; co,so:OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE art2 OF h_adder IS -- 实体h_adder的结构体art2的说明 BEGIN so<=(a OR b) AND (a NAND b); co<=NOT (a NAND b); END ARCHITECTURE art2;
(5) 在结构体art3中,COMPONENT→END COMPONENT 语句结构对所要调用的或门和半加器两元件 作了声明(COMPONENT DECLARATION),并由SIGNAL 语句定义了三个信号d、e和f,作为中间信号转存点,以利于 几个器件间的信号连接。 “PORT MAP( )”语句称为元件例化语句(COMPONENT INSTANTIATION)。所谓例化,在电路板上,相当于往上 装配元器件;在逻辑原理图上,相当于从元件库中取了一个 元件符号放在电路原理图上,并对此符号的各引脚进行连线。 例化也可理解为元件映射或元件连接,MAP是映射的意思。 例如,语句“U2:h_adder PORT MAP(a=>e,b=>cin, co=>f,so=>sum)”表示将实体h_adder描述的元件U2的 引脚信号a、b、co和so分别连向外部信号e、cin、f和sum。 符号“=>”表示信号连接。
3.1.3 VHDL程序设计约定 为了便于程序的阅读和调试,对VHDL程序设计特作如下约 定: (1) 语句结构描述中方括号“[ ]”内的内容为可选内容。 (2) 对于VHDL的编译器和综合器来说,程序文字的大小 写是不加区分的。 (3) 程序中的注释使用双横线“--”。在VHDL程序的任何 一行中,双横线“--”后的文字都不参加编译和综合。 (4) 为了便于程序的阅读与调试,书写和输入程序时,使 用层次缩进格式,同一层次的对齐,低层次的较高层次的缩 进两个字符。 (5) 考虑到MAX+plusII要求源程序文件的名字与实体名 必须一致,因此为了使同一个VHDL源程序文件能适应各个 EDA开发软件上的使用要求,建议各个源程序文件的命名均 与其实体名一致。
项目六 数码管显示译码器的VHDL设计
四、项目实施——1. QuartusⅡ VHDL设计输入法
(3) 项目编译
分析综合
点击Quartus Ⅱ软件工具条上的快捷按钮 进行分析综合。
,对抢答器工程
根据提示信息,处理错误,直至无误为止。
四、项目实施——1. QuartusⅡ VHDL设计输入法
四、项目实施
硬件平台准备
微机一台(Windows XP系统、安装好 Quartus Ⅱ5.0等相关软件)
EDA学习开发板一块 USB电源线一条 ISP下载线一条。
四、项目实施——1. QuartusⅡ VHDL设计输入法
(1) 创建工程
在D:\altera\Quartus50\example\seg7下建立项目seg7 选择EPM240T100C5作为目标器件
三、项目分析
VHDL源程序
--****************************************************** --seg7.vhd library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; --********************************************** entity seg7 is
输入端 ABCD 0000 0001 0010 0011 0100 0101 0110 0111
输出端 abcdefgh 11111100 01100000 11110010 11110010 01100110 10110110 10111110 11100000
2023年大学_EDA技术与VHDL第二版(潘松著)课后习题答案下载
2023年EDA技术与VHDL第二版(潘松著)课后习题答案下载EDA技术与VHDL第二版(潘松著)课后答案下载第1章 EDA技术概述1.1 EDA技术及其发展1.1.1 EDA技术的发展1.1.2 EDA技术的涵义1.1.3 EDA技术的基本特征1.2 EDA技术的主要内容及主要的EDA厂商1.2.1 EDA技术的主要内容1.2.2 主要EDA厂商概述1.3 EDA技术实现目标1.3.1 超大规模可编程逻辑器件1.3.2 半定制或全定制ASIC1.3.3 混合ASIC1.4 EDA技术应用1.4.1 EDA技术应用形式1.4.2 EDA技术应用场合1.5 EDA技术的发展趋势1.5.1 可编程器件的发展趋势1.5.2 软件开发工具的发展趋势1.5.3 输入方式的发展趋势__小结思考题和习题第2章大规模可编程逻辑器件2.1 可编程逻辑器件概述2.1.1 PLD的'发展进程2.1.2 PLD的种类及分类方法2.2 简单可编程逻辑器件2.2.1 PLD电路的表示方法及有关符号 2.2.2 PROM基本结构2.2.3 PLA基本结构2.2.4 PAL基本结构2.2.5 GAL基本结构2.3 复杂可编程逻辑器件2.3.1 CPLD基本结构2.3.2 Altera公司器件2.4 现场可编程逻辑器件2.4.1 FPGA整体结构2.4.2 Xilinx公司FPGA器件2.5 在系统可编程逻辑器件2.5.1 ispLSl/pLSl的结构2.5.2 Lattice公司ispLSI系列器件 2.6 FPGA和CPLD的开发应用2.6.1 CPLD和FPGA的编程与配置2.6.2 FPGA和CPLD的性能比较2.6.3 FPGA和CPLD的应用选择__小结思考题和习题第3章 EDA设计流程与开发3.1 EDA设计流程3.1.1 设计输入3.1.2 综合3.1.3 适配3.1.4 时序仿真与功能仿真3.1.5 编程下载3.1.6 硬件测试3.2 ASIC及其设计流程3.2.1 ASIC设计方法3.2.2 一般的ASIC设计流程3.3 可编程逻辑器件的开发环境 3.4 硬件描述语言3.5 IP核__小结思考题和习题第4章硬件描述语言VHDL4.1 VHDL概述4.1.1 VHDL的发展历程4.1.2 VHDL的特点4.2 VHDL程序基本结构4.2.1 实体4.2.2 结构体4.2.3 库4.2.4 程序包4.2.5 配置4.3 VHDL基本要素4.3.1 文字规则4.3.2 数据对象4.3.3 数据类型4.3.4 运算操作符4.3.5 VHDL结构体描述方式 4.4 VHDL顺序语句4.4.1 赋值语句4.4.2 IF语句4.4.3 等待和断言语句4.4.4 cASE语句4.4.5 LOOP语句4.4.6 RETIARN语句4.4.7 过程调用语句4.4.8 REPORT语句4.5 VHDL并行语句4.5.1 进程语句4.5.2 块语句4.5.3 并行信号代人语句4.5.4 并行过程调用语句4.5.5 并行断言语句4.5.6 参数传递语句4.5.7 元件例化语句__小结思考题和习题第5章 QuartusⅡ软件及其应用5.1 基本设计流程5.1.1 建立工作库文件夹和编辑设计文件 5.1.2 创建工程5.1.3 编译前设计5.1.4 全程编译5.1.5 时序仿真5.1.6 应用RTL电路图观察器5.2 引脚设置和下载5.2.1 引脚锁定5.2.2 配置文件下载5.2.3 AS模式编程配置器件5.2.4 JTAG间接模式编程配置器件5.2.5 USBBlaster编程配置器件使用方法 __小结思考题和习题第6章 VHDL应用实例6.1 组合逻辑电路设计6.1.1 基本门电路设计6.1.2 译码器设计6.1.3 数据选择器设计6.1.4 三态门设计6.1.5 编码器设计6.1.6 数值比较器设计6.2 时序逻辑电路设计6.2.1 时钟信号和复位信号6.2.2 触发器设计6.2.3 寄存器和移位寄存器设计6.2.4 计数器设计6.2.5 存储器设计6.3 综合实例——数字秒表的设计__小结思考题和习题第7章状态机设计7.1 一般有限状态机7.1.1 数据类型定义语句7.1.2 为什么要使用状态机 7.1.3 一般有限状态机的设计 7.2 Moore型有限状态机设计 7.2.1 多进程有限状态机7.2.2 单进程有限状态机7.3 Mealy型有限状态机7.4 状态编码7.4.1 状态位直接输出型编码 7.4.2 顺序编码7.4.3 一位热码编码7.5 状态机处理__小结思考题和习题第8章 EDlA实验开发系统8.1 GW48型实验开发系统原理与应用8.1.1 系统性能及使用注意事项8.1.2 GW48系统主板结构与使用方法8.2 实验电路结构图8.2.1 实验电路信号资源符号图说明8.2.2 各实验电路结构图特点与适用范围简述8.3 GW48CK/GK/EK/PK2系统信号名与芯片引脚对照表 __小结思考题和习题第9章 EnA技术实验实验一:全加器的设计实验二:4位加减法器的设计实验三:基本D触发器的设计实验四:同步清零计数器的设计实验五:基本移位寄存器的设计串人/串出移位寄存器实验六:同步预置数串行输出移位寄存器的设计实验七:半整数分频器的设计实验八:音乐发生器的设计实验九:交通灯控制器的设计实验十:数字时钟的设计EDA技术与VHDL第二版(潘松著):内容简介《EDA技术与VHDL》主要内容有Altera公司可编程器件及器件的选用、QuartusⅡ开发工具的使用;VHDL硬件描述语言及丰富的数字电路和电子数字系统EDA设计实例。
等精度频率计设计VHDL程序
等精度频率计设计VHDL程序下面是一个基于VHDL的精度频率计设计程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.NUMERIC_STD.ALL;entity Frequency_Counter isgenericTOLERANCE : integer := 1; --容差范围REF_FREQ : natural := 100; --参考频率BIT_WIDTH : integer := 16 --输出频率计数器宽度portclk : in std_logic;reset : in std_logic;frequency : out std_logic_vector(BIT_WIDTH - 1 downto 0) --计数器输出值end entity Frequency_Counter;architecture Behavioral of Frequency_Counter issignal count : unsigned(BIT_WIDTH - 1 downto 0); --计数器signal count_enable : std_logic; --计数使能信号signal ref_counter : unsigned(ceil(log2(real(REF_FREQ * CLK_FREQ) / TOLERANCE)) - 1 downto 0); --参考计数器beginprocess(clk, reset)beginif reset = '1' thencount <= (others => '0'); --复位为0count_enable <= '0';ref_counter <= (others => '0');elsif rising_edge(clk) thencount <= count + 1; --计数信号递增end if;if ref_counter = REF_FREQ - 1 thenelseref_counter <= ref_counter + 1; --参考计数器递增end if;end if;end process;process(clk, reset)beginif reset = '1' thencount_enable <= '0';elsif rising_edge(clk) thencount_enable <= '1'; --参考频率达到后启用计数信号elsecount_enable <= '0';end if;end if;end process;frequency <= std_logic_vector(count);end architecture Behavioral;在此设计中,我们定义了一个Frequency_Counter实体,它有几个泛型参数,包括CLK_FREQ(输入时钟频率),TOLERANCE(容差范围),REF_FREQ(参考频率)和BIT_WIDTH(输出频率计数器的宽度)。
VHDL第六讲_VHDL元件例化语句最新版
FOR- GENERATE 模优选式文档生成语句的书写格16
其中循环变量的值在每次的循环中都将发生变化;离散范围用来指定 循环变量的取值范围,循环变量的取值将从取值范围最左边的值开场并且 递增到取值范围最右边的值,实际上也就限制了循环的次数;循环变量每 取一个值就要执行一次GENERATE语句体中的并行处理语句;最后FORGENERATE模式生成语句以保存字END GENERATE [标号:];来完毕 GENERATE语句的循环.
u1:nand_2 port map(a,b,y1);--元件例化 u2:nand_2 port map(c,d,y2); u3:nand_2 port map(y1,y2,y); end one;
优选文档
7
例1:利用2输入与非门元件,设计4输入的与 非与非电路.
方法2:将元件声明放在程序包里进展说明
优选文档
19
思考题
设计一位二进制全加器,然后利用forgenerate生成语句实现4位二进制全加器, 并仿真验证设计结果.
优选文档
优选文档
14
1位D触发器的VHDL程序文件: library ieee; use ieee.std_logic_1164.all; entity shift_reg1 is
port(clk:in std_logic; D:in std_logic; Q:out std_logic);
end entity; architecture one of shift_reg1 is begin
end mynand_4; architecture one of mynand_4 is signal y1,y2:std_logic; begin
第6章(486)
第6章 VHDL程序设计实验 图6.3 工程属性参数
第6章 VHDL程序设计实验
2.逻辑门的RTL描述 编写MY_AND2实体的VHDL代码。 (1) 选择菜单栏中的 Project→New Source。 (2) 在 Select Source Type 窗口中,选择左侧VHDL Module,在右侧 File Name栏中填入文件名MY_AND2,单 击Next按钮后弹出Define Module窗口,如图6.4所示。
entity MY_AND2 is port ( A: in STD_LOGIC; B: in STD_LOGIC; C: out STD_LOGIC);
end MY_AND2;
architecture BEHAVIORAL of MY_AND2 is begin
C <= A and B; end BEHAVIORAL;
(2) 将AND_OR.VHD的输入定义为一个总线,即STD_ LOGIC_VECTOR类型。
(3) 在AND_OR模块中,必须声明和例化被调用的下层 模块MY_AND2和MY_OR2。
(4) 在AND_OR模块中,必须显式地定义用于下层模块 互联的连线信号。
(5) MY_OR2和AND_OR模块的代码可以参照本实验后 面给出的代码实例。
本实验中会用到3个文件,文件对应的代码分别下:
MY_AND2.VH D
library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_ARITH. all; use IEEE.STD_LOGIC_UNSIGNED. all;
第6章 VHDL程序设计实验
end MY_AND2;
第6章 VHDL程序设计实验
VHDL
1.3 VHDL的作用
HDL打破软、硬件的界限 传统的数字系统设计分为:
硬件设计(硬件设计人员)
软件设计(软件设计人员) 是硬件设计者和 EDA工具之间的界面
EDA工具及 HDL的流行,使电子系 统向集成化、大规模和高速度等方向发 展。 美国硅谷约有80%的 ASIC和 FPGA/CPLD已采用 HDL进行设计。
一般情况下 USE定义区的格式写成
LIBRARY IEEE; USE IEE.STD_LOGIC_1164.ALL; USE IEE.STD_LOGIC_ARITH.ALL; USE IEE.STD_LOGIC_UNSIGNED.ALL;
2.2 实体声明
实体声明:定义系统的输入输出端口
语法:
ENTITY <entity_name> IS Generic Declarations(类属表); Port Declarations(端口表); END <entity_name>; (1076-1987 version) END ENTITY <entity_name> ; ( 1076-1993 version)
子类型声明;常量声明。
END <包名> ; (1076-1987) END PACKAGE BODY <包名> ; (1076-1993)
例:程序包声明
2、 库
含义:存放预先完成的程序包和数据集合体 的仓库,包含了包或包的汇集 格式:LIBRARY 库名; 种类: STD 库(默认库) IEEE库 WORK库(默认库) 面向ASIC的库 用户定义库
硬件描述语言VHDL
1 概述
1.1 什么是VHDL(HDL)?
vhdl 程序的基本结构 vhdl程序一般由5个部分组成
块语句
块标号:BLOCK[保护表达式] [类属子句;] [端口子句;] [块说明部分;] BEGIN <块语句部分;> END BLOCK 块标号;
类属子句用于参数的定义;端口子句用于信号的定义; 块说明部分对该块要用到的信号、常数、元件和子程序 等进行说明;块语句部分对该块的功能进行描述,块语 句部分的语句是并行执行的,和书写顺序无关。
IEEE: IEEE认可的标准库 std_logic_1164:定义了 std_logic, std_logic_vector, std_ulogic, std_ulogic_vector 等数据类型
VHDL 程序的基本结构
VHDL程序一般由5个部分组成: Library(库) Package(程序包)
CONFIGURATION small_count OF counter IS FOR count_255 END FOR; END small_count; CONFIGURATION big_count OF counter IS FOR count_64K END FOR; END big_count;
Library(程序库) Package(程序包)
Entity(实体) Architecture(构造体) Configuration(配置)
库和程序包
库 :存放已编译过的实体、构造体、 程序包和配置 程序包:由一组对外可见的信号、常量、 数据类型、子程序、属性等组成 的程序集合
库和程序包的使用
子程序调用语句 过程名(参数表);
子程序调用语句若位于 “构造体” 或 “块语句” 中,它就是并发语句; 若位于 “进程语句” 或 另一个“子 程序”中,它就是顺序语句;
实验六 基于VHDL语言的分频器设计与实现
实验六基于VHDL语言的分频器设计与实现报告一、实验目的1、进一步掌握VHDL语言的基本结构及设计的输入方法。
2、掌握VHDL基本逻辑电路的综合设计应用。
二、实验原理在数字电路系统中,分频电路应用得十分广泛。
例如,工程人员常常使用分频电路来得到数字通信中的帧头信号、选通信号以及中断信号等。
因此,分频电路在数字电路系统的设计中也应该作为重要的基本电路来掌握,从而给今后的一些设计带来方便。
三、实验内容1、设计并实现一个6分频的分频电路,要求其输出信号的占空比为50%。
请分析分频电路设计原理并编写VHDL语言程序,利用Max+PlusII开发软件对其进行编译和仿真。
6分频电路实现程序代码如下:2、在实际数字电路设计过程中,往往需要得到占空比不是1:1的分频时钟,方法是:首先描述一个计数器电路,然后根据计数器电路的并行输出信号来决定输出时钟的高低电平。
请设计、编写VHDL 语言程序实现分频后时钟信号的占空比为1:15的16分频电路,并利用Max+PlusII开发软件对其进行编译和仿真。
四、实验设计1.程序代码:图library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clk_div6 isport(clk:in std_logic;clk_out:out std_logic);end clk_div6;architecture rtl of clk_div6 issignal clk_temp:std_logic;beginprocess(clk)variable counter:integer range 0 to 15;constant md:integer:=2;beginif clk'event and clk='1'thenif counter=md thencounter:=0;clk_temp<=not clk_temp;elsecounter:=counter+1;end if;end if;end process;clk_out<=clk_temp;end rtl;2.仿真结果:五、实验结果分析本实验利用VHDL语言设计分频电路,目的在于进一步掌握VHDL语言的基本结构及设计的输入方法,掌握VHDL基本逻辑电路的综合设计应用。
配套课件 EDA技术与VHDL程序设计基础教程
它支持原理图、VHDL和Verilog 语言文本输入方式和波形或EDIF 格式的文件作为输入,且支持这 些文件的混合设计。
Quartus II的GUI界面
EDA技术与VHDL程序开发基础教程
五、EDA集成开发工具
ISE+ModelSim
ispLEVER
EDA技术与VHDL程序开发基础教程
。(b)中三条竖线A、B、C也为输入线,输入到或门的横线为和线。和线与
输入线的交叉点为编程点。
当输入线与和线相连通时,
在编程点处以“×”表示。
Y=AB
可以看出,图中电路表示
Y=A+B+C
的逻辑表达式分别为Y=AB
和Y=A+B+C。
ABC
ABC
(a)
(b)
EDA技术与VHDL程序开发基础教程
三、 CPLD的基本结构和工作原理
EDA技术与VHDL程序开发基础教程
第1章 EDA概述
重点内容:
EDA技术发展和应用 EDA工程设计流程 EDA集成开发工具
EDA技术与VHDL程序开发基础教程
一、EDA工程简介
EDA(Electronic Design Automation)工程是现代电子信息工程领 域中一门发展迅速的新技术。
流程
需求分析
算法设计 (Algorithm Optimization)
构架设计 (Architecture Exploration)
RTL 设计 (RTL Design)
RTL 验证 (RTL Verification)
综合 (Synthesis)
门级验证 (Gate-level Verification)
VHDL语言程序设计中INOUT端口的使用与实例分析
目录1、双向电路的基本格式 (2)2、控制条件 (3)2.1、双向信号作一个信号的输入,作另一信号的输出 (3)2.2、双向信号既做输出又做输出 (4)3、实例说明-INOUT端口仿真暨三态门仿真 (6)3.1、三态门的原理与仿真三态总线 (6)3.3、VHDL 的三态门实现与仿真 (7)参考文献 (12)VHDL语言程序设计中INOUT端口的使用与实例分析摘要:VHDL是由美国国防部为描述电子电路所开发的一种语言,其全称为(Very High Speed Integrated Circuit) Hardware Description Language。
与另外一门硬件描述语言Verilog HDL相比,VHDL 更善于描述高层的一些设计,包括系统级(算法、数据通路、控制)和行为级(寄存器传输级),而且VHDL 具有设计重用、大型设计能力、可读性强、易于编译等优点逐渐受到硬件设计者的青睐。
但是,VHDL是一门语法相当严格的语言,易学性差,特别是对于刚开始接触VHDL的设计者而言,经常会因某些小细节处理不当导致综合无法通过。
VHDL共定义了5种类型的端口,分别是In, Out,Inout, Buffer及Linkage,实际设计时只会用到前四种。
本文主要讨论讨论如何正确使用INOUT端口。
关键词:VHDL;INOUT端口;三态门原理1、双向电路的基本格式工程应用中,双向电路是设计者不得不面对的问题.在实际应用中,数据总线往往是双向的.如何正确处理数据总线是进行时序逻辑电路设计的基础.在程序设计过程中,关键技术在于:实体部分必须对端口属性进行申明,端口属性必须为inout类型,在构造体需要对输出信号进行有条件的高阻控制.在双向电路的处理问题上,常用的处理方式有两种,在介绍双向电路的处理方式之前,先看看双向电路的基本格式:ENTITY bidir_pin IS(bidir : INOUT std_logic;oe, clk, from_core : IN std_logic;to_core : OUT std_logic;……END bidir_pin;ARCHITECTURE behavior OF bidir_pin ISBEGINbidir <= from_core WHEN oe=‘1’ ELSE “ZZZZ”;to_core <= bidir;END behavior;该程序揭示了双向电路的处理技巧,首先在实体部分bidir属于双向信号,在端口定义时,端口属性为inout类型,即把bidir信号作为输入三态输出. 语句“bidir <= from_core WHEN oe=‘1’ ELSE “ZZZZ”;”表示bidir信号三态输出,语句”to_core <= bidir;”把bidir信号作为输入信号.由此可见,双向电路在程序设计中,didir输入当着普通的in类型,而在输出时,需要加一定的控制条件,三态输出.问题的关键在于:如何确定这个条件?2、控制条件2.1、双向信号作一个信号的输入,作另一信号的输出ENTITY bidir ISPORT(bidir : INOUT STD_LOGIC_VECTOR (7 DOWNTO 0);oe, clk : IN STD_LOGIC;from_core : IN STD_LOGIC_VECTOR (7 DOWNTO 0);to_core : OUT STD_LOGIC_VECTOR (7 DOWNTO 0));END bidir;ARCHITECTURE logic OF bidir ISSIGNAL a : STD_LOGIC_VECTOR (7 DOWNTO 0);SIGNAL b : STD_LOGIC_VECTOR (7 DOWNTO 0);BEGINPROCESS (clk)BEGINIF clk = '1' AND clk'EVENT THENa <= from_core;to_core <= b;END IF;END PROCESS;PROCESS (oe, bidir)BEGINIF( oe = '0') THENbidir <= "ZZZZZZZZ";b <= bidir;ELSEbidir <= a;b <= bidir;END IF;END PROCESS;END logic;这种设计方式叫做寄存双向信号的方法.本设计中bidir为双向信号,from_core为数据输入端,to_core为数据输出端,oe为三态输出使能,clk为读写数据的时钟.在程序设计中,需要定义两个signal a和b信号.a信号用于输入数据from_core的寄存器,b用于输出数据to_core的寄存器.采用寄存器的方法需要设计两个进程,一个进程把a,b信号在时钟的控制下负责端口的输入信号from_core和端口输出信号to_core的连接,这一步实现了寄存双向的功能.另外一个进程则负责信号a,b和双向口之间的赋值关系.本设计只揭示了简单的双向信号操作方式,即bidir既可以作为from_core的输出,又可以作为to_core的输入2.2、双向信号既做输出又做输出上例是最简单的双向信号应用的特例.在实际的工程中,双向信号既做信号的输入,又做信号的输出,常见的数据总线就是这种操作模式.library IEEE;use IEEE.STD_LOGIC_1164.all;entity dir_data isport(clk : in STD_LOGIC;rst : in STD_LOGIC;rw : in STD_LOGIC;address : in STD_LOGIC_VECTOR(1 downto 0);data : inout STD_LOGIC_VECTOR(7 downto 0));end dir_data;architecture arc_dir of dir_data issignal data_in : STD_LOGIC_VECTOR(7 downto 0);signal data_out: STD_LOGIC_VECTOR(7 downto 0);signal reg_a: STD_LOGIC_VECTOR(7 downto 0);signal reg_b: STD_LOGIC_VECTOR(7 downto 0);begindata_in<=data;d1:process(clk,rst,rw)beginif rst='1' thenreg_a<= (others=>'0');reg_b<= (others=>'0');elsif clk'event and clk='1' then if rw='1' thenif address="00" thenreg_a<=data_in;elsif address="01" thenreg_b<=data_in;else null;end if;else null;end if;else null;end if;end process d1;d2:process(clk,rw,reg_a,reg_b) beginif clk'event and clk='1' thenif rw='0' thenif address="00" thendata_out<=reg_a;elsif address="01" thendata_out<=reg_b;else null;end if;else null;end if;else null;end if;end process d2;data<=data_out when (rw='0' and address(1)='0') else(others=>'Z');end arc_dir;3、实例说明-INOUT端口仿真暨三态门仿真3.1、三态门的原理与仿真三态总线三态输出缓冲器,即三态门,是指逻辑门的输出除有高、低电平两种状态外,还有第三种状态——高阻状态的门电路。
《VHDL语言程序设计》课程教学大纲
《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。
《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。
自动售货机控制模块VHDL程序设计及FPGA实现
作 EE 的 tr公 Au o to , 子 设 计 自动 化 )技 术 其 优 劣 。 目前 ,VHDL 为 I E 工 A l e a 司 的 最 新 可 编 程 逻 辑 器 件 t ma i n 电 a U I 8 0 r 成 为 电 子 设 计 工 程 师 的 新 宠 。 ED A 业 标 准 硬 件 描 述 语 言 ,得 到 众 多EDA 开 发 工 具 Qu t S I . , 实 现 芯 tr公 0 技术 以计算机 为 工具 完成 数字 系统 的 公司 的支持 ,在 电子 工程领域 已经成 片 选 用 Ale a 司 FLEX1K系 列 的 逻 辑综 合 、布 局布线 和设 计仿真 等工 为事 实上 通 用 硬 件 描 述 语 言 。 作 。 电路 设 计 者 只 需 要 完 成 对 系 统 功
需 集 中精 力进 行电子 系统 的设计和 性 的硬 币 。另外 设置一 复位 按钮 , 当复 状 态机的VHDL 表述丰 富多样 ,程 序
母嚣奄寻
21鼎{ 9{ 舟
47
层 次 分 明 , 构 清 晰 ,易 读 易 懂 ;在 结
c mb o
—
o t us u p t表示。c mb o t us0 o _ up t() s t<= 0 一 异 步 复 位 te S; 一 a
EPFIK1LC8 — ;首先 在计算机上 O 0 44
本 文 采 用 VHDL 为 工 具 描 述 了 完成程 序设 计 、编译及 时序 仿真 ,然 作
能 的 描述 , 可 以 由计 算机 软 件进 行 就
自动 售 货 机 控 制 模 块 的 逻 辑 控 制 电 后 将 经 过 验 证 的 设 计文 件 下 载 到 选 择
可 以 避 免 这 些 烦 琐 的 过 程 ,直 接 利 用
vhdl程序设计教学大纲
《VHDL硬件描述语言》教学大纲一、课程基本信息课程名称:VHDL硬件描述语言课程编码:31082008课程类别:学科基础选修课程适用专业:计算机科学与技术开课学期:第3学年第1学期课程学时:32课程学分:2先修课程:数字逻辑电路并修课程:算法分析课程简介:vhdl是计算机科学与技术专业选修的基础课程,主要讲述vhdl硬件描述语言的基础知识,以及用vhdl硬件描述语言设计的基本理论和方法。
数字逻辑电路课程包括vhdl程序结构和描述、vhdl 顺序语句,并行语句,数字逻辑单元的设计等内容。
二、课程教育目标通过vhdl 语言课程的学习,使学生掌握vhdl硬件描述语言的基本原理和设计方法,运用vhdl语言设计基本的数字电路设计,为以后学习计算机组成原理、计算机配置与维护等后续课程以及从事数字电子技术领域的工作打下扎实的基础。
三、课程教学内容、要求及学时安排第一章 EDA技术概述和 vhdl语言【教学内容】1. EDA技术概述2. vhdl 语言概述【教学要求】1.了解EDA技术和vhdl语言。
【教学方法】理论联系实际,课堂讲授,课后作业等。
【学时】1第二章 vhdl语言基础【教学内容】1. vhdl程序结构2. vhdl 语言描述3. vhdl语言的数据类型4. vhdl 语言的顺序描述语句5. vhdl 语言的并发描述语句【教学要求】1.掌握vhdl语言的顺序描述语句,并发描述语句。
2.熟悉vhdl语言的结构。
3.了解vhdl语言的数据类型。
【教学方法】理论联系实际,课堂讲授,课后作业等。
【学时】9第三章数字逻辑单元设计【教学内容】1.组合逻辑电路设计2.数据运算单元设计3. 时序逻辑电路设计【教学要求】1.掌握组合逻辑电路设计和时序逻辑电路设计。
2.熟悉数据运算单元设计。
3.了解总线缓冲单元设计。
【教学方法】理论联系实际,课堂讲授,课后作业等。
【学时】10四、考核及成绩评定(一)命题原则与思想综合考核所学知识、各章节的知识点、要求掌握的基本知识和基本原理,试题难易适中,学习成绩具有一定的区分度。
乐曲硬件演奏电路的VHDL设计报告+程序
一、设计题目:乐曲硬件演奏电路的VHDL设计二、设计目标:了解一般乐曲演奏电路设计设计方法,学习VHDL语言,熟悉EDA设计软件QuartusII和MAX+plusⅡ,加强独立完成电子设计的能力。
(1)能够播放“梁祝”乐曲。
(2)能够通过LED显示音阶。
(3)(选作)具有“播放/停止”功能,并在此基础上实现“按键演奏”的电子琴功能。
主芯片型号为FLEX10K10LC84-4三、实验电路的工作原理:(演奏电路逻辑图)组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能够连续演奏所需的两个基本要素,设计演奏电路的关键就是获得这两个要素所对应的数值以及通过纯硬件的手段来利用这些数值实现所希望乐曲的演奏效果。
演奏电路逻辑图有三部分:音乐节拍和音调发生器、简谱码对应的分频预置数查表电路、数控分频与演奏发生器。
演奏电路逻辑图:四、设计内容:1.完成程序的编辑工作。
2.将音乐数据制作成LMP_ROM文件.3.将程序加载到MAX+plusⅡ中进行编译、仿真,并保存仿真结果。
4.到实验室进行下载验证。
引脚进行锁定,然后下载到实验芯片中观察实验结果。
五、仿真结果:1.音乐节拍和音调发生器(NoteTabs.VHD)notetabs模块中设置了一个8位二进制计数器(计数最大值138),作为音符数据ROM的地址发生器。
这个计数器的计数频率选为4Hz,即每一个计数值的停留时间为0.25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间。
随着notetabs模块中的计数器按4Hz的时钟速率作为加法计数时,即随地址值递增时,音符数据ROM中的音符数据将从ROM中通过ToneIndex[3..0]端口输向ToneTaba模块,“梁祝”乐曲就开始连续自然的演奏起来了。
Notetabs模块仿真图:2.简谱码对应的分频预置数查表电路(T oneTaba.VHD)音符的持续时间需根据乐曲的速度及每个音符的节拍数来确定,tonetaba模块的功能首先是为speakera提供决定所发音符的预置数,而此数在speakera输入口停留的时间即为此音符的节拍值。
基于ep4ce6f17c8的vhdl程序的课程设计
基于ep4ce6f17c8的vhdl程序的课程设计基于 EP4CE6F17C8 的 VHDL 程序的课程设计可以涉及诸多内容,比如数字逻辑电路设计、CPU 控制器设计、图像处理等等。
下面是一个关于数字逻辑电路设计的示例课程设计参考内容。
课程设计题目:基于 EP4CE6F17C8 的 4 位全加器设计与仿真设计目标:通过 VHDL 程序设计和仿真实现一个 4 位全加器电路,验证其正确性,并通过 Altera Quartus II 软件将 VHDL 代码综合为可在 FPGA 上运行的电路。
设计要求:1. 使用 VHDL 语言描述 4 位全加器电路的结构和功能。
2. 使用 Test Bench 对 4 位全加器电路进行仿真验证。
3. 使用 Altera Quartus II 软件将 VHDL 代码综合为可在EP4CE6F17C8 FPGA 上运行的电路。
4. 将设计过程、仿真结果和综合结果总结在实验报告中。
实验步骤:1. 理解全加器电路的功能和数学模型,并将其转化为 VHDL 代码。
全加器电路具有输入 A、输入 B 和进位输入 Cin,输出和 S 以及进位输出 Cout。
2. 编写 Test Bench,生成测试用例,并将预期输出与仿真结果进行比较,验证设计的正确性。
3. 使用 Altera Quartus II 在设计工具中创建新工程。
4. 导入 VHDL 代码文件和 Test Bench 文件。
5. 设置设计工具的综合和约束条件。
6. 进行综合,并检查综合结果是否满足设计要求。
7. 如果综合结果满足要求,进行布局布线,生成可在EP4CE6F17C8 FPGA 上运行的电路映像文件。
8. 将电路映像文件下载到 EP4CE6F17C8 FPGA 上,验证其在硬件平台上的功能和正确性。
9. 总结设计过程,包括遇到的问题、经验教训和需要改进的地方,并撰写实验报告。
通过这个课程设计,学生可以深入了解数字逻辑电路设计的过程和方法,掌握 VHDL 程序设计和仿真的技术,并了解FPGA 的综合和布局布线流程。
VHDL程序设计教程习题解答
VHDL程序设计教程习题参考解答第1章思考题解答1.什么是VHDL?简述VHDL的发展史。
答:VHDL是美国国防部为电子项目设计承包商提供的,签定合同使用的,电子系统硬件描述语言。
1983年成立VHDL语言开发组,1987年推广实施,1993年扩充改版。
VHDL 是IEEE标准语言,广泛用于数字集成电路逻辑设计。
2.简述VHDL设计实体的结构。
答:实体由实体名、类型表、端口表、实体说明部分和实体语句部分组成。
根据IEEE标准,实体组织的一般格式为:ENTITY 实体名 IS[GENERIC(类型表);] --可选项[PORT(端口表);] --必需项实体说明部分; --可选项[BEGIN实体语句部分;]END [ENTITY] [实体名];3.分别用结构体的3种描述法设计一个4位计数器。
答:用行为描述方法设计一个4位计数器如下,其它描述方法,读者可自行设计。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;ENTITY countA ISPORT (clk,clr,en:IN STD_LOGIC;Qa,qb,qc,qd:OUT STD_LOGIC);END countA;ARCHITECTURE example OF countA ISSIGNAL count_4:STD_LOGIC_vector (3 DOWNTO 0);BEGINQa <= count_4(0);Qb <= count_4(1);Qc <= count_4(2);Qd <= count_4(3);PROCESS (clk,clr)BEGINIF (clr = '1' ) THENCount_4 <= "0000";ELSIF (clk'EVENT AND clk = '1' ) THENIF (en = '1' ) THENIF (count_4 = "1111") THENcount_4 <= "0000";ELSEcount_4 <= count_4+ '1';END IF;END IF;END IF;END PROCESS;END example;第2章思考题解答1.什么叫对象?对象有哪几个类型?答:在VHDL语言中,凡是可以赋于一个值的客体叫对象(object)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章:VHDL程序设计§6.1 VHDL描述风格·描述风格:VHDL的构造体用于描述整个设计实体的逻辑功能。
对于相同的电路功能行为,可以用不同的描述方式来表达;对于相同的逻辑行为,可以用不同的语句来描述。
·类型:行为描述;寄存器传递(数据流)描述;结构描述。
1.行为描述方式·含义:是对系统数学模型的描述。
·特点:①只表示输入与输出间转换的行为,而不包含任何结构信息;②主要使用函数、过程和进程语句,以算法形式描述数据的变换和传送;③比寄存器传递和结构描述具有更高的抽象性;④行为描述是VHDL编程的核心,可以说,没有行为描述就没有VHDL。
⑤通常不能直接进行逻辑综合,需要转化成RTL描述或结构描述。
·用途:主要用于系统数学模型的仿真或系统工作原理的仿真。
[例6-1]用行为描述方式描述“二选一”电路功能。
LIBRARY IEEE;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY mux2 IS i1PROT( i0, i1, sel : IN STD_LOGIC;q: OUT STD_LOGIC ); selEND mux2;ARCHITECTURE behav OF mux2 ISBEGINCASE sel ISWHEN 0 =>q<=i0 AFTER 10ns;WHEN 1 =>q<=i1 AFTER 10ns;WHEN OTHERS=>q<=‘X‘ AFTER 10ns;END CASEEND behav;2.寄存器传递描述(RTL)方式·含义:是一种明确规定寄存器描述的方法。
·分类:①采用寄存器之间的功能描述(类似行为描述);②采用寄存器硬件直接描述(一一对应)。
·特点:①RTL功能描述编程效率高、难度低,但可用的VHDL语句受限;②RTL硬件描述编程难度大、要求高,但可用的VHDL语句多。
[例6-2] 用RTL硬件方式描述“二选一”电路功能。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY mux2 ISPROT( i0, i1, sel : IN STD_LOGIC;q: OUT STD_LOGIC );END mux2;ARCHITECTURE rtl OF mux2 ISSIGNAL temp1, temp2, temp3, : STD_LOGIC;BEGINTemp1<=i0 AND sel;Temp2<=i1 AND (NOT sel);Temp3<=temp1 OR temp2;q<=temp3;END rtl;3.结构描述方式·含义:在分层设计中,通过高层次的设计模块调用低层次的设计模块来构成一个复杂的逻辑电路的描述方法。
·特点:①结构清晰,与硬件层层对应,如:系统→板→元件;②设计效率高,可方便地将已有设计成果用到新的设计中。
[例6-3]用结构描述方式描述“二选一”电路功能。
U3d0d1LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY mux2 ISPROT(d0, d1, sel : IN BIT;q: OUT BIT );END mux2;ARCHITECTURE struct OF mux2 ISCOMPONENT and2PROT(a, b : IN BIT;c: OUT BIT );END COMPONET;COMPONENT or2PROT(a, b : IN BIT;c: OUT BIT );END COMPONET;COMPONENT invPROT(a : IN BIT;c: OUT BIT );END COMPONET;SIGNAL aa, bb, nsel: BIT;BEGINU1: inv PORT MAP(sel, nsel);U2: and2 PORT MAP(d1, nsel, bb);U3: and2 PORT MAP(d0, sel, aa);U4: or2 PORT MAP(aa, bb, q);END struct;说明:①COMPONENT语句用来说明在该电路中所使用的已生成的模块and2,…;②PORT MAP( ) 语句将已生成模块的端口与所设计的各模块U1,U2…的端口连接起来。
§6.2 组合逻辑电路设计1.基本门电路[例6-4] 用VHDL程序描述二输入“异或”门电路。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY xor2 ISPORT (a, b: IN STD_LOGIC;y: OUT STD_LOGIC);END xor2;ARCHITECTURE xor2_1 OF xor2 ISBEGINy<=a XOR b;END xor2_1;[例6-5] 用VHDL 程序描述二输入“异或”门电路。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY xor2 ISPORT (a, b: IN STD_LOGIC;y: OUT STD_LOGIC);END xor2;ARCHITECTURE xor2_2 OF xor2 ISBEGINPROCESS(a, b)V ARIABLE comb:STD_LOGIC VECTOR( 1 DOWNTO 0 );BEGINComb:= a & b;CASE comb isWHEN ―00‖=> y <=‘0‘;WHEN ―01‖=> y <=‘1‘;WHEN ―10‖=> y <=‘1‘;WHEN ―11‖=> y <=‘0‘;WHEN OTHERS=> y <=‘X‘;END CASE;END PROCESS;END xor2_2;2.加法器(1) 半加器真值表 电路符号二进制输入 和进位b a s co0 0 0 00 1 1 0 1 0 1 01 1 0 1逻辑表达式: S = (a + b)·/(a·b)C0 = /(a·b)[例6-6] 用VHDL 程序描述半加器电路功能。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY half_adder ISPORT (a, b: IN STD_LOGIC;s, co: OUT STD_LOGIC);END half_adder;ARCHITECTURE half1 OF half_adder ISSIGNAL c, d: STD_LOGIC;BEGINc<=a OR b;d<=a NAND b;s<=c AND d;co<=NOT d;END half1;(2)全加器[例6-7] 用VHDL程序描述全加器电路功能。
ab分析:·用两个半加器构成一个全加器;·原理电路图示意;:·采用元件例化语句COMPONET---PORT MAP( )。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY full_adder ISPORT (a, b, ci: IN STD_LOGIC;s, co: OUT STD_LOGIC);END full_adder;ARCHITECTURE full1 OF full_adder ISCOMPONENT half_adderPORT (a, b: IN STD_LOGIC;s, co: OUT STD_LOGIC);END COMPONENT;SIGNAL u0_s, u0_co, u1_s, u1_co: STD_LOGIC;BEGINU0:half_adder PORT MAP(a, b, u0_s,u0_co);U1:half_adder PORT MAP(ci, u0_s, u1_s, u1_co);s<=u1_s;co<=u0_co OR u1_co;END fall1;3.其它编码器(优先级)/译码器(3-8)/选择器(四选一)/缓冲器(单/双)等(自学)§6.3 时序电路设计1.时钟信号(1) 含义:周期性系列脉冲(2) 作用:是描述时序电路的VHDL程序执行的条件。
(3) 描述方式:以进程的形式描述时序电路。
①时钟信号是进程的敏感信号如:PROCESS (clk_signal)BEGINIF (clock_edge_condition) THENSignal_out <= signal_in…END IF;END PROCESS;②时钟信号是进程中的激活信号如:PROCESSBEGINWAIT ON (clock_signal) UNTIL (clock_edge_condition)Signal_out<=signal_in…END PROCESS;(4) 边沿触发①上升沿·图形描述:·语句描述:IF clk=‘1‘AND clk‘LAST_V ALUE=‘0‘AND clk‘EVENT;②下升沿·图形描述:·语句描述:IF clk=‘0‘AND clk‘LAST_V ALUE=‘1‘AND clk‘EVENT;2.复位信号(1) 类型:·同步复位:当复位信号有效且给定时钟边沿到来时,触发器才被复位。
·非同步复位(异步复位):一旦复位信号有效,触发器就被复位。
(2) 描述方式:①同步复位:一定在以时钟为敏感信号的进程中定义,且用IF语句来描述必要的复位条件。
如:PROCESS (clock_signal)BEGINIF (clock_edge_condition) THENIF (reset_condition) THENSignal_out<= reset_value;ELSESignal_out<= signal_in;…END IF;END IF;END PROCESS;②异步复位:在进程的敏感信号中,时钟和复位信号同时存在,用IF语句描述复位条件,用ELSE语句描述时钟事件。
如:PROCESS (reset_signal,clock_signal)BEGINIF (reset_condition) THENSignal_out<= reset_value;ELSIF (clock_event AND clock_edge_condition) THENSignal_out<= signal_in;…END IF;END PROCESS;说明:若没有ELSIF语句,当复位信号变化但复位条件不满足时…。