与或非 是完备的,其中去掉”与”或者”或”还是完备的。NAND和NOR是完备的,其中去掉单个的NAND或者NOR也是完备的。一般地,我们使用AND、OR、NOT作为一组,NAND、NOR作为一组。
使用 与或非 的主要原因其实是因为“自然”,复合正常人的认知。
The general rule is that neither the input of a transmission gate nor the state node of a sequential circuit should ever be exposed to the outside world, where noise is likely.
一般的规则是,传输门的输入和时序电路的状态节点都不应该暴露在外界环境中,因为外界很可能存在噪声。所以,我们需要使用BUFFER将其保护起来。FPGA中就是这样做的。
However, sequential circuits with cyclic paths can have undesirable races or unstable behavior. Analyzing such circuits for problems is time-consuming, and many bright people have made mistakes.
尽量避免设计出异步电路,保证电路的稳定性和易行性。尽管对异步电路进行了几十年的研究,但几乎所有的数字系统基本上都是同步的。同步电路也有两种,一般用边缘触发。一些高性能微处理器使用脉冲锁存器代替触发器。
FF->REGISTER(FF*n)-边缘触发 LATCH-电平触发
电路是有扰动的,所以只要反相器的增益大于1,就不会停留在中间的forbidden zone,而是落到VDD或者GND。所以一般不考虑实际电路停在中间态。
摩尔状态机和米利状态机
摩尔状态机-只与当前状态有关(推荐,时序上更安全)
米利状态机-与当前状态和当前输入有关
Moore一般比Mealy的状态要多。有时候,需要根据你想要状态机响应的时刻(当前or下一周期)选择Mealy/Moore。特别要注意状态机的层次化设计,分成大状态和小状态。
课本中的STATE描述规则。
FACTORED STATE MACHINES(大状态+小状态)可以实现简化,是在原有基础上改进,没有引入新的状态,而不是对状态进行重排。
各种延时的示意
计算系统稳定性,使用mean time between failures (MTBF)
这个公式描述同步器稳定下来的概率。最后稳定下来的值是对的,因为扰动方向是对的。同步器本质是一个延迟器,还可以多加几个(可能)。
评价系统速度是延迟latency和吞吐量throughput。并行化设计也分为时间上和空间上,课本给的例子是做pizza。
xilinx的语境下reset和set是同步的,preset和clear是异步的。
Q1如何编码可以简化电路
A1我认为在HDL编写中,不太需要去简化编码,因为这并不会带来较大的性能提升。在笔头作业中可以使用格雷码、one-hot码(增加ff,减少gate)或者结合实际的一些编码,减少跳转。
对于3计数器,one-hot码更可取。其实,在FPGA中,因为资源排在那,不用白不用,不用FF反而是一种浪费,所以不妨都用一些FF来换取更高的性能。
尽管我认为编译可以不简化,但是所需要的状态还是要尽可能简化的。如果状态机状态太多,应该拆开几个状态机,否则会造成时序无法meet,无法满足时序约束。
Q2状态机的设计
A2
1-自然语言描述
2-分成大状态和小状态,层次化,大状态机的状态可以是小状态的输入
3-编码方式
whereas -然而
unstable or astable-不稳定
infamous-臭名昭著
finite state machines-FSMs-有限状态机
lily pad-睡莲的漂浮叶
metastability-亚稳态
