当前位置:简历谷 >

面试 >面试笔试 >

NVIDIA公司ASIC Intern的笔试

NVIDIA公司ASIC Intern的笔试

昨天去参加nVIDIA公司ASIC Intern的笔试,hr没有告诉我具体地点,一开始走错了地方,去了春晓路122弄34号4号楼,问了下才知道那里是nVIDIA的Physical Design部门,让我去金科路2966号,结果又走了半个多小时才找到,幸好我去的早,要不肯定迟到了,哎,我受伤未愈的脚啊。。。

NVIDIA公司ASIC Intern的笔试

下午3点准时开始,题量不大,一共6道,也不是很难,第一题是时序问题,第二题写Verilog代码实现同步复位和异步复位的触发器,后面详细说它,第三题画状态图,第四题估算计算结果所需的最小位宽,第五题给条件求FIFO所需的最小长度,第六题是4个人过桥问题,所需最短的时间,很常见了,可我还是想了好一会。

现在还让我很郁闷的事情是,居然第二题做错了,越想越郁闷,这个错误将让我错失这次我很看重的机会,伤心死了。。。

我居然将同步复位的Flip-flop写成异步复位的Flip-flop,然后你可想而知,写异步复位的Flip-flop时我就不知道怎么写了,写成

assign = (!Reset)? 0: data_input;

我当时也很纳闷,但我的确不知道应该怎么写,我的理解中同步电路是时钟沿触发,异步电路是电平触发,而平时设计中都直接用异步复位的Flip-flop,还以为那就是同步复位的Flip-flop(当然这些都是我今天查阅一本书后才知道自己错在哪里的)。决定在这里完整的写一下这两个模块,利己利人。

// synchronous reset flip-flop

module syn_flipflop(clk, Reset, data_input, data_output);

input clk, Reset, data_input;

output reg data_output;

always @(posedge clk)

begin

if(!Reset)

data_output <= 0;

else

data_output <= data_input;

end

endmodule

//asynchronous reset flip-flop

module asyn_flipflop(clk, Reset, data_input, data_output);

input clk, Reset, data_input;

output reg data_output;

always @(posedge clk or negedge Reset)

begin

if(!Reset)

data_output <= 0;

else

data_output <= data_input;

end

endmodule

标签: NVIDIA ASIC Intern 笔试
  • 文章版权属于文章作者所有,转载请注明 https://jianligu.com/ms/bishi/4772e.html
专题