首页 > 其他分享 >verilog学习笔记1

verilog学习笔记1

时间:2023-12-13 22:22:19浏览次数:27  
标签:语句 输出 wire 笔记 学习 verilog 模块 testbench 赋值

第一课的学习任务是:

①搞清楚常用语法,重点是赋值方式这部分,对应实际电路和实现的思路

②能够写出ppt里的简单程序

③会使用modelsim软件、编写testbench,验证自己的代码

 

一、数据流建模

1、连续赋值语句

格式是assign a = xxx;被赋值的变量必须是wire类型

语句定义了逻辑关系,可以实现所有的组合逻辑

语句之间是并行关系,结果不受位置影响

只能在语句块之外使用,不能在语句块之内使用

 

二、行为级建模

1、过程语句

过程语句是always 和 initial语句块中的语句

一般是用begin-end,是串行运行的,并行语句块一般不用,因为不能综合

语句块中赋值的对象必须是reg类型的 

 

2、过程赋值语句

指在过程语句中(或者说语句块中)使用的赋值语法

分为阻塞型和非阻塞型

 ①阻塞型赋值语句 使用“=”

b = a;

是最简单的串行运行规则

 

②非阻塞型赋值语句 使用“<=”

b <= a;

区别:

 

3、过程连续赋值语句

不可综合,大部分时候应该也不会用,测试的时候估计会用

语句块中的语法,区别于语句块外的连续赋值语句。

 assign a = xxx;

和最开始的连续赋值语句差不多

可以在语句块内规定一个组合电路,实在没办法再这样用,因为完全可以在语句块外规定组合电路。

 

 

三、结构化建模

这部分似乎没有像前面一样强调变量类型的规则,但为了概念清晰,还是需要总结一下

 一般来说,例化模块的输出需要是wire类型。在testbench里,需要将连接输出的端口定义为wire,而不能是reg。

如果不在testbench里面,模块有自己的输入和输出,那么output不需要定义类型,也可以作为例化模块的输出

 

也就是说,如果不是定义为输出的端口,即需要单独声明的变量,如果需要作为例化模块的输出,那么必须设置为wire类型

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

最后就是整理一下modelsim的用法

1、一般来说要先给project新建一个文件夹

2、新建project,选择位置,为新建的文件夹

3、新建文件,选择verilog,一般来说,需要建一个模块文件和testbench文件

4、写好代码,compile all

5、开始仿真,注意取消勾选仿真优化

6、把信号放到wave里面,然后点击run all即可

 

*library不知道是什么意思,一般来说不需要新建library

默认work

在这个基础上,就可以去做一些练习题了

 

标签:语句,输出,wire,笔记,学习,verilog,模块,testbench,赋值
From: https://www.cnblogs.com/Raven-claw/p/17893417.html

相关文章

  • css学习笔记
    CSS(层叠样式表)是一种用于描述网页样式和布局的语言。它使得我们可以通过选择器和属性来控制网页的外观。以下是一些CSS的基本概念:选择器:选择器用于选择要应用样式的元素。常见的选择器有标签选择器(如 p、h1)、类选择器(如 .class-name)和ID选择器(如 #id-name)等。选择器的选择范......
  • 分布式学习记录:第4天
       在分布式学习的探索之旅中,第四天我深入了解了分布式学习的并行计算和负载均衡技术。首先,我学习了分布式学习的并行计算技术。并行计算是分布式学习的重要手段之一,它可以通过将计算任务分配给多个计算节点,同时进行计算,以加速模型的训练过程。我学习了不同的并行计算方法,如数......
  • python学习笔记1(你好,python)
    虽然一直不会python,但也了解一些python的场景,比如爬取数据、数据挖掘、ai,今天开始从B站上系统学习一下今日学习笔记:1、python优点:易于读写和学习,英文描述方式专注于解决问题,代码少、有生产力易调试,解释型语言,只显示第一个错误开源免费,标准库很强大,社区也很强大2、缺点:内存占用率高,......
  • centos7 搭建 open vpn新笔记
    刚好这段时间需要用到openvpn,搭建起来也是遇到很多问题,所以在这里记录一下。openvpn:OpenVPN是受欢迎的开源虚拟专用网络的软件包之一,它是一个全功能的SSL虚拟专用网络。它使用行业标准SSL/TLS协议实现OSI第2层或第3层安全网络扩展,支持基于证书、智能卡、用户名密码等多种的客户端身......
  • SM4算法学习
    简介SM4算法是我国商用密码标准,其前身是SMS4算法。SM4算法是一个分组加密算法,分组长度和密钥长度均128bit。SM4算法使用32轮的非线性迭代结构。SM4在最后一轮非线性迭代之后加上了一个反序变换,因此SM4中只要解密密钥是加密密钥的逆序,它的解密算法与加密算法就可以保持一致。SM4......
  • 基于AlexNet深度学习网络的智能垃圾分类系统matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本matlab2022a 3.算法理论概述       基于AlexNet深度学习网络的智能垃圾分类系统是一种利用深度学习技术,对垃圾图像进行分类的系统。下面将详细介绍这种系统的原理和数学公式。 3.1、基于AlexNet深度学习网络的......
  • Rong晔大佬教程学习(3):取译码
    在讲解指令译码之前,我们首先需要了解指令,如下图所示,ARM、MIPS、RISCV-v指令集同属于RISC指令集(精简指令集),特别注意的是,相同的一条指令在不同的ISA中译码得到的结果是不同的,这也很好理解,比如“nihao”在拼音中可以翻译为“你好”,就是打招呼的意思,但在英文中这甚至不是一个单词......
  • openGauss学习笔记-156 openGauss 数据库运维-备份与恢复-导出数据-使用gs_dump和gs_d
    openGauss学习笔记-156openGauss数据库运维-备份与恢复-导出数据-使用gs_dump和gs_dumpall命令导出数据-导出单个数据库-导出数据库156.1导出数据库openGauss支持使用gs_dump工具导出某个数据库级的内容,包含数据库的数据和所有对象定义。可根据需要自定义导出如下信息:导出......
  • openGauss学习笔记-157 openGauss 数据库运维-备份与恢复-导出数据-使用gs_dump和gs_d
    openGauss学习笔记-157openGauss数据库运维-备份与恢复-导出数据-使用gs_dump和gs_dumpall命令导出数据-导出单个数据库-导出模式157.1导出模式openGauss目前支持使用gs_dump工具导出模式级的内容,包含模式的数据和定义。用户可通过灵活的自定义方式导出模式内容,不仅支持选定一......
  • Jmeter性能测试学习笔记
    转自https://www.cnblogs.com/yoyoma0355/p/14658807.htmljmeter定时器:https://blog.csdn.net/u013258415/article/details/78321288 性能测试的概念和公式:https://www.cnblogs.com/April-Chou-HelloWorld/p/8780384.html 压力测试:https://blog.csdn.net/weixin_52295158/a......