FPGA同步和异步的区别

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

推荐的复位方式:异步复位、同步释放描述代码及对应的RTL电路:HDLHDLHDLHDL源代码对应的RTLRTLRTLRTL电路moduleRst_Circuit(Rst_n,Clk,D,Q);inputRst_n;inputClk;inputD;outputQ;regRst_Reg_n;regQ;always@(posedgeClk)begin//将异步复位信号先用Clk同步一下Rst_Reg_n=Rst_n;end//如果没有加ornegedgeRst_Reg_n,将变成同步复位always@(posedgeClkornegedgeRst_Reg_n)beginif(~Rst_Reg_n)beginQ=1'd0;endelsebeginQ=D;endendendmodule注:最好在模块外面将异步复位信号同步好,再送至各模块,这样各个模块内部就不需要再分别单独同步了。下面具体阐述一下同步、异步复位的区别,以及为什么要采用这种方式的原因。复位电路是每个数字逻辑电路中最重要的组成部分之一。复位电路有两个工作目的:1、仿真的时候使电路进入初始状态或者其它预知状态;2、对于综合实现的真实电路,通过复位使电路进入初始状态或者其它预知状态。一般来说,逻辑电路的任何一个寄存器、存储器结构和其它逻辑单元都必须要附加复位逻辑电路,以保证电路能够从错误状态中恢复,可靠地工作。常用的复位信号为低电平有效信号,在应用时外部引脚接上上拉电阻,这样能增加复位电路的抗干扰性能。复位方式大致分为两类,即同步复位和异步复位。这两种复位方式各有优缺点,其应用场合也各不相同。同步复位异步复位所谓同步复位是指当复位信号发生变化时,并不立刻生效,只有当有效时钟沿采样到已变化的复位信号后,才对所有寄存器复位。同步复位的应用要点如下:•指定同步复位时,always的敏感表中仅有时钟沿信号,仅仅当时钟沿采到同步复位的有效电平时,才会在时钟沿到达时刻进行复位操作。所谓异步复位是指当复位信号有效沿到达时,无论时钟沿是否有效,都会立即对目标(如寄存器、RAM等)复位。异步复位的应用要点如下:•指定异步复位时,只需always的敏感表中加入复位信号的有效沿即可,当复位信号有效沿到达时,无论时钟沿是否有效,复位都会立即发挥其功能。moduleRst_Circuit(Rst_n,Clk,D,Q);inputRst_n;inputClk;inputD;outputQ;regQ;always@(posedgeClk)//同步复位beginif(~Rst_n)beginQ=1'd0;endelsebeginQ=D;endendendmodulemoduleRst_Circuit(Rst_n,Clk,D,Q);inputRst_n;inputClk;inputD;outputQ;regQ;//如果没有写ornegedgeRst_n,将变成同步复位always@(posedgeClkornegedgeRst_n)beginif(~Rst_n)beginQ=1'd0;endelsebeginQ=D;endendendmodule•如果目标器件或可用库中的触发器本身包含同步复位端口,则在实现同步复位电路时可以直接调用同步复位端。然后很多目标器件(如PLD)和ASIC库的触发器本身并不包含同步复位端口,这样复位信号与输入信号组成某种组合逻辑(比如复位低•大多数目标器件(如FPGA和CPLD)和ASIC库的触发器都包含异步复位端口,异步复位会被直接接到触发器的异步复位电平有效,只需复位与输入信号相与即可),然后将其输入到寄存器的输入端。为了提高复位电路的优先级,一般在电路描述时使用带有优先级的if...else结构,复位电路在第一个if下描述,其它电路在else或else...if分支中描述。端口,如图所示:同步复位的优点如下:•同步复位利于基于周期机制的仿真器进行仿真;•使用同步复位可以设计100%的同步时序电路,有利于时序分析,其综合结果的频率往往较高;•同步复位仅在时钟的有效沿生效,可以有效地避免因复位电路毛刺造成的亚稳态和错误。同步复位在进行复位和释放复位信号时,都是仅当时钟沿采到复位信号电平变化时才进行相关操作,如果复位信号树的组合逻辑出现了某种毛刺,此时时钟沿采样到毛刺的概率非常低,这样通过时钟沿采样,可以十分有效地过滤复位电路组合逻辑产生的毛刺,增强了电路稳定性。异步复位的优点如下:•由于多数目标器件(如FPGA和CPLD)和ASIC库的触发器都包含异步复位端口,异步复位会节约逻辑资源;•异步复位设计简单;•对于大多数FPGA,都有专用的全局异步复位/置位资源(GSR,GlobalSetReset),使用GSR资源,异步复位到达所有寄存器的偏斜(skew)最小。同步复位的缺点如下:•很多目标器件(如FPGA和CPLD)和ASIC库的触发器本身并不包含同步复位端口,使用同步复位会增加更多逻辑资源;•同步复位的最大问题在于必须保证复位信号的有效时间足够长,这样才能保证所有触发器都能有效地复位。由于同步复位仅当时钟沿采样到复位信号时才会进行复位操作,所以其信号的持续时间起码要大于设计的最长时钟周期,以保证所有时钟的有效沿都能采样到同步复位信号。事实上,异步复位的缺点如下:•异步复位的作用和释放与时钟沿没有直接关系,异步复位生效时问题并不明显;但是当释放异步复位时,如果异步复位信号释放时间和时钟的有效沿到达时间几乎一致,则容易造成触发器输出为亚稳态,形仅仅保证同步复位信号的持续时间大于最慢的时钟周期还是不够的,设计中还要考虑到同步复位信号树通过所有相关组合逻辑路径时的延时,以及由于时钟布线产生的偏斜(skew)。这样,只有同步复位大于时钟最大周期,加上同步信号穿过的组合逻辑路径延时,再加上时钟偏斜延时,才能保证同步复位可靠、彻底。如图所示,假设同步复位逻辑树组合逻辑的延时为t1,复位信号传播路径的最大延时为t2,最慢时钟的周期为Period_max,时钟的skew为Clk2-Clk1,则同步复位的周期Tsyn_rst应该满足如下公式:Tsyn_rstPeriod_max+(Clk2–Clk1)+t1+t2成逻辑错误;•如果异步复位逻辑树的组合逻辑产生了毛刺,则毛刺的有效沿会使触发器误复位,造成逻辑错误。推荐的复位电路设计方式是异步复位、同步释放。这种方式,可以有效地继承异步复位设计简单的优势,并克服异步复位的上述风险和缺陷。在FPGA和CPLD等可编程逻辑器件设计中,使用异步复位、同步释放可以节约器件资源,并获得稳定可靠的复位效果。regRst_Reg_n;regQ;always@(posedgeClk)beginRst_Reg_n=Rst_n;//将异步复位信号先用Clk同步一下endalways@(posedgeClkornegedgeRst_Reg_n)//如果没有写ornegedgeRst_Reg_n,将变成同步复位beginif(~Rst_Reg_n)beginQ=1'd0;endelsebeginQ=D;endend这里使用时钟将外部输入的异步复位信号寄存一个节拍后,再送到触发器异步复位端口的设计方法的另一个好处在于,做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上有讨论过:=.3842584=.1480219---------------------------------------------------------------举个不太恰当的例子,就像:SendMessage(...)TRACE0(justlikesend);PostMessage(...)TRACE0(justlikeWSASendusingoverlapped);SendMessage是调用的时候不返回,等消息响应后才执行TRACE0,这就是同步.PostMessage是调用后马上返回,不用消息响应就执行TRACE0,这就是异步.答案三:500)this.width=500'screen.width-500)this.style.width=screen.width-500;同步和异步的区别举个例子:普通B/S模式(同步)AJAX技术(异步)同步:提交请求-等待服务器处理-处理完毕返回这个期间客户端浏览器不能干任何事异步:请求通过事件触发-服务器处理(这是浏览器仍然可以作其他事情)-处理完毕--------------------------------------------------------------------------------------------------------------------同步就是你叫我去吃饭,我听到了就和你去吃饭;如

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功