期末复习【Verilog】
这篇博客主要围绕Verilog语言的期末复习内容展开,重点介绍了Verilog HDL的特点和作用,包括其在数字集成电路设计中的应用。内容涵盖Verilog HDL的特点、语言要素、数据类型、运算符、模块设计、代码设计、测试方法以及高级设计等内容。重点包括:
Verilog HDL的特点:可以描述系统级、算法级、寄存器传输级和开关级电路,而VHDL不具备开关级描述能力。
数字集成电路设计流程:包括系统设计、RTL代码编写、电路验证和后端设计四个阶段。
数据类型:物理数据类型包括连线型、寄存器型和存储器型,存储器型声明格式为reg [位宽:个数]变量列表。
模块设计:包括结构化建模(门级、开关级)和行为建模(assign、always),行为描述语句包括过程、语句块、赋值语句、条件语句、循环语句等。
测试方法:Testbench的编写,包括定义输入、输出变量、设置激励向量、运行仿真等。
高级设计:包括存储器类型、状态机设计等。
此外,博客还提到了存储器容量和初始化问题,例如reg [15:0] ram [3:0];的容量为16位,初始化语句为reg [0:15] q_out;,以及ram[0:3:16'h0000;等。
期末复习【Verilog】
-
前言
-
推荐
-
第五章 习题
-
期末复习【Verilog】
-
- 考点
-
复习
-
最后
前言
2022-12-28 10:07:30
以下内容源自Verilog
仅供学习交流使用
复习重点:
课本例题
课本特例
课本图表
课后习题
推荐
第五章 习题
生成宽度为4的质数序列为{1、2、3、5、7、11、13},并重复此序列两次,其中每个样值之间的间隔设定为4个仿真时间单位。
由于该序列无明显规律,因此利用initial语句最为合适。
`timescale 1ns /1ps
module sequence_tb;
reg [3:0] q_out;
parameter sample_period = 4;
parameter queue_num = 2;
initial
begin
q_out = 0;
repeat(queue_num)
begin
# sample_period q_out = 1;
# sample_period q_out = 2;
# sample_period q_out = 3;
# sample_period q_out = 5;
# sample_period q_out = 7;
# sample_period q_out = 11;
# sample_period q_out = 13;
end
end
endmodule
例 产生占空比为50%的时钟信号,其波形如图所示。

(1) 基于initial语句的方法。
module clk1(clk);
output clk;
parameter clk_period = 10;
reg clk;
initial
begin
clk = 0;
forever #(clk_period/2) clk = ~clk;
end
endmodule
(2) 基于always语句的方法。
module clk2(clk);
output clk;
parameter clk_period = 10;
reg clk;
initial clk = 0;
always
# (clk_period/2) clk = ~clk;
endmodule
initial语句负责初始化clk信号。若未对clk信号进行初始化赋值,会导致clk信号在整个仿真阶段保持未知状态。
例 产生占空比可设置的时钟信号。
自定义占空比信号可通过always模块高效实现。以下为20%占空比时钟信号的代码示例。
module Duty_Cycle(clk);
output clk;
parameter High_time=5,Low_time=20;
//占空比为High_time/(High_time+Low_time)
reg clk;
always
begin
clk=1;
#High_time;
clk=0;
#Low_time;
end
endmodule
在本例中,由于直接对clk信号进行赋值操作,因此无需使用initial语句来初始化该信号。
例 分析以下两段代码的区别。
`timescale 10ns/1ns
module delay_tb;
reg set;
parameter d=1.55;
initial
begin
#d set=0;
#d set=1;
end
endmodule
`timescale 10ns/100ps
module delay_tb;
reg set;
parameter d=1.55;
initial
begin
#d set=0;
#d set=1;
end
endmodule
区别 :
timescale语句中
时间单位一样:10ns
时间精度不一样:1ns和100ps(0.1ns)
延迟时间的时长为d个时间单位。前者具有15.5ns的时长,但因时间精度仅达1ns,无法精确表示0.1ns,因此实际延迟时间被记录为16ns,随后的时间间隔为32ns。后者具有15.5ns的时长,得益于时间精度达到100ps(即0.1ns),可以精确表示0.1ns,因此实际延迟时间保持在15.5ns,随后的时间间隔为31ns。
波形如下

请说明以下代码中ram类型的存储器容量是多少,并将ram的所有存储单元初始化为0。
initial
begin
ram[0]=16’h0000;
ram[1]=16’h0000;
ram[2]=16’h0000;
ram[3]=16’h0000;
end
期末复习【Verilog】
考点
题型:
一、选择题
二、填空题
三、分析题(3-17)
四、综合题(4-40)
重点:
一
2023-2-21 17:23:08
复习
2023-1-1 14:10:10
第1章 Verilog HDL 数字基集成电路设计方法概述
- 考题:以选择题 填空题为主
- 重点:一些概念
HDL:是一种高级程序设计语言,通过对数字电路和系统的语言描述,
可以对数字集成电路进行设计和验证
EDA:一些公司提供功能强大的电子设计自动化工具
FPGA:现场可编程门阵列
IP核:具有知识产权核的集成电路芯核的总称
RTL:数字电路设计和代码编码阶段
- 1.4 Verilog HDL和VHDL
共同特点
各自特点
Verilog HDL:可以描述系统级 算法级 寄存器传输级 门级 开关级电路
VHDL:不具备开关级电路描述能力
图1.4-1 Verilog HDL和VHDL建模能力比较
- 1.5 Verilog HDL在数字集成电路设计中的优点
第一,可以用较少的语句描述较为复杂的电路
第二,Verilog HDL 具有极为灵活的可扩展特性
- 1.8 Verilog HDL 在数字基础电路设计流程中的作用
图1.8-1 数字集成电路设计流程
第一阶段:系统设计阶段(总体方案 系统建模)
第二阶段:数字电路设计和代码编写阶段,即RTL代码编写阶段 √
第三阶段:电路验证阶段(功能验证 时序验证) √
第四阶段:集成电路的后端设计阶段
第2章 Verilog HDL 基础知识
考题:以选择题 填空题为主
重点:一些概念
2.1 Verilog HDL的语言要素
1.2 注释符
多行注释不允许嵌套,但是单行注释可以嵌套在多行注释中
2.1.3 标识符
任意一组字母、数字、$符号和_(下划线)的组合
字母区分大小写,并且第一个字符必须是字母或下划线
2.1.4 关键字
所有关键字都是小写的
例如,ALWAYS不是关键字,它只是标识符,与always(关键字)是不同的。
2.1.5 数值
四种基本的逻辑数值状态
表 2.1-2 四值电平逻辑
1. 整数及其表示
注意:
(1)下划线分开
(2)当数字没有说明位宽时,默认为32位
(5)定义位宽和实际位宽
(6)?
- 2.2 数据类型
2.1 物理数据类型
1.连线型
表2.2-2 连线型数据类型及其功能说明
trireg 线网 具有电荷保持特性的连线型(特例)
连线型 默认的驱动强度(strong1,strong0) p35
trireg 默认的电荷强度为medium
2. 寄存器型
reg和wire型区别:
reg型数据保持最后一次的赋值,
wire型数据需要有持续的驱动
2.2.2 连线型和寄存器型数据类型的说明
缺省的连线型数据的默认类型为1位(标量)wire类型
2.2.3 存储器型
声明格式
reg 位宽 变量名称列表 个数
例2.2-3
例2.2-4
2.2.4 抽象数据类型
1.整型
整型数据域32位寄存器数据在实际意义上相同
2.时间型
3.实型
4.参数型
- 2.3 运算符
表2.3-1 Verilog HDL中的运算符和优先级
2.3.1 算术运算符(+ - * / %)
注意问题: (1)算后运算结果的位宽。最长的操作数决定。
2.3.2 关系运算符(> < >= <=)
0 1 x
2.3.3 相等关系运算符(== != === !==)
1 0 x 逻辑等式运算符 case等式运算符
表2.3-2
例2.3-4
2.3.4 逻辑运算符(&& || !)
0 1 x
0&&x=0 1||x=1
2.3.5 按位运算符(~ & | ^ ^~)
按右端对齐 高位0补齐 位宽较大者
例2.3-5
2.3.6 归约运算符(& | ^)
单目运算符 缩位运算符 产生1位逻辑值
运输过程:从低到高
例2.3-6
2.3.7 移位运算符(<< >>)
2.3.8 条件运算符(?:)
1 0 x
表2.3-7 条件表达式为不定态时的结果产生规则
0-0=0 1-1=1 其余-其余=x
例2.3-8
2.3.9 连接和复制运算符({} {{}})
例2.3-9
- 2.4 模块
4.1 模块的基本概念
图2.4-1 基本的模块结构组成
(1)模块的开始与结束
(2)模块端口定义
(3)模块数据类型说明
(4)模块逻辑功能描述
例2.4-1
2.4.2 端口
定义
引用方式
第3章 Verilog HDL 程序设计语句和描述方式
- 考题:以综合题为主
- 重点:三种建模方式
- 3.1 数据流建模
显式连续赋值语句
assign
2.隐式连续赋值语句
例3.1-1
例3.1-2
3.注意事项
- 3.2 行为级建模
表3.2-1 Verilog HDL 行为描述语句及其可综合性
3.2.1 过程语句
1.initial过程语句:同时从0时刻开始并行执行
2.always 过程语句:只要满足always后面的敏感时间列表,就执行语句块
边沿敏感型 posedge negedge
电平敏感型
3.注意事项
过程语句中,被赋值信号必须定义为reg类型
例3.2-x
3.2.2 语句块
1.串行语句块
begin end:依据块中的排列次序逐条执行 延迟时间是相对于前一条语句执行结束的相对时间
2.并行语句块
fork join:同时开始执行
例3.2-6
表3.2-2 串行语句块和并行语句块对比
3.2.3 过程赋值语句
1.阻塞赋值语句(=)
2.非阻塞赋值语句(<=)
例3.2-7
× 3.2.4 过程连续赋值语句
3.2.5 条件分支语句
1.if语句
2.case语句
锁存器
例3.2-14
casex casez
表3.2-4
3.2.6 循环语句
1.forever语句
initial过程语句中
2.repeat语句
3.while语句
4.for语句
例3.2-19
- 3.3 结构化建模
3.1 模块级建模
例3.3-1
3.3.2 门级建模
表3.3-2 Verilog HDL 中常用的内置门级元件
特例:not 多输出门
× 3.3.3 开关级建模
第4章 数字逻辑电路设计方法
Verilog
Verilog
Verilog
本章主要探讨数字逻辑电路设计的实现方式【Verilog
考题:以综合题为主
重点:六种组合电路 三种时序电路 有限同步状态机
4.2 组合电路的设计
2.1 数字加法去
4.2.2 数据比较器
4.2.3 数据选择器
4.2.4数字编码器
4.2.5数字译码器
4.2.6奇偶校验
- 4.3 时序电路的设计
3.1 触发器
4.3.2 计数器
4.3.3 移位寄存器
4.3.4 序列信号发生器
- 4.4 有限同步状态机
第5章 仿真验证与Testbench编写
- 考题:以填空题和综合题为主的测试编写工作
- 重点:特别关注testbench的构建
- 5.1 介绍Verilog HDL在电路仿真与验证中的应用
- 5.2 探讨Verilog HDL用于测试程序设计的基本原理
图5.5-2 典型的Testbench
module 仿真模块名; //无端口列表
各种输入、输出变量定义
数据类型说明
//其中激励信号定义为reg型
//显示信号定义为wire型
integer
parameter
待测试模块调用
激励向量定义
endmodule
例5.2-1
- 以下是自学部分
- 5.3 与仿真相关的系统任务
- 5.5 任务和函数
- 5.9 编译预处理语句
9.3 仿真时间标度
timescale
第6章 Verilog HDL 高级程序设计举例
Verilog
- 考题:以综合题为主
- 重点:状态机 存储器
状态机
交通灯
存储器
2023-1-1 15:28:23
最后
2022-12-28 10:24:15
2023-1-3 15:57:16
这篇博客能写好的原因是:站在巨人的肩膀上
这篇博客要写好的目的是:做别人的肩膀
开源:为爱发电
学习:为我而行
