从C/C++到Verilog的思维模式转换

我不是一个好的C/C++程序员,只会用VC6.0的MFC写一些小程序,在接触MinGW之前对编译器和Makefile完全没有概念(即使是之后,也不明白)。后来学习Verilog语言,算是对编译有了一定地认识。

说说我为什么会接触Verilog这种软件领域稀有的语言吧(因为它是硬件描述语言,全名是Verilog HDL)。我专业跟图像处理有很大关系,导师认为用软件写算法处理速度已经不可能再快的,除非有极其昂贵的集群式计算机组,因此他想用FPGA来实现部分算法,这样的话学习Verilog就是必不可少的了。

编译好的C/C++语言的程序都是顺序执行的,即CPU需要一条指令一条指令地执行,而且每一条指令都属于CPU的特定的指令集。拿乘法为例,有的CPU需要多条指令来完成,有的CPU需要一条多周期指令来完成,而极少数高端CPU仅需要一条单周期指令来完成。编译器对代码的优化,也仅仅是对各种指令序列的等效替换,不会创造新的指令。

FPGA不同,它是一张白纸,你需要在上面设计寄存器、连接关系、指令集等,可以把一个4*4矩阵相乘的操作设计成一个拥有32个专用寄存器单周期完成的指令,酷吧!在CPU上这可是需要64个乘法和48个加法的运算。有人会想,乘法和加法必须有先后关系,即使所有的64个乘法都是并行实现的,为什么加法也可以在同一个周期内完成呢?有没有人会这么想?反正我一开始是这么想的,但是后来理解了,周期说白了就是时间嘛,我的低端的FPGA的时钟是100MHz,就是10ns一

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值