Verilog_学习路线(小白)

news2024/11/15 11:03:03

#前言:

自从专心学习专业课后,发现知识点得用,越用越熟练,工具也一样,高级工具的学习可帮助我们在工作中极大地提高效率,但这里要记住一点,任何工具都是为解决实际问题出现的,即落脚点为解决实际问题

#Verilog起源:

verilog最初就是因为电路设计需要进行仿真规避因设计错误造成的成本浪费(毕竟电子器件在当时成本昂贵),而仿真需要在计算机进行(实验条件),因此需要配套的程序语言作为内部仿真器的语言,用于逻辑建模和仿真验证。至此,开启了属于Verilog的时代。

发展历史

  • 1983 年,Verilog 最初由 Gateway Design Automation 公司(GDA)的 Phil Moorby 创建,作为内部仿真器的语言,主要用于逻辑建模和仿真验证,被广泛使用。
  • 1989 年,GDA 公司被 Cadence 公司收购,Verilog 语言成为 Cadence 公司的私有财产。
  • 1990 年,Cadence 公司成立 OVI(Open Verilog International)组织,公开 Verilog 语言,促进 Verilog 向公众领域发展。
  • 1992 年,OVI 决定致力于将 Verilog OVI 标准推广为 IEEE(The Institute of Electrical and Electronics Engineers)标准。
  • 1995 年,OVI 的努力获得成功,IEEE 制定了 Verilog HDL 的第一个国际标准,即 IEEE Std 1364-1995,也称之为 Verilog 1.0。
  • 2001 年,IEEE 发布 Verilog 第二个标准(Verilog 2.0),即 IEEE Std 1364-2001, 简称为 Verilog-2001 标准。由于 Cadence 在集成电路设计领域的影响力及 Verilog 语言的简洁易用性,Verilog 成为电路设计中最流行的硬件描述语言。

主要特性

下面是 Verilog 的主要特性:

  • 可采用 3 种不同的方式进行设计建模:①行为级描述——使用过程化结构建模②数据流描述——使用连续赋值语句建模③结构化方式——使用门和模块例化语句描述。
  • 两类数据类型:线网(wire)数据类型与寄存器(reg)数据类型,线网表示物理元件之间的连线,寄存器表示抽象的数据存储元件。
  • 能够描述层次设计,可使用模块实例化描述任何层次。
  • 用户定义原语(UDP)创建十分灵活。原语既可以是组合逻辑,也可以是时序逻辑。
  • 可提供显示语言结构指定设计中的指定端口到端口的时延,以及路径时延和时序检查。
  • Verilog 支持其他编程语言接口(PLI)进行进一步扩展。PLI 允许外部函数访问 Verilog 模块内部信息,为仿真提供了更加丰富的测试方法。
  • 同一语言可用于生成模拟激励和指定测试的约束条件。
  • 设计逻辑功能时,设计者可不用关心不影响逻辑功能的因素,例如工艺、温度等。
  • ……

主要应用

专用集成电路(ASIC),就是具有专门用途和特殊功能的独立集成电路器件。

Verilog 作为硬件描述语言,主要用来生成专用集成电路。

主要通过 3 个途径来完成:

1、可编程逻辑器件

FPGA 和 CPLD 是实现这一途径的主流器件。他们直接面向用户,具有极大的灵活性和通用性,实现快捷,测试方便,开发效率高而成本较低。

2、半定制或全定制 ASIC

通俗来讲,就是利用 Verilog 来设计具有某种特殊功能的专用芯片。根据基本单元工艺的差异,又可分为门阵列 ASIC,标准单元 ASIC,全定制 ASIC。

3、混合 ASIC

主要指既具有面向用户的 FPGA 可编程逻辑功能和逻辑资源,同时也含有可方便调用和配置的硬件标准单元模块,如CPU,RAM,锁相环,乘法器等。

DIY学习路线:

任何一门工具的学习包括Verilog,都是为了解决问题,所以你需要有应用思维。

如果你是在实际产品设计或课设过程中需要用到FPGA那没问题,我相信你能理解学习这门语言的用途,如果你只是单纯的发现有Verilog的存在,从来没接触过这方面比较好奇,我建议你先去了解硬件产品设计相关流程再定位他的用途。

以上只是个人观点,你不一定要采纳,说不定你的学习方法比我更优秀。

学习verilog的路线不仅要focus Verilog语言本身,更重要的是放眼于整个电子产品设计本身。产品的出现是为了解决问题,而人们每天都会有大大小小的问题。

#感悟

人生就是这样,生活就是这样,每个人都是问题的制造者,每个人也是问题的解决者,不断地发现问题,解决问题,优化,循环(PDCA)。而在Verilog学习过程中,他就是帮我解决电路设计的仿真问题,帮我一定程度上简化工作流程。那我学习他,就是有意义的。

人生,最宝贵的就是时间。你要相信自己的时间成本很昂贵。当我还是大学一二年级的时候,很多长辈会劝我不要去做兼职,因为那很浪费时间。但我还是去做了。不是因为执拗或反着来。是因为我并不了解那句话的含义,或者说,长辈们只是告诉我结论,而并没为我讲解这其中的错综复杂会怎样影响到我的人生。

就像父母总是告诉我们要好好学习,却从不肯告诉我们方法,于是我们就像在伸手不见五指的漆黑森林寻找着那最终的出口,跨越沼泽,穿过荆棘,最终还不一定能找得到。那些时刻至今是我们不能提及的过往。

如见大三接近尾声,我才稍稍意识到了学习一门工具的重要性,总之,当我觉得做什么事情已经晚了点时候,恰恰是我开始做一件事最好的时机。之前社会实践,见识了太多的牛鬼蛇神,哈哈哈。怎么说呢,打击挺大,但人只要活着就有希望,不是嘛?希望是自己给自己的,我们终其一生不过是与自己相处,认识最真实的自己罢了。that‘s kind of insteresting!

补充声明:

最后给大家推荐一些我目前在使用的学习地址(仅供参考)并请出我们的老演员免责声明。

学习地址:

1.B站:Rong晔的个人空间-Rong晔个人主页-哔哩哔哩视频 (bilibili.com)

最适合初学者的FPGA?ZUBoard保姆级教程+学习路线分享!_哔哩哔哩_bilibili

2.HDLBits:HDLBits (01xz.net)

3.菜鸟教程:1.1 Verilog 教程 | 菜鸟教程 (runoob.com)

免责声明:

本文内容部分均有我摘抄自网络,仅供各位参考不做任何商业及其他用途。倘若文章内容侵犯任何人的权益请及时告知我本人进行删除,谢谢配合。

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

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

相关文章

uniapp音乐播放整理

一、前置知识点 1.1 音频组件控制-uni.createInnerAudioContext() 创建并返回内部 audio 上下文 innerAudioContext 对象。 主要用于当前音乐播放; 1.1.1 innerAudioContext属性 属性类型说明只读平台差异说明srcString音频的数据链接,用于直接播放…

Milvus Cloud:打造向量数据库的Airtable级体验

向量数据库Milvus Cloud是一种用于处理和存储向量数据的数据库,它通常用于机器学习、图像和视频检索、自然语言处理等领域。要将其升级为类似Airtable那样易用且一体化的系统,需要考虑以下几个关键方面: 1. 用户界面(UI)设计 Airtable之所以用户友好,很大程度上归功于其直…

Java 日期类 API

1. jdk8 之前的日期 API 1.1. System 类 currentTimeMillis(); Test public void test1() { long timeMillis System.currentTimeMillis(); System.out.println("timeMillis " timeMillis); }1.2. java.util.Date 和 java.sql.Date java.sql.Date 是 jav…

vue2项目升级到vue3经历分享5

写到第5篇了,解决了很多问题,还有一些需要调整 1 el-input-number指令兼容性调整 下面这个可编辑的表格,全是0,于是需要一个指令,让它自己实现如果是0,就置空;如果是数字就是格式化为千分位&…

男士内裤哪个品牌好穿?男士内裤品牌测评推荐,干货满满

随着时代的进步和发展,男士内裤现在普遍分为三角、平角、四角的三个大类,不过大多数男性朋友都是穿平角四角为主。虽然男士内裤款式众多,但大部分男同胞每一条内裤都是穿非常久的,实际上男士内裤需要定期更换才能保持更换的舒适性…

《十日终焉》中的定律整理-向虫队学习(举例+持续更新)

1、二八定律 二八定律,又称帕累托法则,也叫巴莱多定律。 是19世纪末20世纪初意大利经济学家巴莱多发明的。其中指出,约仅有20%的因素影响80%的结果。也就是说:所有变因中,最重要的仅有20%,虽然剩余的80%占…

第二证券今日投资参考:银保渠道合作限制松绑 低空旅游借势起飞

昨日,两市股指盘中震动上扬,沪指一度涨近1%续创年内新高,创业板指一度涨超2%。到收盘,沪指涨0.83%报3154.32点,深证成指涨1.55%报9788.07点,创业板指涨1.87%报1900.01点,科创50指数涨2.26%&…

如何让组织充满活力?你需要做好这七步

组织活力,通俗点说就是: 从竞争对手角度看,组织活力强的组织能做到竞争对手做不到的事情; 从客户角度看,组织活力强的组织,客户感受好; 从员工角度看,组织活力强的组织&#xff0c…

【速看】软考架构考前复习20问!你能答出多少?

马上就要进行今年的软考了,大家都准备得怎么样了呢,2024上半年的软考架构得分点你知道了吗? 目标不光是把历年母题的考点规律吃透,还要规划好各类题型的做题时间,除了纸质版还要上机模拟,更好的适应机考&am…

将java项目上传到GitHub步骤

文章目录 一、GitHub 作用二、github如何修改默认分支为master三、手把手教你把项目上传github上四、github怎么删除仓库或项目五、github配置ssh key密钥的步骤六、执行到push时报错的解决办法七、github怎么修改仓库语言 一、GitHub 作用 GitHub 是一个存放软件代码的网站&a…

上海计算机学会2023年9月月赛C++丙组T2Z形填充

题目描述 给定一个整数 n,再给定 n2 个字符,请将这些字符以 z 形排成一个 nn 的矩阵。 z 形的定义是,第一个字符在左上角,然后沿对角线以 z 形放置字符。对于 n4 ,z 形排列的先后顺序标记如下: 输入格式 …

基于Spring Boot的网页即时聊天系统

目录 一、系统总体功能设计 二、开发工具及环境 三、前台系统主要功能实现界面展示 1.登入模块 2.主页模块 3.好友设置模块 4.好友动态模块 5.个人中心模块 6.好友设置详情 7.视频通话 8.语音通话 9.对消息操作 四、后台系统主要功能实现界面展示 1.登入模块 2.后…

Git 分支命令操作详解

目录 1、分支的特点 2、分支常用操作 3、分支的使用 3.1、查看分支 3.2、创建分支 3.3、修改分支 3.4、切换分支 3.5、合并分支 3.6、产生冲突 3.7、解决冲突 3.8、创建分支和切换分支说明 1、分支的特点 同时并行推进多个功能开发,提高开发效率。各个分…

show profile

功能 当你执行一个复杂的 SQL 查询时,这个命令可以帮助你了解查询的各个部分花费了多少时间,从而找到可能的性能瓶颈。默认情况下,参数处于关闭状态,并保存最近15次的运行结果 开启 查看是否支持 SHOW VARIABLES LIKE profili…

如何给文件和文件夹添加备注信息

1. 给文件添加备注信息 1. 打开文件夹,点击查看 → 选项 → 更改文件夹和搜索选项 → 勾除隐藏受保护的操作系统文件 → 勾选显示隐藏的文件、文件夹和驱动器; 2. listary工具搜索desktop.ini,随便点击一个desktop.ini文件,即可…

Java String转JSONObject时保持字段顺序不变

Java String转JSONObject时保持字段顺序不变 问题背景解决方案 问题背景 在业务接口开发过程中,有一个新增接口,需要支持批量新增数据,这时入参就需要用到 json 格式数据,且包含 list 集合,比如这样的数据格式&#x…

ZeptoMail邮箱API发送邮件的参数如何配置?

ZeptoMail邮箱API发送邮件的步骤?怎么使用API接口? 在使用ZeptoMail邮箱API发送邮件时,正确的参数配置是确保邮件能够成功发送的关键。下面,AokSend将详细介绍如何配置ZeptoMail邮箱API发送邮件的参数。 ZeptoMail邮箱API发送邮…

Web界面加持!数据库备份神器,助你轻松备份数据!

使用这款带有Web界面的数据库备份神器,你可以轻松设置定时备份,确保数据安全无忧。备份结果即时通知,让你随时掌握备份状态。备份完成后,你将收到备份结果通知。无论是成功备份还是出现错误,你都能及时了解备份情况&am…

Failed to start tomcat.service: Unit is not loaded properly: Bad message 如何解决?

错误 “Failed to start tomcat.service: Unit is not loaded properly: Bad message” 通常意味着的 tomcat.service systemd 配置文件存在语法错误或配置不正确。为了解决这个问题,一步步检查和修正这个服务文件。 1. 检查 tomcat.service 文件 首先&#xff0c…

初识 Linux线程

再学习完Linux进程后,本期,我们来讲解Linux线程 1.为什么需要线程 在之前学习进程前,我们写的所有代码几乎都是单个执行流的,也就是说我们的代码只有一条路走. 在学习进程后,我们可以通过fork进行进程创建,给进程分配任务进行多执行流执行任务,问题来了 那我们为什么还需要…