0]
3...
厂
J
32^00000028
划!
elk
0
rLFLTVmW
m
p_njTjrm
釧din
0
J
T触发器
|PRE>-
PRE
IQ
IUF
E>
AND3
〉C
X
Qn
0+1
Y
0
0
1
0
0
1
0
0
1
0
0
()
1
1
1
1
E>
输出方程Y=XQHC
状态方程Qn+[=XQ^+XQn
entitytestservhdlis
Port(C:
instd」ogic;
X:
instdjogic;
Y:
outstd」ogic;PRE:
instdjogic);endtestservhdl;
architectureBehavioraloftestservhdlissignalq,t:
stdJogic;
begin
t<=notX;
Y<=qandCandX;
processbeginifPRE=fVthenqv=T;elsifrising_edge(C)thenift=frthenq<=notq;elseq<=q;endif;endif;
endprocess;endBehavioral;
testservhdtl
>同步时序逻辑电路与异步时序逻辑电路
根据电路中各级触发器时钟端的连接方式
同步时序电路设计
各触发器的时钟端全部连接到同一个时钟源上,统一受系统时钟的控制,各级触发器的状态变化是同时的。
异步时序电路设计
各触发器的时钟信号是分散连接的,因此触发器的状态变化不是同时进行的。
1•同步时序电路设计
1)同步时序电路原理说明
□从构成方式上讲,同步时序电路所有操作都是在同一时钟严格的控制下步调一致地完成的。
从电路行为上讲,同步电路的时序电路共用同一个时钟,而所有的状态变化都是在时钟的上升沿(或下降沿)完成的。
口在VHDL实现时并不要求同一时钟,而是同源时钟。
所谓的同源时钟是指同一个时钟源衍生频率比值为2的需次方,且初相位相同的时钟。
2)同步时序电路的VHDL描述
同步与门的描述
entitysyngateis
port(elk:
instd」ogic;a:
instd」ogic;b:
instd」ogic;y:
outstdjogic);
endsyngate;/
1、敏感信号只能是时钟信号;
2、时钟信号必须是同源的
3、时钟只能使用一个跳变沿
architecturebehavioralmsyngateis同步复位的描述begin/
process(clk)/ifrising_edge(clk)the
beginifrst_n=l0,then
ifrising_edge(clk)then…
y<=aandb;else
endif;...
endprocess;endif;
endBehavioral;endif;
具有同步复位功能的同步与门的描述
entitysyngateis
port(elk:
instdjogic;a:
instd」ogic;b:
instdjogic;
rst_n:
instd」ogic;y:
outstd」ogic);endsyngate;
architectureBehavioralofsyngateisbegin
process(clk)beginifrising_edge(clk)thenifrst_F=Othenyv=Oelsey<=aandb;
endif;endif;
endprocess;
endBehavioral;
and2
n
rstninvimprstnmv1
HMMWIWHH
yandOOOOimpyandDOOOl
复位信号rst_n过D触发器的控制端来实现。
RTL综合结果图
3)同步时序电路的设计准则
单肘钟策略.单肘钟沿策略
口尽量在设计中使用单时钟,在单时钟设计中,很容易就将整个设计同步于驱动时钟,使设计得到简化。
口尽量避免使用混合时钟沿来采样数据或驱动电路。
使用混合时钟沿将会使静态时序分析复杂,并导致电路工作频率降低。
下。
一个process的双时钟边缘描述方法:
process(clk)begin
对于可编程逻辑器件,不推荐同时使用同一信号的两个沿。
这是因为器件内部的时钟处理电路,只能保证时钟的一个沿具有非常好的指标,而另外一个沿的抖动、偏斜以及过渡时间等指标都不保证,因此同时采用两个沿会造成时钟性能的恶化。
endprocess;
二个process的双时钟边缘描述方法:
process(clk)begin
ifrising_edge(clk)then-■
■■■
endif;
endprocess;process(clk)beginiffallingedge(clk)then-
■■■
endif;
endprocess;
推荐首先将虑对钟僖频,然后利用单沿对削路进行操作。
利用混合时钟先后完成输入数据的下降沿和上升沿采样,并级联输出
entitydualedgeis
port(input:
instdjogic_vector(7downto0);outputl:
outstdjogic_vector(7downto0);output2:
outstd」ogic_vector(7downto0);elk:
instdjogic);
enddualedge;
architectureBehavioralofdualedgeissignaldt:
std」ogic_vector(7downto0);
beginoutputl<=dt;process(clk)begin
ifrising_edge(clk)thendt<=input;endif;
endprocess;
process(clk)
begin
iffalling_edge(clk)thenoutput2<=dt;endif;
endprocess;
endBehavioral;
dualedge:
1
避免使用门控时钟
口如果一个时钟节点由组合逻辑驱动,那么就形成了门控时
钟。
门控时钟常用来减少功耗。
FD
FD
□门控时钟相关的逻辑不是同步电路,即可能带有毛刺,而任何的一点点小毛刺都可以造成D触发器误翻转。
□门控逻辑会污染时钟质量,产生毛刺,并恶化偏移和抖动等指标。
口减少功耗的方法是:
低核电压FPGA、FPGA休眠技术以及动态部分重构技术等
laae
Value
0rs
iiii1iiii
10,000rs
111111111
20,000ps
iiii1iiii
30,000ps
iiii1iiii
40,000ps
iiii1i
wclk
1
II
►
轉input[7:
0]
05
t01:
[02:
:
03)
:
04J
;05
►
圈output1[7:
0
05
5X0
LX0
2X0
3>
[0
1
*r
►
圈output2[7:
0
04
(013
(02)
:
031
im
混合时钟边缘采样功能仿真图
CurrentSimulationTime:
1000ns
jns
25ns
II
15C
I
ns175ns
IIIIIII
20(
I
nsI
225II
ns
II
250nsII
275ris300ns325nIIIlliIlli
5
I
350ns375ns4CIIIIIIIlli
n^input[7:
0]
8,hF4
F4XX8tF7X8MF8X8*hF9%8'hFAX8怖日X&hFCXS'hFDXs'hFE)
L
闕clk
1
r
~L
aoutputi[7:
0]
8TiF3
ThF3j#hF4Xj'hF弓乂汕F6关8怖7乂汕刊)$hF9j(汕魚乂汕闪冶怖匚丿汕FDjx^hFE乂
aE^output2[7:
0]
S'hOO
□:
GRI0K
0IL」GJK}G「
jyiclk^period
20000000
混合时钟边缘采样时序仿真图
避免在子棋块内部使用计数器分频产生所需时钟
口各个模块内部各自分频会导致时钟管理混乱,不仅使得时序分析变得复杂,产生较大的时钟漂移,并且浪费了宝贵的时序裕量,降低了设计可靠性。
口推荐的方式是由一个专门的子模块来管理系统时钟,产生其他模块所需的各个时钟信号。
具有异步复位功能的同步与门的描述
entityasyngateisport(elk:
instdjogic;a:
instd」ogic;b:
instdjogic;
rst_n:
instd」ogic;
y:
outstdjogic);
endasyngate;
architectureBehavioralofasyngateisbegin
process(clk5rst_n)
begin
ifrst_n=,0,theny<=,0,;
elsifrising_edge(clk)theny<=aandb;
endif;
endprocess;
endBehavioral;
asyn「stand*!
RTL综合结果图
Vue
Value
逼elk
0
1
1
1
1
1111
1OOj000ps
Illi
150i000ps
iiii
200j000ps
iiii
250j000ds
iii
■uuin^
JirLTLTLr
JUIRJIT
TLnrm^
Jinn
1
1
1
异步复位与门仿真结果图
2.异步时序电路设计
1)异步时序电路原理说明
□异步时序电路,顾名思义就是电路的工作节奏不一致,不存在单一的主控时钟,电路状态的改变由外部输入的变化直接引起。
□主要是用于产生地址译码器、FIFO和异步RAM的读写控制信号脉冲。
除可以使用带时钟的触发器外,还可以使用不带时钟的触发器和延迟元件作为存储元件。
□由于异步电路没有统一的时钟,状态变化的时刻是不稳定的,通常输入信号只在电路处于稳定状态时才发生变化。
也就是说一个时刻允许一个输入发生变化,以避免输入信号之间造成的竞争冒险。
2)异步时序电路的VHDL描述
□异步电路不使用时钟信号对系统逻辑进行同步,但仍需要对各子系统进行控制,因此采用预先规定的“开始”和“完成”信号或者状态完成逻辑控制。
因此异步电路具有无时钟歪斜问题、低电源消耗等优点。
异步复位的描述
process(clk5rst_n)begin
ifrst_n='O'then
-resetproc
elsifrising_edge(clk)thenendif;
endprocess;
3.异步时序电路与同步时序电路的比较
□同步电路可以有效避免毛刺的影响,提高设计可靠性;
□同步电路用计数器或触发器实现延时,可以简化时序分析过程。
异步电路的延时靠门延时来实现,比较难预测;
□同步电路所有动作都在时钟控制下,可以减少工作环境对设计的影响。
异步电路受工作温度、电压等影响,器件时延变化较大,异步电路时序将变得更加苛刻,会导致芯片无法正常工作。
同步电路只要求时钟和数据沿相对稳定,时序要求较为宽松,因此对环境的依赖性较小。
口同步电路的时钟信号必须要分布到电路上的每一个触发器。
过高的信号翻转率使得设计功耗远大于异步电路功耗。
口同步电路最大的可能时钟周期是由电路中最慢的逻辑路径决定的,也就是关键路径。
口从资源使用方面考虑,虽然在ASIC设计中同步电路比异步电路占用的面积大,但是在FPGA中,是以逻辑单元衡量电路面积的,所以同步设计和异步设计相比,也不会浪费太多资源,加上目前的FPGA门数都比较大,在不是万不得已之际,不要使用异步设计。
目前商用的FPGA都是面向同步的电路设计而优化的