硬件新手疑问1:大家都在争硬件开发是选择单片机,DSP,ARM还是FPGA呢?

以我个人经验,我也是在硬件方面做了几年的老油条了,大学时玩过单片机,也就是大家常说的C51,C52,单片机驱动个流水灯还行,但是研究生阶段遇到的很多问题,单片机就有心无力了。至于ARM,DSP or FPGA,由于研一做无人机做了DSP的项目,鄙人觉得DSP入手比较难,但是DSP主攻方向是算法研究的,用于算法处理,绝对是ARM,FPGA替代不了的。但是DSP也有他的局限性,他不利于做硬件系统的驱动控制芯片,通常起着硬件系统控制模块的还是是ARM和FPGA,对比ARM和FPGA,我建议学一种,学精就行,不要三期两道!但是我比较推崇FPGA,因为其应用前景相比于ARM更为广阔,与此同时,FPGA正在朝着算法研究的方向发展,也就是说它有趋势会替代DSP。但目前,一块好的信号处理板的模式通常是DSP+FPGA或者DSP+ARM,所以学习DSP和FPGA结合开发的技术尤为重要!

硬件新手疑问2:既然我选择了学习FPGA,那我用什么编程语言来编程呢?VHDL OR Verilog?

鄙人之前也是纠结了很久,摸爬滚打了老久,那么首先来看看两者编程风格:

1)实体部分

//verilog

module AD9517_Cfg
(
i_9517cfg_CfgClk , // 数据时钟                      
i_9517cfg_CfgClk180 ,       // 配置时钟,与数据时钟反向180度 
i_9517cfg_Arst_n , // 全局复位

o_9517cfg_SpiClk , // 输出SPI时钟
o_9517cfg_SpiDat , // 输出SPI数据
o_9517cfg_Cs_n , // 输出片选
o_9517cfg_Sync_n // 9517各通道间输出同步控制信号

);

input i_9517cfg_CfgClk ;
input i_9517cfg_CfgClk180 ;
input i_9517cfg_Arst_n ;
output o_9517cfg_SpiClk ;
output o_9517cfg_SpiDat ;
output o_9517cfg_Cs_n              ;

output o_9517cfg_Sync_n ;

----------------VHDL

entity gesignal is
port(clk:in std_logic;
--cmd:in std_logic_vector(1 downto 0);
reset:in std_logic;

--cnout3:out std_logic_vector(5 downto 0);
--go:out STD_LOGIC;
--flag:out STD_LOGIC;

--ackrout:out STD_LOGIC;
ODB:out STD_LOGIC;
IAG1,IAG2:out STD_LOGIC;
SAG1,SAG2:out STD_LOGIC;
SRG1,SRG2:out STD_LOGIC;
CMG:out STD_LOGIC;
ACK:out STD_LOGIC
);
end entity gesignal;

不难发现两者语法的实体都很精简,只是定义管脚Verilog在实体外,VHDL在实体内。

2)进程

//verilog

always @( posedge i_9517cfg_CfgClk, negedge i_9517cfg_Arst_n )
begin
    if( ! i_9517cfg_Arst_n )
        int_Cs_n <= 1'b1;
    else if ((int_CsWidthCnt_5b > 7) && (!int_CfgDone))
    int_Cs_n <= 1'b0;
    else
    int_Cs_n <= 1'b1;

end

-----------VHDL

ge_cn3:process(read_flag,clk,iACKT)
begin
if(iACKT='1')then
cn3<=(others=>'0');
else
if(clk'event and clk='1')then
if(read_flag='1')then
cn3<=cn3+'1';
end if;
end if;
end if;
end process ge_cn3;

很显然两者都是固定形式编写,只是Verilog偏C语言一点,常用always作为进程,VHDL常用process来写进程。

就以上两个例子,可以看出,其实VHDL与Verilog的语法是很固定且很简单的,对于编程有经验的人来说并不会纠结选Verilog和VHDL,两种语言完全是相通的,如果放开点说完全是一模一样的,换汤不换药。因此,对于FPGA编程,VHDL能完成的任务,Verilog也一定能完成,Verilog能完成的任务,VHDL也一定能完成,不存在谁优于谁的问题,就在于你对那个编的顺手,哪个感兴趣。

但是当你掌握了其中任意一门语言,就可以很容易转换到另一门编程语言的!就我个人而言,常用的是VHDL,但是也完全能看懂Verilog代码,我并未系统学习Verilog,但是学懂VHDL之后,Verilog也就无师自通啦!因此,硬件编程的老油条做工程时,常常会混合编程,即VHDL和Verilog都会用到的。

结论语

做纯FPGA,学纯VHDL没有一点用!我之前也学过java等语言,搞过软件开发!若是单独学软件编程的JAVA或者硬件开发的FPGA,顶多混到一个研发工程师的级别!所以,,,编程的灵魂还是在于算法和编程思维,fpga里或者java里融合不了算法和编程思维,代码就毫无意义!代码毫无意义就一文不值!所以,我建议多学学算法,算法可以在任何开发平台上运行!比如同步定位算法可以用java编写做成app,也可以用VHDL编写嵌入到硬件系统中跟踪目标!      所以,多学点算法,多学点编程思维总是好的!!!

纯手工输入,转载请注明地址,还有博主非常愿意与各位道友交流项目开发经验!!!!

FPGA编程语言--VHDL OR Verilog?相关推荐

  1. FPGA之道(38)VHDL与Verilog的比较

    文章目录 前言 VHDL与Verilog的比较 语法比较 基本程序框架比较 端口定义比较 范围表示方法比较 元件调用与实例化比较 Process与always比较 标准逻辑类型比较 逻辑常量赋值比较 ...

  2. (72)FPGA模块调用(VHDL调用Verilog)

    (72)FPGA模块调用(VHDL调用Verilog) 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA模块调用(VHDL调用Verilog) 5)结语 1.2 ...

  3. (68)FPGA模块调用(Verilog调用VHDL)

    (68)FPGA模块调用(Verilog调用VHDL) 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA模块调用(Verilog调用VHDL) 5)结语 1.2 ...

  4. (67)FPGA模块调用(Verilog调用system Verilog)

    (67)FPGA模块调用(Verilog调用system Verilog) 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA模块调用(Verilog调用syste ...

  5. (66)FPGA模块调用(Verilog调用Verilog)

    (66)FPGA模块调用(Verilog调用Verilog) 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA模块调用(Verilog调用Verilog) 5)结 ...

  6. (111)FPGA面试题-介绍Verilog 块语句fork-join执行过程

    1.1 FPGA面试题-介绍Verilog 块语句fork-join执行过程 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-介绍Verilog 块语句f ...

  7. (110)FPGA面试题-介绍Verilog块语句begin-end执行过程

    1.1 FPGA面试题-介绍Verilog块语句begin-end执行过程 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-介绍Verilog块语句beg ...

  8. (90)FPGA面试题-使用Verilog实现可预置初值的7进制循环计数器

    1.1 FPGA面试题-使用Verilog实现可预置初值的7进制循环计数器 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-使用Verilog实现可预置初 ...

  9. (88)FPGA面试题-使用Verilog HDL编写二进制转格雷码

    1.1 FPGA面试题-使用Verilog HDL编写二进制转格雷码 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-使用Verilog HDL编写二进制 ...

  10. (64)FPGA面试题-在Verilog中,$display语句可以使用哪些不同的选项?

    1.1 FPGA面试题-在Verilog中,$display语句可以使用哪些不同的选项? 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-在Verilog ...

最新文章

  1. (转)zookeeper理解
  2. python 中 property 属性的讲解及应用
  3. 零基础带你快速入门consul-难道consul还能这样用?
  4. PrimeTime指南——概述和基本流程
  5. Android之开发中用到的几个多线程解析
  6. 一步步编写操作系统 53 任务状态段TSS介绍
  7. kotlin中mainactivity无法直接调用xml中的控件_使用Kotlin高效地开发Android App(一)
  8. (40)不确定性约束
  9. [笔记]numpy中的tile与kron的用法
  10. 2021极术通讯-为什么智慧计算如此重要?
  11. 第一章 概率论基本概念(a)
  12. 图案设计灵感怎么写_服装设计灵感来源怎么写_服装设计理念怎么写
  13. innerHTML\innerText制作动态网页基础
  14. 2.5元组tuple
  15. keras实现双通道模型
  16. 字母大小转换及其十进制的ASCLL码值
  17. 中学学校计算机已装备清单,中学教育技术装备自查报告
  18. 408又来了!华中科技大学软件学院改考408!
  19. 基于 acme.sh 自动申请域名证书(群晖 Docker)
  20. 循环移动数组,比如移动M个位置

热门文章

  1. Dorado 7 使用到的 注释
  2. 在计算机中这样切换大小英语字母,怎么在Excel2016表格中快速转换字母大小写
  3. nodejs实现单点登录系统
  4. 微信公众号 开发详解04【编辑器、图片收集、动图Gif、截图软件、去水印】
  5. 浅谈 MyBatis 缓存
  6. svn和git的区别
  7. svn和git版本管理
  8. PPT 无法播放媒体/视频媒体不可用怎么解决
  9. 【概率论基础01】:通俗解释,啥叫随机变量?
  10. idea破解最新版本