verilog源代码第89章例题.docx

上传人:b****0 文档编号:9333853 上传时间:2023-05-18 格式:DOCX 页数:23 大小:120.31KB
下载 相关 举报
verilog源代码第89章例题.docx_第1页
第1页 / 共23页
verilog源代码第89章例题.docx_第2页
第2页 / 共23页
verilog源代码第89章例题.docx_第3页
第3页 / 共23页
verilog源代码第89章例题.docx_第4页
第4页 / 共23页
verilog源代码第89章例题.docx_第5页
第5页 / 共23页
verilog源代码第89章例题.docx_第6页
第6页 / 共23页
verilog源代码第89章例题.docx_第7页
第7页 / 共23页
verilog源代码第89章例题.docx_第8页
第8页 / 共23页
verilog源代码第89章例题.docx_第9页
第9页 / 共23页
verilog源代码第89章例题.docx_第10页
第10页 / 共23页
verilog源代码第89章例题.docx_第11页
第11页 / 共23页
verilog源代码第89章例题.docx_第12页
第12页 / 共23页
verilog源代码第89章例题.docx_第13页
第13页 / 共23页
verilog源代码第89章例题.docx_第14页
第14页 / 共23页
verilog源代码第89章例题.docx_第15页
第15页 / 共23页
verilog源代码第89章例题.docx_第16页
第16页 / 共23页
verilog源代码第89章例题.docx_第17页
第17页 / 共23页
verilog源代码第89章例题.docx_第18页
第18页 / 共23页
verilog源代码第89章例题.docx_第19页
第19页 / 共23页
verilog源代码第89章例题.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

verilog源代码第89章例题.docx

《verilog源代码第89章例题.docx》由会员分享,可在线阅读,更多相关《verilog源代码第89章例题.docx(23页珍藏版)》请在冰点文库上搜索。

verilog源代码第89章例题.docx

verilog源代码第89章例题

第八章语法概念总复习练习

 

1)以下给出了一个填空练习,请将所给各个选项根据电路图,填入程序中的适当位置。

 

标准答案:

moduleAOI(A,B,C,D,F);

inputA,B,C,D;

outputF;

assignF=((A&B)&(C&D));

endmodule

2〕

在这一题中,我们将作有关层次电路的练习,通过这个练习,你将加深对模块间调用时,管脚间连接的理解。

假设已有全加器模块FullAdder,若有一个顶层模块调用此全加器,连接线分别为W4,W5,W3,W1和W2。

请在调用时正确地填入I/O的对应信号。

moduleFullAdder(A,B,Cin,Sum,Cout);

inputA,B,Cin;

outputSum,Cout;

endmodule

moduleTop.....

FullAdderFA(,//W1

//W2

//W3

//W4

);//W5

endmodule

标准答案:

moduleTop...

FullAdderFA(.Sum(W1),//W1

.Cout(W2),//W2

.Cin(W3),//W3

.A(W4),//W4

.B(W5));//W5

endmodule

3)下面这道题是一个测试模块,因此没有输入输出端口,请将相应项填入合适的位置。

moduleTestFixture;

 

initial

begin

 

end

initial

 

endmodule

标准答案:

moduleTestFixture

regA,B,SEL;

wireF;

MUX2M(SEL,A,B,F);

initial

begin

SEL=0;A=0;B=0;

#10A=1;

#10SEL=1;#10B=1;

end

initial

$monitor(SEL,A,B,,F);

endmodule

4)指出下面几个信号的最高位和最低位。

reg[1:

0]SEL;input[0:

2]IP;wire[16:

23]A;

标准答案:

MSB:

SEL[1]MSB:

IP[0]MSB:

A[16]

LSB:

SEL[0]LSB:

IP[2]LSB:

A[23]

5)P,Q,R都是4bit的输入矢量,下面哪一种表达形式是正确的。

1)inputP[3:

0],Q,R;

2)inputP,Q,R[3:

0];

3)inputP[3:

0],Q[3:

0],R[3:

0];

4)input[3:

0]P,[3:

0]Q,[0:

3]R;

5)input[3:

0]P,Q,R;

标准答案:

5)

6)请将下面选项中的正确答案填人空的方括号中。

1.(0:

2)2.(P:

0)3.(Op1:

Op2)4.(7:

7)5.(2:

0)6.(7:

0)

reg[7:

0]A;

reg[2:

0]Sum,Op1,Op2;

regP,OneBit;

initial

begin

Sum=Op1+Op2;

P=1;

A[]=Sum;

.....

end

标准答案:

5

7)请根据以下两条语句,从选项中找出正确答案。

7.1)reg[7:

0]A;

A=2'hFF;

1)8'b0000_00112)8'h033)8'b1111_11114)8'b11111111

标准答案:

1)、2)

7.2)reg[7:

0]B;

B=8'bZ0;

1)8'0000_00Z02)8'bZZZZ_0000

3)8'b0000_ZZZ04)8'bZZZZ_ZZZ0

标准答案:

4)

8)请指出下面几条语句中变量的类型。

8.1)assignA=B;

8.2)always#1

Count=C+1;

标准答案:

A(wire)B(wire/reg)Count(reg)C(wire/reg)

9)指出下面模块中Cin,Cout,C3,C5,的类型。

moduleFADD(A,B,Cin,Sum,Cout);

inputA,B,Cin;

outputSum,Cout;

....

endmodule

moduleTest;

...

FADDM(C1,C2,C3,C4,C5);

...

endmodule

标准答案:

Cin(wire)Cout(wire/reg)C3(wire/reg)C5(wire)

10〕在下一个程序段中,当ADDRESS的值等于5'b0X000时,问casex执行完后A和B的值是多少。

A=0;

B=0;

casex(ADDRESS)

5'b00?

?

?

:

A=1;

5'b01?

?

?

:

B=1;

5'b10?

00,5'b11?

00:

begin

A=1;

B=1;

end

endcase

标准答案:

A=1andB=0;

11)在下题中,事件A分别在10,20,30发生,而B一直保持X状态,问在50时Count的值是多少。

reg[7:

0]Count;

initial

Count=0;

always

begin

@(A)Count=Count+1;

@(B)Count=Count+1;

end

标准答案:

Count=1;

(这是因为当A第一次发生时,Count的值由0变为1,然后事件控制@(B)阻挡了进程。

12)在下题中initial块执行完后I,J,A,B的值会是多少。

reg[2:

0]A;

reg[3:

0]B;

integerI,J;

initial

begin

I=0;

A=0;

I=I-1;

J=I;

A=A-1;

B=A;

J=J+1;

B=B+1;

end

标准答案:

I=-1(整数可为负数)

J=0

A=7(A为reg型为非负数,又因为A为3位即为111)

B=8(在B=A时,B=0111,然后B=B+1,所以B=4’b1000)

13)在下题中,当V的值发生变化且为-1时,执行完always块后

Count的值应是多少?

reg[7:

0]V;

reg[2:

0]Count;

always@(V)

begin

Count=0;

while(~V[Count])

Count=Count+1;

end

标准答案:

Count=0;

14)在下题中循环执行完后,V的值是多少?

reg[3:

0]A;

regV,W;

integerK;

....

A=4'b1010;

for(K=2;K>=0;K=K-1)

begin

V=V^A[k];

W=A[K]^A[K+1];

end

标准答案:

V的值是它进人循环体前值的取反。

(因为V的值与0,1,0进行了异或,与1的异或改变了V的值。

15)在下题中,给出了几种硬件实现,问以下的模块被综合后可能是哪一种?

always@(posedgeClock)

if(A)

C=B;

1.不能综合。

2.一个上升沿触发器和一个多路器。

3.一个输入是A,B,Clock的三输入与门。

4.一个透明锁存器。

5.一个带clock有始能引脚的上升沿触发器。

标准答案:

2,5

16)在下题中,always状态将描述一个带异步Nreset和Nset输入端的上升沿触发器,则空括号内应填入什么,可从以下五种答案中选择。

always@()

if(!

Nreset)

Q<=0;

elseif(!

Nset)

Q<=1;

else

Q<=D;

1.negedgeNsetorposedgeClock

2.posedgeClock

3.negedgeNresetorposedgeClock

4.negedgeNresetornegedgeNsetorposedgeClock

5.negedgeNresetornegedgeNset

标准答案:

4

17)在下题中,给出了几种硬件实现,问以下的模块被综合后可能是哪一种?

1.带异步复位端的触发器。

2.不能综合或与预先设想的不一致。

3.组合逻辑。

4.带逻辑的透明锁存器。

5.带同步复位端的触发器。

1.always@(posedgeClock)

begin

A<=B;

if(C)

A<=1'b0;

end

标准答案:

5

2.always@(AorB)

case(A)

1'b0:

F=B;

1'b1:

G=B;

endcase

标准答案:

2

3.always@(posedgeAorposedgeB)

if(A)

C<=1'b0;

else

C<=D;

标准答案:

1

4.always@(posedgeClkornegedgeRst)

if(Rst)

A<=1'b0;

else

A<=B;

标准答案:

2(产生了异步逻辑)

18)在下题中,模块被综合后将产生几个触发器?

always@(posedgeClk)

begin:

Blk

regB,C;

C=B;

D<=C;

B=A;

end

1.2个寄存器B和D

2.2个寄存器B和C

3.3个寄存器B,C和D

4.1个寄存器D

5.2个寄存器C和D

标准答案:

2

19)在下题中,各条语句的顺序是错误的。

请根据电路图调整好它们的次序。

标准答案:

1)2)

regFF1,FF2,FF3;

always@(posedgeClock)

begin

Output=FF3;

FF3=FF2;

FF2=FF1;

FF1=Input;

end

regFF1,FF2,FF3;

always@(posedgeClock)

begin

FF1<=Input;

FF2<=FF1;

FF3<=FF2;

Output<=FF3;

end

20)根据左表中SEL与OP的对应关系,在右边模块的空括号中填入相应的值。

SEL:

OP

000:

1

001:

3casex(SEL)

010:

13'b():

OP=3;

011:

33'b():

OP=1;

100:

03'b():

OP=0;

101:

3endcase

110:

0

111:

3

标准答案:

casex(SEL)

3'bXX1:

OP=3;

3'b0X0:

OP=1;

3'b1X0:

OP=0;

endcase

 

21)在以下表达式中选出正确的.

1)4'b1010&4'b1101=1'b1

2)~4'b1100=1'b1

3)!

4'b1011||!

4'b0000=1'b1

4)&4'b1101=1'b1

5)1b'0||1b'1=1'b1

6)4'b1011&&4'b0100=4'b1111

7)4'b0101<<1=5'b01011

8)!

4'b0010is1'b0

9)4'b0001||4'b0000=1'b1

标准答案:

3),5),8),9)

22)在下一个模块旁的括号中填入display的正确值。

integerI;

reg[3:

0]A;

reg[7:

0]B;

initial

begin

I=-1;A=I;B=A;

$display("%b",B);()

A=A/2;

$display("%b",A);()

B=A+14

$diaplay("%d",B);()

A=A+14;

$display("%d",A);()

A=-2;I=A/2;

$display("%d",I);()

end

标准答案:

I=-1;A=I;B=A;

$display("%b",B);(00001111)

A=A/2;

$display("%b",A);(0111)

B=A+14

$diaplay("%d",B);(21)

A=A+14;

$display("%d",A);(5)(A为4位,所以21被截为5)

A=-2;I=A/2;

$display("%d",I);(7)(A=-2,则是1110)

 

23)请问{1,0}与下面哪一个值相等。

1).2'b012).2'b103).2'b00

4).64'H0000000000025).64'H0000000100000000

标准答案:

5

(位拼接运算符必须指明位数,若不指明则隐含着为32位的二进制数[即整数]。

24)根据下题给出的程序,确定应将哪一个选项填入尖括号内。

1.defs.Reset2."defs.v".Reset

3.M.Reset4.Reset

1标准答案:

1

(模块间调用时,若引用其他模块定义的参数,要加上其他模块名,做为这个参数的前缀。

moduleM

'include"defs.v"

....

if(OP==

Bus=0;

endmodule

2.标准答案:

4

parameterReset=8'b10100101;(Filedefs.v)

moduleM

'include"defs.v"

....

if(OP==

Bus=0;

endmodule

25)如果调用Pipe时,想把Depth的值变为8,问程序中的空括号内应填入何值?

ModulePipe(IP,OP)

parameterOption=1;

parameterDepth=1;

...

endmodule

Pipe()P1(IP1,OP1);

标准答案:

#(1,8)

(其中1对应参数Option,8对应参数Depth.)

26)若想使P1中的Depth的值变为16,则应向空括号中填入哪个选项。

modulePipe(IP,OP);

parameterOption=1;

parameterDepth=1;

…………

endmodule

module

PipeP1(IP1,OP1);

();

endmodule

1.defparamP1.Depth=16;

2.parameterP1.Depth=16;

3.parameterPipe.Depth=16;

4.defparamPipe.Depth=16;

标准答案:

1

(用后缀改变引用模块的参数要用defparam及用本模块名作为引用参数的前缀,如p1.Depth。

27)如果我们想在Test的monitor语句中观察Count的值,则在空括号中应填入什么?

ModuleTest

TopT();

initial

$monitor()

endmodule

moduleTop;

BlockB1();

BlockB2();

endmodule

moduleBlock;

CounterC();

endmodule

moduleCounter;

reg[3:

0]Count;

....

endmodule

标准答案:

T.B1.C.CountorTest.T.B1.C.Count

28)下题中用initial块给reg[7:

0]V符值,请指明每种情况下V的8位都是什值。

这道题说明在数的表示时,已标明字宽的数若用XZ表示某些位,只有在最左边的X或Z具有扩展性。

第九章设计和验证例题

[例1]用基本逻辑单元组成触发器。

(文件名为:

flop.v)

moduleflop(data,clock,clear,q,qb);

inputdata,clock,clear;

outputq,qb;

nand#10nd1(a,data,clock,clear),//注意结束时用逗号,最后才用分号

nd2(b,ndata,clock),//表示nd1到nd8都是nand(与非门)

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

图9.1.2.D型主从触发器的电路结构图

 

1)flopf1op_d(d1,clk,clrb,q,qn);

2)flopflop_d(.clock(clk),.q(q),.clear(clrb),.qb(qn),.data(d1));

[例2]用触发器组成带清零端的四位寄存器。

(文件名为:

hardreg.v)

`include"flop.v"

modulehardreg(d,clk,clrb,q);

inputclk,clrb;

input[3:

0]d;

output[3:

0]q;

flopf1(d[0],clk,clrb,q[0],),//注意结束时用逗号,最后才用分号

f2(d[1],clk,clrb,q[1],),//表示f1到f4都是flop

f3(d[2],clk,clrb,q[2],),

f4(d[3],clk,clrb,q[3],);

endmodule

[例3]用行为描述的方法来描述带请零端的四位寄存器。

(文件名为:

hardreg.v)

modulehardreg(d,clk,clrb,q);

inputclk,clrb;

input[3:

0]d;

output[3:

0]q;

reg[3:

0]q;

always@(posedgeclkorposedgeclrb)

begin

if(clrb)

q<=0;

else

q<=d;

end

endmodule

 

[例4]对四位带清零端的寄存器进行全面的测试。

(文件名为:

hardreg_top.v)

`include"flop.v"

`include"hardreg.v"//仿真时需要包含文件"hardreg.v"和"flop.v"

/***如果仿真环境可以把有关的文件安排在一个项目中,只要底层模块经过编译,并记录在编译的库中,可以不用包含文件。

**/

modulehardreg_top;//顶层模块,没有输入和输出的端口

regclock,clearb;//为产生测试用的时钟和清零信号需要寄存器

reg[3:

0]data;//为产生测试用数据需要用寄存器

wire[3:

0]qout;//为观察输出信号需要从模块实例端口中引出线

`definestim#100data=4'b//宏定义stim,可使源程序简洁

eventend_first_pass;//定义事件end_first_pass

hardregreg_4bit(.d(data),.clk(clock),.clrb(clearb),.q(qout));

/************************************************************************

把本模块中产生的测试信号data、clock、clearb输入实例reg_4bit以观察输出信号qout。

实例reg_4bit实际上是已经设计好的模块hardreg。

实例引用的hardreg模块,根据包含文件的不同,可以是表示行为的模块也可以是表示结构的模块。

***********************************************************************/

initial

begin

clock=0;

clearb=1;

end

always#50clock=~clock;

always@(end_first_pass)

clearb=~clearb;

always@(posedgeclock)

$display("attime%0dclearb=%bdata=%dqout=%d",

$time,clearb,data,qout);

/*****************************************************

类似于C语言的printf语句,可打印不同时刻的信号值

******************************************************/

initial

begin

repeat(4)//重复四次产生下面的data变化

begin

data=4'b0000;

`stim0001;

/***************************************************************

宏定义stim引用,等同于#100data=4'b0001;。

注意引用时要用`符号。

****************************************************************/

`stim0010;

`stim0011;

`stim0100;

`stim0101;

.

.

.

`stim1110;

`stim1111;

#200->end_first_pass;

end

/***********************************************

延迟200个单位时间,触发事件end_first_pass

************************************************/

$finish;//结束仿真

end

endmodule

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2