牛客网刷题错题总结(四)

文章讲述了系统任务$finish的不同参数作用,二进制转换精确度要求,Verilog中模块功能,静态动态时序模拟区别,用户自定义原语(UDP)特性,以及标识符规则和generate-for循环的使用规范。
摘要由CSDN通过智能技术生成

1.系统任务$finish的作用是退出仿真器,返回主操作系统,也就是结束仿真过程。任务$finish可以带参数,根据参数的值输出不同的特征信息。如果不带参数,默认$finish的参数值为1。请问当$finish的参数值为2时,系统输出的特征信息是()

A.不输出任何信息

B.输出当前仿真时刻和位置

C.输出当前仿真时刻、位置和在仿真过程中所用memory及CPU时间的统计。

官方解析:

当参数值为0时,特征信息为:不输出任何信息

当参数值为1时,特征信息为:输出当前仿真时刻和位置

当参数值为2时,特征信息为:输出当前仿真时刻、位置和在仿真过程中所用memory及CPU时间的统计。

正确答案:C

2.将十进制数13.613转换成二进制数,要求装换误差小于1%,下面答案正确的是()

A.1101.10010100

B.1101.1001

C.1101.10011100

D.1101.10011101

官方解析:

首先根据转换误差确定二进制小数的位数,然后采用基数乘除法转换。

整数部分采用基数除法,反复初2,则13/2=6,余1  6/2=3,余0  3/2=1,余1,所以

(12)D =(1101)B 

小数部分采用基数除法,先确定小数的位数。2-m ≤1%,可求出m≥2/lg2=6.64,m取7,则

0.613*2=1.226 取整数1,    0.226*2=0.452 取整数0, 0.452*2=0.904 取整数0,

0.904*2=1.808 取整数1, 0.808*2=1.616 取整数1, 0.616*2=1.232 取整数1,

0.232*2=0.464 取整数0, 0.464*2=0.928 取整数0

最后的小数大于0.5,根据四舍五入,最后应该取1,因为取七位,所以从第八位开始取,10011101,

0.0011B =1*2-1 +1*2-4+1*2-5 +1*2-6+1*2-8 = 0.61328125 误差0.61328125-0.613=0.00028125≈0.03%

满足要求。

正确答案:D

3.下列Verilog代码描述的数字电路是?

1

2

3

4

5

6

7

8

9

10

11

12

13

module test(

   input    a  ,

   input    b  ,

   input    e  ,

    

   output wire [3:0] y

);

assign y[0] = ~(~a & ~b & ~e);

assign y[1] = ~(~a &  b & ~e);

assign y[2] = ~( a & ~b & ~e);

assign y[3] = ~( a &  b & ~e);

endmodule

A.模16计数器

B.4-2编码器

C.3输入数据选择器

D.2-4译码器

4.现有一个存储器的定义为reg [7:0] mema [15:0],则表示该存储器有()个()位的寄存器。

A.8,8

B.8,16

C.16,8

D.16,16

官方解析:

reg [7:0]定义了存储器中每一个存储单元的大小,即该存储单元是一个8位的寄存器;mema存储器名后的[15:0]则定义了该存储器有16个这样的寄存器。

正确答案:C

5.下列关于静态,动态时序模拟的优缺点说法错误的是()

A.静态时序分析是提取出整个电路存在的所有时序路径, 计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足时序要求

B.静态时序分析可以对芯片设计进行全面的时序验证和功能验证,验证每一条路径,发现时序的重大问题,比如建立时间和保持时间冲突,slow path以及过大的时钟偏移

C.动态时序模拟就是仿真,自己可能写不出完备的测试向量

D.动态时序模拟能在验证功能的同时验证时序

官方解析:静态时序分析不能进行功能验证

正确答案:B

6.以下哪个选项中的命令不是用于写文件?

A.$fmonitor

B.$fstrobe

C.$fdisplay

D.$fdumpfile

官方解析:

$fmonitor、$fstrobe、$fdisplay、$fwrite都是用来写文件的。

$dumpfile的作用是选择VCD文件的名称。

正确答案:D

7.可以用()系统任务来显示,应该用非阻塞赋值的变量值。

A.$monitor

B.$strobe

C.$display

D.$write

display打印执行该函数时参数值,自动换行 write与display相同,不自动换行 strobe等所有赋值结束后打印 monitor监控参数变化,单一进程

正确答案:B

8.下列Verilog运算符,优先级从低到高排列正确的是:( )

①^, ②&&, ③%, ④!==

A.①②③④

B.②①④③

C.①②④③

D.②①③④

官方解析:

Verilog的运算符,优先排序如下:

 

正确答案:B

9.用户定义的原语是从英语User Defined Primitives直接翻译过来的,简称UDP。利用UDP用户可以定义自己设计的基本逻辑元件的功能。下面选项中,关于UDP正确的是()

A.UDP可以有多个输入端

B.UDP可以有多个输出端

C.UDP的真值表中,可以出现高阻值状态Z。

D.输入端和输出端都可以被定义为寄存器类型变量

官方解析:

UDP可以有多个输入端,最多允许有10个输入端。A选项正确。

UDP只能有一个输出端,而且必定是端口说明列表的第一项。B选项错误。

在UDP的真值表项中,只允许出现0,1,X的三种逻辑值,高阻值状态Z是不允许出现的。所以C选项是错误的。

只有输出端才可以被定义为寄存器类型变量。所以D选项是错误的。

正确答案:A

10.下列哪写标识符是合法标识符()

1.Shift_reg_c   2.a*b_net  3._a$b_wire  4.21net  5._bus11

A.1,5

B.2,3,4

C.1,4,5

D.1,3,5

官方解析:标识符必须以英文字母起头,或者用下横线起头,其中可以包括数字,$符和下横线符

正确答案:D

11.下列关于generate for循环语句说法错误的是()?

A.generate-for语句必须用genvar关键字,来定义for的循环变量

B.generate-for中的begin end块名字在同一module中不可重复

C.for循环中的内容必须用begin end块包括起来

D.generate for begin后面的名字可省略不写,但必须将begin end写完整,不可缺少end

官方解析:

generate-for中的begin end块必须有名字,且在同一module中不可重复;generate-for语句必须用genvar关键字,来定义for的循环变量,不可使用其他整型标量。

generate-for语句必须要注意三点: 1.使用genvar 定义变量,作为generate中的循环变量 2.generate中定义的for语句,必须要有begin,这为后续增加标签做准备 3.begin必须要有名称,也就是标签,即begin:标签,因为标签会作为generate循环的实际名称

正确答案:D

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值