1022
ST解决了无限长的时间轴,在变成有限状态的时候,那个状态转移转向何处的问题。
你给出当前状态,根据现场输入,这段逻辑它知道下一个状态指向何处。
至于何时转,是由状态寄存器决定的。
状态寄存器,Register,在时钟下面,将NS进行转移。
而CS形成迭代。这样就把离散的时间轴,便成为有限的状态。
这个架构是经典的有限状态机模型。
1023
阿兰图灵一直研究到近代。
这个架构基本上确定下来。
就是把无限长的时间轴上的离散取样点,变成有限的状态。
ST是state transition。是一段逻辑,它决定了转向何处。
这是一个寄存器,它决定了何时转。
这样的话呢,在无限长的时间轴的离散取样点上,总可以在有限的状态上,找到一个转移跟它对应。
有限状态我们解释过,从阿兰图灵一直到AI都有关系。
都认为这种描述,是对现实世界的真实描述,仅仅是在超大的时空、极小的时空领域,它不适用。
1024
我们正常的时空领域都可以实现,都可以用这个模型来描述。
那么,一段逻辑,把无限长的时间轴变成有限的状态以后,而这种逻辑产生的动作呢,有两种模型。
一个是仅仅根据CS产生动作。
不仅跟状态有关,还跟输入有关,是米利。
摩尔,米利。
1025
其实还是有一些模型,其它的一些模型。
但是现在比较定型的,它的数学基础是很稳定的。
MATLAB我们都可以查得到,都可以用它来做。
仅仅跟状态有关的是摩尔。
既跟有限的状态有关,又跟当前输入有关的,是米利。
在状态未变,而输入变的情况之下,摩尔是不会输出的,摩尔的输出不变。
而米利的输出会变。状态未变,CS未变,但输入会变,摩尔不会变,摩尔的输出是固定的。
但米利会变。
1026
米利多变嘛,米利在一个状态下,在一个时钟节拍之中,它也可能会发生变化。
我们在这看得到,寄存器打两撇,是一个闭节点,ST和米利是开节点。
如果状态未变,而输入发生变化,输出也会发生变化。
最快的是在两个节拍之间,米利有可能变化,而摩尔不会变。
初看起来呢,它可能更快,输入一变,它就会变,而且是在两个节拍之间变。
但是它并不支持同步电路。
摩尔支持。
因为摩尔一定是在时钟沿的右侧变化。
所以说,在同步电路里面,它会带来很多的问题,但是摩尔不会。
1027
所以说同步电路里面优选的是摩尔。
这个一定是在时钟沿的右侧发生变化。
虽然它是可以写成开节点。
这是有限的状态的由来。
据此我们得出三种模型,这是理论模型。
然后呢,我们用HDL语言来搭建的时候也是三种模型。
比方线性序列机也是它的特例。
三种模型分别是用一个循环行为体,来写这个模型。
两个循环行为体、三个循环行为体。
分别称之为一段式描述、两段式或者是三段式。
本帖最后由 lcytms 于 2017-6-5 20:31 编辑
1028
我们在看这个斯坦福的教材,或者是看Xilinx的手册,它的Quartus的推荐的风格的时候,它就明确地说,它要用两段式,支持用两段式。
两个always语句块。
然后呢,我们来做个复习。
Always的语句块是一个独特的结构,称之为循环行为体。
赞,,,,,,,,,谢谢分享。。。。。。。。。。:lol
1029
只有把行为语句至于这个循环行为体之中,EDA才能识别出来。
所以它给你的是一种框架。
Always仅仅是一个单词,一个保留字,你凡是写行为语句,你必须放在这个begin end块里面,EDA才能识别这样是一个行为语句。
当我们写行为语句的时候,就一定要用always语句,或者是用initial。
Initial用于综合的时候,它是受限的。
Always语句总能综合。
那么信号敏感表是一个什么概念呢?
这个呢,要回到米德和Moorby的故事上。
经典的EDA的理论,米德的理论里面,它是用process,process里面也有信号敏感表。
1030
早期的研究的团队啊,在做出了循环行为体之后,用行为语句来写EDA。
以前我们搭建一个电路模型,都要一个门一个门来做。
用行为语句,EDA自动来实现,当然效率很高了。
综合没有任何问题。
Process,不要信号敏感表,没有问题,完全能综合出所需要的电路来。
但是在Moorby体系下面发现一个问题,用于非综合目的的时候,回到电脑上了。
那么电脑上,就要做验证,或者第三方分析的时候,就要对这段电路执行模拟的动作,仿真的动作。
象真实那样执行动作。
该什么时候来做它的process呢?
什么时候非综合的来做呢?
