前言
2022-12-28 10:07:30
以下内容源自Verilog
仅供学习交流使用
复习重点:
课本例题
课本特例
课本图表
课后习题
推荐
导航【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语句初始化clk信号。
例 分析以下两段代码的区别。
`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。
reg [15:0] ram [3: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)
重点:
一、名词解释
1.4 Verilog HDL和VHDL的特点和区别
1.8数字集成电路设计流程
二、概念
2.1语言要素中的符号(注释符、标识符)
2.2数据类型 物理(wire tri trireg reg 存储器 位宽 个数)抽象 参数-常量 assign always
2.3运算(归约 连接 条件(三目)逻辑(真假)-按位(x情况))
2.4 模块
三、三种建模方式
3.1数据assign
3.2行为always initial 特点-区别-可综合性 只能是reg
行为描述语句–可综合性
3.2.2 begin-end fork-join 信号波形<–>语句块
3.2.3= <= 例3,.2-7
3.3 结构化建模 (模块 门)
四、代码设计
组合 6种(加法-比较-数选 编码-译码-奇偶)
时序(计数器->分频)
有限同步状态机(编码->状态图->代码设计)看课堂PPT
五、测试
5.1 5.2会写testbench
自学 5.3 5.9前三种 仿真时间标度
六、高级设计
存储器(单端口例6.2-6 ROM必须初始化 例6.2-8)
状态机
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代码编写阶段 √
第三阶段:电路验证阶段(功能验证 时序验证) √
第四阶段:集成电路的后端设计阶段
第一章 作业【Verilog】
第2章 Verilog HDL 基础知识
-
考题:以选择题 填空题为主
-
重点:一些概念
-
2.1 Verilog HDL的语言要素
2.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.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 模块
2.4.1 模块的基本概念
图2.4-1 基本的模块结构组成
(1)模块的开始与结束
(2)模块端口定义
(3)模块数据类型说明
(4)模块逻辑功能描述
例2.4-1
2.4.2 端口
定义
引用方式
第二章 作业【Verilog】
第3章 Verilog HDL 程序设计语句和描述方式
- 考题:以综合题为主
- 重点:三种建模方式
- 3.1 数据流建模
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.3.1 模块级建模
例3.3-1
3.3.2 门级建模
表3.3-2 Verilog HDL 中常用的内置门级元件
特例:not 多输出门
× 3.3.3 开关级建模
第三章 作业【Verilog】
第4章 数字逻辑电路设计方法
第四章 数字逻辑电路设计方法【Verilog】
-
考题:以综合题为主
-
重点:六种组合电路 三种时序电路 有限同步状态机
-
4.2 组合电路的设计
4.2.1 数字加法去
4.2.2 数据比较器
4.2.3 数据选择器
4.2.4数字编码器
4.2.5数字译码器
4.2.6奇偶校验
- 4.3 时序电路的设计
4.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 编译预处理语句
5.9.3 仿真时间标度
timescale
第6章 Verilog HDL 高级程序设计举例
第六章 Verilog HDL 高级程序设计举例【Verilog】
- 考题:以综合题为主
- 重点:状态机 存储器
状态机
交通灯
存储器
2023-1-1 15:28:23
最后
2022-12-28 10:24:15
2023-1-3 15:57:16
这篇博客能写好的原因是:站在巨人的肩膀上
这篇博客要写好的目的是:做别人的肩膀
开源:为爱发电文章来源:https://www.toymoban.com/news/detail-435254.html
学习:为我而行文章来源地址https://www.toymoban.com/news/detail-435254.html
到了这里,关于期末复习【Verilog】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!