Advertisement

期末复习【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
仅供学习交流使用

复习重点:

课本例题
课本特例
课本图表
课后习题

推荐

导航【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代码编写阶段		√
    第三阶段:电路验证阶段(功能验证 时序验证)			√
    第四阶段:集成电路的后端设计阶段

第一章 作业【Verilog】

第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 端口
    定义
    引用方式

第二章 作业【Verilog】

第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 开关级建模

第三章 作业【Verilog】

第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

这篇博客能写好的原因是:站在巨人的肩膀上

这篇博客要写好的目的是:做别人的肩膀

开源:为爱发电

学习:为我而行

全部评论 (0)

还没有任何评论哟~