什么是数字电路?新手如何快速学习数字电路基础?
扫描二维码
随时随地手机看文章
什么是数字电路
用数字信号完成对数字量进行算术运算和逻辑运算的电路称为数字电路,或数字系统。由于它具有逻辑运算和逻辑处理功能,所以又称数字逻辑电路。现代的数字电路由半导体工艺制成的若干数字集成器件构造而成。逻辑门是数字逻辑电路的基本单元。存储器是用来存储二进制数据的数字电路。从整体上看,数字电路可以分为组合逻辑电路和时序逻辑电路两大类。
学习数字电路的重要性
随着社会的进步和科学技术的发展,数字系统和数字设备已广泛应用于各个领域,大规模,超大规模集成电路技术的不断完善使得数字电路在现代电子系统的比重越来越大,数字电路建立了根本是信号的数字处理,这门学科现在发展的很快,随之,数字电路的设计理念也日新月异,可以说现在设备之间的竞争很大程度上就是其数字处理能力的抗衡,是数电工程师在推动系统的变迁,他们是系统的核心竞争力量。
现在的超大规模集成芯片已经向系统级芯片的方向发展,FPGA(Field Programmable Gate Array即现场可编程门阵列,它是在PAL、GAL、PLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点) 已经可以达到ASIC(ApplicaTIon Specific Intergrated Circuits即专用集成电路,是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路) 的水平(如XILINX的V2 pro),所以工程师们有了更大发挥空间。说句半玩笑的话,一旦实现软件无线电,模电的工程师就可以下岗了。因而电子信息技术、计算机技术以及相关技术领域的工程师和技术人员必须掌握数字系统的基础知识。挑战和机遇并存,作为当代大学生和有志青年,储备知识、培养能力是当务之急,因此学好数字电子技术是非常必要的。
数字电路的特点
1、同时具有算术运算和逻辑运算功能
数字电路是以二进制逻辑代数为数学基础,使用二进制数字信号,既能进行算术运算又能方便地进行逻辑运算(与、或、非、判断、比较、处理等),因此极其适合于运算、比较、存储、传输、控制、决策等应用。
2、实现简单,系统可靠
以二进制作为基础的数字逻辑电路,可靠性较强。电源电压的小的波动对其没有影响,温度和工艺偏差对其工作的可靠性影响也比模拟电路小得多。
3、集成度高,功能实现容易
集成度高,体积小,功耗低是数字电路突出的优点之一。电路的设计、维修、维护灵活方便,随着集成电路技术的高速发展,数字逻辑电路的集成度越来越高,集成电路块的功能随着小规模集成电路(SSI)、中规模集成电路(MSI)、大规模集成电路(LSI)、超大规模集成电路(VLSI)的发展也从元件级、器件级、部件级、板卡级上升到系统级。电路的设计组成只需采用一些标准的集成电路块单元连接而成。对于非标准的特殊电路还可以使用可编程序逻辑阵列电路,通过编程的方法实现任意的逻辑功能。
数字电路的优点
1、稳定性好
数字电路不像模拟电路那样易受噪声的干扰。
2、可靠性高
数字电路中只需分辨出信号的有与无,故电路的组件参数,可以允许有较大的变化(漂移)范围。
3、可长期存储
数字信息可以利用某种媒介,如磁带、磁盘、光盘等进行长时期的存储。
4、便于计算机处理
数字信号的输出除了具有直观、准确的优点外,最主要的还是便于利用电子计算机来进行信息的处理。
5、便于高度集成化
由于数字电路中基本单元电路的结构比较简单,而且又允许组件有较大的分散性,这就使我们不仅可把众多的基本单元做在同一块硅片上,同时又能达到大批量生产所需要的良率。
数字电路的学习方法
数字电路所需的先修课程是电路分析基础和模拟电路,后续课程是微机原理、微型计算机、接口技术等。
数字电路在研究的对象和方法上都跟模拟电路有很大的不同,表1把它们作了一个简单的对比。
显然,模拟电路和数字电路的差异是很大的,初学者应当在学习方法上作一些改变,以适应数字电路的特点,才能取得良好的效果。
1、在数字电路中,所有的变量都归结为0和1两个对立的状态。通常,我们只需关心信号的有或无,电平的高或低,开关的通或断,等等,而不必理会某个变量的详细数值。比如电平幅值的微小变化就可能毫无意义。
2、数字电路的研究方法以逻辑代数(又称布尔代数)作为数学基础。它主要研究输入,输出变量之间的逻辑关系,并建立了一套逻辑函数运算及化简的方法。布尔代数又称双值代数,由于其变量取值只有0和1两种可能,比之模拟电路,数字电路中没有复杂的计算问题。
3、由于数字集成电路技术的高度发展,数字电路更鲜明地体现了管路合一的特点。初学者应充分注意这一特点。一般来说,学习电路结构不是我们的目的,目的是掌握电路功能。
数字电路学习要点
1、数字电路基础
要知道:数字信号中的1和0所表示的广泛含义,十进制数二进制数十六进制数的表示方法和相互之间的转换方法;8421bcd码的表示方法及其与十进制数的转换方法,逻辑函数逻辑变量逻辑状态的含义,与或非所表示的逻辑事件逻辑函数真值表的含义及表示规律和方法。
会写出:逻辑与、或、非、与非、或非、与或非、异或、同或等的逻辑表达式,真值表、逻辑符号及其规律;逻辑函数式、真值表及其逻辑图三者之间的转化,负逻辑符号的逻辑式。 会使用:逻辑代数化简逻辑函数式;最小项及其编号表示逻辑函数式,卡诺图化简逻辑函数式。
2、集成逻辑门电路
要知道:逻辑电路高电平低电平与正负逻辑状态的关系。cmos反相器阈值电压uth的含义与所表示的性能。逻辑符号控制端符号上非号、小圆圈含义及其门电路上小圆圈符号含义的区别。三态门使能控制的作用及输出高阻的含义。
会画出:od门oc门传输门三态门的逻辑符号。与门、或门、非门、与非门、或非门输入波形所对应的输出波形。
会使用:oc门od门传输门三态门的功能。 会处理:cmos集成逻辑电路的存放和焊接的措施,各种门电路空余的输入端,各种门电路系列间的接口。
3、组合逻辑电路
要知道:组合逻辑电路的特点,组合逻辑电路的分析步骤和设计步骤,编码器译码器数据分配器和数据选择器的含义。
会分析:用逻辑函数化简表达式、真值表描述的组合逻辑电路的逻辑功能。
会设计:根据逻辑事件设定输入和输出变量及其逻辑状态的含义,根据因果关系列出真值表,写出逻辑函数式并进行化简后的逻辑图。
会使用:用功能表表示的各种中规模集成器件的编码器、优先编码器、译码器、数码显示七段译码管、数据选择器的引脚功能。
4、集成触发器
要知道:触发器的工作特点、基本rs触发器功能、同步触发器特点、脉冲边沿触发器工作的特点,t和t’触发器的功能。
会画出:与非门、或非门组成基本rs触发器的电路及逻辑符号图,上升边沿触发的d触发器、下边沿触发的jk触发器和逻辑符号图及其输出波形图,用jk和d触发器构成t’触发器的连线图。
会写出:rs触发器,d触发器,jk触发器的状态方程式。
会背出:jk触发器的输出q的状态在cp下降沿作用下与输入jk状态下的关系。
会使用:集成触发器的直接置位,复位端sd、rd的状态在各种情况下的设置方法。
5、时序逻辑电路
要知道:时序逻辑电路的工作特点、同步时序逻辑电路的分析方法, 寄存器和移位存储器及计数器的功能,同步和异步的含义。
会使用:由功能表所反映的双向移位寄存器、各种类型各种型号中规模集成设计器引脚功能、异步和同步清零或置数。
会画出:用反馈清零、反馈置数方法在异步或同步情况下的n进制计数器电路连线。
6、脉冲电路
要知道:微分积分电路功能;555定时器各引脚功能、阈值输入端及输出端电压的逻辑规律;单稳态触发器、多谐振荡器和施密特触发器三种电路的基本功能。 会选用:实现脉宽定时,延时控制脉冲,脉宽调制、波形变换、整形、声响电源、时钟脉冲、标准时基脉冲信号等功能的电路结构类型。 会识别:各类结构单稳态触发器对输入触发脉宽的要求和有效触发的沿口类型。
会画出:施密特触发器的波形变换或整形的输出波形。
会计算:各类结构触发器的输出脉宽、各类结构多谐振荡器的振荡频率。
7、半导体存储器
要知道:只读存储器(rom)和随机存储器(ram)的逻辑功能和两者性能的区别,存储器地址译码器的功能,地址输入线与字线w下标i数值的关系,字线位线存储单元的区别。
prom的三种类型及其工作性能的区别,ram中两类存储单元结构的区别。
会计算:半导体存储器的存储容量。
会画出:ram存储容量字扩展和位扩展的电路连线。
8、数/模和模/数转换器
要知道:数/模和模/数转换器的功能、r~2r倒t形电阻网路dac输入数字量与输出电压关系式;数模转换器的采样保持量化和编码含义、v~t型双积分式和逐次逼近型两种ad转换器的基本工作原理和特点。
会计算:用电压值表示不同位数的adc或dac的分辨率和允许最大误差。
9、数字电路与模拟电路学习中的区别
数字电路所需的先修课程是电路分析基础和模拟电路,后续课程是微机原理、微型计算机、接口技术等。
学习数字电路的注意事项
1、注重掌握基本概念、基本原理、基本分析和设计方法
数字电子技术发展很快,各种用途的电路千变万化,但它们具有共同的特点,所包含的基本原理和基本分析和设计方法是相通的。我们要学习的不是各种电路的简单罗列,不是死记硬背各种电路,而是要掌握它们的基本概念、基本原理、基本分析与设计方法。只有这样才能对给出的任何一种电路进行分析,或者根据要求设计出满足实际需要的数字电路。
2、抓重点,注重掌握功能部件的外特性
数字集成电路的种类很多,各种电路的内部结构及内部工作过程千差万别,特别是大规模集成电路的内部结构更为复杂。学习这些电路时,不可能也没有必要一一记住它们,主要是了解电路结构特点及工作原理,重点掌握它们的外部特性(主要是输入和输出之间的逻辑功能)和使用方法,并能在此基础上正确地利用各类电路完成满足实际需要的逻辑设计。
3、注意归纳总结
数字集成电路的应用广泛,学好数字电子技术课程需要掌握一些典型电路,因为这些典型电路是构成数字系统的部件。掌握它们包括了解它们的功能、结构特点及应用背景,并注意总结归纳,掌握其本质。例如,译码器和数据选择器都可以实现逻辑函数,但两者的区别是,一个n位二进制输入端的译码器,只能用于产生变量数不大于n的组合逻辑函数,它可以附加门电路,实现多个输出的组合逻辑电路二一个n个地址输人端的数据选择器,可以实现变量数为n+1的逻辑函数。由于数据选择器只有一个输出端,所以只能实现单个输出的逻辑函数。
4、注意理论联系实际
电子技术基础课程学习的最终落脚点是对实际电路的分析和设计。经过理论分析和计算得到 的设计结果还必须搭建实际电路进行测试,以检验是否满足设计要求。由于电子器件的电气特性具有分散性,理论设计出的电路在实际中也会出现意想不到的现象。例如用实验验证计数器74161和一些门构成的六十进制计数译码显示电路。一些同学的理论设计和线路连接均没有问题,但实验中出现了由竞争冒险产生的错误计数,此时只要在反馈门的输出端与地之间接一个小电容。即可消除竞争冒险。
5、注意新技术的学习
电子技术的发展是以电子器件的发展为基础的,新的器件层出不穷,旧的器件随时被淘汰。因此教材中出现的集成电路芯片有可能已不生产,要用发展的观点使用教材。
真值表/卡诺图
1.建立时间和保持时间
Setup time, Tsu 建立时间 在时钟沿到来之前数据稳定不变的时间,如果建立的时间不满足,那么数据将不能在这个时钟上升沿被稳定的打入触发器
Hold time, Th 保持时间 时钟沿到来之后数据稳定不变的时间,如果保持时间不满足,那么数据同样也不能被稳定的打入触发器
Clock-to-Output Delay,Tco 数据输出延迟,输出响应时间 当时钟有效沿变化后,数据从输入端到输出端的最小时间间隔。
触发器输出的响应时间,也就是触发器的输出在clk时钟上升沿到来之后多长的时间内发生变化,也即触发器的输出延时。
数据到达时间Tda:
数据建立时间Tsu:
建立时间裕量(Setup Slack):
保持时间裕量(hold slack):
上述时序关系也解释了为什么时钟频率过快或者数据延时太大,都会导致错误的时序。(与STA静态时序分析有关)
2.施密特触发器
当输入电压高于正向阈值电压,输出为高;当输入电压低于负向阈值电压,输出为低;当输入在正负向阈值电压之间,输出不改变。
这种双阈值动作被称为迟滞现象,表明施密特触发器有记忆性。
施密特触发器有两个稳定状态,可以把边沿变化缓慢的周期性信号变换为边沿很陡的矩形脉冲信号。例如将三角波、正弦波等变成矩形波。
3.格雷码
任意两个相邻的码字只有一位二进制数不同。
可以使装置做数字步进时只改动最少的位元数以降低误码率。
4.锁存器(latch)和触发器(flip-flop)
都是时序逻辑(输出不但与当前输入有关还和上一次的输出有关)
Latch是电平触发,输出同所有输入信号有关,输入信号变化,latch就变化;
Flip-flop受时钟控制,只有在时钟触发时才采样当前输入,产生输出。
区别:latch没有时钟端,无法做到同步,输出容易产生毛刺;如果用门电路来搭建,latch消耗的门资源比ff要少。
触发器的电路图由逻辑门组合而成,其结构均由R-S锁存器派生而来。
在R-S锁存器的前面加一个由两个与门和一个非门构成的附加电路,则构成D触发器。
为什么需要触发器:触发器能保存数据,保存电路状态;触发器是在时钟边沿触发,用时钟同步是让整个电路能同步整齐划一的工作;乘法器的计算部分是组合逻辑,不需要触发器,计算后的结果可以用触发器保存起来。
5.阻塞赋值(=)和非阻塞赋值(<=)
在同一个always块中,阻塞赋值先计算RHS表达式,不允许其他verilog语句干扰,然后赋值给LHS,才允许其他赋值语句执行。(其后的赋值语句是在前一句赋值语句结束后再开始赋值的)
非阻塞赋值开始时计算RHS的表达式,同时就更新LHS,赋值结束时停止更新。(也可以理解为一直在计算RHS,最后时刻更新LHS)这个过程中,其他verilog语句都能同时操作。
注意:
1.非阻塞赋值只能对寄存器变量赋值(reg),只能在initial和always块中。
2.时序电路/锁存器 建模——非阻塞赋值
用always块建立组合逻辑电路——阻塞赋值
在同一个always块建立时序和组合逻辑电路——非阻塞赋值
3.在一个always块中不要既用阻塞由用非阻塞;不要在一个以上always块中对同一个变量赋值
6.同步电路与异步电路
这里指的是时序电路。
组合逻辑电路:任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关。
时序逻辑电路:任意时刻的输出不仅取决于当时的输入,还取决于电路原来的状态。(具有记忆功能)
根据各级触发器时钟端的连接方式可以将时序电路分为同步/异步。
同步时序电路所有操作都是在同一时钟严格的控制下步调一致地完成的。
异步时序电路,不存在单一的主控时钟,主要是用于产生地址译码器、FIFO和异步RAM的读写控制信号脉冲。
关于延时:
异步电路的延时:buffer或者两级非门
同步电路的延时:大的延时:计数器;小的延时:D触发器打节拍
7.跨时钟域数据交换
进行同步处理。
单bit数据:打两拍(两级并不能完全消除亚稳态危害,但是大大减少其发生概率)
多bit数据:异步FIFO(或双口RAM)(以某个时钟读,在以某个时钟写,空/满标志是关键)
多位数据也可以采用保持寄存器加握手信号的方法(多数据,控制信号,地址信号)
8.关于亚稳态
原因:在FPGA系统中,如果数据传输中不满足触发器的Tsu和Th,或者复位过程中复位信号的释放相对于有效时钟沿的恢复时间(recovery time)不满足,就可能产生亚稳态,此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端在0和1之间处于振荡状态,而不是等于数据输入端D的值。这段时间称为决断时间(resolution time)。经过resolution time之后Q端将稳定到0或1上,但是稳定到0或者1,是随机的,与输入没有必然的关系。
只要系统中有异步元件,亚稳态就无法避免
1.数据传输:数据在目的寄存器Tsu-Th时间窗口发生变化
2.异步复位:异步复位信号的撤销时间在Trecovery(恢复时间)和Tremoval(移除时间)之内
3.同步复位:输入端Din为高电平,而且复位信号的撤销时间在clk的Tsu和Th内时候
常用FPGA器件的Tsu+Th约等于1ns,复位移除和恢复时间相加约等于1ns。
亚稳态发生概率 = (建立时间 + 保持时间)/ 采集时钟周期
——>
(1) 降低系统工作时钟,增大系统周期,亚稳态概率就会减小;
(2) 采用工艺更好的FPGA,也就是Tsu和Th时间较小的FPGA器件;
解决方法:
1.降低系统时钟频率
2.用反应更快的FF(Tsu和Th时间较小)
3.对异步信号进行同步处理:
多级D触发器级联:大部分资料都说的是第一级寄存器产生亚稳态后,第二级寄存器稳定输出概率为90%,第三极寄存器稳定输出的概率为99%(一般就搞个两级);
采用FIFO对跨时钟域数据通信进行缓冲;
4.对复位电路采用异步复位、同步释放方式处理。
最终用sys_rst_n做系统的复位信号
5.改善时钟质量,用边沿变化快速的时钟信号
9.静态功耗与动态功耗
静态:晶体管状态稳定不变时的功耗(漏电流导致)
动态:晶体管开关状态变化(电路翻转)产生的功耗(大头 70%~90%)
10.同步复位和异步复位
也可能综合出:
优点:保证信号同步;综合为更小的触发器;复位时时钟可以过滤毛刺
使用同步复位可能使综合工具无法分辨分辨复位信号和其他控制信号,导致进行复位的控制逻辑远离触发器:
不好的:
优点:复位路径上没有延时;综合工具能自动推断出异步复位而不必加入任何综合指令
异步复位的同步释放:
11.补码
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
12.低功耗设计(系统问题)
设计层次越高,功耗改善的程度越大:
工艺级
版图和晶体管级
PTL级和逻辑级
系统级
RTL级:
时钟是大头:门控时钟:无计算任务的部分时钟停下
预计算技术:在一定的输入条件下,使所有或部分输入寄存器的负载无效,从而降低功耗
逻辑优化:减少信号的翻转
组合逻辑优化:提取重复出现表达式、表达式替换、选择性消除节点
路径平衡:几个输入通过不同的路径到达同一个门,要想办法使各个路径差不多长
系统级:
软硬件划分
指令级优化
电源管理
cache低功耗设计
总线低功耗设计
总线信号编码,减少翻转 例如格雷码
算法的优化,包括流水线设计,并行设计
13.状态机
以几何图形的方式描述时序逻辑的状态转移。
分类:
Moore:输出(下一状态)只与当前状态有关
Mealy:输出不仅与当前状态有关,还与当前输入有关
状态编码:
二进制编码、 格雷码 (Gray) 、独热码 (one-hot) 、自定义编码。
在小设计中可以考虑使用 Gray 码或 one-hot。大设计中,不担心逻辑资源不够的话,可以考虑使用one-hot 编码以提高速度。至于顺序二进制编码,一般不予考虑。但是要达到最佳性能,需要使用更高级的编码算法,针对给定的状态机进行分析。
描述方法:
两段式:两个always模块,其中一个always模块采用同步时序的方式描述状态转移,而另一个模块采用组合逻辑的方式判断状态转移条件、描述状态转移规律
三段式:
三个 always 模块,一个 always 模块采用同步时序的方式描述状态转移,一个采用组合逻辑的方式判断状态转移条件、描述状态转换规律,第三个 always模块使用同步时序电路描述每个状态的输出
电梯:
当前状态current status——事件event——转移状态next status
自动售货机
14.FPGA内部的资源
IOB:可编程输入输出单元,芯片与外界电路接口,完成不同电气特性下对输入输出信号的驱动与匹配要求
CLB:可编程逻辑快,多个Slice和附加逻辑构成(Xilinx),可以实现组合逻辑、时序逻辑、配置成分布式RAM(LUT配置成)
BRAM:块RAM,灵活,可以配置成单端口RAM,双端口RAM,FIFO,CAM(内容地址存储器)等,可以根据需要改变位宽和长度
DCM:数字时钟管理模块,
专用硬核:CPU,乘法器,DSP等
【 存储资源:Block RAM(一些固定大小的存储块,要用就用一整块,不占用逻辑资源,速度快);分布式RAM(灵活)】
【 可以实现RAM/ROM/CAM 的资源:block ram,flip-flop,LUT 】
15.FPGA开发流程
个人习惯:分析系统划分模块——个子模块HDL实现——各子模块前仿真——组成系统功能仿真——逻辑综合——布局布线——静态时序分析——后仿真——上板测试
尽量在底层模块做逻辑,在高层尽量做例化,顶层模块只做例化
前仿真:纯粹的功能仿真,验证电路的功能是否符合设计要求,不考虑电路门延迟与线延迟。
后仿真:综合后的功能仿真和布局布线后的时序仿真。是指电路已经映射到特定的工艺环境下,综合考虑电路的路径延迟与门延迟的影响,验证电路是否在一定时序条件下满足设计构想的过程,是否存在时序违规。(必做)
16.FPGA——乘法器的设计
常见的有移位相加法,加法树法,查表法,混合法……
1.移位相加
begin
dout=0;
for(i=0;i
dout=dout+((din_a_buf[i]==1)?(din_b_buf<
end
2.加法树
上面的设计中,会产生大量组合逻辑,这就带来了大量的延迟从而使乘法器的速率受到限制,为了提高速度,可以采用流水线的方法,将组合逻辑分割成一个一个小的组合逻辑,中间加上触发器用来锁存数据,这样就可以大大提高频率,引入触发器仅仅是带来了延迟而已
begin//流水线实现
din_a_buf<=din_a;
din_b_buf<=din_b;
buf0<=din_b_buf[0]?din_a_buf:0;
buf1<=din_b_buf[1]?din_a_buf<<1:0;
buf2<=din_b_buf[2]?din_a_buf<<2:0;
buf3<=din_b_buf[3]?din_a_buf<<3:0;
buf4<=din_b_buf[4]?din_a_buf<<4:0;
buf5<=din_b_buf[5]?din_a_buf<<5:0;
buf6<=din_b_buf[6]?din_a_buf<<6:0;
buf7<=din_b_buf[7]?din_a_buf<<7:0;
buf01<=buf0+buf1;
buf23<=buf2+buf3;
buf45<=buf4+buf5;
buf67<=buf6+buf7;
buf02<=buf01+buf23;
buf46<=buf45+buf67;
dout<=buf02+buf46;
end
3.查找表
查表法,就是建一个表,里面存放了所有的乘法结果,乘数和被乘数用来作为地址去查找里面的乘积,此种方法可以大大提高乘法的速率,但是当乘法位数很大时会要求产生很大的表格,所以此种方法适合位数较小的乘法,特别适合有一个乘数为固定的乘法,如滤波器中的乘法就可以采用此种方法设计
【查找表本质上是一个RAM,例如4输入的LUT可以看成有4位地址线的16x1的RAM,使用时输入地址-查表-输出】
17.FPGA——除法器的设计
对于2:长除法: 比较 相减 移位(状态机实现)
16位 / 8位https://blog.csdn.net/stanary/article/details/77426697
首先被减数16位在前边拼接7位0,拼接后不会改变被除数的大小,而且方便向下操作。拼接后将此23位数称为mid。之后取mid的高8位与除数作比较,若大于除数,则减去除数,结果低位拼接一。若小于除数,则验证最高位是不是0,若是则左移一位,结果拼接0.若不是则用高九位减去除数,结果拼接两个0.然后将差和后15位以及末尾一个0拼接,实现结果循环向前。在计算的同时用计数器计数来确定运行到的位数。在进行以上操作,最终得到结果。
8位 / 8位http://blog.chinaaet.com/justlxy/p/5100052068
将被除数,扩展成16位的数据,低8位为被除数的值,高八位的值全为0。有开始信号,对16位数据data赋值,然后开始运算。比较data的高八位和除数的值,如果大于0,说明被除数大,将此时商置1,赋值给data的最低位,然后将被除数高八位减去除数。然后将data向左移位一位,继续比较。最终计算8次后。Data的高8位数据就为所求的余数,低八位就为所求的商。
或者把除法转换成了查表、乘法和移位:
18.奇数分频
19.静态时序分析
STA,Static Timing Analysis
静态时序分析(STA)告诉我们电路的实际表现如何,而提供约束(SDC文件,对时序的一些要求)来告诉分析工具我们希望电路的表现应该是怎样。
20.竞争与冒险
某一输入变量经过不同的传播路径,到达电路某个汇合点的时间有先有后,这种现象叫竞争;
由于竞争使输出发生瞬时错误的现象叫冒险。
判断方法:代数法(布尔表达式中有相反的信号);卡诺图(有两个相切的卡诺圈,并且相切处没有被其他的卡诺圈包围);实验法:示波器观察
解决方法:加滤波电路,消除毛刺;加选通信号,避开毛刺;增加冗余项,消除逻辑冒险