硬件工程师考试试题 答案
模拟电路
1. 基尔霍夫定理的内容是什么?
a. 基尔霍夫电流定律:在电路的任一节点,流入、流出该节点电流的代数和为零. 基尔霍
夫电压定律:在电路中的任一闭合电路,电压的代数和为0.
b. 公式: I1+ I2+I3+In=IOUT
2. 设计一个20倍运放,说明高频运放及低频运放区别,在选用运放时注意哪几个参数? a.
b. 低频运算放大器工作频率,相对频带宽度却很宽,自20 Hz 至20KHz, 高低频之比1000 。高频运算放大器工作频率高,几百KHz 万MHz, 相对于其中心频率却较窄。如果高频运算放大器用于低频电路,就会产生很大的高频噪声,所以用时注意。
c. 差模放大倍数大、差模输入电阻大、共模抑制比CMMR
高;输入失调电压及其温漂、输入失调电流及其温漂小,以及噪声小。
3. 画出如下B 点的波开:
B
4. 什么叫差模信号?什么叫共模信号?在设计电路中如何处理差模干扰及共模干扰?设计逻辑门电路及运放大器时,悬空引脚如何处理?
a. 小相等、极性相反的一对信号称为差模信号。差动放大电路输入差模信号(u il =-ui2)
时,称为差模输入。两个大小相等、极性相同的一对信号称为共模信号。差动放大电路输入共模信号(u il =ui2)时,称为共模输入。在差动放大器中,有用信号以差模形式输
入,干扰信号用共模形式输入,那么干扰信号将被抑制的很小。
b. 差模干扰设计正负2条信号线紧靠,2条信号线平行,包地走线;共模干扰设计增加屏
蔽,布线远高电压大电流走线,采用稳定的电源和高品质开关电源(低噪声电源)。 c. 逻辑门电路时,悬空引脚应接高电平;运放大器悬空引脚正极端接运放输出,负端接低电平。
数字电路
5. 用逻辑门画出D 触发器,实现2倍分频的逻辑电路?( verilog HDL实现)
a.
b. module divide2( clk , clk_o, reset);
input clk , reset;
output clk_o;
wire in;
reg out ;
always @ ( posedge clk or posedge reset)
if ( reset)
out
else
out
assign in = ~out;
assign clk_o = out;
endmodule
6. 如何用串行数字接口转换并行数字接口?如何用并行数字接口转换串行数字接口?并
举例说明
7. 你知道那些常用逻辑电平?TTL 与COMS 电平可以直接互连吗?用C 语言描述
RS232通信数据。(协议)
a. 常用的电平标准,低速的有 RS232 、RS485、RS422、TTL 、CMOS 、LVTTL 、L
VCMOS 、ECL 、ECL 、LVPECL 等,高速的有 LVDS 、GTL 、PGTL 、CML 、H STL 、SSTL 等。 一般说来,CMOS 电平比 TT 电平有着更高的噪声容限。如果不考虑速度和性能,一般TTL 与CMOS 器件可以互换。但是需要注意有时候负载效应可能引起电路工作不正常,因为有些 TTL 电路需要下一级的输入阻抗作为负载才能正常工作。
b. int OpenComm(char * commstr,char * boundstr)
{
struct termio t;
char filename[20];
int comid;
#ifndef SCOUNIX_SYS
sprintf(filename, "/dev/tty%s", commstr);
#else
sprintf(filename, "/dev/tty%da", (*commstr) - 'a' + 1);
#endif
comid=(int)(tolower(*commstr)-'a');
if(comid;10)
{
printf("system unable to open %s!\n", filename);
return 0;
}
if((INFO.CommFd[comid] = open(filename, O_RDWR ))
{
printf("system unable to open %s!\n", filename);
return 0;
};
if(ioctl(INFO.CommFd[comid], TCGETA, &t)
{
printf("system unable to open %s!\n", filename);
return 0;
};
if(fcntl(INFO.CommFd[comid],F_SETFL,O_NDELAY)
{
printf("system unable to open %s!\n", filename);
return 0;
};
t.c_cflag = CLOCAL | PARENB | CS7 | CREAD |ChkBound(boundstr);
t.c_iflag = IGNCR |BRKINT | IGNPAR | IXON | IXANY | IXOFF;
t.c_oflag = OPOST ;
t.c_lflag = 0;
t.c_line = 0;
t.c_cc[4] = 1;
if(ioctl(INFO.CommFd[comid], TCSETA, &t)
{
printf("system unable to open %s!\n", filename);
close(INFO.CommFd[comid]);
return 0;
}
printf("system open %s: handle: %d successfully!\n", filename,INFO.CommFd[comid]); return 1;
}