当前位置:文档之家› 模拟电路设计 基础知识(笔试时候容易遇到的题目)

模拟电路设计 基础知识(笔试时候容易遇到的题目)

模拟电路设计基础知识(笔试时候容易遇到的题目)1、最基本的如三极管曲线特性(太低极了点)2、基本放大电路,种类,优缺点,特别是广泛采用差分结构的原因3、反馈之类,如:负反馈的优点(带宽变大)4、频率响应,如:怎么才算是稳定的,如何改变频响曲线的几个方法5、锁相环电路组成,振荡器(比如用D触发器如何搭)6、A/D电路组成,工作原理如果公司做高频电子的,可能还要RF知识,调频,鉴频鉴相之类,不一一列举太底层的MOS管物理特性感觉一般不大会作为笔试面试题,因为全是微电子物理,公式推导太罗索,除非面试出题的是个老学究 ic设计的话需要熟悉的软件adence, Synopsys, Advant,UNIX当然也要大概会操作实际工作所需要的一些技术知识(面试容易问到)如电路的低功耗,稳定,高速如何做到,调运放,布版图注意的地方等等,一般会针对简历上你所写做过的东西具体问,肯定会问得很细(所以别把什么都写上,精通之类的词也别用太多了),这个东西各个人就不一样了,不好说什么了。

2、数字电路设计当然必问Verilog/VHDL,如设计计数器逻辑方面数字电路的卡诺图化简,时序(同步异步差异),触发器有几种(区别,优点),全加器等等比如:设计一个自动售货机系统,卖soda水的,只能投进三种硬币,要正确的找回钱数1、画出fsm(有限状态机)2、用verilog编程,语法要符合fpga设计的要求系统方面:如果简历上还说做过cpu之类,就会问到诸如cpu如何工作,流水线之类的问题3、单片机、DSP、FPGA、嵌入式方面(从没碰过,就大概知道几个名字胡扯几句,欢迎拍砖,也欢迎牛人帮忙补充)如单片机中断几个/类型,编中断程序注意什么问题 DSP的结构(冯、诺伊曼结构吗?)嵌入式处理器类型(如ARM),操作系统种类(Vxworks,ucos,winCE,linux),操作系统方面偏CS方向了,在CS篇里面讲了4、信号系统基础拉氏变换与Z变换公式等类似东西,随便翻翻书把如、h(n)=-a*h(n-1)+b*δ(n)a、求h(n)的z变换b、问该系统是否为稳定系统c、写出F IR数字滤波器的差分方程以往各种笔试题举例利用4选1实现F(x,y,z)=xz+yz 用mos管搭出一个二输入与非门。

用传输门和倒向器搭一个边沿触发器用运算放大器组成一个10倍的放大器微波电路的匹配电阻。

名词解释,无聊的外文缩写罢了,比如PCI、ECC、DDR、interrupt、pipeline IRQ,BIOS,USB,VHDL,VLSI VCO(压控振荡器)RAM (动态随机存储器),FIR IIR DFT(离散傅立叶变换)或者是中文的,比如 a量化误差 b、直方图 c、白平衡共同的注意点1、一般情况下,面试官主要根据你的简历提问,所以一定要对自己负责,把简历上的东西搞明白;2、个别招聘针对性特别强,就招目前他们确的方向的人,这种情况下,就要投其所好,尽量介绍其所关心的东西。

3、其实技术面试并不难,但是由于很多东西都忘掉了,才觉得有些难。

所以最好在面试前把该看的书看看。

4、虽然说技术面试是实力的较量与体现,但是不可否认,由于不用面试官/公司所专领域及爱好不同,也有面试也有很大的偶然性,需要冷静对待。

不能因为被拒,就否认自己或责骂公司。

5、面试时要take it easy,对越是自己钟情的公司越要这样。

1.集成电路设计前端流程及工具。

2。

FPGA和ASIC的概念,他们的区别3。

LATCH和DFF的概念和区别4。

用DFF实现二分频。

5。

用VERILOG或VHDL写一段代码,实现消除一个glitch6。

给一个表达式f=xxxx+xxxx+xxxxx+xxxx用最少数量的与非门实现(实际上就是化简)7。

用VERILOG或VHDL写一段代码,实现10进制计数器。

8。

给出一个门级的图,又给了各个门的传输延时,问关键路径是什么,还问给出输入,使得输出依赖于关键路径。

9。

A,B,C,D,E进行投票,多数服从少数,输出是F(也就是如果A,B,C,D,E中1的个数比0多,那么F输出为1,否则F为0),用与非门实现,输入数目没有限1、可参考各EDA厂商的开发工具2、 FPGA与ASIC的可参阅各种EDA相关书籍。

3、 LATC是H锁存器,DFF是触发器,其电路形式完全不同。

4、 always @(posedge clk)if (reset)begin sel <=1; clk1 <=1; clk2 <=1; end else begin sel <= ~sel; if (sel)clk1 <= ~clk1; else clk2 <= ~clk2; end5、 glitch主要发生在组合逻辑电路输出,可以加DFF输出稳定信号6,7,8,9:。

制。

2.负数与正数相乘的问题3.1010(-6)*0010(2)用补码相乘时应该进行相应的符号扩展,比如上面是4bit相乘,结果应该为8bit。

这样符号扩展后分别为和,然后再用这两个数直接相乘,结果为,取其低8位,作为-6*2的结果。

这也是个补码形式,再判断一下高位恢复为原码,得到结果。

以前讨论过相关问题,可以翻出来看看检测信号的上升沿LIBRARY ieee; USE ieee、std_logic_1164、all; ENTITY sync IS PORT(clk: IN STD_LOGIC; rst: IN STD_LOGIC; sync_in: IN STD_LOGIC; sync_out: OUTSTD_LOGIC); END sync; ARCHITECTURE arch OF sync IS SIGNAL sync_int1, sync_int2: STD_LOGIC; BEGIN------------------------------------------------------- PROCESS(clk, rst, sync_in)BEGIN IF rst=0 THEN sync_out<=0; ELSIFrising_edge(clk)THEN sync_int1<=sync_in; sync_int2<=sync_int1; IF (sync_int1=1 AND sync_int2=0)THEN sync_out<=1; ELSE sync_out<=0; END IF; END IF; END PROCESS; END arch; 并入串出? library IEEE; use IEEE、STD_LOGIC_1164、ALL; use IEEE、STD_LOGIC_ARITH、ALL; use IEEE、STD_LOGIC_UNSIGNED、ALL; entity piso is port( datain :instd_logic_vector(39 downto 0); clk : in std_logic; nLoad:in std_logic; data_out: out std_logic); end piso; architecture Behavioral of piso is signal q:std_logic_vector(39 downto 0); begin process (nLoad,clk)begin if nLoad= 0 then q<=datain; elsif clkevent and clk=1 then q(1)<=q(0); for i in1 to39 loop q(i)<=q(i-1); end loop; end if; end process; process (nLoad,clk) begin if nLoad=0 then data_out<=0; elsif clkevent and clk=1 then data_out <=q(39); end if; end process; end Behavioral; 把所有的39改成15就可以了有一些基本概念我可能还不太清楚,说错的地方,请大家批评指教。

我要设计的是is-95cdma系统的48阶fir滤波器。

输入串行数据(每个clk输入1位)输入数据宽度为1位,系数h[0]=-0、(进制)=_(16位二进制,_为小数点位置,_前面是符号扩展),-h[0]=+0、(进制)_(16位二进制)。

其他系数略。

我用的是映射的方法,即不用乘法,只对应由查找表查出的结果,输入1时,映射为+1,查表输出h[0],输入0时,映射为-1,查表输出-h[0]。

再送入加法器求48个系数的和。

系数宽度16位,输出宽度22位(防溢出)datain=1 ,dataout=16116a(六进制)=(22位二进制)这是48个正系数的和(这里的正系数不一定全是正数,而只是标准,所以把它看作“正数”) datain=0 ,dataout=19ee96(六进制)=(22位二进制)这是48个负系数的和。

这个结果我对照进制的数运算结果验证了一下,是对的,但是只能取22位的后16位来计算,因为高位的都是加法的进位溢出。

我主要由两个问题:1)这种映射法,恕我愚钝,根本没明白(我也是看的论文,但没有明白其真正含义),因为它和普通的比如m位输入和n位的系数相乘得到m+n位的结果,思路完全不一样。

这个1,0映射为+1,-1,和普通的输入(m位二进制数代表一个x(n))有何关系?我的到16116a,19ee96这些结果还要累加吗?(此问题可能比较愚蠢,欢迎扔鸡蛋)2)我运算的是有符号数,那溢出的这些多出的位怎么处理?因为下一步这些数据还要送到下一个模块处理。

保留的话,多出的哪些位显然没用。

扔掉的话,行吗?学了FOR LOOP的用法以后,有点想法那么在此基础上怎么实现并口的输出呢? 如: Q(0)<=DIN; FOR I IN1 DOWNTO7 LOOPQ(I)<=Q(I-1); END LOOP; OP<=Q; OP 定义为STD_LOGIC_vector(7 downto 0)我总感觉每次触发输出的都是在Q(7)口,而且该值就是DIN在8个周期前的值那么要是想实现DIN8个连续数据的同时输出,应该怎么做? 感觉每次触发输出的都是在Q(7)口这句话不是很明白。

反正这样的转换很快的,只要有触发,马上可以完成分析如下: q(0)->q(1),然后q(1)->q(2),然后q(2)->q(3)、、、、、、、、q(6)->q(7)实际上只是延迟了几个周期,也就是q(7)<=din, 并没有实现串行向并行的转换不大理解用这个for loop语句如何实现串并转换的望告知把 Q(0)<=DIN; FOR I IN1 DOWNTO7 LOOPQ(I)<=Q(I-1); END LOOP; 放在进程里面就可以。

相关主题