Verilog 学习笔记(简化版)

本文介绍了Verilog的基础知识,包括综合和仿真过程、模块概念、语法要素,如操作符、操作数,以及行为描述的重点,如连续赋值语句、过程赋值语句和条件语句。还探讨了任务和函数在代码复用中的作用,为Verilog初学者提供了一个简洁的入门指南。
摘要由CSDN通过智能技术生成

目录

1.综合和仿真

2.模块介绍

3.语法和要素

操作符

操作数

  

4.行为描述

行为级建模

过程赋值语句

行为语句

任务和函数

5.仿真测试(待补充)


1.综合和仿真

1.1 综合 

        将 Verilog 代码转成网表(实际电路)的过程称为综合,实现这一过程的工具就是综合器。

1.2 仿真

        在综合前, 设计师可以在电脑里通过仿真软件对代码进行仿真测试, 检测出 BUG 并将其解决,最后再将程序烧写进芯片中。仿真代码只求产生最真实的激励,无需关注是否可综合成电路。

1.3可综合与不可综合

        简单来说,“综合”要做的事情有:编译 rtl 代码,从库里选择用到的门器件,把这些器件按照
“逻辑”搭建成“门”电路。不可综合,是指找不到对应的“门”器件来实现相应的代码。比如“#100”之类的延时功能,简单的门器件是无法实现延时 100 个单元的, 还有打印语句等,也是门器件无法实现的。设计师应熟悉哪些代码是可综合哪些是不可综合的。


2.模块介绍

        定义:module模块是 Verilog 的基本描述单位,用于描述每个设计的功能和结构,以及其他模块通信的外部接口。

        模块有五个主要部分:端口定义、参数定义(可选)、 I/O 说明、内部信号声明、功能定义。模块总是以关键词 module 开始,以关键词 endmodule 结尾。它的一般语法结构如下所示:

        模块例化:一个模块能够在另外一个模块中被引用,这样就建立了描述的层次。模块例化有两种方法,推荐后者通过名字相关联方法。        


3.语法和要素

        信号位宽:    

wire [7:0]  a;  //定义wire类型变量a的位宽为8位,缺省时默认为1位

        常见的数据类型:  

         线网类型wire :线网类型用于对结构化器件之间的物理连线的建模,通常用assign语句赋值。类型缺省时,默认为wire类型。

          寄存器类型reg:寄存器类型通常用于对存储单元的描述,即可用于组合逻辑,也可用于时序逻辑。always 语句中进行描述的必须是用 reg类型的变量。
 

        wire和reg区别:wire需要持续的驱动信号,reg不需要持续驱动就可保存最后一次赋值。一般always 语句中都用用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值