乐鑫2022数字IC岗提前批笔试题答案

乐鑫2022数字IC岗位提前批笔试题

答案为自己查阅资料之后所作,有些题不敢保证完全正确,在相对应的题号下也给出了自己的疑问,有想法的同学可留言讨论

一、选择

1.以下关于System Verilog的描述,正确的

A:sv中可以用logic代替Verilog中的wire和reg类型

B:sv中,定义成reg的信号会被综合成触发器

C:sv中的function语言不可被综合

D:其他都不正确

E:sv是提供给验证使用的,因此不能被综合

2.UVM层次化结构中,最顶层的部件类型是?

A:uvm_test
B:uvm_root
C:uvm_top
D:uvm_component

3.数字信号上采样时,一般需要添加什么样的滤波器,完成功能为?

A:高通,抗混叠滤波

B:低通,抗周期延拓

C:低通,抗混叠滤波

D:高通,抗周期延拓

4.下列不属于异步总线的是

A:SPI

B:USB

C:UART

D:IIC
注:第四题有待商榷

5.()电路的逻辑功能特点是,任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关

A:静态逻辑

B:组合逻辑

C:动态逻辑

D:时序逻辑

6.在芯片设计流程当中,通常会进行后仿真(post-simulation),关于后仿的作用,以下说法不正确的是

A:抽检netlist是否和RTL功能一致

B:抽检电路中是否出现有害的glitch

C:抽检时序是否有违规

D:抽检电路中是否存在亚稳态

7.以下关于异步处理正确的是

A:信号经过两级触发器即可完成异步信号的传递

B:只要信号传递的两端时钟频率不相等,即认为是异步信号

C:异步复位信号需要经过同步处理后再使用是安全的

D:异步FIFO中使用格雷码传递异步计数器可以保证每一拍传递的数据都是准确的

8.关于跨时钟域电路的设计,以下说法正确的是

A:单bit信号经两级D触发器同步后即可进行跨时钟域传递

B:采用单一时钟的电路不会产生亚稳态

C:异步FIFO的两个时钟频率相同也可以正常工作

D:跨时钟域电路当中的亚稳态无法消除

注:第8题有疑问

9.衡量数字通信系统传输质量的指标是

A:信噪比

B:噪声功率

C:语音清晰度

D:误码率

10.以下代码片段实现的电路功能是

Input [3:0] in;

output [3:0] out;

wire [3:0] a,b;

assign a=in<<1;

assign b=in>>3;

assign out=a|b;

A:对输入信号in先右移3位,再左移1位

B:对输入信号in循环左移1位

C:对输入信号in循环右移3位

D:对输入信号in先左移1位,再右移3位

注:B和C应该都是对的

二:填空

1.verilog当中a=4’b10x1;b=4’b10x1;那么逻辑表达式a==b为(x)a===b为(1);

2.4bit的信号输入和8bit的信号输入的乘法器内部计算输出信号至少需要(12)bit的位宽;

3.通常情况下,芯片工作温度较(低),工作电压较(高),速度最快。

4.以下代码的打印输出是

always@(posedge clk)

begin

a=0;

a<=1;

$display(“%0b”,a);

end

答案:0

注:第4题注意阻塞和非阻塞赋值的区别,同时去了解0b和b的区别。

5.全部使用组合逻辑实现复数A,B,C的运算|A*(B+C)|^2时, 共需使用()个乘法器与()个加法器

答案:6个乘法器,5个加法器

注释:此题不完全确定,有想法的同学可留言讨论

三、问答

此题a是看波形写代码,比较简单
此题b是:使用verilog编写一根单向导线wire_a仿真模型,此导线的传输延迟为5ns,且不会过滤此波形。

`timescale 1ns/10ps
module wire_a(
    input    in,//输入
    output    out //输出
); 

答案:

a:

`timescale 1ns/10ps

module wave_gen();

reg wave;

initial begin
wave=0;
#2 wave=1;
#3 wave=0;
#5 wave=1;
#5 wave=0;
#1 wave=1;
#1 wave=0;
#5 wave=1;
#1 wave=0;
#4 wave=1;
#3 wave=0;
end

endmodule

b:
reg out_reg;
always@(*) begin
out_reg <= #5 in;
end

参考:链接说明

2.题目描述:

使用Verilog/SV撰写如下功能模块;求输入信号序列din在din_vld为高电平的时间段内的次小值和次小值

出现的次数。接口信号如下,

module sec_min(
input clk, //时钟信号
input rst_n, //复位信号
input [9:0] din, //10bit无符号数
input din_vld, //输入数据有效信号
output [9:0] dout, //次小值
output [8:0] cnt //次小值出现的次数,溢出时重新计数
);

endmodule

//乐鑫2022提前批最后一道答题
//进行过几种情况的验证,结果正确。
//如果出现问题,可留言或私信一起讨论。

module sec_min(
    input   clk,                //时钟信号
    input   rst_n,              //复位信号
    input   [9:0]   din,        //10bit无符号数
    input   din_vld,            //输入数据有效信号
    output  [9:0]   dout,       //次小值
    output  [8:0]   cnt          //次小值出现的次数,溢出时重新计数
);

reg	[9:0]	min_data;
reg	[9:0]	sub_data;
reg	[9:0]	data_reg;
reg	[1:0]	data_cnt;
reg	[8:0]	sub_cnt;
reg   [8:0] min_cnt;

//寄存一拍
always@(posedge clk or negedge rst_n)begin
	if(!rst_n)begin
		data_reg<='d0;
	end
	else if(din_vld) begin
		data_reg<=din;
	end
	else begin
		data_reg<='d0;
	end
end


//计数器,区分第一个数据,第二个数据,和其他的数据
always@(posedge clk or negedge rst_n)begin
	if(!rst_n)begin
		data_cnt<='d0;
	end
	else if(din_vld) begin
		if(data_cnt<'d3)begin
			data_cnt<=data_cnt+1;
		end
		else begin
			data_cnt<='d3;
		end
	end
	else begin
		data_cnt<='d0;
	end
end


//分情况讨论,第一个数据来的时候,将第一个数据给最小值和次小值;在第二个数据来的时候,分情况讨论;在第三个及后面的数据来的时候,分情况讨论。
always@(posedge clk or negedge rst_n )begin
	if(!rst_n)begin
		min_data<='d0;
		sub_data<='d0;
	end
	if(din_vld) begin
		min_data<=data_reg;
		sub_data<=data_reg;
		if(data_cnt=='d1)begin
			min_data<=data_reg;
			sub_data<=data_reg;
		end
		else if(data_cnt=='d2)begin
			if(data_reg<min_data)begin
				min_data<=data_reg;
				sub_data<=min_data;
			end
			else begin
				min_data<=min_data;
				sub_data<=data_reg;
			end
		end
		else if(data_cnt=='d3) begin
			if(data_reg<min_data)begin
				min_data<=data_reg;
				sub_data<=min_data;
			end
			else if(data_reg==min_data)begin
				min_data<=min_data;
				sub_data<=sub_data;
			end
			else if(data_reg<=sub_data)begin
				min_data<=min_data;
				sub_data<=data_reg;
			end
			else begin
				min_data<=min_data;
				sub_data<=sub_data;
			end
		end		
	end
	else begin
		min_data<='d0;
		sub_data<='d0;
	end 
end


//根据数据来的顺序和数值来进行次小值和最小值出现次数的计算
//然后分情况讨论,当新值比最小值小的时候,就要将min_cnt赋值给sub_cnt
//其他情况比较容易想到,有问题请留言讨论
always@(posedge clk or negedge rst_n)begin
	if(!rst_n)begin
		sub_cnt<='d0;
		min_cnt<='d0;
	end
	else if(din_vld) begin
		if(data_cnt==1)begin
			sub_cnt<='d1;
			min_cnt<='d1;
		end
		else if(data_cnt==2||data_cnt==3)
		if(data_reg<min_data)begin
			sub_cnt<=min_cnt;
			min_cnt<='d1;
		end
		else if (data_reg==min_data)begin
			sub_cnt<=sub_cnt;
			min_cnt<=min_cnt+1;
		end
		else if(data_reg<sub_data)begin
			sub_cnt<='d1;
			min_cnt<=min_cnt;
		end
		else if(data_reg==sub_data) begin
			sub_cnt<=sub_cnt+1;
			min_cnt<=min_cnt;
		end
		else begin
			sub_cnt<=sub_cnt;
			min_cnt<=min_cnt;
		end
	end
	else begin
		sub_cnt<='d0;
		min_cnt<='d0;
	end
end

//进行输出
assign	dout=sub_data;
assign 	cnt=sub_cnt;

endmodule
  • 12
    点赞
  • 142
    收藏
    觉得还不错? 一键收藏
  • 31
    评论
乐鑫科技是一家专注于物联网芯片和解决方案的公司,它在C语言方面开展了一场笔试。C语言是一种广泛使用的、通用的高级编程语言,它为开发者提供了底层控制硬件的能力。 在乐鑫科技的C语言笔试,可能会包含以下内容:基本语法、数据类型、运算符、控制结构、函数、数组、指针、结构体等。基本语法是最基础的部分,包括如何定义变量、如何使用注释、如何编写函数等。数据类型是C语言的基本类型,包括整型、浮点型、字符型等,掌握不同数据类型的使用规则至关重要。运算符包括赋值运算符、算术运算符、关系运算符等,它们用于对数据进行操作和比较。控制结构包括条件语句(如if语句)和循环语句(如for循环),它们可以根据条件控制程序的执行流程。函数是C语言的一个重要概念,它用于封装独立的功能模块,提高代码的可读性和重用性。数组是一组具有相同数据类型的元素的集合,指针则提供了直接访问内存地址的能力,结构体则用于组合多个不同类型的数据。 通过乐鑫科技的C语言笔试,考察者将能够了解到考生对C语言的掌握程度和编程能力。C语言是一门重要的编程语言,在物联网行业尤为重要,因此掌握C语言的基本知识和技能对于乐鑫科技的求职者来说是非常有帮助的。希望通过这场笔试,考生们能够展示出自己的才华和能力,为进一步的面试和招聘机会铺平道路。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值