小白如何快速入门Verilog HDL ?一文为你讲解清楚

news2024/11/13 16:12:23

在学习的过程中,无论学什么都不可能一蹴而就。都是从一个初步认识到慢慢了解再到精通掌握的过程,学习Verilog HDL语法也是一样的道理,首先你要清楚什么是Verilog HDL,然后结合实践再遵从理论,这样后面的学习才能理解的更透彻。

Verilog HDL是一种用于数字逻辑电路设计的语言。用Verilog HDL描述的电路设计就是该电路的Verilog HDL模型。Verilog HDL既是一种行为描述的语言也是一种结构描述的语言。这也就是说,既可以用电路的功能描述也可以用元器件和它们之间的连接来建立所设计电路的Verilog HDL模型。Verilog模型可以是实际电路的不同级别的抽象。这些抽象的级别和它们对应的模型类型共有以下五种。

系统级(system):用高级语言结构实现设计模块的外部性能的模型。
算法级(algorithm):用高级语言结构实现设计算法的模型。
RTL级(Register Transfer Level):描述数据在寄存器之间流动和如何处理这些数据的模型。
门级(gate-level):描述逻辑门以及逻辑门之间的连接的模型。
开关级(switch-level):描述器件中三极管和储存节点以及它们之间连接的模型。

![在这里插入图片描述](https://img-blog.csdnimg.cn/b5583374aa954e9aa5f33d046ff1f9ff.png

Verilog HDL 的特点

Verilog HDL 语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。使用这种语言编写的模型可以方便地使用 Verilog 仿真器进行验证。Verilog HDL 从 C 语言中继承了多种操作符和结构。Verilog HDL 提供了扩展的建模能力和扩展模块。Verilog HDL 语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。

Verilog HDL 之所以成为和 VHDL 并驾齐驱的硬件描述语言,是因为它具有如下特点:

• 基本逻辑门和开关级基本结构模型都内置在语言中;
• 可采用多种方式对设计建模,这些方式包括行为描述方式、数据流方式、结构化方式;
• Verilog HDL 中有线网(Wire)数据类型和寄存器(Reg)数据类型两类数据类型,线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件;
• 能够描述层次设计,可使用模块实例结构描述任何层次;
• 设计的规模可以是任意的,语言不对设计的规模大小施加任何限制;
• Verilog HDL 不再是某些公司的专有语言而是 IEEE 标准;
• Verilog HDL 语言的描述能力能够通过使用编程语言接口(Programme LanguageInterface,简称 PLI)机制进一步扩展,PLI 允许外部函数访问 Verilog 模块内信息、允许设计者与模拟器交互的例程集合;
• 设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RT L)到算法级,包括进程和队列级;
• Verilog HDL 能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示,这些值也能够用于与期望值比较,在不匹配的情况下打印报告消息。

如何自学?

如果想从本质上理解VerilogHDL (不是说全面理解),并且能够用于实践,C语言等软件编程语言或者其他高级抽象编程范式,都不是学习VerilogHDL的前置条件。相反,对初级者而言,那些软件编程的知识对学习VerilogHDL是极大的障碍。

学习VerilogHDL之前必须学习数字电路相关的知识。比如数字逻辑、微机原理(硬件)、电路分析、模拟电路(初级)这些。后续学一点数字信号处理的课程是有益的补充。再往前的基础就到高中的电学知识了。

自学VerilogHDL的方法就是实践。可以这样做:
第一步:在网上找一个模块代码(尽量简单,但是需要足够完整。比如经过认证的开源IP),从头到尾把里面出现的语法现象过一遍,不懂就查资料。都看懂了。
第二步:跑一下简单的仿真,看代码的结果是否跟预期的一致。说不定还会发现一两个bug。
第三步:不看原始代码,自己根据模块的Specification文档描述,把那个模块重新设计一遍。

其实,如果只是想要VerilogHDL来描述可综合的电路的话,需要掌握的语法就几条。三天之内可以搞清楚。其余的边做边学习。更具体的说法就是知道怎么描述组合逻辑电路,知道怎么描述时序逻辑电路,知道怎么用模块把一个个小电路连接成大电路。

书籍推荐

在这里插入图片描述

本书精选了通信、计算机和网络领域9类共20余个典型电路,包括网络接口、存储管理、帧同步、CAM和TCAM、哈希散列查找、深度包检测、漏桶算法、数据交换单元和SM4加解密电路,给出了每个电路的功能说明、算法原理和内部结构,以及完整的VerilogHDL设计代码和仿真测试代码。本书中的所有代码都在FPGA开发环境上进行了实际验证,可以直接应用于读者的设计实践中,具有良好的参考价值。

需要学习资料的同学,可以私信留下正确的联系方式,或者填写入行指导,老师会主动联系你发送学习资料!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/188799.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

P1359 租用游艇

# 租用游艇 ## 题目描述 长江游艇俱乐部在长江上设置了 $n$ 个游艇出租站 $1,2,\cdots,n$。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站 $i$ 到游艇出租站 $j$ 之间的租金为 $r(i,j)$($1\le i\lt j\le n$&#xf…

MPLS实验(1.31)

目标: 一、首先为公网的每个路由器配置对应的ip和环回并且用OSPF进行动态选路 r2: [r2]int gi 0/0/2 [r2-GigabitEthernet0/0/2]ip add 23.1.1.1 24 [r2-GigabitEthernet0/0/2]int lo0 [r2-LoopBack0]ip add 2.2.2.2 24 r3: [r3]int gi 0…

Oracle的学习心得和知识总结(十)|Oracle数据库PL/SQL语言循环控制语句之LOOP语句技术详解

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《Oracle Database SQL Language Reference》 2、参考书籍:《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Guid…

yolov5篇---yolov5训练pt模型并转换为rknn模型,部署在RK3588开发板上——从训练到部署全过程

yolov5训练pt模型并转换为rknn模型,部署在RK3588开发板上——从训练到部署全过程一、任务介绍二、实验过程2.1 使用正确版本的yolov5进行训练(平台:x86机器ubuntu22.04系统)2.2 best.pt转换为best.onnx(平台:x86机器ubuntu22.04系统)2.3 best…

2023年西安Java培训机构十强榜单出炉,快来看看哪家榜上有名~

关于“西安Java培训机构哪家好?”“如何选择适合自己的Java培训机构?”这类问题常常出现网络上,其实关于这类问题没有统一的答案,一千个人有一千个哈姆雷特,每个人关注的重点不一样,需求更是不同&#xff0…

投入3.6亿美元!加拿大启动国家量子战略

(图片来源:网络)量子科学和技术处于研究和创新的前沿,具有巨大的商业化潜力和突破性进展,包括更有效的药物设计、更好的气候预测、改进的导航系统和清洁技术的创新。加拿大政府支持这一新兴行业的持续发展,…

用队列实现栈+用栈实现队列+循环队列(oj题)

1.题目: 力扣https://leetcode.cn/problems/implement-stack-using-queues/ 思路: 核心思路: 1、入数据,往不为空的队列入、保持另一个队列为空 2、出数据的时候,依次出队头的数据,转移另一个队列保存。只剩最后一个事,Pop掉 typ…

【数据结构之排序系列】校招热门考点:快速排序

目录前言一、hoare版本1. 单排2. 单排的代码实现3. 综合排序的实现4. 测试二、挖坑法1. 单排2. 单排的代码实现3. 综合排序的实现4. 测试三、前后指针法1. 单排2. 单排的代码实现3. 综合排序的实现4. 测试四、快排的时间复杂度五、快排的优化1. 三数取中2. 小区间优化六、快排的…

[Vulnhub] DC-9

前言: 打了这么长时间,终于,DC系列1-9 靶机已经干完了。通过这九个靶机的历练,都是单靶机 感觉远远不足,但也不是没有收获,学到了一些工具和提权的简单利用,大概知道了什么是反弹shell&#xf…

UE实现人物角色沿样条线移动效果

文章目录 1.实现目标2.实现过程2.1 实现思路2.2 具体过程3.参考资料1.实现目标 实现人物角色Character按样条线Spline自动移动效果,GIF动图如下。 2.实现过程 2.1 实现思路 (1)获取某一时刻样条线上点的位置,直接使用GetLocationAtTime函数即可。 (2)实时更新Characte…

Python Windows Apache部署Django项目运行环境(含Mysql)以及解决过程中遇到的问题

上一篇请移步Python Windows Apache部署Django项目运行环境_水w的博客-CSDN博客 本文是在上一篇的基础上, 进行后续工作。 目录 一、配置数据库(MySQL) 1、Mysql配置 2、安装MySQL管理工具SQLyog 【解决过程中遇到的问题】 解决报错&am…

java泛型2

真正搞定泛型!!!------- >类型形参 所谓泛型,就是允许在定义类、接口、方法时使用类型形参,这个类型形参(或叫泛型)将在声明变量、创建对象、调用方法时动态地指定(即传入实际的类…

【看表情包学Linux】进程的概念 | 进程控制块 PCB | 父进程与子进程 | 进程 ID | task_struct

🤣 爆笑教程 👉 《看表情包学Linux》👈 猛戳订阅 🔥 💭 写在前面:本章我们将带着大家深入理解 "进程" 的概念,"进程" 这个概念其实使我们一直在接触的东西,只不…

一文深入搞懂 mmap 涉及的所有内容

内存映射,简而言之就是将内核空间的一段内存区域映射到用户空间。映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,相反,内核空间对这段区域的修改也直接反映用户空间。那么对于内核空间与用户空间两者之间需要大量数…

一文讲清同步异步,消息队列,宏任务 微任务...

单线程多线程 什么是线程进程? 进程:是cpu分配资源的最小单位;(是能拥有资源和独立运行的最小单位) 线程: 是cpu调度的最小单位;(线程是建立在进程的基础上的一次程序运行单位,一…

Kafka第一章:环境搭建

系列文章目录 Kafka第一章:环境搭建 文章目录系列文章目录前言一、环境安装1.前置环境2.软件下载3.上传集群并解压4.编写配置文件5.分发配置文件6.修改参数7.环境变量8.启动服务9.编写启动脚本二、主题命令行操作1.查看topic2.创建 first topic3.查看主题的详情4.修…

录制屏幕为什么没有声音?教您录制声画同步的视频

有时我们只顾着录制电脑的画面,而忽视了录制视频的声音,导致录制的视频文件只有画面没有声音。那您知道录制的视频为什么没有声音吗?怎样才能录制声画同步的录屏文件呢?想要录制带声画同步的视频,首先您得拥有一款支持…

[kubernetes]-k8s通过psp限制nvidia-plugin插件的使用

导语: k8s通过psp限制nvidia-plugin插件的使用。刚开始接触psp 记录一下 后续投入生产测试了再完善。 通过apiserver开启psp 静态pod会自动更新 # PSP(Pod Security Policy) 在默认情况下并不会开启。通过将PodSecurityPolicy关键词添加到 --enbale-admission-plu…

【Cocos新手入门】使用 cocos creator 创建多个场景,并通过代码和事件绑定进行切换场景的方法

本篇文章主要讲解使用 cocos creator 创建多个场景,并通过代码和事件绑定进行切换 作者:任聪聪 日期:2023年1月31日 cocos 引擎版本 2.4.3 场景的创建 步骤一、右击资源管理器下的assets目录,点击新建,献出案件一个sc…

NX二开ufun函数UF_MODL_create_section_surface(样条曲线构建截面特征)

本节主要介绍通过样条曲线及截面OPEN API结构体构建截面特征,函数名 UF_MODL_create_section_surface,效果图如下: 1、函数结构 int UF_MODL_create_section_surface ( UF_MODL_secsrf_data_p_t section_surface_data&#xff0c…