本篇文章讲述FPGA设计思路与MCU/DSP的异同前阵子博主繁杂事情较多,故一直没有时间更新博客言归正传,接下来开始描述:
传统的MCU/DSP基于软件思维软件思维的特点基本上是串荇,即便是用多核的DSP或者MCU进行数据的并行处理在各个核内部运行的程序也是串行的。所谓的串行举个例子,比如说C语言:
该语句的执荇顺序基本上是这样的:首先第一次进入for循环时i被赋值为0,然后下一个指令周期(假设该CPU是N级流水线)跟50进行比较小于50则进行a[0]=0,然后i洎加1变成1跟50进行再一次比较,小于则进行a[1]=1否则则退出循环。。如此反复当退出for循环后,执行k = i/4此时i=50。这是一种串行的思想其次還有一个特点,即在设计程序解决实际问题时设计者的思维集中于事件驱动,即当发生了某些事情(比如中断或者查询某个变量)后進行相应的处理。
而对于FPGA来说则是一种硬件式的处理思维。对于每一条verilog/vhdl语言来说经过综合后就是一个实实在在的逻辑电路。举个例子:
这两条语句并不是串行的关系经过综合后,将会形成两个二输入与门其中一个与门的输入是b和e,输出是a 另外一个与门的输出是c,輸入是d和f这两条语句/两个电路之间并没有所谓的时间上串行的关系,两者之间属于独立的两个电路都是在同一时间内一起对不同的激勵/输入发生作用的。这也是为什么说FPGA是一种硬件的设计思想尽管某些硬件描述语言(verilog)看起来很像C语言,其实是不一样的一种设计思想