Verilog期末复习.docx
《Verilog期末复习.docx》由会员分享,可在线阅读,更多相关《Verilog期末复习.docx(13页珍藏版)》请在冰点文库上搜索。
Verilog期末复习
Verilog期末复习
v考试内容:
▪凡是课堂讲过的内容都有可能考
▪重点是对基本语法的掌握能力和实际应用能力
▪本课件非考试大纲,切勿仅仅据此复习
v试题类型:
▪填空题:
10空20分
▪简答题:
6道36分
▪程序设计题:
4道44分
复习内容
(一)
v各种数据类型及变量常量
v门级描述
v行为描述(包含多种分支语句)
v数据流级描述
v任务和函数的编写
v系统任务的使用语法
v用户自定义原语
v状态机建模
v层次化建模及语法
v简单的VerilogHDL模块编写和测试
VerilogHDL的级别划分
•系统级(system):
用高级语言结构实现设计模块的外部性能的模
•算法级(algorithmic):
用高级语言结构实现设计算法的模型。
•RTL级(RegisterTransferLevel):
描述数据在寄存器之间流动和如何处理这些数据的模型。
•门级(gate-level):
描述逻辑门以及逻辑门之间的连接的模型。
•开关级(switch-level):
描述器件中三极管和储存节点以及它们之间连接的模型。
合法和非法标识符
合法的:
非法的:
shift_reg_a34net
bus2632_m_pmos//不能用数字开头
_a_busa*b_net//不能含有非字母符号*
n@263//不能含有非字母符号@
Verilog是大小写敏感的。
所谓标识别符就是用户为程序描述中的Verilog对象所起的名字。
标识符必须以英语字母(a-z,A-Z)起头,或者用下横线符(_)起头。
其中可以包含数字、$符和下横线符。
特别标识符是用“\”符开始,以空格符结束的标识符。
它可以包含任何可打印的ASCII字符。
例如
v以下不正确的标识符名称是
▪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个四位寄存器组
v如果要声明一个存储器变量,存储单元大小为8位,一共2048个存储单元,存储单元名称为mem,代码描述为:
▪reg[7:
0]mem[2047:
0]
举例说明数据类型的选择
moduleTADD(A,B,Sum1,Sum2,C,Sum3);
iuputA,B,C;
outputSum1,Sum2;
inoutSum3;
regSum1,Sum2;
…….
endmodule
moduletestbench;
……
TADDT1(D1,D2,D3,D4,D5,D6);
vD1:
wire/reg线网或寄存器型D2:
wire/reg线网或寄存器型
vD3:
wire线网型D4:
wire线网型
vD5:
wire/reg线网或寄存器型
vD6:
wire线网型
运算符(操作符)及表达式
vVerilogHDL中的运算符可以分为下述类型:
▪算术运算符:
返回运算结果
▪关系运算符:
返回逻辑值真假
▪相等运算符:
返回真假,==和!
=只识别1和0,===和!
==能严格识别01xz
▪逻辑运算符:
逻辑与或非,&&||!
返回真假
▪按位运算符:
按位运算,返回结果长度与运算前相同
▪缩减(归约)运算符:
从左至右依次运算,直至最后一位结果,所以最后结果为1位
▪移位运算符:
左移扩位,右移长度不变
▪条件运算符:
?
:
条件满足输出冒号前的式子,不满足输出冒号后的式子
▪拼接运算符:
{}注意其中各位必须指明宽度
三类时延值
v对于每个时延定义,总共能够指定三类时延值:
▪上升时延
▪下降时延
▪关闭时延
assign#(rise,fall,turn-off)LHS=RHS_expr;
v如果右端从非0向量变化到0向量,那么就使用下降时延。
如果右端值到达z,那么使用下降时延;否则使用上升时延。
▪assign#4Ask=Quiet||Late;//Onedelayvalue.
▪assign#(4,8)Ask=Quick;//Twodelayvalues.
▪assign#(4,8,6)Arb=&DataBus;//Threedelayvalues.
▪Arb变为0的时延是8;Arb变为1的时延是4。
`timescale使用举例
▪`timescale1ns/100ps
▪moduleAndFunc(Z,A,B);
▪outputZ;
▪inputA,B;
▪and#(5.22,6.17)Al(Z,A,B);//规定了上升及下降时延值。
▪endmodule
v编译器指令定义时延以ns为单位,并且时延精度为1/10ns(100ps)。
过程性赋值
v过程性赋值分两类:
▪阻塞性过程赋值=、非阻塞性过程赋值<=
v过程性赋值是仅仅在initial语句或always语句内的赋值,它只能对寄存器数据类型的变量赋值。
表达式的右端可以是任何表达式。
...
连续性赋值与过程性赋值比较
过程赋值
v在always语句或initial语句内出现,执行与周围其它语句有关
v驱动寄存器reg
v使用“=”或“<=”赋值符号
v无assign关键词
连续赋值
v在一个模块内出现
v与其它语句并行执行;在右端操作数的值发生变化时执行
v驱动线网wire
v使用“=”赋值符号
v有assign关键词
函数与任务的区别
v
(1)函数只能与主模块共用同一个仿真时间单位,而任务可以定义自己的仿真时间单位。
v
(2)函数不能启动任务,而任务能启动其他任务和函数。
v(3)函数至少要有一个输入变量,而任务可以没有或有多个任何类型的变量。
v(4)函数返回一个值,而任务则不返回值
v函数的关键词是function;任务的关键词是task
VerilogHDL中的循环语句和块语句
forever循环
repeat循环
while循环
for循环
顺序块与并行块
运行后下列变量A,B,C,D的二进制值
vreg[7:
0]A,B,C;
vwireD;
vinitial
vB=3’hff;
vinitial
vA=8’bz0;…..
A=zzzzzzz0,B=00000111,C=xxxxxxxx,D=z
赋值时右式左式位数不匹配时:
若左多右少,按低位配齐,高位补零处理,若赋值的最高位为x或z,则向前补齐
若右多左少,按低位配齐,高位舍去处理
课堂练习
v
用门级结构建模的方式描述下图所示电路
参考解答
modulearch_model(D,A,B,C,Eout);
inputA,B,C,D;
outputEout;
wireA,B,C,D,Abar,Bbar,T1,T2,T3;
notiv1(Abar,A),
iv2(Bbar,B);
andad(T1,D,Abar);
nornr(T3,C,Bbar);
xorxr(T2,A,Bbar);
xnorxn(Eout,T1,T2,T3,C);
endmodule
练习:
运用数据流建模描述下图电路
moduleFA_Df(A,B,Cin,Sum,Cout);
inputA,B,Cin;
outputSum,Cout;
wireA,B,c,d,e,f,Cin,Sum,Cout;
assignc=A^B;
assignd=A&Cin;
assigne=B&Cin;
assignf=c&Cin;
assignSum=c^Cin;
assignCout=e|d|f;
endmodule
有限状态机的分类
vMooreFSM(摩尔有限状态机)
▪特点:
MooreFSM的输出只与当前状态有关
▪MooreFSM的描述方法:
采用一个沿触发的always语句及case语句。
vMealyFSM(米里有限状态机)
▪特点:
MealyFSM的输出与当前状态和输入有关。
▪其中Mealy有限状态机又可分为同步Mealy状态机和异步Mealy状态机
千万注意写法!
读程序用国际图形符号绘出门级结构示意图
moduleflop(data,clock,clear,q,qb);
inputdata,clock,clear;
outputq,qb;
wirea,b,c,d,e,f,nclock,ndata;
nand#10nd1(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#9nd3(c,a,d),
nd7(q,e,qb);
not#10iv1(ndata,data),
iv2(nclock,clock);
endmodule
1在代码`timescale1ns/100ps中,定义的仿真时间精度是____
2写出在VLSI设计流程中,常用的一种Verilog语言仿真软件的名称
3assign#(4,6,8)Due=&DataBus;语句中,Due变为0的时延是____,Due变为1的时延是___
4十进制数33用8位二进制基数表示为_;用十六进制基数表示为__
5模块的端口有3中类型,分别是______________
6如果要声明一个储存器变量,存储单元大小为16位,一共4096个存储单元,存储单元名称为ram_data,其代码描述为:
____
7VerilogHDL的规定中,内置的多输出门有两种,分别是_____
8Verilog中,可以使用门时延定义内置门中从任何输入到其输出的信号传输时延,一共有三类时延,分别是________
9常用的有限状态机建模有两种,分别是__________
10在行为建模的always语句中,有两种过程性赋值方式分别是(写出名称和符号)__________
11、调用模块(实例化)有两种端口连接方式,方法分别为____。
12、常用的建模级别有_______。
13、行为级建模中使用______语句作为主要的建模语句。
14、按语句的执行顺序来区分,VerilogHDL语句中有__两种类语句块。
15、顺序块和并行块使用两种类型的块语句。
顺序块使用关键字___,而并行块使用关键字____来表示。
16、Verilog设计中可以把在多个地方都使用的部分程序编写成____,在需要的地方调用这些程序,以避免重复编码。
读代码
‘timescale1ns/10ps
ModulePhase(Master_Clk,Slave_Clk);
OutputMaster_Clk,Slave_Clk;
regMaster_Clk;
wireSlave_Clk;
parameterON=2,
tOFF=3,
tPHASE_DELAY=1;
always
begin
#tONMaster_Clk=0;
#tOFFMaster_Clk=1;
End
Assing#tPHASE_DELAYSlave_Clk=Master_Clk;
Endmodule
结构建模
ModuleSADD(A,B,Sum1,Sum2,C,Sum3);
InputA,B,C;
OutputSum1,Sum2;
InoutSum3;
RegSum1,Sum2;
……….
endmodule
(1)指出下列模块实例化语句中各信号D1~D6的信号类型。
moduletestbench;
……..
SADDT1(D1,D2,D3,D4,D5,D6);
……….
endmodule
如果在testbench模块中,采用名称关联的方式来实现实例化SADD模块,改怎样来描述?
用门及结构建模的方式描述下图所示电路