Verilog语言和C语言的本质区别是什么?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」,

点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!

用老石的一句话其实很好说明本质,cpu运行时固定数据流,底层硬件在变化。而fpga运行是固定底层硬件,数据流在硬件上流动。我知道很多初学者看到这段并不能理解,不是说fpga是可以对硬件进行编程的器件吗?为什么运行的时候底层硬件是固定的?

这其实跟他们处理数据的思路有关,cpu是通过指令集去完成指定操作,而fpga实现功能的思路与数字硬件电路一样,需要加法器,那我就用与非门搭建一个加法器,只不过fpga内部就把与或非这些逻辑门用查找表这一个器件替代了,查找表本质就是ram,这个ram只能通过综合软件进行初始化,每次写完程序后,使用vivado,quartus综合,然后烧录,烧录的是什么?其实就是给这些查找表赋值,确定这些查找表的功能,有的查找表根据写的代码,可能是加法器,减法器,数据选择器,比较器等等。当工程烧录进fpga之后,那fpga内的每个查找表的功能和连接方式其实就已经确定了,其实fpga内部的电路就已经确定了,后续需要处理的数据只需要从输入端流出到输出端,就完成了相关了运算,所以说fpga运行是数据流在底层硬件上流动,因此速度就很快。

从而也得知编写fpga本质就是搭建数字电路,只不过使用查找表替换了与,或,非这些基本逻辑。比如在学数字电路的时候想要实现两个加法运算,怎么做?如果不考虑速度,那就按顺序执行。如果想电路简单,速度快,那是不是直接搭两套加法器电路,每个电路完成一个加法运算,最后把两个电路计算结果使用一个数据选择器选择输出就行了?这其实跟fpga的思路是一样的,想速度快直接搭两套完全相同的电路实现两个运算即可。

而单核cpu想要完成两组运算怎么办?那就只有按顺序一组一组的来了。cpu他需要取址,译码等操作,每次只能执行一条指令,当他取到需要运算的数据后,如果要执行加法运算,就需要调用底层加法器,如果要执行除法,就要调用除法器去完成,本质是数据固定,根据运算类型不同调用底层不同硬件去计算,所以速度相对较慢。

5c1ccd77b65d17c6370aca205f7613aa.jpeg当然现在cpu和fpga都已经不是当年那个简单的器件了,fpga内部也早就不只有查找表,cpu内部运算也进步了,但本质的东西还是没变。

相关推荐

  1. C语言区别什么

    2024-07-22 21:44:03       21 阅读
  2. C语言变量常量什么,以及它们区别

    2024-07-22 21:44:03       19 阅读
  3. C语言C++C#区别什么地方?

    2024-07-22 21:44:03       25 阅读
  4. C语言什么运算符目?怎样进行区分

    2024-07-22 21:44:03       47 阅读
  5. C++】C语言C++区别

    2024-07-22 21:44:03       18 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 21:44:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 21:44:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 21:44:03       45 阅读
  4. Python语言-面向对象

    2024-07-22 21:44:03       55 阅读

热门阅读

  1. Vue3 深入组件

    2024-07-22 21:44:03       16 阅读
  2. Leetcode热题100 Day4

    2024-07-22 21:44:03       16 阅读
  3. Python每日学习

    2024-07-22 21:44:03       15 阅读
  4. web前端 React 框架面试200题(七)

    2024-07-22 21:44:03       15 阅读
  5. 鸡兔同笼求解器

    2024-07-22 21:44:03       17 阅读
  6. 深度学习中的损失函数和网络优化方法

    2024-07-22 21:44:03       13 阅读
  7. VUE复习

    VUE复习

    2024-07-22 21:44:03      10 阅读
  8. Unity扩展 UI线段绘制组件——UI上的LineRenderer

    2024-07-22 21:44:03       14 阅读
  9. IDM破解

    IDM破解

    2024-07-22 21:44:03      11 阅读
  10. 通过Python面向对象编程探索克苏鲁神话

    2024-07-22 21:44:03       12 阅读