在数字电路中,根据逻辑功能的不同而分为两大类,组合逻辑电路与时序逻辑电路。

1、何为组合逻辑电路

我们只需铭记一点就是,这种电路的输出Y只与当时的输入X有关,而与之前的输入X’无关。所以这是一个可以随输入X的变化而瞬变输出Y的电路,如果用我们的Verilog代码来表示,则可能会出现在如下语句中:

①针对wire型变量,

assign   Y = X1 && X2;

②针对reg型变量,

always@(*)
beginY = X1 && X2;
end

2、组合逻辑电路的分析方法

对于图中的电路,我们可以容易的转换成如下逻辑表达式:

经过计算,化简,最终便得出:

然后画真值表。

最后,得出它的逻辑功能,只有当A、B、C这三个变量相同时,输出才是1。

以上电路转换成,Verilog代码来表示,则可能会是如下语句:

①针对wire型变量,

assign   L = ((A == B) && (A == C) && (B == C)) ? 1’b1 : 1’b0 ;

②针对reg型变量,

always@(*)
beginif((A == B) && (A == C) && (B == C))L = 1’b1;elseL = 1’b0;
end

按照往常分析逻辑电路的顺序,如下:

而在FPGA的设计中,则是与之相反。我们要根据给定的逻辑功能,设计出一个能实现该功能的最简逻辑电路。

3、组合逻辑电路的设计方法

根据给定的逻辑功能,设计出一个三人表决器,即,至少两人赞同才为1。

Verilog代码来表示,则可能会是如下语句:

①针对wire型变量,

assign   L = ( A + B + C >= 3’d2) ? 1’b1 : 1’b0 ;

②针对reg型变量,

always@(*)
beginif(A + B + C >= 3’d2)L = 1’b1;elseL = 1’b0;
end

给出三人表决器的真值表:

我们将L=1的结果分别取出,并相或,即可得出函数表达式。

此时,如果我们化简此式,则可得到,

最后的逻辑图也就是,

到了这里,你也许会发现,之前给出的Verilog代码而生成的RTL图和上面生成的逻辑图不一样,但是其实现的功能是一样的。

其实答案很简单,Verilog代码是行为级描述,而逻辑图是门级描述。

而我们需要弄清楚的是:

1、verilog建模方式分为:行为级和结构级,由行为级→结构级

2、行为级建模包括系统级、算法级和RTL级(程序员编写)

3、结构级也称为“门级和开关级”,包含模块实例和基本元件实例(软件完成)

这不禁引起我们的考虑,为什么要化简,同样功能的逻辑表达式,Verilog代码用到了加法器和比较器,而逻辑图只用到了简单的与、或门,因此,一个简洁的数字电路可以节省元器件、降低成本,减少元器件的故障率,提高电路的可靠性。

作为我们程序员虽然不能凡事都使用门级描述,因为这严重影响开发进度。而在使用行为级描述时,也需要尽量的简洁语言,这样会给我们自己带来更多便利。

4、竞争与冒险

首先引入一个概念,在实际电路中,输入信号通过一个门电路然后输出,它总是要有传输时间的,那么就是,门电路的传输时间,即延迟时间。

在一个组合电路中,当某一个变量经过两条以上的路径到达输出端时,由于每条路径上的延迟时间的不同,到达终点的时间就会有先后,这一现象就是竞争。

其波形图,

由上可以看出,当A经过一个非门时,会产生一小段时间的延时,而终于在L上出现一个窄脉冲信号,也就是毛刺。由于A与`A到达L输出端有先后,出现了竞争,而产生了毛刺,即出现了冒险。

到此,我们可以看到使用组合逻辑电路是有风险的,竞争与冒险,这个问题一直困扰着我们。

当然解决的办法也很简单,加一个时钟信号给它就行了,把它变成一个时序电路,让它随时钟信号有序的运行,只在某一个时刻有输入输出,这样就可以大大降低避免毛刺产生的几率。

数字电路与逻辑设计——组合逻辑篇相关推荐

  1. 数字电路与逻辑设计笔记

    数字电路与逻辑设计笔记 变量和常量的关系式 根据真值表写表达式 以真值表内输出端"1"为准 第一步:从真值表内找输出端为"1"的各行,把每行的输入变量写成乘积形 ...

  2. 数字电路与逻辑设计(重邮集成电路考研专业课)

    第一章 1. 考纲要求 掌握二进制.八进制.十进制.十六进制及其转换方法,掌握常用编码及其表示十进制数的方法,掌握逻辑代数的逻辑运算.公式和规则,掌握逻辑函数及其表示方法,掌握逻辑函数的化简方法. 2 ...

  3. 数字电路与逻辑设计笔记1

    第一章 基础知识 1.1 数字信号与系统 1.11数字信号与系统 模拟信号:信号的变化在时间和数值上都是***连续的*** 离散信号:信号的变化在时间和数值上都是***离散的*** 数字信号:离散信号 ...

  4. 数字电路与逻辑设计 学习笔记【进制转换】

    0.1近代开关理论:Relay-contact Network Theory: 继电-触点网络理论. 0.2,脉冲信号与数字信号, 模拟量->模拟信号:正弦信号.脉冲信号->脉冲电路 数字 ...

  5. 实验二 多路复用器的实现-数字电路与逻辑设计-湖南大学课程实验

    因为CSDN传文档内的大量图片排版太麻烦了,所以直接上整个文档导出图,随便吧,反正只是备份存个档,也没什么人看. 下面是没有图片的文字部分,只是方便索引,没有排版 实验二 多路复用器的实现 班级 姓名 ...

  6. 数字电路与逻辑设计——模型机时序部件的实现

    模型机时序部件的实现 一.实验目的 二.实验内容 三.实验方法 (一)实验方法 (二)实验步骤 四.实验过程 A. SM B. 指令计数器PC C. 通用寄存器组 D. RAM 五.实验结论 代码仅供 ...

  7. 湖南大学数字电路与逻辑设计实验(含CPU设计)

    数电的大作业CPU设计或许是我做的最认真的一次实验了,历经三个鏖战到凌晨三点的深夜才最终完成,我应该是最早做完的. 导致的就是被无数人问问题,最后被问到发烧(捂脸). 写得不是很好,但至少是在没有人可 ...

  8. 模型机综合设计-数字电路与逻辑设计-湖南大学课程实验

  9. 西电数字电路与逻辑设计手写笔记

  10. 数字电路逻辑设计笔记(5):chap5集成触发器

    数字电路逻辑设计笔记(5):chap5 集成触发器 本章关注的是触发器的功能 如同门是组合逻辑电路的基本单元一样,触发器是时序逻辑电路的基本单元 组合逻辑电路的输出仅仅取决于当时的输入 时序逻辑电路的 ...

最新文章

  1. 【博客话题】我的Linux虽然年轻,但是已经喜欢上她了...
  2. 转载别人的转载 Android Studio实用插件集合
  3. [转:Pro ASP.NET MVC 5中的例子]使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore...
  4. 联想android刷机教程视频,联想s939刷机教程(刷官方系统)
  5. 数据结构Java02【栈、队列、单链表(增删节点)、循环链表、双向循环链表、递归(斐波那契、汉诺塔)】
  6. nginx coredump 不产生core文件
  7. 03-sizeof的用法
  8. 模型增强 | 利用 NLG 增强 QA 任务性能
  9. 4 基于优化的攻击——CW
  10. 版本控制工具(svn)
  11. 离散数学左孝凌版答案
  12. 埃默里大学计算机值得读吗,埃默里大学计算机科学-计算科学硕士研究生Offer及录取要求...
  13. bom实现方块移动_HTML 方块移动
  14. 参加口碑最好的广州传智播客Java就业培训班吧
  15. Win10 系统设置共享文件
  16. Ubuntu22.04平台安装weston
  17. 普通高中课程标准实验教科书(必修)数学5_学习笔记
  18. 自己来造钢筋字符-增加系统字体
  19. 数据挖掘 —— 从入门到求职
  20. 联想小新,蓝牙突然不能用了解决办法!

热门文章

  1. 如何在知网直接下载PDF格式的硕博士论文
  2. 解析博图数据块(昆仑通态触摸屏自动命名)
  3. 微信小程序生成分享海报
  4. C语言计算圆周率小数后10位,计算圆周率Pi(π)值,精确到小数点后10000位 - 圆周率10000位 - C++ 爱好者...
  5. C++ WinHTTP实现文件下载
  6. DSP控制的电力线通信模拟前端接口设计
  7. 单片机原理与接口技术试题
  8. 笔记本电池不充电了 无法充电 如何激活
  9. 视频教程 C语言全套视频教程(已更新完毕
  10. 《编程珠玑》课后答案