硬件描述语言是一种形式化方法描述数字电路和系统的语言,发展至今已经有20多年的历史。现在主要的语言VHDL和Verilog HDL适应了历史发展的趋势和要求,先后成为IEEE标准。关于VHDL和Verilog HDL,这里不多做介绍,附件的资料里会有详细介绍,这里重点谈一下硬件描述语言的学习。
选择VHDL还是verilog HDL?这是一个初学者最常见的问题。其实两种语言的差别并不大,他们的描述能力也是类似的。掌握其中一种语言以后,可以通过短期的学习,较快的学会另一种语言。 选择何种语言主要还是看周围人群的使用习惯,这样可以方便日后的学习交流。当然,对于初学者还是推荐首先掌握Verilog HDL,Verilog HDL是类C风格,它非常容易掌握,只要有C语言的编程基础,通过比较短的时间,经过一些实际的操作,可以在2~3个月内掌握这种设计技术。而VHDL设计相对要难一点,这个是因为VHDL不是很直观,需要有Ada编程基础,一般认为至少要半年以上的专业培训才能掌握。学习Verilog HDL的几个需要注意的地方。
1、了解Verilog HDL的可综合性
附件资料里有详细介绍,大家认真学习一下。
2、要建立硬件意识
要明白的是软件设计和逻辑设计的不同,并理解什么是硬件意识。软件代码的执行是一个顺序的过程,编绎以后的机器码放在存储器里,等着CPU一条一条的取指并执行;因此软件设计中经常会带有顺序处理的思维。而逻辑设计则不同,我们设计的是数字电路,它是由很多很多的与非门及D触发器构成的,上电之后所有与非门和D触发器都同时工作,不会因为A触发器的代码描述在 B触发器之前A触发器就是先工作,事实上,RTL级代码的代码先后顺序在综合成网表文件后这种顺序就消失了,取代的是基本逻辑电路之间的互联关系描述;因此逻辑设计需要的是一种并发的思维,我们也需要用并发的思维去考虑电路的设计。当然,我们设计的电路功能一般都有先后顺序的关系,如果这种顺序不能通过代码的先后顺序来实现,那么要怎么完成这一功能呢?在逻辑设计中,我们所说的先后顺序都是基于时间轴来实现:它的承载体就是时序逻辑,也就是那些触发器。
3、熟练掌握基本数字电路
基本的电路不是很多,也就是D触发器、计数器、移位寄存器、状态机、多路选择器、译码器等几种,所有复杂的电路都可由这些基本的电路构成。高手水平高的体现并不是他能写出一些很奇特的电路,相反,水平高是体现在他们总能将复杂的电路用这些很朴素的基本电路去描述。甚至,你会发现他们的代码基本上是由 if...else、case这些语句构成的,朴素的让你觉得奇怪。我认为,初学者在入门的时候,对于基本电路的设计应该固定化、标准化,每种电路该用什么样的代码描述,应该要固定、统一,尽量少一些花哨的东西。
4、要养成良好的编码风格
很多的细节,比如缩进、命名、参数化、组合逻辑和时序逻辑分离、注释等等,也就是大家说的代码风格。这个其实很重要,最好在一开始就养成好的习惯,这样会为你以后的工作节省很多时间,也会大大提高工作的质量。不注意这个将很吃很多的苦头,细节决定成败啊。Coding Style是逻辑设计人员的一个基本业务素质。而且Coding Style不是看几篇文章,学几条原则就能够成为高手的,他需要你在工作中不断的体会和积累,在学习的最初,有Coding Style的意识,设计者就会有意的积累,对日后发展很有好处。反之则后患无穷。
这是我对学习硬件描述语言的一些体会,分享给家。
——回复可见内容——
FPGA开发板DIY活动准备工作(七)——硬件描述语言
关键词: 开发 活动 准备工作 硬件 描述 语言 电路
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【笔记】生成报错synthdesignERROR被打赏50分 | |
【STM32H7S78-DK评测】LTDC+DMA2D驱动RGBLCD屏幕被打赏50分 | |
【STM32H7S78-DK评测】Coremark基准测试被打赏50分 | |
【STM32H7S78-DK评测】浮点数计算性能测试被打赏50分 | |
【STM32H7S78-DK评测】Execute in place(XIP)模式学习笔记被打赏50分 | |
每周了解几个硬件知识+buckboost电路(五)被打赏10分 | |
【换取逻辑分析仪】RA8 PMU 模块功能寄存器功能说明被打赏20分 | |
野火启明6M5适配SPI被打赏20分 | |
NUCLEO-U083RC学习历程2-串口输出测试被打赏20分 | |
【笔记】STM32CUBEIDE的Noruletomaketarget编译问题被打赏50分 |