lcytms
发表于 2016-12-25 22:35:54
1352
这个就是D锁存器。
我们先把端口声明出来。
这个时候一定要交换为顶层,仿真我们才能做得下去。
Ctrl+S、Ctrl+K。
然后我们同样用门级原语,第一个是它的反向器not,u1。
lcytms
发表于 2016-12-25 22:37:59
1353
然后是与非门,u2。
四个与非门,u3、u4、u5。
声明中间信号,d_n、s_n、r_n。
写参数。
lcytms
发表于 2016-12-25 22:39:19
1354
写参数。
lcytms
发表于 2016-12-25 22:41:09
1355
Ctrl+S、Ctrl+K。
这次我们写成验证的时候呢,我们特地加一段毛刺,锁存器的毛刺现象、冒险和竞争现象,就是数字电路里面讨论比较充分的一个部分。
新建verilog,另存为d_latch_tb.v。
写时标。
lcytms
发表于 2016-12-25 22:42:42
1356
做好装配的准备。
写时钟,一定要记住,初始化的时候,1比0好。
既然写了时钟,我们就写它的周期。
我们写一个25MHz的时钟,周期40ns,半周期20ns。
lcytms
发表于 2016-12-25 22:43:48
1357
初始化时钟为1,d为0。
然后写forever,我写一段毛刺。
就是d,data信号本身就有毛刺。
lcytms
发表于 2016-12-25 22:45:09
1358
我们可以看得到这种穿透现象。
然后写一个停机。
lcytms
发表于 2016-12-25 22:46:55
本帖最后由 lcytms 于 2016-12-25 22:47 编辑
1359
做仿真设置。
运行仿真。
所以说,我们这段课程呢,实际上对我们建模的学习,是对数字电路的复习。
观察仿真波形。
clk为高电平的时候,也就是使能信号为高电平的时候,数据穿透了,d是什么,q就是什么。
当使能信号从高到低跳变的瞬间,这个信号被锁存了下来。
lcytms
发表于 2016-12-25 22:50:29
1400
变成高电平的时候是穿透的,变成低电平的时候被锁存住了。
这种逻辑在FPGA里面,称之为电平敏感的逻辑。
因为使能信号是电平触发的,当它为高电平的时候,数据穿透。
为低电平的时候,数据保持。
因为这是一个电平敏感。
当然我们现在只是做一个复习,同时我们也是看到数据流、行为、结构化怎么写。
现在我们讨论的这些时序逻辑,全都是结构化,全都讨论了how to do。
1401
现在我们进一步地把它转变成沿敏感,也就是说这个触发,完全是沿信号的触发,而不是电平信号的触发。
现在锁存的瞬间是电平,但是为高电平的时候却穿透了。
我们知道,完全的沿敏感才能有效屏蔽。
在数字电路里面,它是用什么方式来解决这个问题呢?
本身这个D锁存器就是沿锁存,但是呢,由于在高电平的时候,它是穿透的,所以说,数字电路的解决方案就是维持阻塞,今天的寄存器就是这么做的。
这样的话呢,我们把D类型的锁存器变成D类型的触发器。
1402
D类型的Flip flop,缩写是DFF,D触发器。
这个DFF呢,就是我们现在说的register,寄存器。
DFF称之为寄存器,就是说具有注册登记保持的功能。
这个呢,是同步电路里面的一个名词,register。
电路的名词,就是DFF。
lcytms
发表于 2016-12-25 22:51:52
1403
维持阻塞怎么构成呢?
有两个类似的结构,就是D锁存器。
这个是它的从机,然后它的前级构成一个主机,也是D锁存器。
主机,从机,这边的Q,这边的D,直接相连。
这边的Q输出端,就是触发器的Q输出端。