精华内容
下载资源
问答
  • FPGA设计中的时序分析及异步设计
  • 述同步和异步设计
  • 异步设计7个优点

    千次阅读 2019-10-08 23:18:33
    异步设计尽管存在很多缺点,但是同时也给我们带来了很多福利: 1.Robust mutual exclusion and external input handling 2.Automatic adaptation to physical properties 3.Better technology migration ...

    异步设计尽管存在很多缺点,但是同时也给我们带来了很多福利:

    1. Robust mutual exclusion and external input handling

    2. Automatic adaptation to physical properties

    3. Better technology migration potential

    4. Easing of global timing issues

    5. Average-case instead of worst-case performance

    6. Lower power

    7. No clock skew

    展开全文
  • FIFO异步设计,包括原理说明和代码分析
  • FPGA设计中的时序分析及异步设计注意事项
  • 基于Balsa-Xilinx FPGA的异步设计流程.pdf
  • 三、基于 IAsyncResult 的异步设计模式(设计层面) IAsyncResult 异步设计模式通过名为 BeginOperationName 和 EndOperationName 的两个方法来实现原同步方法的异步调用,如 FileStream 类提供了 BeginRea
      
    

     

    三、基于 IAsyncResult 的异步设计模式(设计层面)

    IAsyncResult 异步设计模式通过名为 BeginOperationName 和 EndOperationName 的两个方法来实现原同步方法的异步调用,如 FileStream 类提供了 BeginRead 和 EndRead 方法来从文件异步读取字节,它们是 Read 方法的异步版本

     

    Begin 方法包含同步方法签名中的任何参数,此外还包含另外两个参数:一个AsyncCallback 委托和一个用户定义的状态对象。委托用来调用回调方法,状态对象是用来向回调方法传递状态信息。该方法返回一个实现 IAsyncResult 接口的对象

     

    End 方法用于结束异步操作并返回结果,因此包含同步方法签名中的 ref 和 out 参数,返回值类型也与同步方法相同。该方法还包括一个 IAsyncResult 参数,用于获取异步操作是否完成的信息,当然在使用时就必须传入对应的 Begin 方法返回的对象实例

     

    开始异步操作后如果要阻止应用程序,可以直接调用 End 方法,这会阻止应用程序直到异步操作完成后再继续执行。也可以使用 IAsyncResult 的 AsyncWaitHandle 属性,调用其中的WaitOne等方法来阻塞线程。这两种方法的区别不大,只是前者必须一直等待而后者可以设置等待超时

     

    如果不阻止应用程序,则可以通过轮循 IAsyncResult 的 IsCompleted 状态来判断操作是否完成,或使用 AsyncCallback 委托来结束异步操作。AsyncCallback 委托包含一个 IAsyncResult 的签名,回调方法内部再调用 End 方法来获取操作执行结果

    public class AsyncDemo
    {
        // Use in asynchronous methods 
        private delegate string runDelegate();
        private string m_Name;
        private runDelegate m_Delegate;
        public AsyncDemo(string name)
        {
            m_Name = name;
            m_Delegate = new runDelegate(Run);
        }
        public string Run()
        {
            return "My name is " + m_Name;
        }
        public IAsyncResult BeginRun(AsyncCallback callBack, Object stateObject)
        {
            try
            {
                return m_Delegate.BeginInvoke(callBack, stateObject);
            }
            catch (Exception e)
            {
                // Hide inside method invoking stack 
                throw e;
            }
        }
        public string EndRun(IAsyncResult ar)
        {
            if (ar == null)
                throw new NullReferenceException("Arggument ar can't be null");
            try
            {
                return m_Delegate.EndInvoke(ar);
            }
            catch (Exception e)
            {
                // Hide inside method invoking stack 
                throw e;
            }
        }
    } 

    首先是 Begin 之后直接调用 End 方法,当然中间也可以做其他的操作

    class AsyncTest
    {
        static void Main(string[] args)
        {
            AsyncDemo demo = new AsyncDemo("jiangnii");
            // Execute begin method 
            IAsyncResult ar = demo.BeginRun(null, null);
            // You can do other things here 
            // Use end method to block thread until the operation is complete 
            string demoName = demo.EndRun(ar);
            Console.WriteLine(demoName);
        }
    } 


     

    也可以用 IAsyncResult 的 AsyncWaitHandle 属性,我在这里设置为1秒超时

    class AsyncTest
    {
        static void Main(string[] args)
        {
            AsyncDemo demo = new AsyncDemo("jiangnii");
            // Execute begin method 
            IAsyncResult ar = demo.BeginRun(null, null);
            // You can do other things here 
            // Use AsyncWaitHandle.WaitOne method to block thread for 1 second at most 
            ar.AsyncWaitHandle.WaitOne(1000, false);
            if (ar.IsCompleted)
            {
                // Still need use end method to get result, but this time it will return immediately 
                string demoName = demo.EndRun(ar);
                Console.WriteLine(demoName);
            }
            else
            {
                Console.WriteLine("Sorry, can't get demoName, the time is over");
            }
        }
    } 


    不中断的轮循,每次循环输出一个 "."

    class AsyncTest
    {
        static void Main(string[] args)
        {
            AsyncDemo demo = new AsyncDemo("jiangnii");
            // Execute begin method 
            IAsyncResult ar = demo.BeginRun(null, null);
            Console.Write("Waiting..");
            while (!ar.IsCompleted)
            {
                Console.Write(".");
                // You can do other things here 
            }
            Console.WriteLine();
            // Still need use end method to get result, but this time it will return immediately 
            string demoName = demo.EndRun(ar);
            Console.WriteLine(demoName);
        }
    } 
    


     

    最后是使用回调方法并加上状态对象,状态对象被作为 IAsyncResult 参数的 AsyncState 属性被传给回调方法。回调方法执行前不能让主线程退出,我这里只是简单的让其休眠了1秒。另一个与之前不同的地方是 AsyncDemo 对象被定义成了类的静态字段,以便回调方法使用

    class AsyncTest
    {
        static AsyncDemo demo = new AsyncDemo("jiangnii");
        static void Main(string[] args)
        {
            // State object 
            bool state = false;
            // Execute begin method 
            IAsyncResult ar = demo.BeginRun(new AsyncCallback(outPut), state);
            // You can do other thins here 
            // Wait until callback finished 
            System.Threading.Thread.Sleep(1000);
        }
        // Callback method 
        static void outPut(IAsyncResult ar)
        {
            bool state = (bool)ar.AsyncState;
            string demoName = demo.EndRun(ar);
            if (state)
            {
                Console.WriteLine(demoName);
            }
            else
            {
                Console.WriteLine(demoName + ", isn't it?");
            }
        }
    }
    

    对于一个已经实现了 BeginOperationName 和 EndOperationName 方法的对象,我们可以直接用上述方式调用,但对于只有同步方法的对象,我们要对其进行异步调用也不需要增加对应的异步方法,而只需定义一个委托并使用其 BeginInvoke 和 EndInvoke 方法就可以了

     

    四、基于事件的异步模式(设计层面)

    待续...

    展开全文
  • SNUG1999-2002经典论文-基于verilog代码的编码综合与异步设计.rar
  • 每日一题-5.11-异步设计

    千次阅读 2020-05-11 23:10:07
    11. 关于异步设计的危害,下列说法错误的是()D A. 信号的时延随着每次布局布线的不同而不同,随着PVT的改变而改变,因此可靠性差,而且不容易移植。 B. 异步设计会产生毛刺 C. 异步设计不能进行静态时序分析 D...

    11. 关于异步设计的危害,下列说法错误的是()D

    A. 信号的时延随着每次布局布线的不同而不同,随着PVT的改变而改变,因此可靠性差,而且不容易移植。

    B. 异步设计会产生毛刺

    C. 异步设计不能进行静态时序分析

    D. 异步设计会带来很大的同步翻转噪声

    解析:同步翻转噪声指大量触发器在同一时刻进行电平切换,会在相邻管脚引入噪声,因此同步翻转噪声,需要同一时刻,而异步电路有两个时钟源。

    展开全文
  • FPGA设计中的时序分析以及异步设计注意事项。主要讲述了FPGA开发中的时序和相应的注意事项。
  • 同步逻辑和异步逻辑的区别同步逻辑是时钟之间有固定的因果关系。...异步电路设计电路简单,硬件开销较低; 同步电路设计电路消耗更多硬件资源,但大大提高性能,同时方便对其进行静态时序分析。大规模集成电路基本...

    同步逻辑和异步逻辑的区别
    同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系
    同步电路和异步电路区别
    同步电路有统一的时钟源,经过PLL分频后的时钟驱动的模块,因为是一个统一的时钟源驱动,所以还是同步电路。
    异步电路没有统一的时钟源

    异步电路设计电路简单,硬件开销较低;

    同步电路设计电路消耗更多硬件资源,但大大提高性能,同时方便对其进行静态时序分析。大规模集成电路基本上采用同步设计的方法;

    转载于:https://www.cnblogs.com/Z-selfadd/p/11289563.html

    展开全文
  • (1) 理解亚稳态产生的物理意义 (2) 理解触发器本身的建立时间和保持时间以及异步复位恢复的概念 (3) 理解亚稳态恢复和同步寄存器的概念 (4) 理解组合逻辑的延迟产生的...(9) 理解并掌握异步电路的设计方法
  • spring boot异步设计接口

    千次阅读 2017-12-07 23:20:13
    spring boot异步回调接口设计1 spring boot 异步回调设计接口2
  • 四、基于事件的异步模式(设计层面) 基于事件的C#异步编程模式是比IAsyncResult模式更高级的一种异步编程模式,也被用在更多的场合。该异步模式具有以下优点: · “在后台”执行耗时任务(例如下载和数据库操作...
  • C#中的异步调用及异步设计模式(一)

    千次阅读 2011-09-26 18:44:04
    近期项目中使用了不少异步操作,关于“异步”做个...关于“异步”的使用可分为:使用层面和类库设计层面,细分如下: 一、使用异步方式调用同步方法(使用层面)。 二、使用 IAsyncResult 调用异步方法(使用层面)
  • 异步FIFO设计

    2021-02-03 18:00:37
    摘要:本文介绍如何应用美国QUICKLOGIC公司的QUICKRAM器件设计高速、高可靠异步FIFO(AsynchronousFIFO)。 关键词:异步FIFO 异步FIFO广泛地用于计算机网络工业中进行非同步数据传送,这里的非同步指按一种速率...
  • 异步fifo设计

    2014-05-07 18:28:28
    异步fifo程序设计
  • 绝大部分ASIC设计工程师在实际工作中都会遇到异步设计的问题。文章针对异步时序产生的问题,介绍了几种同步的策略。结绳法和异步FIFO的异步比较法
  • 异步电路设计

    2018-10-31 16:02:40
    异步电路设计的基础,基本结构,性能评估,握手电路的实现,速度无关的控制电路的实现,4相捆绑数据协议和电路
  • ASIC中的异步时序设计

    2010-08-24 13:06:58
    绝大部分的ASIC设计工程师在实际工作中都会遇到异步设计的问题,本文针对异步时序产生的问题,介绍了几种同步的策略,特别是结绳法和异步FIFO的异步比较法都是比较新颖的方法。
  • 单相异步电机电磁设计程序
  • 然而,有一种截然不同的设计技术即将走上前台:异步设计。  这一新技术的主要推动力来自硅技术的发展状况。随着硅产品的结构缩小到 90 纳米以内,降低功耗就已成为首要事务。异步设计具有功耗低、电路更可靠等优点...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 401,456
精华内容 160,582
关键字:

异步设计