lcytms
发表于 2017-4-18 10:45:56
1019
是这么个关系,state。
这是一段。
现在我们来讨论两段的模型。
两段就是用两个always语句块来描述这个理论模型。
我们先休息十分钟。
(休息)
lcytms
发表于 2017-4-18 10:49:50
1029
我们接着讨论两段,用两个always语句块来实现有限状态机。
我们把它绘制成代码模型的形式。
输入的部分是引用的部分,输出的部分是驱动的部分。
我们把它绘制成FSM的两段里面的一段,1/2的部分。一个闭节点。
我们说这张图要背下来。
lcytms
发表于 2017-4-18 11:25:52
1030
第二张图就是一段的代码模型。
也要背下来。
总共有四张图,代码模型。
FSM_1S,是个闭节点,输入信号,输出信号,然后呢,引用的是状态,状态机。
lcytms
发表于 2017-4-18 11:31:06
本帖最后由 lcytms 于 2017-4-18 11:32 编辑
1031
CS会在上层形成迭代,也就是说这个state会出现在赋值号的左右两侧。
在状态机的这段描述里面,它是两个信号、两个端口。
但是在它的上层,always语句块所在的module里面,由于state是同名信号,在上层把输出连接到输入,迭代是这样形成的。
内部是两个端口,两个信号。
这是第二张图。
你只有把这些图记下来了,你才不会写错,你才不会把inputs写成outputs,把输入写到输出的位置上。
小舍YZ
发表于 2017-4-18 11:31:40
赞,,,,,,好,,,,,,,,,谢谢分享。。。。。。。。。。。:lol
lcytms
发表于 2017-4-18 11:43:32
1032
这个state,我们知道,既是输入,又是输出,既可以在左侧,也可以在右侧。
总共四张图,第一张图、第二张图,然后三、四,两端的,三段的。
现在我们来做第三张图,两段的代码模型。
两段的代码模型用两个always语句块,我们写成为FSM_2S1。
1/2,它是一个闭节点。
它所引用的信号,是NS,输出的信号是CS,是闭节点。
lcytms
发表于 2017-4-18 11:51:16
1033
时钟线我就省略了。
闭节点就一定有时钟。
然后呢,2/2部分,是一个ON,开节点。
它的输入是CS,以及状态机的现场,输出是NS,以及状态机的输出。
这是第三张图。
转换关系不需要大家背。
lcytms
发表于 2017-4-18 15:56:42
1034
你抄下来,印象会更深刻一些。
也就是说,任何时候,作为一个优秀的EDA工程师,一个合格的EDA工程师,问到这四张图,你都能直接在纸上把它画下来。
很可能应聘的时候就会问到这个问题。
立刻就能把它写下来。
现在呢,我就来说它们之间的转换关系。
1/2,我们写成一个闭节点,我们描述什么呢?
我们描述什么,就得到什么。
也就是描述的这一段,出现在always语句块里里面。
Always语句的信号敏感表里面,必定会有且有一个未被引用的沿信号。
Always的begin块里面,我们写什么就是什么,种瓜得瓜种豆得豆。
在这个begin块里面所有的写在赋值号左侧的信号都会得到寄存器的输出,都会得到D触发器用沿驱动的输出。
lcytms
发表于 2017-4-18 15:57:25
1035
那么写什么呢?
我们只写NS的直线,我们只需要把NS直连上去,这个CS就会出现在赋值号的左侧。
我们可以这样写,就是CS<=NS;,CS不就出现在赋值号的左侧了,就会为它生成驱动,就会为它生成一个寄存器。
lcytms
发表于 2017-4-18 16:48:45
1036
并且用未被引用的沿信号来驱动它。
那一定是时钟。
这个是CS’,这个时候寄存器输出我们就知道,NS通过一个寄存器输出。
在理论模型上,我们可以看得到,就是CS。
所以说这个CS’我们就看不到了,我们描述的就是NS连接到CS的关系。
你只要描述NS连接到CS,CS就出现在赋值号的左侧,那么一定会生成这个寄存器。
这个就构成了1/2的部分,是个闭节点。
时钟我省略了。
页:
1
2
3
4
5
[6]
7
8
9
10
11
12
13
14
15