Verilog期末复习

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Verilog期末复习
❖考试内容:
▪凡是课堂讲过的内容都有可能考
▪重点是对基本语法的掌握能力和实际应用能力
▪本课件非考试大纲,切勿仅仅据此复习❖试题类型:
▪填空题:10空20分
▪简答题:6道36分
▪程序设计题:4道44分
复习内容(一)
❖各种数据类型及变量常量
❖门级描述
❖行为描述(包含多种分支语句)
❖数据流级描述
❖任务和函数的编写
❖系统任务的使用语法
❖用户自定义原语
❖状态机建模
❖层次化建模及语法
❖简单的Verilog HDL模块编写和测试
Verilog HDL的级别划分
•系统级(system): 用高级语言结构实现设计模块的外部性能的模•算法级(algorithmic): 用高级语言结构实现设计算法的模型。

•RTL级(Register Transfer Level): 描述数据在寄存器之间流动和如何处理这些数据的模型。

•门级(gate-level): 描述逻辑门以及逻辑门之间的连接的模型。

•开关级(switch-level): 描述器件中三极管和储存节点以及它们之间连接的模型。

合法和非法标识符
合法的:非法的:
shift_reg_a 34net
bus263 2_m_pmos //不能用数字开头
_a_bus a*b_net //不能含有非字母符号*
n@263 //不能含有非字母符号@
Verilog 是大小写敏感的。

所谓标识别符就是用户为程序描述中的Verilog 对象所起的名字。

标识符必须以英语字母(a-z, A-Z)起头,或者用下横线符(_ )起头。

其中可以包含数字、$符和下横线符。

特别标识符是用“\”符开始,以空格符结束的标识符。

它可以包含任何可打印的ASCII字符。

例如
❖以下不正确的标识符名称是
▪Sad_66
▪\32100
▪_a_bus
▪\initial
▪/data_out
▪Module
▪2_m_pmos
存储器memory型变量
存储器memory型
用一个寄存器数组来对存储器建模。

格式: reg [msb:lsb] 存储器名[upper1:lower1];
如: reg [3:0] MyMem [63:0]; // 64个四位寄存器组❖如果要声明一个存储器变量,存储单元大小为8位,一共2048个存储单元,存储单元名称为mem,代码描述为:
▪reg [7:0] mem[2047:0]
举例说明数据类型的选择
module TADD(A, B, Sum1, Sum2, C,Sum3 );
iuput A,B,C;
output Sum1,Sum2;
inout Sum3;
reg Sum1,Sum2;
…….
endmodule
module testbench;
……
TADD T1(D1,D2,D3,D4,D5,D6);
❖D1:wire/reg 线网或寄存器型D2: wire/reg线网或寄存器型❖D3:wire线网型D4: wire线网型
❖D5: wire/reg 线网或寄存器型
❖D6: wire线网型
运算符(操作符)及表达式
❖Verilog HDL中的运算符可以分为下述类型:
▪算术运算符:返回运算结果
▪关系运算符:返回逻辑值真假
▪相等运算符:返回真假,==和!=只识别1和0,===和!==能严格识别01xz
▪逻辑运算符:逻辑与或非,&& || !返回真假
▪按位运算符:按位运算,返回结果长度与运算前相同
▪缩减(归约)运算符:从左至右依次运算,直至最后一位结果,所以最后结果为1位
▪移位运算符:左移扩位,右移长度不变
▪条件运算符:?:条件满足输出冒号前的式子,不满足输出冒号后的式子
▪拼接运算符:{ } 注意其中各位必须指明宽度
三类时延值
❖对于每个时延定义,总共能够指定三类时延值:
▪上升时延
▪下降时延
▪关闭时延
assign # (rise, fall, turn-off) LHS = RHS_expr ;
❖如果右端从非0向量变化到0向量,那么就使用下降时延。

如果
右端值到达z,那么使用下降时延;否则使用上升时延。

▪assign #4 Ask = Quiet | | Late; // One delay value.
▪assign # (4,8) Ask = Quick ; // Two delay values.
▪assign # (4,8,6) Arb = & DataBus; // Three delay values.
▪Arb变为0的时延是8; Arb变为1的时延是4。

`timescale使用举例
▪` timescale 1ns/100ps
▪module AndFunc(Z,A,B);
▪output Z;
▪input A,B;
▪and #(5.22,6.17) Al(Z,A,B);//规定了上升及下降时延值。

▪endmodule
❖编译器指令定义时延以ns为单位,并且时延精度为1/10ns (100ps)。

过程性赋值
❖过程性赋值分两类:
▪阻塞性过程赋值=、非阻塞性过程赋值<=
❖过程性赋值是仅仅在initial语句或always语句内的赋值,它只能对寄存器数据类型的变量赋值。

表达式的右端可以是任何表达式。

. . .
连续性赋值与过程性赋值比较
过程赋值
❖在always语句或initial语句内出现,执行与周围其它语句有关❖驱动寄存器reg
❖使用“=”或“<=”赋值符号
❖无assign关键词
连续赋值
❖在一个模块内出现
❖与其它语句并行执行;在右端操作数的值发生变化时执行
❖驱动线网wire
❖使用“=”赋值符号
❖有assign关键词
函数与任务的区别
❖(1)函数只能与主模块共用同一个仿真时间单位,而任务可以定义自己的仿真时间单位。

❖(2)函数不能启动任务,而任务能启动其他任务和函数。

❖(3)函数至少要有一个输入变量,而任务可以没有或有多个任何类型的变量。

❖(4)函数返回一个值,而任务则不返回值
❖函数的关键词是function;任务的关键词是task
Verilog HDL中的循环语句和块语句
forever循环
repeat循环
while循环
for 循环
顺序块与并行块
运行后下列变量A,B,C, D的二进制值❖reg [7:0] A, B,C;
❖wire D;
❖initial
❖ B = 3’hff;
❖initial
❖A= 8’bz0;…..
A=zzzzzzz0,B=00000111,C=xxxxxxxx,D=z
赋值时右式左式位数不匹配时:
若左多右少,按低位配齐,高位补零处理,若赋值的最高位为x或z,则向前补齐
若右多左少,按低位配齐,高位舍去处理
课堂练习
❖用门级结构建模的方式描述下图所示电路
module arch_model(D,A,B,C,Eout);
input A,B,C,D;
output Eout;
wire A,B,C,D,Abar,Bbar,T1,T2,T3;
not iv1(Abar,A),
iv2(Bbar,B);
and ad(T1,D,Abar);
nor nr(T3,C,Bbar);
xor xr(T2,A,Bbar);
xnor xn(Eout,T1,T2,T3,C);
endmodule
练习:运用数据流建模描述下图电路
module FA _Df (A, B, Cin, Sum, Cout ) ;
input A,B,Cin;
output Sum,Cout; wire A,B,c,d,e,f,Cin,Sum,Cout;
assign c=A^B;
assign d=A&Cin;
assign e=B&Cin;
assign f=c&Cin;
assign Sum=c^Cin;
assign Cout=e|d|f;
endmodule
有限状态机的分类 ❖ M oore FSM (摩尔有限状态机)
▪ 特点:Moore FSM 的输出只与当前状态有关
▪ Moore FSM 的描述方法:采用一个沿触发的always
语句及case 语句。

❖ M ealy FSM (米里有限状态机)
▪ 特点:Mealy FSM 的输出与当前状态和输入有关。

▪ 其中Mealy 有限状态机又可分为同步Mealy 状态机
和异步Mealy 状态机
千万注意写法!
A B
Cin Sum
Cout
读程序用国际图形符号绘出门级结构示意图
module f lop(data,clock,clear,q,qb);
input data,clock,clear;
output q , qb;
wire a,b,c,d,e,f,nclock,ndata; nand #10 nd1(a,data,clock,clear),
nd2(b,ndata,clock),
nd4(d,c,b,clear),
nd5(e,c,nclock),
nd6(f,d,nclock),
nd8(qb,q,f,clear);
nand #9 nd3(c,a,d),
nd7(q,e,qb);
not #10 iv1(ndata,data),
iv2(nclock,clock);
endmodule
clear data clock q
qb
1在代码`timescale 1ns/100ps中,定义的仿真时间精度是____
2 写出在VLSI设计流程中,常用的一种Verilog语言仿真软件的名称
3 assign#(4,6,8)Due=&DataBus;语句中,Due变为0的时延是____,Due变为1的时延是___
4 十进制数33用8位二进制基数表示为_;用十六进制基数表示为__
5 模块的端口有3中类型,分别是______________
6 如果要声明一个储存器变量,存储单元大小为16位,一共4096个
存储单元,存储单元名称为ram_data,其代码描述为:____
7 VerilogHDL的规定中,内置的多输出门有两种,分别是_____
8 Verilog中,可以使用门时延定义内置门中从任何输入到其输出的信
号传输时延,一共有三类时延,分别是________
9 常用的有限状态机建模有两种,分别是__________
10 在行为建模的always语句中,有两种过程性赋值方式分别是(写
出名称和符号)__________
11、调用模块(实例化)有两种端口连接方式,方法分别为____。

12、常用的建模级别有_______。

13、行为级建模中使用______语句作为主要的建模语句。

14、按语句的执行顺序来区分,Verilog HDL语句中有__两种类语句块。

15、顺序块和并行块使用两种类型的块语句。

顺序块使用关键字___,
而并行块使用关键字____来表示。

16、Verilog设计中可以把在多个地方都使用的部分程序编写成____,
在需要的地方调用这些程序,以避免重复编码。

读代码
‘timescale 1ns/10ps
Module Phase(Master_Clk, Slave_Clk);
Output Master_Clk, Slave_Clk;
reg Master_Clk;
wire Slave_Clk;
parameter ON=2,
tOFF=3,
tPHASE_DELAY=1; always
begin
#tON Master_Clk = 0;
#tOFF Master_Clk = 1;
End
Assing #tPHASE_DELAY Slave_Clk = Master_Clk; Endmodule
结构建模
Module SADD(A,B,Sum1,Sum2,C, Sum3);
Input A, B, C;
Output Sum1, Sum2;
Inout Sum3;
Reg Sum1, Sum2;
……….
endmodule
(1)指出下列模块实例化语句中各信号D1~D6的信号类型。

module testbench;
……..
SADD T1(D1,D2,D3,D4,D5,D6);
……….
endmodule
如果在testbench模块中,采用名称关联的方式来实现实例化SADD 模块,改怎样来描述?
用门及结构建模的方式描述下图所示电路。

相关文档
最新文档