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

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

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

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

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

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

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

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

相关推荐
Groundwork Explorer4 小时前
W5500 网卡编程初始化与使用指南
python·单片机
智闲电子设计5 小时前
STM32 SD 卡 + FatFS 实战:掉电丢数据?f_sync 和簇对齐写救你
stm32·单片机·嵌入式硬件
ヾChen7 小时前
ESP32 OTA 踩坑实录
stm32·单片机·嵌入式硬件·物联网·学习
小僧景贤7 小时前
嵌入式ADC高阶深度解析:基于STM32底层原理、误差溯源、硬件调校与工业级落地
单片机·嵌入式硬件·stm32 adc·工业级高精度采集·adc 误差校准·量产固件开发
黑猫学长呀8 小时前
【驱动开发常见问题】编译出现rm: cannot remove `asm/arch‘: Is a directory
驱动开发·单片机·嵌入式硬件·bug·编译报错·kernrl
雨田言炎8 小时前
STM32专题之内部FLASH详解
笔记·stm32·单片机
Be for thing10 小时前
【嵌入式成长10】STC89C51蜂鸣器|有源/无源蜂鸣器区分、三极管驱动、定时器播放音乐实战
单片机·嵌入式硬件·学习
郎哥编程课堂11 小时前
单片机零基础训练营第2天:嵌入式开发常用的三种进制
单片机·嵌入式硬件
LCG元11 小时前
STM32 DAC+DMA+定时器触发生成任意波形:数据对齐陷阱、输出缓冲器选型与频率精度实测
stm32·单片机·嵌入式硬件
LuminousCPP12 小时前
嵌入式-51单片机入门(三)-数码管驱动:从单管点亮、多位扫描到动态刷新与消隐原理
笔记·单片机·嵌入式硬件·51单片机