欢迎大家通过博客浏览我的历史文章,博客园包含了目前为止所有的文章,浏览效果更佳,并且有评论留言功能,有任何问题都可以给我留言,微信后台留言可能回复得不及时。 博客地址为:https://www.cnblogs.com/icparadigm/
vaild连续拉高,同时有16bit数据进来,vaild连续拉高的周期数为3-255,然后模块要把这些数据求和,但是要把最大值和最小值踢除,最后done和sum一起拉高
module sum_detect (
clk, // Clock
rst_n, // Asynchronous reset active low
data_valid,
data_in,
done,
sum
);
input clk; // Clock
input rst_n; // Asynchronous reset active low
input data_valid;
input [15:0] data_in;
output done;
output [23:0] sum;
reg [15:0] data_max,data_min;
reg [23:0] sum_r;
reg reg1,reg2;
always @(posedge clk or negedge rst_n) begin
if(~rst_n)
data_max <= 16'd0;
else if(data_valid) begin
if(data_max < data_in)
data_max <= data_in;
else
data_max <= data_max;
end
end
always @(posedge clk or negedge rst_n) begin
if(~rst_n)
data_min <= 16'd65535;
else if(data_valid) begin
if(data_min > data_in)
data_min <= data_in;
else
data_min <= data_min;
end
end
always @(posedge clk or negedge rst_n) begin
if(~rst_n)
sum_r <= 24'd0;
else if(data_valid)
sum_r <= sum_r + data_in;
else
sum_r <= sum_r;
end
always @(posedge clk or negedge rst_n) begin
if(~rst_n)
{reg2,reg1} <= 2'b00;
else
{reg2,reg1} <= {reg1,data_valid};
end
assign done = ({reg2,reg1} == 2'b10)?1'b1:1'b0;
assign sum = (done)?(sum_r - data_max -data_min):24'd0;
endmodule
知乎地址 https://zhuanlan.zhihu.com/p/166088109
海思提前批,数字芯片岗位,7.15笔试,之后性格测试,8.1面试,一天两面,面完立即出结果。
7.15笔试,笔试都是选择题,分为单选和不定项,满分100分,60及格,题目不难,我报的数字设计,有几道验证和sv的题目,我不会做,但是算了一下自己会做的,分数肯定超过60分了,20分钟就直接交卷。
笔试通过之后会有性格测试,华为的性格测试还是要稍微注意点的,我同学有性格测试没有通过的。我个人经验就是:
一面时间应该有50分钟左右,基本分为两部分
首先主要是项目,问了有30多分钟。我的项目有全定制的设计,有半定制的后端,还有前端设计的。面试官一开始看了简历又是说我做的后端项目多一些(翻白眼),我就说想做前端设计。然后问题也就围绕项目提问,具体的问题这里不展开讲,因为都是和自己项目具体相关。举几个例子:
但整体看,问题难度都算正常,没有特别刁钻的问题,只要项目是自己实实在在做的,对自己的项目熟悉,这部分问题不大。
最后手撕代码,给我的是一道用状态机的题目,写好共享屏幕给他看。
一面面完就立马知道结果,然后就等HR叫你接着二面,中间可能会等几分钟-几十分钟,取决于是否有合适的空闲的面试官。
我的二面很快。先过了一遍简历,然后出了两道题,一道是低功耗技术,关于操作数隔离。另一道是格雷码和二进制转换的问题。
答完面试官说,哦,好了,拜拜。
剩下一脸懵逼的我。。。
8.14三面,大约30分钟,面试官挺nice,在华为工作二十多年。
首先自我介绍。
然后问了其中一个项目,问具体负责的哪些工作?团队是怎样分工的?综合的环境是怎么搭建的?STA是怎么样做的?后端和综合的时序约束有哪些区别?以及过程中遇到的问题。