
end
end
endmodule
注:最好在模块外面将异步复位信号同步好,再送至各模块,这样各个模块内部就不需要再分别单独同步了。
下面具体阐述一下同步、异步复位的区别,以及为什么要采用这种方式的原因。
复位电路是每个数字逻辑电路中最重要的组成部分之一。
复位电路有两个工作目的:
1、仿真的时候使电路进入初始状态或者其它预知状态;
2、对于综合实现的真实电路,通过复位使电路进入初始状态或者其它预知状态。
一般来说,逻辑电路的任何一个寄存器、存储器结构和其它逻辑单元都必须要附加复位逻辑电路,以保证电路能够从错误状态中恢复,可靠地工作。
常用的复位信号为低电平有效信号,在应用时外部引脚接上上拉电阻,这样能增加复位电路的抗干扰性能。
复位方式大致分为两类,即同步复位和异步复位。这两种复位方式各有优缺点,其应用场合也各不相同。
module Rst_Circuit(
Rst_n,
Clk,
D,
Q
);
input Rst_n;
input Clk;
input D;
output Q;
reg Q;
always@(posedge Clk)//同步复位begin
if(~Rst_n)
begin
Q<=1'd0;
end
else
begin
Q<=D;
end
end
endmodule module Rst_Circuit(
Rst_n,
Clk,
D,
Q
);
input Rst_n;
input Clk;
input D;
output Q;
reg Q;
//如果没有写"or negedge Rst_n
always@(posedge Clk or negedge Rst_n)
begin
if(~Rst_n)
begin
Q<= 1'd0;
end
else
begin
Q<= D;
end
end
endmodule
•如果目标器件或可用库中的触发器本身包含同步复位端口,则在实现同步复位电路时可以直接调用同步复位端。然后很多目标器件(如PLD)和ASIC库的触发器本身并不包含同步复位端口,这样复位信号与输入信号组成某种组合逻辑(比如复位低•大多数目标器件(如FPGA和CPLD)和
ASIC库的触发器都
包含异步复位端口,
异步复位会被直接接
到触发器的异步复位
电平有效,只需复位与输入信号相与即
可),然后将其输入到寄存器的输入端。为
了提高复位电路的优先级,一般在电路描
述时使用带有优先级的if...else结构,复位
电路在第一个if下描述,其它电路在else
或else...if分支中描述。
端口,如图所示:
同步复位的优点如下:
•同步复位利于基于周期机制的仿真器进行仿
真;
•使用同步复位可以设计100%的同步时序电
路,有利于时序分析,其综合结果的频率
往往较高;
•同步复位仅在时钟的有效沿生效,可以有效
地避免因复位电路毛刺造成的亚稳态和错
误。同步复位在进行复位和释放复位信号
时,都是仅当时钟沿采到复位信号电平变
化时才进行相关操作,如果复位信号树的
组合逻辑出现了某种毛刺,此时时钟沿采
样到毛刺的概率非常低,这样通过时钟沿
采样,可以十分有效地过滤复位电路组合
逻辑产生的毛刺,增强了电路稳定性。
异步复位的优点如下:
•由于多数目标器件(如
FPGA和CPLD)和
ASIC库的触发器都
包含异步复位端口,
异步复位会节约逻辑
资源;
•异步复位设计简单;
•对于大多数FPGA,都
有专用的全局异步复
位/置位资源(GSR,
Global Set Reset),
使用GSR资源,异步
复位到达所有寄存器
的偏斜(skew)最小。同步复位的缺点如下:
•很多目标器件(如FPGA和CPLD)和ASIC
库的触发器本身并不包含同步复位端口,
使用同步复位会增加更多逻辑资源;
•同步复位的最大问题在于必须保证复位信号
的有效时间足够长,这样才能保证所有触
发器都能有效地复位。由于同步复位仅当
时钟沿采样到复位信号时才会进行复位操
作,所以其信号的持续时间起码要大于设
计的最长时钟周期,以保证所有时钟的有
效沿都能采样到同步复位信号。事实上,
异步复位的缺点如下:
•异步复位的作用和释放
与时钟沿没有直接关
系,异步复位生效时
问题并不明显;但是
当释放异步复位时,
如果异步复位信号释
放时间和时钟的有效
沿到达时间几乎一
致,则容易造成触发
器输出为亚稳态,形
仅仅保证同步复位信号的持续时间大于最慢的时钟周期还是不够的,设计中还要考虑到同步复位信号树通过所有相关组合逻辑路径时的延时,以及由于时钟布线产生的偏斜(skew )。这样,只有同步复位大于时钟最大周期,加上同步信号穿过的组合逻辑路径延时,再加上时钟偏斜延时,才能保证同步复位可靠、彻底。如图所示,假设同步复位逻辑树组合逻辑的延时为t1,复位信号传播路径的最大延时为t2,最慢时钟的周期为Period_max ,时钟的skew 为Clk2-Clk1,则同步复位的周期Tsyn_rst 应该满足如下公式:
Tsyn_rst >Period_max +(Clk2–Clk1)+t1+t2
成逻辑错误;
•如果异步复位逻辑树的
组合逻辑产生了毛刺,则毛刺的有效沿会使触发器误复位,造成逻辑错误。
推荐的复位电路设计方式是异步复位、同步释放。这种方式,可以有效地继承异步复位设计简单的优势,并克服异步复位的上述风险和缺陷。在FPGA 和CPLD 等可编程逻辑器件设计中,使用异步复位、同步释放可以节约器件资源,并获得稳定可靠的复位效果。
reg Rst_Reg_n;reg Q;
always @(posedge Clk)begin
Rst_Reg_n <=Rst_n;//将异步复位信号先用Clk 同步一下
end
always @(posedge Clk or negedge Rst_Reg_n)//如果没有写"or negedge
begin
if(~Rst_Reg_n)
begin
Q<=1'd0;
end
else
begin
Q<=D;
end
end
这里使用时钟将外部输入的异步复位信号寄存一个节拍后,再送到触发器异步复位端口的设计方法的另一个好处在于,做STA(静态时序分析)分析时,时序工具会自动检查同步后的异步复位信号和时钟的到达(Recovery)/撤销(Removal)时间关系,如果因布线造成的skew导致该到达/撤销时间不能满足,STA工具会上报该路径,帮助设计者进一步分析问题,如图所示:
同步和异步的区别
答案一:
1.异步传输
通常,异步传输是以字符为传输单位,每个字符都要附加1位起始位和1位停止位,以标记一个字符的开始和结束,并以此实现数据传输同步。所谓异步传输是指字符与字符(一个字符结束到下一个字符开始)之间的时间间隔是可变的,并不需要严格地它们的时间关系。起始位对应于二进制值0,以低电平表示,占用1位宽度。停止位对应于二进制值1,以高电平表示,占用1~2位宽度。一个字符占用5~8位,具体取决于数据所采用的字符集。例如,电报码字符为5位、ASCII码字符为7位、汉字码则为8位。此外,还要附加1位奇偶校验位,可以选择奇校验或偶校验方式对该字符实施简单的差错控制。发送端与接收端除了采用相同的数据格式(字符的位数、停止位的位数、有无校验位及校验方式等)外,还应当采用相同的传输速率。典型的速率有:9600b/s、19.2kb/s、56kb/s等。
异步传输又称为起止式异步通信方式,其优点是简单、可靠,适用于面向字符的、低速的异步通信场合。例如,计算机与Modem之间的通信就是采用这种方式。它的缺点是通信开销大,每传输一个字符都要额外附加2~3位,通信效率比较低。例如,在使用Modem上网时,普遍感觉速度很慢,除了传输速率低之外,与通信开销大、通信效率低也密切相关。
--------------------------------------------------------------------------------
2.同步传输
通常,同步传输是以数据块为传输单位。每个数据块的头部和尾部都要附加一个特殊的字符或比特序列,标记一个数据块的开始和结束,一般还要附加一个校验序列(如16位或32位CRC校验码),以便对数据块进行差错控制。所谓同步传输是指数据块与数据块之间的时间间隔是固定的,必须严格地规定它们的时间关系。
答案二:
请讲详细一些,本人比较弱智,谢谢各位
---------------------------------------------------------------
同步是阻塞模式,异步是非阻塞模式。
---------------------------------------------------------------
我的理解:同步是指两个线程的运行是相关的,其中一个线程要阻塞等待另外一个线程的运行。异步的意思是两个线程毫无相关,自己运行自己的。
不知对错?楼下说
---------------------------------------------------------------
同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。
异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。
CSDN上有讨论过:
http://expert.csdn.net/Expert/topic/26/26592.xml?temp=.3842584
http://expert.csdn.net/Expert/topic/2659/2659726.xml?temp=.1480219
---------------------------------------------------------------
举个不太恰当的例子,就像:
SendMessage(...)
TRACE0("just like send");
PostMessage(...)
TRACE0("just like WSASend using overlapped");
SendMessage是调用的时候不返回,等消息响应后才执行TRACE0,这就是同步.PostMessage是调用后马上返回,不用消息响应就执行TRACE0,这就是异步.
答案三:
500)this.width=500'>screen.width-500)this.style.width=screen.width-500;">同步和异步的区别
举个例子:普通B/S模式(同步)AJAX技术(异步)
同步:提交请求->等待服务器处理->处理完毕返回这个期间客户端浏览器不能干任何事
异步:请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕
--------------------------------------------------------------------------------------------------------------------
同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。
异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。
所以,要我请你吃饭就用同步的方法,要请我吃饭就用异步的方法,这样你可以省钱。
--------------------------------------------------------------------------------------------------------------------
举个例子打电话时同步发消息是异步
--------------------------------------------------------------------------------------------------------------------
有两个方面的同步问题:一方面是基础的,即如何正确接收每一位,称为"位同步"每一位码元如何同步,即"位同步",要想做到位同步,需要两端时钟相同,而两端时钟总是有差别,一是时钟设定不一样,另一是即使时钟设定相同,但由于两端时钟有误差,这种误差很小,在几个码元的时间内不会产生影响,但这种误差是会积累的,在一定的时间后,这种误差就会对正确接受产生影响,因此,在两端对时完成之后,不见得就不会出错,由于误差的积累影响,就需要不断的对时间进行监视和调整,有一种方法是增加一条线,专门传输时钟信号,但一是要增加投资,二是传输也会有差错,所以不可靠。通常的方法是直接从信号中提取时钟信息,即自同步法,要用到数字锁相方法,即在接收信号的跳变上升沿产生一个校正脉冲,再和本地端时钟上升沿比较,由于本地对接收信号的采样是在本地端时钟上升沿对准接收信号的中间处,则校正脉冲和本地端时钟上升沿的相差小于码元周期的一半即可,如不满足这个条件,就把差别信息输入计数器,产生一个数量信息去控制分频器,从而产生一个正确的时钟信号。这样每位码元能够正确接收。(从数字锁相的角度看,数字信号的码型很重要,NRZ码在发送一长串"1"或"0"时没有跳变,不易于提取时钟信号,而曼彻斯每个码元中间有跳变,则易于提供时钟信息,易于同步)另一方面是从内容上来说的,是内容的同步,信息的同步,而上面的位同步是物理上的同步,在数字数据中,信息是由一系列二进制代码组合表示的,实际中,通常是由若干个码元组成一个码元块,称为一个"字",由若干个字组成一个数据块,称为"帧",数据帧可以作为数据传输的单位。要正确接收信息,就要正确识别数据帧,要正确识别数据帧,需要确定帧的首尾,如果起点搞错了,虽然正确的接收了一串代码,但这段代码表示的信息不是原数据帧的信息,接收就失败了,所以,要正确识别帧的起点对应的码元,再按照数据帧规定的长度接收后续码元,才能正确接收数据帧,此即"帧同步"。帧同步的实现方法通常是在一长串信息字前加上一个字(或几个),这个字称为"同步字",是特别规定的(通常有一定的规律),接收端不断的检测收到的代码,一旦发现同步字,就是找到了帧的起点,然后接收后面的信息字,为正确接收信息字的各个码元(位),要用到位同步技术。另外,当帧的长度很短时,特殊的情况是只有一个字符,即一个字符组成的数据(帧),实现上有所不同,第一是不用同步字,太划不来,第二是接收数据位不用位同步技术,因为只有几个码元,积累误差小,字的首尾使用起始位和停止位表示,字符与字符之间是空闲位,接收端检测到起始位就是字符的开始,在起始位要校准时钟。这种"帧同步"因为只有一个字符,所以也称"字同步",也称"起止式同步",由于字符之间的空闲时间不等,也称为"异步通信方式",而把前一种称为"同步通信方式"位同步是保证正确接收码元,是比特同步,帧同步是保证正确接收信息,是信息同步。仅仅只有位同步是没有意义的,因为位同步不能让我们直接识别信息,只有帧同步才能接受准确信息,而准确接收信息的前提是每一位正确的接收,所以,位同步是帧同步的基础,是帧同步的一部分技术。我们说的数据通信的"同步"问题实际上就是"帧同步"。另外,我们常说的同步传输和异步传输,是帧同步的两种不同手段,或不同情况。(所以,一般的教材中说同步问题,就只说同步和异步传输方式,实际上就是帧同步(狭义的,指同步传输)和字同步(指异步传输),字同步是特殊的帧同步,在起点校准时钟,其他位不须使用位同步技术,因为码元数量少,在起点校准时钟后,一个字符时间内积累误差不大).可以想象通信的开始过程,接受方实际上是在找"帧"的起始,这是通信的目的,位同步是为这个目的服务的。from:http://www.cnblogs.com/JeffChen/archive/2007/04/13/711969.html
我注:综合以上两篇文章,所谓的同步、异步复位触发器,是指复位信号和时钟的同步或异步。复位和时钟的同步是指当复位信号发出之后还要等到时钟信号的到来,直到时钟来了复位才有效才进行复位动作;复位和时钟的异步的话,就是复位信号来了的话,触发器就立刻进行复位动作,不必理会时钟。
同步和异步的区别-电平异步时序逻辑电路脉冲异步时序电路和同步时序电路有两个共同的特点:
●电路状态的转换是在脉冲作用下实现的。
在同步时序电路中尽管输入信号可以是电平信号或者脉冲信号,但电路的状态转换受统一的时钟脉冲控制;脉冲异步时序电路中没有统一的时钟脉冲,因此,规定输入信号为脉冲信号,即控制电路状态转换的脉冲由电路状态输入端直接提供。
●电路对过去输入信号的记忆是由触发器实现的。
在同步时序电路中采用带时钟控制端的触发器;而在脉冲异步时序电路中既可用带时钟控制端的触发器,也可用非时钟控制触发器。
事实上,脉冲信号只不过是电平信号的一种特殊形式。所谓电平信号是指信号的“0”值和“1”值的持续时间是随意的,它以电位的变化作为信号的变化。如:
而脉冲信号的“1”值仅仅维持一个固定的短暂时刻,它以脉冲信号的有、无标志信号的变化。显然,电平信号在短时间内的两次变化便形成了脉冲。
而电路中的触发器,则不管是哪种类型,都是由逻辑门加反馈回路构成的。
将上述两个特点一般化,便可得到时序逻辑电路中更具一般性的另一类电路——电平异步时序逻辑电路。
什么是同步逻辑和异步逻辑?
作者:本站来源:本站整理发布时间:2007-9-1122:54:34减小字体增大字体
a)什么是Setup和Holdup时间?
建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被打入触发器。
b)什么是竞争与冒险现象?怎样判断?如何消除?
信号在FPGA器件内部通过连线和逻辑单元时,都有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。信号的高低电平转换也需要一定的过渡时间。由于存在这两方面因素,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为"毛刺"。如果一个组合逻辑电路中有"毛刺"出现,就说明该电路存在"冒险"。用D触发器,格雷码计数器,同步电路等优秀的设计方案可以消除。
c)请画出用D触发器实现2倍分频的逻辑电路?
就是把D触发器的输出端加非门接到D端。
d)什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?
将几个OC门结构与非门输出并联,当每个OC门输出为高电平时,总输出才为高,这种连接方式称为线与。
e)什么是同步逻辑和异步逻辑?
整个设计中只有一个全局时钟成为同步逻辑。
多时钟系统逻辑设计成为异步逻辑。
f)请画出微机接口电路中,典型的输入设备与微机接口逻辑示意图(数据接口、控制接口、所存器/缓冲器)。
是不是结构图?
g)你知道那些常用逻辑电平?TTL与COMS电平可以直接互连吗?
TTL,cmos,不能直连
LVDS:LVDS(Low Voltage Differential Signal)即低电压差分信号,LVDS接口又称RS4总线接口,是20世纪90年代才出现的一种数据传输和接口技术。
ECL:(EmitterCoupled Logic)即射极耦合逻辑,是带有射随输出结构的典型输入输出接口电路
CML:CML电平是所有高速数据接口中最简单的一种。其输入和输出是匹配好的,减少了外围器件,适合于更高频段工作。
附注:
OC门:
OC门,又称集电极开路(漏极开路)与非门门电路,Open Collector(Open Drain)。为什么引入OC门?
实际使用中,有时需要两个或两个以上与非门的输出端连接在同一条导线上,将这些与非门上的数据(状态电平)用同一条导线输送出去。因此,需要一种新的与非门电路--OC门来实现“线与逻辑”。
OC门主要用于3个方面:
1、
实现与或非逻辑,用做电平转换,用做驱动器。由于OC门电路的输出管的集电极悬空,使用时需外接一个上拉电阻Rp到电源VCC。OC门使用上拉电阻以输出高电平,此外为了加大输出引脚的驱动能力,上拉电阻阻值的选择原则,从降低功耗及芯片的灌电流能力考虑应当足够大;从确保足够的驱动电流考虑应当足够小。
2、
线与逻辑,即两个输出端(包括两个以上)直接互连就可以实现“AND”的逻辑功能。在总线传输等实际应用中需要多个门的输出端并联连接使用,而一般TTL门输出端并不能直接并接使用,否则这些门的输出管之间由于低阻抗形成很大的短路电流(灌电流),而烧坏器件。在硬件上,可用OC门或三态门(ST门)来实现。用OC门实现线与,应同时在输出端口应加一个上拉电阻。
3、
三态门(ST门)主要用在应用于多个门输出共享数据总线,为避免多个门输出同时占用数据总线,这些门的使能信号(EN)中只允许有一个为有效电平(如高电平),由于三态门的输出是推拉式的低阻输出,且不需接上拉(负载)电阻,所以开关速度比OC门快,常用三态门作为输出缓冲器。
