面试时间:2017年8月17日
面试时长:约1小时
面试形式:面对面
面试公司:杭州某初创公司,致力于开发VR相关产品
面试职位:FPGA工程师(实习)
面试官:公司现任FPGA开发工程师,双控硕士毕业后约3年工作经验,有某研究所数字IC前端经验
面试问题:
*从学校来公司大约多长时间?
我骑单车过来的,大约十分钟,很近的
*简短自我介绍?
我叫***,正在**大学**系读研一,九月份马上升研二
*研一学过哪几门课,系统辨识与滤波的大作业做的是什么内容?
研一一年大约学过八门课,分别是线性系统理论、系统辨识与滤波、过程控制、计算机网络、CPS、过程控制、ICS安全等。系统辨识与滤波是在安全攻防博弈的背景下,去辨识本科自控实验中常见的水箱加热器环节;
*辨识的参数有哪些?
首先有被控对象的参数和一个PID环的控制参数
*被控对象的参数有哪些?
被控对象的复杂与否,全看辨识人员预设的模型是几阶的,我预设的是一阶惯性环节因此被控对象参数比较少
*辨识算法用的是什么?
用的是经典的最小二乘法
闲聊结束,开始正经面试
*用过FPGA吗?经验多少?
在实验室依托老板的项目用过FPGA器件,型号是EP4CE115,逻辑资源115K,真正上手接触FPGA的时间大概是3个月,严格来说现在是always块搬运工。
*谈谈你所做的项目?
之前实验室一直在从事工业以太网协议栈的开发,有很强的技术积累,这次我做的是给这个协议栈多加一个协议/服务,代码量2k行,使用的IP核2 port ram
*你这个协议是工作在OSI哪层的?
整个工业以太网协议栈和OSI七层模型不是严格的一一对应关系,如果非要对应的话,我的实现的协议应该属于MAC层之上的
*我对计算机网络的知识不熟悉,简单说一说你的CRC校验是怎么做的,你可以用白板讲解?
收发报文两个部分都需要CRC模块,因此在recv和send层下面都需要加CRC子层(自顶向下),对于send而言,每一条报文也都需要加CRC,因此我把CRC做成了一个task。另外,CRC算法啊主要涉及的是位与位之间的异或运算,因此算法的主体都是a[]^a[]……
*你只用到了一个RAM IP核?以后的如果需要的RAM空间不大,可以自己手写一个,不用非要占用片内RAM的宝贵资源
嗯,好的,我回去尝试一下自己手写
*我如果没猜错的话,你的硬件上应该是一个RJ45网口后面加一个PHY芯片是吧,说说PHY芯片和FPGA之间有哪些信号线?
我配置的PHY芯片工作在RGMII模式,比较重要的信号线主要是MDC和MDIO的地址线和数据线
*好,我正要问你RGMII的工作模式有什么特点?
首先PHY芯片的工作模式有多种。。。有对光口的有对电口的(开始胡扯了,其实PHY初始化的工作是由实验室同学完成的,我也没认真读过芯片手册)
*是否进行过时序分析乃至于时序约束的经验?
在真正做项目的时候没有进行严谨的时序分析,综合的时候会出现warning,但是没有error,板级调试的功能实现没有问题,就没有管这块。
*这块内容你要必须仔细实践掌握啊
是的
*对FIFO有什么理解?
数据结构里面学过这一类数组组织形式,模块的输入输出信号比ram多了几个判断或指示标志吧,比如FIFO空不空,满不满等,设计逻辑时要考虑这些因素,以及可能触发异常导致不满足约束的情况
*对常见的外围接口协议了解多少?
调试中接触过SPI
*那你在白板上画出来SPI的时序图
我画了片选、时钟、信号和四种工作模式,做了简单讲解
(调试时间有点长,大概一年时间了,有点生疏了)
*对于其他的接口电路uart、IIC是否熟悉?
只在课上学过他们的时序,没有动手调试过。但是我认为常见接口电路都是一通百通的,可以在使用的时候翻手册去现学
*这样是不行的,有一些接口还是比较复杂的,不信你看PCIe和serdes不拉不拉。。。另外建议你经常游览一下xilinx的官网,里面的文档、论坛和代码质量都很高
(心想,这两个我都会了,那要多牛逼)
*FPGA IO口的电平有哪几种?
我记得pin planner里面大概有五种吧,3.3、1.5、2.5 、LVDS等等
*你对计算机编程语言掌握如何?C/C++熟练吗?你必须在FPGA和软工中选一种啊,坚持一个领域深入钻研下去,过几年你就会看到收获的,至少对于普通人而言,很难把知识掌握的面面俱到
我装作深思熟虑了一分钟,说我就是要选FPGA这个坑
你还有什么想问我的吗?
终于开始问答反转了,以下轮我提问了
*公司对实习生的培养原则是什么?
公司总之希望实习生在公司学到他们感兴趣的内容,如果实习生对工作内容或者业务不感兴趣,那么双方很难达到双赢
*公司对开发是否有工期要求?
首先公司是一个创业公司,到现在还没有一个完整的产品产出,近期是希望拼凑出一个demo来,所以会赶一些。但是也不是一天一天那么赶,只是需要开发把进度安排的紧凑高效一点,我也不能保证一天两天就能开发出来一个复杂的功能。对实习生而言,有适当的工期约束和压力我认为会促进你的学习和成长
*公司通常对实习生的待遇情况?
这个你要和老板谈