数字逻辑与EDA设计
-------------读《数字逻辑与EDA设计》(广工版)小结
第一章 数字逻辑基础
1.1数制与码制★★★
数制
n进制:0~n-1,小数点左边,从右向左位权:n^0,n^1.....,小数点右边,从左向右位权:n^(-1),n^(-2)....
16进制是用0~9,A~F
数制之间的转换
码制
顺序二进制编码
格雷码
n位二进制数的顺序二进制为B=B_n-1.....B_0,则G_i=B_i⊕B_i+1
独热码
只有一个二进制位为1,其余为0
二-十进制编码/BCD码(用每个四位的二进制表示十进制一位的0~9)
8421,2424,5211属于位权码,余三码是二进制码+3,余三格雷码是格雷码+3
1.2基本及常用的逻辑运算★★
AB与,A+B或,A⊕B异或
1.2逻辑函数表示方法★★
- 逻辑表达式
- 真值表
- 卡诺图
- 逻辑图
1.3逻辑函数的化简★★★
最小项及标准与或式(类似于离散数学中的极小项与主析取范式)
常将最小项记作:m1,m2......
求取方法:1.通过公式变换表达式 2.列出函数真值表,直接写出标准与或式
逻辑函数的最简与或式
利用公式和定理化简逻辑函数
- 并项法 AB+A~B=A
- 吸收法 A+AB=A
- 消项法 AB+~AC+BC=AB+~AC
- 消因子法 A+~AB=A+B
- 配项法 A+A=A , A+~A=1
卡诺图(变量少于6个)
n个变量逻辑函数的卡诺图就有2^n个最小项,就有2^n个方格
按格雷码的顺序在行列端及列左端处写出变量取值
几何相邻:1.相接 2.相对 3.相重
几何相邻的最小项必为逻辑相邻,可以合并消去变量
2^n个最小项合并成一项时,可以消去n个变量
合并所消去的是包围圈内变量取值不同的,保留取值相同的
存在无关项的逻辑函数
约束项用集合d表示
其约束项和任意项统称无关项,在卡诺图用X表示,其化简时视为1还是0,应以得到的包围圈最大且包围圈个数最少为原则
1.4常用74HC系列门电路芯片★
- 74HC00——2输入与非门
- 74HC02——2输入或非门
- 74HC04——非门
- 74HC08——2输入与门
- 74HC32——2输入或门
- 74HC86——2输入异或门
sb知识:CMOS三态门能实现分时传送数据逻辑功能
第二章 组合逻辑电路
组合电路特点:
1.逻辑功能上:任意时刻的电路输出,仅取决于该时刻各个输入变量的取值,与电路原来的工作状态无关
2.电路结构上:电路中输出到输入之间无反馈连接,电路由逻辑门电路组成,不包含任何可以存储信息的具有记忆功能的逻辑元器件
2.1组合逻辑电路的分析方法★★★
- 根据给定的逻辑电路,写出输出函数的逻辑表达式
- 表达式变换及化简
- 根据表达式列出真值表
- 对给定电路的功能进行逻辑描述
2.2常用的组合逻辑电路(多考察各种器的输入输出端设计)
1.编译器★
简单来说就是将多个输入信号(I_0~I_m-1)变成较少的对应输出编码(Y_n-1~Y_0)
为保证编码位数最短,即输出最少,m与n满足:
2^(n-1)<m<=2^n
二进制编码器:n个输出对应2^n个输入
2.译码器★
与编译器刚好相反
3.数据选择器
作为一种多路开关常用于将并行数据转换位串行数据输出
2^n路输入1路输出的多路选择器有n个选择控制变量,选择控制端的二进制值m对应第m个输出端口D_m
即是有n个选择控制输入端,2^n个数据输入端
4.数值比较器
基本功能:输入两个位数相同的数A,B,比较大小后输出结果:G,E,S(对应> = <)
有符号优先比较符号,多位数从高位比较起
n位数值比较器需要2n位数据输入及3位输出信号
5.加法器★
1位二进制加法器
- 半加器:只考虑两个加数本身,不考虑由低位来的进位
- 全加器:除了考虑连个加数本身,还考虑由低位来的进位(会叠加上去)
2.3组合逻辑电路的设计方法★★★
- 分析设计要求,将文字描述抽象成输出变量与输入变量的逻辑关系
- 列真值表
- 根据真值表写出逻辑表达式并进行化简
- 根据所选择的门电路的类型,变换最简表达式
- 根据逻辑表达式画出逻辑电路图
2.4组合逻辑电路的时序分析★★★
波形图
时序分析
实际中信号经过任何一个门电路都会产生时间延迟,称为传输延迟
传输延迟除了会影响电路速度,还会引起电路的竞争问题
竞争冒险
当输入信号发生变化后,在输出达到稳定前,输出端可能出现异常的虚假信号(干扰脉冲)
解决方案:1.选通法 2.滤波法 3.增加冗余项法
第三章 时序逻辑电路
时序电路特点(注意与组合电路的不同):
1.逻辑功能上:任意时刻电路的稳定输出,不仅取决于该时刻各个输入变量的取值,还取决于电路原来的状态
2.电路结构上:通常包含组合电路+存储电路,存储电路由具有记忆功能的锁存器或触发器构成,存储电路的输出状态必须反馈到组合电路的输入端,共同决定组合电路的输出
按触发器的时钟脉冲控制方式分类
1.同步时序电路: 所有触发器状态的改变都在同一个时钟脉冲控制下同时发生
2.异步时序电路: 触发器由两个或及以上的时钟脉冲Clk控制或无Clk控制
按输出与输入的关系分类
1.Mealy型时序电路: 输出信号不仅取决于存储电路的状态,还与输入直接相关
2.Moore型时序电路: 输出信号仅仅取决于存储电路的状态
3.1时序电路逻辑功能的表示方法★★
逻辑表达式
1.输出函数,用Y=...表示
2.驱动函数,用Z=...表示
3.状态函数,用Q^(n+1)=...表示 //Q^n表示现态 Q^(n+1)表示次态
状态表(有些需要先编码,再列出真值表的形式)
包括时钟Clk,输入,现态,次态,输出
状态图
圆圈代表一个存储状态,圈中文字代表状态名字,箭头表示状态之间的转换关系,箭头上有:斜线左边表示转换条件/输入信号,右边是输出信号
时序图
3.2锁存器与触发器
锁存器是电平敏感的存储元件,即是存储状态随着输入信号的高低电平变化而变化
触发器是时钟脉冲边沿触发的存储元件,即是存储状态仅在时钟脉冲边沿可能发生变化
触发器(双稳态)★★
1.D触发器,特性函数:Q^(n+1)=D Clk上升有效
2.JK触发器, 特性函数: Q^(n+1)=J~Q^n+~KQ^n Clk下降有效
3.RS触发器,特性函数:1. Q^(n+1)=S+~RQ^n 2. RS=0(约束条件)
4.T触发器,特性函数:Q^(n+1)=T⊕Q^n
当置位或清零信号一产生就立刻进行操作的是异步方式,
当置位或清零信号产生后,还要等待时钟脉冲信号的有效边沿到来才进行操作的是同步方式
带有异步置位Set和异步清零Clr的触发器需遵守约束条件:**Set*Clr=0**
求n个触发器构成的计数器有几个无效状态,用2^n-计数容量=无效状态个数
3.3时序电路的分析方法★★★
写函数表达式,包括输出函数和各触发器的驱动函数(Clk处无小圆圈为上升沿触发,有为下降沿触发)
将各触发器的驱动函数代入各自的特性函数中,求触发器的状态函数
列出状态表
画状态图及时序图(利用状态表)
结合输入信号的含义,进一步对电路功能进行分析,以及对电路是否能自启动进行分析
凡是没被利用的状态称为无效状态,构成的循环称为无效循环,在时序电路中若存在无效循环,则电路有缺陷.时序电路能否自启动取决于是否存在无效循环
3.4常用的时序逻辑电路
寄存器
1.基本寄存器
实现数据的并行输入及并行输出
2.移位寄存器
在移位脉冲的操作下,依次右移或左移数据,主要实现数据的串行输入,输出,也可以并行
分为右移,左移和双向移位寄存器
计数器★
主要由触发器组成 , n个触发器构成的m进制的计数器,计数容量为m^n,N进制计数器的计数容量为N
m进制计数器有m个状态,最少满足: 2^(n-1)<m<=2^n
使用集成的计数器设计N进制计数器★★
1.清零法:当计数器计数值达到N时,利用组合逻辑电路产生清零信号,使计数值变为0,可分同步置零与异步置零
2.置数法:通过设计计数的初始值,改变计数容量,如将容量为16的74HC161初始值设为4,以设计12进制计数器
3.级联方式设计:当待设计的计数器计数容量大于集成计数器容量时,
通过将n片m位N进制计数器级联的方式最多组成 (N^m)^n进制的计数器
3.5时序电路的设计方法★★★
分析设计要求,建立原始状态图
进行状态化简,消去多余状态
(相同输入下有相同输出,且都转换到同一个次态,可合并)
状态分配,画出编码后的状态图
n个触发器共有2^n种状态组合,固需要M个状态时,至少满足:
2^(n-1)<M<=2^n
选择触发器类型,求出电路的状态函数,输出函数及驱动函数
(可画状态表更方便求取)
如果电路存在无效状态,则需判断是否为能自启动电路
(可将无效状态代入输出函数和状态函数计算是否能返回有效循环)
画逻辑图
3.6时序逻辑电路时序分析的基本概念(详见课本)★
1.时钟脉冲信号 2.建立时间,保持时间和最大传播延迟时间 3.稳态和亚稳态 4.分辨时间
5.时钟偏差
第四章 硬件描述语言 Verilog HDL★★★
1.标识符
包括字母,数字,$和_的组合,区分大小写,首字符必须字母或下划线
2.代码格式
自由,可同行或多行,注释从C
3.模块和端口(类似C中函数与函数参数的概念)
module 模块名(端口1,。。。)
。。。
endmodule
端口列表所有端口须在模块中声明,根据流动方向分为:input,output和inout(双向)
端口默认声明wire型,若希望输出端口能保存数据,需显示声明为reg型(input和inout不能为reg)
端口调用
直接传参,需要按顺序传,用名字传参,如:(.端口名1(信号名1)。。。),则不必按顺序
4.系统任务和系统函数$
$display(=printf) $monitor(动态监视,发生变化就输出) $stop和$finish(使仿真挂起,进行调试)
$time,$stime,$realtime(分别以64,32位,实数返回当前仿真时间) $random
5.常用编译器指令(以`开头)
define和undef,include,timescale(定义延迟单位与延迟精度),
6.数据类型,操作符和表达式
3种常量:整型(Integer), 实数(Real), 字符串型(String)
整型格式:[指定位宽]'[有s/S表示有符号数] base(o/O-8, b/B-2, d/D-10, h/H-16) value
数据类型
基本值:1. 0(逻辑0/假) 2. 1(逻辑1/真) 3. x(X)//未知状态 4.z(Z) //高阻状态
线网类型:wire
常量类型:reg(寄存器类型,保持最后一次赋值结果),integer,time,real,realtime
数组类型:
参数:可用parameter定义常数
位选和部分位选:可从上述数据类型中拿取一部分数据,数据按高位在左
如:reg[3:0]pa;reg[2:0]Z
pa=4'b1010;
Z=pa[3:1];//3'b101
操作符
==逻辑相等 ===全等 != !==(逻辑不等与非全等)
<< ,>>(逻辑左移与右移,空位填0)
<<<,>>>(算术左移和右移,左移填0,右移有符号数填符号位)
拼接和复制
如:X={pa,pb[2:0],pc};
Z={3{pa}};//={pa,pa,pa}
7.行为级建模
1.过程结构(可加入敏感事件,延迟控制)
initial: 0时刻开始执行,只执行一次,可以在变量声明时对reg赋值
always : 0时刻开始,重复执行
2.时序控制
delay://延迟控制
@(事件表达式) 执行语句;//事件控制
事件表达式:
:发生变化就执行
posedge:信号正跳
negedge:信号负跳
wait(条件) //电平敏感事件控制,条件为真就执行
执行语句;
3.语句块
顺序:begin...end
并行:fork...join
4.过程性赋值
阻塞性过程赋值:=
非阻塞性过程赋值:<=
5.分支语句
if, case(分支不用break), forever(用disable跳出), while, for
repeat(循环次数)
执行语句
8.结构级建模
内置基本门级元件
多输入门:and(与门),nand(与非门),or(或门),nor(或非门),xor(异或门),xnor(异或非门)
多输出门:buf(缓冲器),not(非门)
数字逻辑与EDA设计的更多相关文章
- 数字逻辑实践2->Verilog编写规范
来源:数字逻辑与Verilog设计实验课讲解,个人做的笔记与整理. 00 规范的重要性 良好的编程风格有利于减少消耗的硬件资源,提高设计的工作频率 . 提高系统的可移植性和可维护性. 程序的格式化能体 ...
- 数字逻辑实践4->面向硬件电路的设计思维--FPGA设计总述
本文是对实验课上讲解的"面向硬件电路的设计思维"的总结,结合数字逻辑课本,进行提炼和整理. 主要来源是课件与本人整理,部分参考了网络大佬的博客. 本文主要介绍不同于之前软件设计思维 ...
- 数字逻辑实践3->EDA技术与Verilog设计
本文属于EDA技术概述类文章 1 EDA技术及其发展 概念 EDA(Electronic Design Automation),指的是以计算机为工作平台,以EDA软件工具为开发环境,以PLD期间或者A ...
- (数字IC)低功耗设计入门(四)——RTL级低功耗设计
二.RTL级低功耗设计 前面介绍了系统级的低功耗设计,换句话说就是在系统级降低功耗可以考虑的方面.系统级的低功耗设计,主要是由系统级设计.具有丰富经验的人员实现,虽然还轮不到我们设计,我们了解一下还是 ...
- 数字IC前后端设计中的时序收敛(一)前言
本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 为了纪念,同时 ...
- FPGA学习笔记(三)—— 数字逻辑设计基础(抽象的艺术)
FPGA设计的是数字逻辑,在开始用HDL设计之前,需要先了解一下基本的数字逻辑设计-- 一门抽象的艺术. 现实世界是一个模拟的世界,有很多模拟量,比如温度,声音······都是模拟信号,通过对模拟信号 ...
- 高速数字逻辑电平(8)之LVDS差分信号深度详解
原文地址点击这里: LVDS(Low-Voltage Differential Signaling ,低电压差分信号)是美国国家半导体(National Semiconductor, NS,现TI)于 ...
- 数字逻辑实践5->Verilog语法 | wire 与 reg 的选择与特性
问题起因:最初学习数字逻辑设计理论的时候还没有注意到,在实验课上写代码的时候发现了一个问题: 对于源码模块的变量定义,何时定义为reg.何时定义为wire?它们各自又有什么特性和物理意义? 1. wi ...
- 数字逻辑实践6-> 从数字逻辑到计算机组成 | 逻辑元件总结与注意事项
00 一些前言 数字逻辑是计算机组成与体系结构的前导课,但是在两者的衔接之间并没有那么流畅,比如对面向硬件电路的设计思路缺乏.这篇总结是在数字逻辑和计组体系结构的衔接阶段进行的. 虽然这篇文是两门课的 ...
随机推荐
- 接口测试-chap3-https请求证书问题
接口地址如果是HTTPS,需要安装证书,或者在发送请求时传入参数verify=False,表示忽略 res = requests.get(url, verify=False)
- OpenCV 腐蚀膨胀操作
利用腐蚀膨胀操作实现对椭圆周围线条的消除,椭圆的大小不变 代码如下: #include "cv.h" #include "highgui.h" int main ...
- unittest(9)- 使用ddt给测试用例传参
# 1. http_request.py import requests class HttpRequest: def http_request(self, url, method, data=Non ...
- Uber自动驾驶卡车正式运营,是否会给卡车司机彻底“宣判死刑”?
随着科技的快速迭进和嬗变,大众的生活也在被全面革新和改变.不过有些改变是显性的,比如PC和智能手机的出现.有些改变却是隐性的,比如太空科技.云计算等.而在当下,又一个看似与大众生活紧密相关,但一般人却 ...
- Ruby爬虫header发送cookie,nokogiri解析html数据
之前用php写过一个爬虫,同样是获取局域网的网站数据,这次我使用相同的网络环境,更低的电脑配置,使用ruby来再次爬虫,惊人的发现ruby使用自带的类库net/http爬取速度要远远超过php的cur ...
- bzoj1603: [Usaco2008 Oct]打谷机 (纱布题)
Description Input Output Sample Input Sample Output Time Limit: 5 Sec Memory Limit: 64 MB Submit: 7 ...
- python爬虫-MongoDB安装配置
MongoDB安装配置: 在安装配置MongoDB的过程中遇到了很多问题,现在重新梳理一遍安装流程.遇到的问题及其解决方法 系统版本:Windows 10 MongoDB版本:4.2.1 1.下载地址 ...
- linux svn 安装(支持http访问)
1.安装svn yum install -y subversion 2.查看svn版本 svn --version 3.创建仓库 mkdir -p /opt/java/repos cd /opt/ja ...
- 爬虫(二)requests 登陆某检索网站
1 import requests import os from PIL import Image import pytesseract import re rootUrl = xxx # 构建登录页 ...
- 机器学习基础——详解自然语言处理之tf-idf
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天的文章和大家聊聊文本分析当中的一个简单但又大名鼎鼎的算法--TF-idf.说起来这个算法是自然语言处理领域的重要算法,但是因为它太有名了 ...