EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
时间的重要性不言而喻,加上时间这个维度就如同X-Y的平面加上了一个Z轴,如同打开了一个新的世界。所以今天我们就要来聊聊时序电路。
; Q7 s# q4 V8 k) f0 w! j
在时序电路中,电路任何时刻的稳定状态输出不仅取决于当前的输入,还与前一时刻输入形成的状态有关。是不是有点绕?这样,下次当你和对象吵架时,她把以前各种旧账翻出来一起算的时候,你别急着还嘴,赶紧趁机温习一下时序电路的概念,也许你想着想着就笑了。 9 D" X; V- c4 T1 F& L6 g
总之……时序电路是有记忆功能的,因此可以设计成储存电路用来保存信息。常用的存储电路有两类:一类采用电平触发,我们称为锁存器(Latch);另一类通过边沿信号触发,也就是触发器(Flip-flop)。中文译法经常有一种不明觉厉的感觉有木有。 事实上,触发器的工作原理并不复杂。首先我们来看图1。 " t# R4 |& i: f" y2 R7 E9 j1 }
m0 W: j( O8 k. D- p
图1D触发器框图和内部门电路结构
# t5 @# m. @" W$ f5 k8 q1 [1 A& @图1所示的是一个D类触发器的框图和内部门电路结构。框图中输入端的三角形代表着时钟信号边沿触发方式。同学们可以通过门电路结构研究D类触发器的工作原理,在这里我们直接给出它的状态特性表:
' S; t C' }3 Z$ p/ _8 c6 S% P
0 Q) i7 a+ z' M9 H$ g( Y6 W2 p$ ^4 q其中,向上的箭头表示时钟信号从低升至高电平时触发有效;反之,从高电平降至低电平的边沿触发方式则由向下的箭头表示。现在我们给出D类触发器的VeriloG代码:
8 ^( v7 x# C% ?: s+ u8 dmodule dff2 ( input clk,d, output reg q, output wire qbar );
. E0 E8 O9 N4 U0 h. y& C& Oassignqbar=~q;always@(posedgeclk)//只有clk上升沿时刻触发q<= d; // 只有当触发生效时,才将d的值赋予给q endmodule 上述代码的意思差不多等效于:你不起床就别想让我起床。就算你起床了,如果没把早餐做好,我还是不起床。
0 X, ~ ~( S- y现在,我们已经有了代码,如何在小脚丫上进行实验呢?其他的好说,问题是我们要处理一下时钟信号的问题,也就是代码中的clk变量。 : K. D2 v( s" @" e: G" B4 L+ t0 q
通常,输入变量clk直接会被指定到小脚丫的板载时钟信号上。不过,小脚丫的固定时钟信号频率为12兆赫兹,比人眼能分辨出的频率快近几十万倍,所以我们根本不可能观察到任何变化。 在我们学习时钟分频之前,观察本次实验的最好办法,就是通过手动时钟信号。因此,我们将变量分配至小脚丫的以下管脚: : p$ d: x% ^+ s# Y
/ r. D7 }4 L& |
/ M# L! B- {2 q( t
8 V' B5 J: U( g" M9 @. B理论上说,将上述程序及管脚分配导入至小脚丫后,可以通过调节开关SW1和SW4来观察q和qbar的状态(L1和L2)。
: O5 V; c+ [- d, V% T
4 e) t4 r0 C' c6 n ) a0 [, y+ `3 `0 u0 F, ?5 m/ C
|