lcytms 发表于 2016-12-25 22:12:57

1337
        这时候是一个交叉耦合的稳态,就像我们上午所说的,置于一个凹槽之中的一个球,这个时候这个稳态是保持的。
        任何轻微的抖动都会导致这种交叉耦合的反馈,使它回到原来的稳态。
1338
        它的输入为全1的情况下,只有触发能量足够大,才能使这种交叉耦合发生翻转。
        也就说11的情况是保持,00的情况是禁止。
        现在我们也对他建模,分配命名为U1、U2。
        用门级原语的形式来做。
        现在是RS锁存器,但是是由与非门构成的。
        将原来的rs_latch.v另存为rs_latch_nand.v,修改模块名字,并将它设为顶层。
        在层次这棵树上可以找到它。

lcytms 发表于 2016-12-25 22:14:21

1339
        修改端口,将原来的正逻辑改为负逻辑。
        用与非门的原语来做。
        做它的连线。
        这是构成了交叉耦合的,由与非门构成的RS锁存器。

lcytms 发表于 2016-12-25 22:16:49

1340
        Ctrl+S、Ctrl+K。写它的验证。
        新建rs_latch_nand_tb.v。
        写时标。
1341
        实例化。
        装配上。

lcytms 发表于 2016-12-25 22:18:12

1342
        写它的激励。
        写forever。
        依次set、保持、reset、保持。
        写停机。

lcytms 发表于 2016-12-25 22:19:47

1343
        做仿真设置。
        RS锁存器,由与非门构成的。
        分析和综合。

lcytms 发表于 2016-12-25 22:22:26

1344
        查看仿真结果。
        现在我们即便是做的是与非门,仍然讨论的是how to do,如何去实现它,用电路逻辑的方式。
        现在仍然没有上升到行为。
        在这一拍做set,S_n为真值,所以说输出的是1状态。
        这一拍,输入撤销了,保持,两个都是假值,但是这个1状态得到记忆,能够维持下来。
        现在这一拍,是做一个reset,r_n为真值,低电平的负逻辑,所以说输出为0状态。
        在这一拍保持了。

lcytms 发表于 2016-12-25 22:27:08

1345
        这个呢就是RS锁存器。
        RS锁存器仍然使用电路结构的方式来实现。
        下面我们进一步地把这个RS锁存器演变为,进化为D锁存器。
        RS锁存器它是靠两个端口,数字电路告诉我们,通过set和reset的端口来进行设置。
        但是呢,这个电路工作的时候并不是很方便。
        通常呢,我们会把这个RS锁存器,用称之为D类型的锁存器来替代。
        只用一个数据位,一个比特位,来做它的双稳态的电路的驱动。
1346
        那么这个时候怎么做呢?
        实质上还是这张图,只不过在这张图前级再加一个与非门。
        这边也加上一个与非门。
        这两个与非门呢,用一个数据线来控制,这根线呢,就称为D线,或者是data线,数据线。
        数据线的一头连接到s_n。
        数据线的另外一头用反相器取反,连接到reset的端口上。
1347
        剩下的两个端口连接到一起,做使能线。
        当使能线为真值的时候,使能为1,D为1的时候,1跟1相与为1,1取反为0。
        这边反相器之后为0,0跟1相与为0,0取反为1。
1348
        这是负逻辑嘛,S_n为真值,所以它输出的是1。
        就好像1从D输入端,穿透到了Q输出端。
        为什么我们讲穿透呢?
        我们来看,如果D输入端不是1,而是0。
        0跟任何数相与为0,取反后为1。

lcytms 发表于 2016-12-25 22:28:41

1349
        反相器后为1,1跟1相与为1,取反为0。
        Reset为真值,输出是0状态。
        我们这样一分析,就可以看得到,在使能信号为1的时候,输入为1,输出为1,输入为0,输出为0。
        这就好比这个D穿透了这个锁存器,在使能信号为真值的时候。
        当使能信号为假值的时候,无论数据是什么,我们写上X。
        0与任何数相与为0,取反为1。

lcytms 发表于 2016-12-25 22:31:44

1350
        两个1是什么?
        保持。
        它会是一个稳态,保持之前的那个状态。
        也就是说,当使能信号为0的时候,输出状态可以保持。
        这一点很有意思,当使能信号从高到低跳变的瞬间,我们知道,当使能信号为高的时候,是穿透的,输入是什么,输出是什么。
        而使能信号为0的时候,它保持住,也就是说采样点。
        它是沿采样,就是当使能信号从高到低跳变的瞬间,把D的这个数据捕获到双稳态。
        就一直保持住,一直保持到下一次。
        这个呢,我们也把它做出来。

lcytms 发表于 2016-12-25 22:33:29

1351
        我们在实现的过程中,仍然是用结构化来实现。
        仍然讨论了how to do。
        我们给它分配实例名,U1、U2、U3、U4、U5,四个与非门,一个反相器。
        反相器后面的中间信号为D_n信号,还有S_n、R_n。
        现在我们来做这段建模。
        新建一个verilog,另存为d_latch.v。
页: 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21
查看完整版本: 跟李凡老师学FPGA之D02:EDA建模、HDL描述语言(20160424课堂笔记)