您的位置:首页 > 其它

FPGA与MCU,DSP(如C6000,C5000等)等设计思想的异同

2016-06-18 19:28 369 查看
本篇文章讲述FPGA设计思路与MCU/DSP的异同。前阵子博主繁杂事情较多,故一直没有时间更新博客,言归正传,接下来开始描述:

传统的MCU/DSP基于软件思维,软件思维的特点基本上是串行,即便是用多核的DSP或者MCU进行数据的并行处理,在各个核内部运行的程序也是串行的。所谓的串行,举个例子,比如说C语言:

for(i = 0; i < 50; i++)

a[i] = i;

k = i/4;

该语句的执行顺序基本上是这样的:首先第一次进入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语言来说,经过综合后就是一个实实在在的逻辑电路。举个例子:

assign a = b&e;

assign c = d&f;

这两条语句并不是串行的关系,经过综合后,将会形成两个二输入与门,其中一个与门的输入是b和e,输出是a, 另外一个与门的输出是c,输入是d和f。这两条语句/两个电路之间并没有所谓的时间上串行的关系,两者之间属于独立的两个电路,都是在同一时间内一起对不同的激励/输入发生作用的。这也是为什么说FPGA是一种硬件的设计思想,尽管某些硬件描述语言(verilog)看起来很像C语言,其实是不一样的一种设计思想。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: