我的背景:本科学过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
文章来源地址https://www.toymoban.com/news/detail-832224.html
到了这里,关于Verilog学习和复习,从入门到精通(持续更新)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!