Verilog学习和复习,从入门到精通(持续更新)

这篇具有很好参考价值的文章主要介绍了Verilog学习和复习,从入门到精通(持续更新)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 我的背景:本科学过verilog,但是忘的基本差不多了。

全部资料,包括已学习与待学习

数字电路与计算机体系结构

Verilog在线学习网站

中科大Verilog OJ 平台

Verilog高级数字系统设计技术与案例分析(书)

从电路角度入门Verilog

Verilog语法简介

南京大学 数字电路与计算机组成实验

一、从电路设计角度入门Verilog

一、资料连接:从电路角度入门Verilog

二、学习笔记:

        1、理解Verilog与C是有本质区别的,最大区别就是Verilog是并发执行的(除了begin...end电路是顺序执行),Verilog是描述实际存在的电路

        2、变量

                2.1、 wire型:表示电路模块中的连线,仿真波形不可见

                2.2、reg型:表示占用仿真环境的物理内存v,会显示在仿真波形

                凡是always initial语句赋值的变量,一定是reg

                凡是assign语句赋值的变量,一定是wire

                PS:reg变量仅仅是语法的定义,并不等于电路中的寄存器。只有时序电路中的reg才会被综合工具识别认为为寄存器。

        3、代码使用的关键词

                写Verilog时候,只需用四个关键词:always、assign、if-else、case

                写tb才能用别的

        4、assign关键词

                4.1、连续驱动赋值:assign a = b | c

                4.2、赋值对象应该是wire类型

                4.3、“=”右边的任何变化都会立刻计算驱动给等号左边(其实就相当与电路的一根导线)

                4.4、用于对信号连接、重命名、简单的组合逻辑

        5、always语句块(既可以描述时序电路,也可以描述组合逻辑电路)

                5.1、后接敏感列表,用@表示

                5.2、always@(a or b or c) 表示只要a、b、c中有一个产生变化,则执行always块

                5.3、遇到5.2这种情况,推荐直接写成always@(*)

                        always@(*)表示自动将always块中所有引用的信号都添加到敏感列表中。

                --5.2 5.3描述的是组合逻辑电路--

                --5.4描述的是寄存器、时序逻辑电路--

                5.4、always@(posedge clk or negedge rst) 表示clk上升沿或者rst下降沿执行always块

                5.5、always块中通常包括begin...end语句组

        6、电路结构的描述方法(此部分内容见第二个视频10:00处)

        连接传送门:https://www.bilibili.com/video/BV1PS4y1s7XW?p=2&vd_source=71438a33be431989c320a91a14db290f

                6.1、MUX

                不同的Verilog描述出不同的电路,虽然功能一样,但是电路复杂度、面积、延时都是不同的,是需要考量的

                if-else有优先级、case无优先级

                6.2、 触发器、锁存器

                        6.2.1、锁存器

                        Latch、电平敏感、输入-输出透明(Latch易传播毛刺,且难以分析时序,因此只用于异步电路和低功耗电路,除此之外,禁止出现latch)

                        高电平跟随,其他时间保持数据

                        6.2.2、寄存器

                        Register、边沿触发,输入-输出不透明

                        边沿跟随,其他时间保持数据

                        6.2.3、防止综合出非目的的latch(写组合逻辑电路的时候)

                        使用完备的if-else;为每个输入条件设计输出操作,为case语句设计default操作;仔细检查综合器生成的报告,latch会以warning的形式报告

                6.3、组合逻辑电路的描述方法

                        使用assign和always块描述,两者在描述方法上是等价的。简单的用assign和:?、复杂的用always

                        组合逻辑的赋值,必须用“=”,即阻塞赋值

                        组合逻辑无保存或锁存功能,因此没有复位信号与相关的复位逻辑

                        组合用“=”,时序用“<=”                               

                6.4、时序逻辑电路的描述方法

                        时序逻辑必须要复位

                        时序用<=

                        每加一个DFF ,输出就推迟一个时钟周期

                6.5、存储器

                        定义存储单元:                      

reg [datawidth] MemoryName [addresswidth];

                        例如定义数据位宽8bit,地址位宽64bit的RAM8x64:

reg [7:0] RAM8x64 [0:63];

                        使用存储单元时,不能直接引用存储器某地址某bit,而是要:先将存储单元赋值给某个寄存器,再对该寄存器的某位进行操作

                       不推荐直接使用Verilog建模RAM

                        通常是调用IP核

        7、流水线

                        第三个视频

                        这里将的比较浅显,后续会进一步学习,这里相当了解概念

        8、模块实例化

                建议:

module demo_top2;
comp gate2(.in_port(K),.out_port1(Q));
endmodule
//comp是reference的名字
//gate2是实例化的名字
//.in_port是端口名
//K是线的名字

        9、波形文件

               VCD:标准波形文件,所有仿真器都必须支持

                fsdb:Verdi支持

                WLF:modelsim产生

              

         文章来源地址https://www.toymoban.com/news/detail-832224.html

到了这里,关于Verilog学习和复习,从入门到精通(持续更新)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机网络期末复习简答题、综合题、实验题答案整理汇总详细(持续更新中)

    简答题只背标黄的部分!!综合题和实验题全看!!! 1. TCP/IP 与 OSI 相结合的五层体系结构将计算机网络划分成哪几个层次?各层的主要功能是什么 第一层,物理层:物理层的任务就是透明地传送比特流。(注意:传递信息的物理媒体,如双绞线、同轴电缆、光缆等,是在

    2024年02月08日
    浏览(36)
  • Jenkins持续集成入门到精通-一篇就够

    1 )首先,开发人员每天进行代码提交,提交到 Git 仓库,测试人员进行合并; 2 )然后, Jenkins 作为持续集成工具,使用 Git 工具到 Git 仓库拉取代码到集成服务器,再配合 JDK , Maven 等软件完成代码编译,代码测试与审查,测试,打包等工作,在这个过程中每一步出错,都

    2024年04月14日
    浏览(75)
  • 【Verilog刷题篇】硬件工程师从0到入门3|组合逻辑复习+时序逻辑入门

    硬件工程师近年来也开始慢慢吃香,校招进大厂年薪总包不下30-40w的人数一大把!而且大厂人数并没有饱和! - 本期是【Verilog刷题篇】硬件工程师从0到入门3|组合逻辑复习+时序逻辑入门,有不懂的地方可以评论进行讨论! 推荐给大家一款刷题、面试的神器 ,我也是用这一款

    2024年02月03日
    浏览(37)
  • Elasticsearch入门,持续更新中

    懂得都懂 官网下载地址 链接: https://www.elastic.co/cn/downloads/elasticsearch 本人准备安装在win10上,本地JDK是1.8。 一开始无脑下载了最新版,启动时报错,错误提示如下。且无法访问http://127.0.0.1:9200/ 百度可知,似乎是JDK的版本与Elasticesearch不兼容的问题。 elasticsearch支持JDK1.8的,仅

    2023年04月17日
    浏览(34)
  • 翻译: Streamlit从入门到精通七 缓存Cache控制缓存大小和持续时间

    Streamlit从入门到精通 系列: 翻译: Streamlit从入门到精通 基础控件 一 翻译: Streamlit从入门到精通 显示图表Graphs 地图Map 主题Themes 二 翻译: Streamlit从入门到精通 构建一个机器学习应用程序 三 翻译: Streamlit从入门到精通 部署一个机器学习应用程序 四 翻译: Streamlit从入门到精通

    2024年01月20日
    浏览(32)
  • Mybatis入门教程(一)(持续更新中)

    为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。 (博客的参考源码以可以在我主页的资源里找到,如果在学习

    2024年02月05日
    浏览(39)
  • Spring入门教程(三)(持续更新中)

    为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。 (博客的参考源码可以在我主页的资源里找到,如果在学习的

    2024年02月05日
    浏览(44)
  • 北邮22级信通院数电:Verilog-FPGA(3)实验“跑通第一个例程”modelsim仿真及遇到的问题汇总(持续更新中)

    北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 注意:本篇文章所有绝对路径的展示都来自上一篇博客 北邮22级信通院数

    2024年02月07日
    浏览(50)
  • 爬虫学习记录(持续更新)

    1.使用webdriver报错 AttributeError: \\\'str\\\' object has no attribute \\\'capabilities\\\' 解决:目前使用的selenium版本是4.11.2,可以不必设置driver.exe的路径,selenium可以自己处理浏览器和驱动程序,因此,使用Selenium Webdriver创建对象

    2024年02月13日
    浏览(54)
  • Ansible学习笔记(持续更新)

    1.1.1 Dev开发环境 使用者:程序员 功能:程序员开发测试软件 管理者:程序员 1.1.2 测试环境 使用者:QA测试工程师(quality assurance) 功能:测试经过Dev环境测试通过的软件功能 管理者:运维 1.1.3 发布环境 使用者:运维 功能:发布代码至生产环境 管理者:运维 发布机:往往

    2024年02月11日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包