常用的基本电路模块的建模与设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第 3 章 常用的基本电路模块的建 模与设计
内容提要
本章首先以常用的基本门电路,如非门、与门、与非门、 或非门、与或非门及基本组合逻辑电路,如异或门、同或 门等为对象,通过建立它们的布尔代数模型,以VHDL逻辑 操作符,如“AND、OR、NAND、NOR、XOR及NOT”等对 BOOLEAN型的值进行运算,形成VHDL设计的关键描述语句, 并分别对上述门电路的程序设计进行波形仿真,以验证设 计结果。第二部分内容是介绍了时序逻辑电路的结构原理, 并对同、异步复位D触发器进行VHDL描述和仿真,对二位 二进制计数器进行流程图建模和VHDL编程及波形仿真。第 三部分以二进制加法器、乘法器作为VHDL建模与设计代表, 分别进行了设计原理、建模和程序设计的讨论与研究。最 后介绍了Max+plusII开发系统操作与应用举例。
3.3.1 时序逻辑电路的特点
时序逻辑电路的重要特点是:任一时刻的输出值不仅 与该时刻的输入变量的取值有关,而且与输入变量的历 史情况有关。从结构上来看,时序逻辑电路有两个特点。 第一,时序电路包含组合逻辑电路和存储电路两部分, 由于它要记忆以前的输入和输出信号,所以存储电路是 不可少的。存储电路可以由触发器构成,也可以由带有 反馈的组合电路构成。第二,组合网络至少有一条输出 反馈到存储电路的输入端,存储电路的状态至少有一条 作为组合网络的输入,与其输入信号共同决定网络的输 出。时序逻辑电路的结构如图3-15所示。
知识要点 1. 基本门电路的布尔代数模型及其 VHDL 程 序设计; 2. 时序逻辑电路的特点、建模与设计方法; 3.加法器的VHDL建模与设计方法; 4.乘法器的VHDL建模与设计方法。 5. Max+plusII开发系统操作与应用
教学建议 1.要求复习《数字电路》中与本章相关的知识; 2.熟悉VHDL教材中的关于逻辑门电路和各类触发 器的VHDL描述方法; 3.灵活运用基本逻辑电路模块设计组合电路,并 能正确地进行VHDL程序设计; 4. 熟练掌握 Max+plusII 开发系统的操作与应用; 5.建议学时数为6~8学时。
library ieee; use ieee.std_logic_1164.all; entity not1 is port(a: in std_logic;b: out std_logic);――定义输入端口a,输 出端口b end entity not1; architecture one of not1 is begin b<=not a ; ――逻辑“非”描述 end architecture one;
2. VHDL程序设计 library ieee; use ieee.std_logic_1164.all; entity nor1 is port(a,b: in std_logic;c: out std_logic);――定义输入端口为a,b;输出 端口为c end entity nor1; architecture one of nor1 is begin c<=not (a or b);――“或非”逻辑描述 end architecture one;
3. 波形仿真 检验是否符合 c a b ,如图3-8所示。从图中结果说明程
序设计正确。
图3-8 或非门的波形仿真图
3.2.5 与或非电路
1.模型
与或非门电路的模型如图3-9所示。
图3-9 与或非门模型
用布尔代数表示的VHDL模型为:
f ab cd
(3-5)
用VHDL语言描述为: f<=not ((a and b)or(c and d))。
(3-3)
2.程序设计
在这里,设实体名为nand1,表示一个与非门,当然也可以用其它命 名。其VHDL编程如下:
library ieee; use ieee.std_logic_1164.all; entity nand1 is port(a,b: in std_logic;c: out std_logic);――定义输入端口为a,b;输出端口为c end entity nand1; architecture one of nand1 is begin c<=not (a and b);――“二与非”逻辑描述 end architecture one;
3.1 引言 常用的最基本数字电路模块是数字通信系统中 不可缺少的基本组成部分,如各种基本门电路 可构成基本组合逻辑电路和时序逻辑电路。这 些电路在数字系统中有成熟的电路模型和逻辑 表达式。因此常用的基本数字电路模块的 VDHL模型,就是基本门的电路模型或对应的 布尔代数的数学模型。在这一层次的VHDL建 模就是VHDL-(RTL/门)级建模。
3.仿真验证
仿真波形如图3-4所示。
图3-4 与门的波形验证图
在首先验证完所编写的 VHDL源程序的正确性后,再 进行波形验证,从图3-4可检验它符合与门的逻辑表达 式:c=ab。
3.2.3 与非门电路
1. 模型
与非门的模型图如图3-5所示。
图3-5 与非门模型
其布尔代数模型为:
c ab
用VHDL语言描述为:c<=not (a and b)。
3.2 基本组合逻辑电路的VHDL的模 型与设计
数字逻辑电路可分为两类。一类逻辑电路的输 出只与当时输入的逻辑值有关,而与输入的历 史情况无关,这种逻辑电路称为组合逻辑电路 ( Combinational Logic Circuit)。另一类逻辑 电路的输出不仅与电路当时输入的逻辑值有关, 而且与电路以前输入过的逻辑值有关,这种逻 辑电路称为时序逻辑电路( Sequential Logic Circuit)。 尽管基本门电路的电路模型很简单,但为了逐 步形成建模的思想和方法,为更复杂的电路模 块或系统的建模打下基础,本节将仍按建模的 思路来逐步进行介绍。
3.仿真验证
同或门的波形仿真图如图3-14所示。
图3-14 同或门的波形仿真图
以上介绍了基本逻辑门电路的模型、 VHDL 程序设计 和波形仿真。提请读者注意的是,在仿真时,由于包 含延时特性,所以在仿真波形中可能出现逻辑冒险现 象,在实际的设计应用中应综合考虑如何克服逻辑竞 争冒险现象。
3.3 基本时序逻辑电路的VHDL设计
library ieee; use ieee.std_logic_1164.all; entity and1 is port(a,b: in std_logic;c: out std_logic);――定义输入端口为a, b;输出端口为c end entity and1; architecture one of and1 is begin c<=a and wk.baidu.com;――逻辑“与”描述 end architecture one;
同或门的逻辑符号模型如图3-13(a)所示,电路模型 如图3-13(b)所示。
图3-13 同或门的逻辑符号模型
同或门的布尔代数的数学模型如式3-7所示。
c ab ab
2. 程序设计
(3-7)
library ieee; use ieee.std_logic_1164.all; entity xor1 is port(a,b: in std_logic;c: out std_logic);――定义输入端口为a,b;输出端 口为c end entity xor1; architecture one of xor1 is begin c<= (a and b)or((not a)and(not b));――同或门逻辑描述 end architecture one;
3.波形仿真
异或门的仿真波形如图 3-12 所示,仿真结果说明程序
设计是正确的。
图3-12 异或门的仿真波形
3.2.7 同或门电路
1.模型 同或门(又称为异或非门)的模型有两种 形式,一种是用逻辑符号表示的电路图模型; 另一种是用布尔代数表示的数学表达式模型。 从上面介绍的 VHDL 设计程序可以看出,我们 使用布尔代数模型来描述它们的特性的。因此, 同或门也不例外,在 VHDL 编程中,也依据其 布尔代数模型来描述其特性。
3.仿真验证 波形仿真的目的是验证是否实现了功能要求:c ab 。 经波形仿真,得到图3-6所示的波形图,验证结果正确。
图3-6 与非门的波形仿真图
3.2.4 或非门电路
1.模型
或非门的模型如图3-7所示
图3-7 或非门模型
其布尔代数模型为:
c ab
(3-4)
用VHDL语言描述为:c<=not (a or b)。
3. 仿真验证
上述的与或非门电路的波形仿真如图3-10所示。
图3-10 与或非门的仿真波形
3.2.6 异或门电路
1.模型
图3-11(a)表示的是异或门的逻辑符号模型,图311(b)表示异或门的电路模型,而其布尔代数数学模型 为:
c ab ab ab ab
(3-6) 用VHDL语言描述为: c<=not((a and b)or((not a)and(not b)))。
图3-11 异或门电路模型
2.程序设计
library ieee; use ieee.std_logic_1164.all; entity xor1 is port(a,b: in std_logic;c: out std_logic);――定义输入端口为 a,b;输出端口为c end entity xor1; architecture one of xor1 is begin c<=not((a and b)or((not a)and(not b)));――异或门逻辑描述 end architecture one;
2.程序设计
设实体名为nandor1输入端端口为a,b,c,d,输出端口为f,依据布尔代 数模型编写VHDL程序如下: library ieee; use ieee.std_logic_1164.all; entity nandor1 is port(a,b,c,d: in std_logic;f: out std_logic);――定义输入端口为a,b,c,d; 输出端口为f end entity nandor1; architecture one of nandor1 is begin f<=not ((a and b)or(c and d));――“与或非”逻辑描述 end architecture one;
3.2.1 非门电路
1.模型 根据VHDL语言的特点,对最基本门电路 进行直接描述,其VHDL模型是非门的逻 辑符号,如图3-1所示。
图3-1 非门模型
其布尔代数模型为:
ba
(3-1)
用VHDL语言描述为:b<=not a 。 2. 程序设计 按照VDHL语言的结构特点,首先要给该模 型确定一个实体名,然后确定一个结构体名。 为了方便,我们取实体名为 not1,取结构体名 one。由于是门级的VHDL描述,无需更多解释, 可直接实现VHDL编程设计如下:
1. 模型 以二输入与门为例,以逻辑符号表示的 模型如图3-3所示。
图3-3 与们模型
其布尔代数模型为:
用VHDL语言描述为:c<=a and b。
c ab
(3-2)
2.程序设计 首 先 , 若 对 该组 合 电路 取 一个 实体名 为 and1,然后确定输入端口名分别为 a 和 b, 输出端口名为 c,根据 VHDL 编程规则, 则与门的编程程序如下:
其模型基础是由数字逻辑符号表示的电路模型, 而对于 RTL 级的基本门的 VDHL 描述,非常简 单,只需用 VHDL 语言简单描述门的特性。对 于较复杂的基本电路模块,例如二进制计数器 的 VHDL 建模,是在其行为功能的基础上,建 立一个流程图模型,其对应的 VHDL 编程以流 程图为路线进行,既便于编程,又便于程序分 析。本章将首先介绍门电路的 VHDL 编程描述, 然后在基本门电路的基础上,介绍组合逻辑电 路和时序逻辑电路的 VHDL 建模和编程设计, 并单独就加法器和乘法器,作为数字通信系统 的重要部件进行建模与设计。
3. 仿真验证
仿真验证的步骤:
第一步:根据 VHDL 有关教程的知识和方法验 证源程序的语法的正确性并进行综合或编译。 第二步:进行波形验证。根据上面的源程序, 按照VHDL程序在MAX+plusⅡ平台上,得到的 波形仿真的验证结果如图3-2所示。
图3-2 非门的波形验证图
3.2.2 与门电路
内容提要
本章首先以常用的基本门电路,如非门、与门、与非门、 或非门、与或非门及基本组合逻辑电路,如异或门、同或 门等为对象,通过建立它们的布尔代数模型,以VHDL逻辑 操作符,如“AND、OR、NAND、NOR、XOR及NOT”等对 BOOLEAN型的值进行运算,形成VHDL设计的关键描述语句, 并分别对上述门电路的程序设计进行波形仿真,以验证设 计结果。第二部分内容是介绍了时序逻辑电路的结构原理, 并对同、异步复位D触发器进行VHDL描述和仿真,对二位 二进制计数器进行流程图建模和VHDL编程及波形仿真。第 三部分以二进制加法器、乘法器作为VHDL建模与设计代表, 分别进行了设计原理、建模和程序设计的讨论与研究。最 后介绍了Max+plusII开发系统操作与应用举例。
3.3.1 时序逻辑电路的特点
时序逻辑电路的重要特点是:任一时刻的输出值不仅 与该时刻的输入变量的取值有关,而且与输入变量的历 史情况有关。从结构上来看,时序逻辑电路有两个特点。 第一,时序电路包含组合逻辑电路和存储电路两部分, 由于它要记忆以前的输入和输出信号,所以存储电路是 不可少的。存储电路可以由触发器构成,也可以由带有 反馈的组合电路构成。第二,组合网络至少有一条输出 反馈到存储电路的输入端,存储电路的状态至少有一条 作为组合网络的输入,与其输入信号共同决定网络的输 出。时序逻辑电路的结构如图3-15所示。
知识要点 1. 基本门电路的布尔代数模型及其 VHDL 程 序设计; 2. 时序逻辑电路的特点、建模与设计方法; 3.加法器的VHDL建模与设计方法; 4.乘法器的VHDL建模与设计方法。 5. Max+plusII开发系统操作与应用
教学建议 1.要求复习《数字电路》中与本章相关的知识; 2.熟悉VHDL教材中的关于逻辑门电路和各类触发 器的VHDL描述方法; 3.灵活运用基本逻辑电路模块设计组合电路,并 能正确地进行VHDL程序设计; 4. 熟练掌握 Max+plusII 开发系统的操作与应用; 5.建议学时数为6~8学时。
library ieee; use ieee.std_logic_1164.all; entity not1 is port(a: in std_logic;b: out std_logic);――定义输入端口a,输 出端口b end entity not1; architecture one of not1 is begin b<=not a ; ――逻辑“非”描述 end architecture one;
2. VHDL程序设计 library ieee; use ieee.std_logic_1164.all; entity nor1 is port(a,b: in std_logic;c: out std_logic);――定义输入端口为a,b;输出 端口为c end entity nor1; architecture one of nor1 is begin c<=not (a or b);――“或非”逻辑描述 end architecture one;
3. 波形仿真 检验是否符合 c a b ,如图3-8所示。从图中结果说明程
序设计正确。
图3-8 或非门的波形仿真图
3.2.5 与或非电路
1.模型
与或非门电路的模型如图3-9所示。
图3-9 与或非门模型
用布尔代数表示的VHDL模型为:
f ab cd
(3-5)
用VHDL语言描述为: f<=not ((a and b)or(c and d))。
(3-3)
2.程序设计
在这里,设实体名为nand1,表示一个与非门,当然也可以用其它命 名。其VHDL编程如下:
library ieee; use ieee.std_logic_1164.all; entity nand1 is port(a,b: in std_logic;c: out std_logic);――定义输入端口为a,b;输出端口为c end entity nand1; architecture one of nand1 is begin c<=not (a and b);――“二与非”逻辑描述 end architecture one;
3.1 引言 常用的最基本数字电路模块是数字通信系统中 不可缺少的基本组成部分,如各种基本门电路 可构成基本组合逻辑电路和时序逻辑电路。这 些电路在数字系统中有成熟的电路模型和逻辑 表达式。因此常用的基本数字电路模块的 VDHL模型,就是基本门的电路模型或对应的 布尔代数的数学模型。在这一层次的VHDL建 模就是VHDL-(RTL/门)级建模。
3.仿真验证
仿真波形如图3-4所示。
图3-4 与门的波形验证图
在首先验证完所编写的 VHDL源程序的正确性后,再 进行波形验证,从图3-4可检验它符合与门的逻辑表达 式:c=ab。
3.2.3 与非门电路
1. 模型
与非门的模型图如图3-5所示。
图3-5 与非门模型
其布尔代数模型为:
c ab
用VHDL语言描述为:c<=not (a and b)。
3.2 基本组合逻辑电路的VHDL的模 型与设计
数字逻辑电路可分为两类。一类逻辑电路的输 出只与当时输入的逻辑值有关,而与输入的历 史情况无关,这种逻辑电路称为组合逻辑电路 ( Combinational Logic Circuit)。另一类逻辑 电路的输出不仅与电路当时输入的逻辑值有关, 而且与电路以前输入过的逻辑值有关,这种逻 辑电路称为时序逻辑电路( Sequential Logic Circuit)。 尽管基本门电路的电路模型很简单,但为了逐 步形成建模的思想和方法,为更复杂的电路模 块或系统的建模打下基础,本节将仍按建模的 思路来逐步进行介绍。
3.仿真验证
同或门的波形仿真图如图3-14所示。
图3-14 同或门的波形仿真图
以上介绍了基本逻辑门电路的模型、 VHDL 程序设计 和波形仿真。提请读者注意的是,在仿真时,由于包 含延时特性,所以在仿真波形中可能出现逻辑冒险现 象,在实际的设计应用中应综合考虑如何克服逻辑竞 争冒险现象。
3.3 基本时序逻辑电路的VHDL设计
library ieee; use ieee.std_logic_1164.all; entity and1 is port(a,b: in std_logic;c: out std_logic);――定义输入端口为a, b;输出端口为c end entity and1; architecture one of and1 is begin c<=a and wk.baidu.com;――逻辑“与”描述 end architecture one;
同或门的逻辑符号模型如图3-13(a)所示,电路模型 如图3-13(b)所示。
图3-13 同或门的逻辑符号模型
同或门的布尔代数的数学模型如式3-7所示。
c ab ab
2. 程序设计
(3-7)
library ieee; use ieee.std_logic_1164.all; entity xor1 is port(a,b: in std_logic;c: out std_logic);――定义输入端口为a,b;输出端 口为c end entity xor1; architecture one of xor1 is begin c<= (a and b)or((not a)and(not b));――同或门逻辑描述 end architecture one;
3.波形仿真
异或门的仿真波形如图 3-12 所示,仿真结果说明程序
设计是正确的。
图3-12 异或门的仿真波形
3.2.7 同或门电路
1.模型 同或门(又称为异或非门)的模型有两种 形式,一种是用逻辑符号表示的电路图模型; 另一种是用布尔代数表示的数学表达式模型。 从上面介绍的 VHDL 设计程序可以看出,我们 使用布尔代数模型来描述它们的特性的。因此, 同或门也不例外,在 VHDL 编程中,也依据其 布尔代数模型来描述其特性。
3.仿真验证 波形仿真的目的是验证是否实现了功能要求:c ab 。 经波形仿真,得到图3-6所示的波形图,验证结果正确。
图3-6 与非门的波形仿真图
3.2.4 或非门电路
1.模型
或非门的模型如图3-7所示
图3-7 或非门模型
其布尔代数模型为:
c ab
(3-4)
用VHDL语言描述为:c<=not (a or b)。
3. 仿真验证
上述的与或非门电路的波形仿真如图3-10所示。
图3-10 与或非门的仿真波形
3.2.6 异或门电路
1.模型
图3-11(a)表示的是异或门的逻辑符号模型,图311(b)表示异或门的电路模型,而其布尔代数数学模型 为:
c ab ab ab ab
(3-6) 用VHDL语言描述为: c<=not((a and b)or((not a)and(not b)))。
图3-11 异或门电路模型
2.程序设计
library ieee; use ieee.std_logic_1164.all; entity xor1 is port(a,b: in std_logic;c: out std_logic);――定义输入端口为 a,b;输出端口为c end entity xor1; architecture one of xor1 is begin c<=not((a and b)or((not a)and(not b)));――异或门逻辑描述 end architecture one;
2.程序设计
设实体名为nandor1输入端端口为a,b,c,d,输出端口为f,依据布尔代 数模型编写VHDL程序如下: library ieee; use ieee.std_logic_1164.all; entity nandor1 is port(a,b,c,d: in std_logic;f: out std_logic);――定义输入端口为a,b,c,d; 输出端口为f end entity nandor1; architecture one of nandor1 is begin f<=not ((a and b)or(c and d));――“与或非”逻辑描述 end architecture one;
3.2.1 非门电路
1.模型 根据VHDL语言的特点,对最基本门电路 进行直接描述,其VHDL模型是非门的逻 辑符号,如图3-1所示。
图3-1 非门模型
其布尔代数模型为:
ba
(3-1)
用VHDL语言描述为:b<=not a 。 2. 程序设计 按照VDHL语言的结构特点,首先要给该模 型确定一个实体名,然后确定一个结构体名。 为了方便,我们取实体名为 not1,取结构体名 one。由于是门级的VHDL描述,无需更多解释, 可直接实现VHDL编程设计如下:
1. 模型 以二输入与门为例,以逻辑符号表示的 模型如图3-3所示。
图3-3 与们模型
其布尔代数模型为:
用VHDL语言描述为:c<=a and b。
c ab
(3-2)
2.程序设计 首 先 , 若 对 该组 合 电路 取 一个 实体名 为 and1,然后确定输入端口名分别为 a 和 b, 输出端口名为 c,根据 VHDL 编程规则, 则与门的编程程序如下:
其模型基础是由数字逻辑符号表示的电路模型, 而对于 RTL 级的基本门的 VDHL 描述,非常简 单,只需用 VHDL 语言简单描述门的特性。对 于较复杂的基本电路模块,例如二进制计数器 的 VHDL 建模,是在其行为功能的基础上,建 立一个流程图模型,其对应的 VHDL 编程以流 程图为路线进行,既便于编程,又便于程序分 析。本章将首先介绍门电路的 VHDL 编程描述, 然后在基本门电路的基础上,介绍组合逻辑电 路和时序逻辑电路的 VHDL 建模和编程设计, 并单独就加法器和乘法器,作为数字通信系统 的重要部件进行建模与设计。
3. 仿真验证
仿真验证的步骤:
第一步:根据 VHDL 有关教程的知识和方法验 证源程序的语法的正确性并进行综合或编译。 第二步:进行波形验证。根据上面的源程序, 按照VHDL程序在MAX+plusⅡ平台上,得到的 波形仿真的验证结果如图3-2所示。
图3-2 非门的波形验证图
3.2.2 与门电路