1、硬件笔试题模拟电路1、基尔霍夫定理的内容是什么?基尔霍夫定律包括电流定律和电压定律电流定律:在集总电路中,任何时刻,对任一节点,所有流出节点的支路电流的代数和恒等于零。电压定律:在集总电路中,任何时刻,沿任一回路,所有支路电压的代数和恒等于零。2、描述反馈电路的概念,列举他们的应用。反馈,就是在电子系统中,把输出回路中的电量输入到输入回路中去。反馈的类型有:电压串联负反馈、电流串联负反馈、电压并联负反馈、电流并联负反馈。负反馈的优点:降低放大器的增益灵敏度,改变输入电阻和输出电阻,改善放大器的线性和非线性失真,有效地扩展放大器的通频带,自动调节作用。电压负反馈的特点:电路的输出电压趋向于维持恒
2、定。电流负反馈的特点:电路的输出电流趋向于维持恒定。3、有源滤波器和无源滤波器的区别无源滤波器:这种电路主要有无源组件R、L和C组成有源滤波器:集成运放和R、C组成,具有不用电感、体积小、重量轻等优点。集成运放的开环电压增益和输入阻抗均很高,输出电阻小,构成有源滤波电路后还具有一定的电压放大和缓冲作用。但集成运放带宽有限,所以目前的有源滤波电路的工作频率难以做得很高。数字电路1、同步电路和异步电路的区别是什么?同步电路:存储电路中所有触发器的时钟输入端都接同一个时钟脉冲源,因而所有触发器的状态的变化都与所加的时钟脉冲信号同步。异步电路:电路没有统一的时钟,有些触发器的时钟输入端与时钟脉冲源相连
3、,这有这些触发器的状态变化与时钟脉冲同步,而其它的触发器的状态变化不与时钟脉冲同步。2、什么是线与逻辑,要实现它,在硬件特性上有什么具体要求?将两个门电路的输出端并联以实现与逻辑的功能成为线与。在硬件上,要用OC门来实现,同时在输出端口加一个上拉电阻。由于不用OC门可能使灌电流过大,而烧坏逻辑门。3、解释setup和hold time violation,画图说明,并说明解决办法。(威盛VIA2003.11.06上海笔试试题)Setup/hold time是测试芯片对输入信号和时钟信号之间的时间要求。建立时间是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。输入信号应提前时钟上升沿(如上
4、升沿有效)T时间到达芯片,这个T就是建立时间-Setup time.如不满足setup time,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器。保持时间是指触发器的时钟信号上升沿到来以后,数据稳定不变的时间。如果hold time不够,数据同样不能被打入触发器。建立时间(Setup Time)和保持时间(Hold time)。建立时间是指在时钟边沿前,数据信号需要保持不变的时间。保持时间是指时钟跳变边沿后数据信号需要保持不变的时间。如果数据信号在时钟沿触发前后持续的时间均超过建立和保持时间,那么超过量就分别被称为建立时间裕量和保持时间裕量。4、什么是竞争与冒
5、险现象?怎样判断?如何消除?(汉王笔试)在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争。产生毛刺叫冒险。如果布尔式中有相反的信号则可能产生竞争和冒险现象。解决方法:一是添加布尔式的消去项,二是在芯片外部加电容。5、名词:SRAM、SSRAM、SDRAMSRAM:静态RAMDRAM:动态RAMSSRAM:Synchronous Static Random Access Memory同步静态随机访问存储器。它的一种类型的SRAM。SSRAM的所有访问都在时钟的上升/下降沿启动。地址、数据输入和其它控制信号均于时钟信号相关。这一点与异步SRAM不同,异步SRAM
6、的访问独立于时钟,数据输入和输出都由地址的变化控制。SDRAM:Synchronous DRAM同步动态随机存储器6、FPGA和ASIC的概念,他们的区别。(未知) 答案:FPGA是可编程ASIC。 ASIC:专用集成电路,它是面向专门用途的电路,专门为一个用户设计和制造的。根据一个用户的特定要求,能以低研制成本,短、交货周期供货的全定制,半定制集成电路。与 门阵列等其它ASIC(Application Specific IC)相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点。7、什么叫做OTP片、掩膜片,两者的区别何在?OTP
7、means one time program,一次性编程MTP means multi time program,多次性编程OTP(One Time Program)是MCU的一种存储器类型MCU按其存储器类型可分为MASK(掩模)ROM、OTP(一次性可编程)ROM、FLASHROM等类型。MASKROM的MCU价格便宜,但程序在出厂时已经固化,适合程序固定不变的应用场合;FALSHROM的MCU程序可以反复擦写,灵活性很强,但价格较高,适合对价格不敏感的应用场合或做开发用途;OTP ROM的MCU价格介于前两者之间,同时又拥有一次性可编程能力,适合既要求一定灵活性,又要求低成本的应用场合,
8、尤其是功能不断翻新、需要迅速量产的电子产品。8、单片机上电后没有运转,首先要检查什么?首先应该确认电源电压是否正常。用电压表测量接地引脚跟电源引脚之间的电压,看是否是电源电压,例如常用的5V。接下来就是检查复位引脚电压是否正常。分别测量按下复位按钮和放开复位按钮的电压值,看是否正确。然后再检查晶振是否起振了,一般用示波器来看晶振引脚的波形,注意应该使用示波器探头的“X10”档。另一个办法是测量复位状态下的IO口电平,按住复位键不放,然后测量IO口(没接外部上拉的P0口除外)的电压,看是否是高电平,如果不是高电平,则多半是因为晶振没有起振。另外还要注意的地方是,如果使用片内ROM的话(大部分情况
9、下如此,现在已经很少有用外部扩ROM的了),一定要将EA引脚拉高,否则会出现程序乱跑的情况。有时用仿真器可以,而烧入片子不行,往往是因为EA引脚没拉高的缘故(当然,晶振没起振也是原因只一)。经过上面几点的检查,一般即可排除故障了。如果系统不稳定的话,有时是因为电源滤波不好导致的。在单片机的电源引脚跟地引脚之间接上一个0.1uF的电容会有所改善。如果电源没有滤波电容的话,则需要再接一个更大滤波电容,例如220uF的。遇到系统不稳定时,就可以并上电容试试(越靠近芯片越好)。数字电路1、同步电路和异步电路的区别是什么?(仕兰微电子)2、什么是同步逻辑和异步逻辑?(汉王笔试)同步逻辑是时钟之间有固定的
10、因果关系。异步逻辑是各时钟之间没有固定的因果关系。电路设计可分类为同步电路和异步电路设计。同步电路利用时钟脉冲使其子系统同步运作,而异步电路不使用时钟脉冲做同步,其子系统是使用特殊的“开始”和“完成”信号使之同步。由于异步电路具有下列优点-无时钟歪斜问题、低电源消耗、平均效能而非最差效能、模块性、可组合和可复用性-因此近年来对异步电路研究增加快速,论文发表数以倍增,而Intel Pentium 4处理器设计,也开始采用异步电路设计。异步电路主要是组合逻辑电路,用于产生地址译码器、或的读写控制信号脉冲,其逻辑输出与任何时钟信号都没有关系,译码输出产生的毛刺通常是可以监控的。同步电路是由时序电路(
11、寄存器和各种触发器)和组合逻辑电路构成的电路,其所有操作都是在严格的时钟控制下完成的。这些时序电路共享同一个时钟,而所有的状态变化都是在时钟的上升沿(或下降沿)完成的。3、什么是线与逻辑,要实现它,在硬件特性上有什么具体要求?(汉王笔试)线与逻辑是两个输出信号相连可以实现与的功能。在硬件上,要用oc门来实现(漏极或者集电极开路),由于不用oc门可能使灌电流过大,而烧坏逻辑门,同时在输出端口应加一个上拉电阻。(线或则是下拉电阻)4、什么是Setup 和Holdup时间?(汉王笔试)5、setup和holdup时间,区别.(南山之桥)6、解释setup time和hold time的定义和在时钟信
12、号延迟时的变化。(未知)7、解释setup和hold time violation,画图说明,并说明解决办法。(威盛VIA 2003.11.06 上海笔试试题)Setup/hold time 是测试芯片对输入信号和时钟信号之间的时间要求。建立时间是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。输入信号应提前时钟上升沿(如上升沿有效)T时间到达芯片,这个T就是建立时间-Setup time.如不满足setup time,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器。保持时间是指触发器的时钟信号上升沿到来以后,数据稳定不变的时间。如果hold time不
13、够,数据同样不能被打入触发器。建立时间(Setup Time)和保持时间(Hold time)。建立时间是指在时钟边沿前,数据信号需要保持不变的时间。保持时间是指时钟跳变边沿后数据信号需要保持不变的时间。如果不满足建立和保持时间的话,那么DFF将不能正确地采样到数据,将会出现metastability的情况。如果数据信号在时钟沿触发前后持续的时间均超过建立和保持时间,那么超过量就分别被称为建立时间裕量和保持时间裕量。8、说说对数字逻辑中的竞争和冒险的理解,并举例说明竞争和冒险怎样消除。(仕兰微电子)9、什么是竞争与冒险现象?怎样判断?如何消除?(汉王笔试)在组合逻辑中,由于门的输入信号通路中经
14、过了不同的延时,导致到达该门的时间不一致叫竞争。产生毛刺叫冒险。如果布尔式中有相反的信号则可能产生竞争和冒险现象。解决方法:一是添加布尔式的消去项,二是在芯片外部加电容。10、你知道那些常用逻辑电平?TTL与COMS电平可以直接互连吗?(汉王笔试)常用逻辑电平:12V,5V,3.3V;TTL和CMOS不可以直接互连,由于TTL是在0.3-3.6V之间,而CMOS则是有在12V的有在5V的。CMOS输出接到TTL是可以直接互连。TTL接到CMOS需要在输出端口加一上拉电阻接到5V或者12V。cmos的高低电平分别为:Vih=0.7VDD,Vil=0.9VDD,Vol=2.0v,Vil=2.4v,
15、Vol=0.4v.用cmos可直接驱动ttl;加上拉后,ttl可驱动cmos. 11、如何解决亚稳态。(飞利浦大唐笔试)亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。解决方法:1 降低系统时钟2 用反应更快的FF3 引入同步机制,防止亚稳态传播4 改善时钟质量,用边沿变化快速的时钟信号关键是器件使用比较好的工艺和时钟周期的裕量要大。12、IC设计中同步复
16、位与异步复位的区别。(南山之桥)同步复位在时钟沿采复位信号,完成复位动作。异步复位不管时钟,只要复位信号满足条件,就完成复位动作。 异步复位对复位信号要求比较高,不能有毛刺,如果其与时钟关系不确定,也可能出现亚稳态。13、MOORE 与 MEELEY状态机的特征。(南山之桥) Moo re 状态机的输出仅与当前状态值有关, 且只在时钟边沿到来时才会有状态变化. Mealy 状态机的输出不仅与当前状态值有关, 而且与当前输入值有关, 这14、多时域设计中,如何处理信号跨时域。(南山之桥)不同的时钟域之间信号通信时需要进行同步处理,这样可以防止新时钟域中第一级触发器的亚稳态信号对下级逻辑造成影响,
17、其中对于单个控制信号可以用两级同步器,如电平、边沿检测和脉冲,对多位信号可以用FIFO,双口RAM,握手信号等。跨时域的信号要经过同步器同步,防止亚稳态传播。例如:时钟域1中的一个信号,要送到时钟域2,那么在这个信号送到时钟域2之前,要先经过时钟域2的同步器同步后,才能进入时钟域2。这个同步器就是两级d触发器,其时钟为时钟域2的时钟。这样做是怕时钟域1中的这个信号,可能不满足时钟域2中触发器的建立保持时间,而产生亚稳态,因为它们之间没有必然关系,是异步的。这样做只能防止亚稳态传播,但不能保证采进来的数据的正确性。所以通常只同步很少位数的信号。比如控制信号,或地址。当同步的是地址时,一般该地址应
18、采用格雷码,因为格雷码每次只变一位,相当于每次只有一个同步器在起作用,这样可以降低出错概率,象异步FIFO的设计中,比较读写地址的大小时,就是用这种方法。 如果两个时钟域之间传送大量的数据,可以用异步FIFO来解决问题。15、给了reg的setup,hold时间,求中间组合逻辑的delay范围。(飞利浦大唐笔试)Delay T+T2max,T3holdT1min+T2min17、给出某个一般时序电路的图,有Tsetup,Tdelay,Tck-q,还有 clock的delay,写出决定最大时钟的因素,同时给出表达式。(威盛VIA 2003.11.06 上海笔试试题)T+TclkdealyTset
19、up+Tco+Tdelay;TholdTclkdelay+Tco+Tdelay;18、说说静态、动态时序模拟的优缺点。(威盛VIA 2003.11.06 上海笔试试题)静态时序分析是采用穷尽分析方法来提取出整个电路存在的所有时序路径,计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足时序要求,通过对最大路径延时和最小路径延时的分析,找出违背时序约束的错误。它不需要输入向量就能穷尽所有的路径,且运行速度很快、占用内存较少,不仅可以对芯片设计进行全面的时序功能检查,而且还可利用时序分析的结果来优化设计,因此静态时序分析已经越来越多地被用到数字集成电路设计的验证中。动态时序模拟就是通常
20、的仿真,因为不可能产生完备的测试向量,覆盖门级网表中的每一条路径。因此在动态时序分析中,无法暴露一些路径上可能存在的时序问题;19、一个四级的Mux,其中第二级信号为关键信号 如何改善timing。(威盛VIA2003.11.06 上海笔试试题)关键:将第二级信号放到最后输出一级输出,同时注意修改片选信号,保证其优先级未被修改。20、给出一个门级的图,又给了各个门的传输延时,问关键路径是什么,还问给出输入,使得输出依赖于关键路径。(未知)21、逻辑方面数字电路的卡诺图化简,时序(同步异步差异),触发器有几种(区别,优点),全加器等等。(未知)22、卡诺图写出逻辑表达使。(威盛VIA 2003.
21、11.06 上海笔试试题)23、化简F(A,B,C,D)= m(1,3,4,5,10,11,12,13,14,15)的和。(威盛)卡诺图化简:一般是四输入,记住00 01 11 10顺序,0 1 3 24 5 7 612 13 15 148 9 11 1024、please show the CMOS inverter schmatic,layout and its cross sectionwith P-well process.Plot its transfer curve (Vout-Vin) And also explain theoperation region of PMOS an
22、d NMOS for each segment of the transfer curve? (威盛笔试题circuit design-beijing-03.11.09)25、To design a CMOS invertor with balance rise and fall time,please define the ration of channel width of PMOS and NMOS and explain?26、为什么一个标准的倒相器中P管的宽长比要比N管的宽长比大?(仕兰微电子)和载流子有关,P管是空穴导电,N管电子导电,电子的迁移率大于空穴,同样的电场下,N管的电流
23、大于P管,因此要增大P管的宽长比,使之对称,这样才能使得两者上升时间下降时间相等、高低电平的噪声容限一样、充电放电的时间相等27、用mos管搭出一个二输入与非门。(扬智电子笔试)28、please draw the transistor level schematic of a cmos 2 input AND gate and explain which input has faster response for output rising edge.(less delay time)。(威盛笔试题circuit design-beijing-03.11.09)29、画出NOT,NAND,N
24、OR的符号,真值表,还有transistor level的电路。(Infineon笔试) 30、画出CMOS的图,画出tow-to-one mux gate。(威盛VIA 2003.11.06 上海笔试试题)31、用一个二选一mux和一个inv实现异或。(飞利浦大唐笔试)input a,b;output c;assign c=a?(b):(b);32、画出Y=A*B+C的cmos电路图。(科广试题)33、用逻辑们和cmos电路实现ab+cd。(飞利浦大唐笔试)34、画出CMOS电路的晶体管级电路图,实现Y=A*B+C(D+E)。(仕兰微电子)以上均为画COMS电路图,实现一给定的逻辑表达式,。
25、35、利用4选1实现F(x,y,z)=xz+yz。(未知) x,y作为4选1的数据选择输入,四个数据输入端分别是z或者z的反相,0,136、给一个表达式f=xxxx+xxxx+xxxxx+xxxx用最少数量的与非门实现(实际上就是化 化成最小项之和的形式后根据(A*B)*((C*D))=AB+CD37、给出一个简单的由多个NOT,NAND,NOR组成的原理图,根据输入波形画出各点波形。(Infineon笔试) 思路:得出逻辑表达式,然后根据输入计算输出38、为了实现逻辑(A XOR B)OR (C AND D),请选用以下逻辑中的一种,并说明为什么?1)INV 2)AND 3)OR 4)NAN
26、D 5)NOR 6)XOR 答案:NAND(未知)39、用与非门等设计全加法器。(华为)40、给出两个门电路让你分析异同。(华为)41、用简单电路实现,当A为输入时,输出B波形为(仕兰微电子) 写逻辑表达式,然后化简42、A,B,C,D,E进行投票,多数服从少数,输出是F(也就是如果A,B,C,D,E中1的个数比0多,那么F输出为1,否则F为0),用与非门实现,输入数目没有限制。(未知) 写逻辑表达式,然后化简43、用波形表示D触发器的功能。(扬智电子笔试) easy44、用传输门和倒向器搭一个边沿触发器。(扬智电子笔试)45、用逻辑们画出D触发器。(威盛VIA 2003.11.06 上海笔试
27、试题)46、画出DFF的结构图,用verilog实现之。(威盛)47、画出一种CMOS的D锁存器的电路图和版图。(未知)48、D触发器和D锁存器的区别。(新太硬件面试)49、简述latch和filp-flop的异同。(未知)50、LATCH和DFF的概念和区别。(未知)51、latch与register的区别,为什么现在多用register.行为级描述中latch如何产生的。(南山之桥)latch是电平触发,register是边沿触发,register在同一时钟边沿触发下动作,符合同步电路的设计思想,而latch则属于异步电路设计,往往会导致时序分析困难,不适当的应用latch则会大量浪费芯片
28、资源。52、用D触发器做个二分频的电路.又问什么是状态图。(华为)53、请画出用D触发器实现2倍分频的逻辑电路?(汉王笔试)54、怎样用D触发器、与或非门组成二分频电路?(东信笔试)直接D触发器Q反相输出接到数据输入55、How many flip-flop circuits are needed to divide by 16? (Intel) 16分频?456、用filp-flop和logic-gate设计一个1位加法器,输入carryin和current-stage,输出carryout和next-stage. 57、用D触发器做个4进制的计数。(华为)58、实现N位Johnson Co
29、unter,N=5。(南山之桥)59、用你熟悉的设计方式设计一个可预置初值的7进制循环计数器,15进制的呢?(仕兰微电子)60、数字电路设计当然必问Verilog/VHDL,如设计计数器。(未知)61、BLOCKING NONBLOCKING 赋值的区别。(南山之桥)非阻塞赋值:块内的赋值语句同时赋值,一般用在时序电路描述中阻塞赋值:完成该赋值语句后才能做下一句的操作,一般用在组合逻辑描述中62、写异步D触发器的verilog module。(扬智电子笔试)module dff8(clk , reset, d, q);input clk;input reset;input 7:0 d;outp
30、ut 7:0 q;reg 7:0 q;always (posedge clk or posedge reset) if(reset) q = 0; else q = d;endmodule63、用D触发器实现2倍分频的Verilog描述? (汉王笔试)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 = 0; else out = in; assign in
31、= out; assign clk_o = out; endmodule64、可编程逻辑器件在现代电子设计中越来越重要,请问:a) 你所知道的可编程逻辑器件有哪些? b) 试用VHDL或VERILOG、ABLE描述8位D触发器逻辑。(汉王笔试)PAL,GAL,PLD,CPLD,FPGA。module dff8(clk , reset, d, q);input clk;input reset;input7:0 d;output7:0 q;reg7:0 q;always (posedge clk or posedge reset)/异步复位,高电平有效 if(reset) q = 0; else
32、q = d;endmodule65、请用HDL描述四位的全加法器、5分频电路。(仕兰微电子)66、用VERILOG或VHDL写一段代码,实现10进制计数器。(未知)67、用VERILOG或VHDL写一段代码,实现消除一个glitch。(未知)68、一个状态机的题目用verilog实现(不过这个状态机画的实在比较差,很容易误解的)。(威盛VIA 2003.11.06 上海笔试试题)69、描述一个交通信号灯的设计。(仕兰微电子)70、画状态机,接受1,2,5分钱的卖报机,每份报纸5分钱。(扬智电子笔试)71、设计一个自动售货机系统,卖soda水的,只能投进三种硬币,要正确的找回钱数。 (1)画出f
33、sm(有限状态机);(2)用verilog编程,语法要符合fpga设计的要求。(未知)72、设计一个自动饮料售卖机,饮料10分钱,硬币有5分和10分两种,并考虑找零:(1)画出fsm(有限状态机);(2)用verilog编程,语法要符合fpga设计的要求;(3)设计工程中可使用的工具及设计大致过程。(未知)73、画出可以检测10010串的状态图,并verilog实现之。(威盛)74、用FSM实现101101的序列检测模块。(南山之桥)a为输入端,b为输出端,如果a连续输入为1101则b输出为1,否则为0。例如a: 0001100110110100100110 b: 00000000001001
34、00000000 请画出state machine;请用RTL描述其state machine。(未知)75、用verilog/vddl检测stream中的特定字符串(分状态用状态机写)。(飞利浦大唐笔试)76、用verilog/vhdl写一个fifo控制器(包括空,满,半满信号)。(飞利浦大唐笔试)regN-1:0 memory0:M1; 定义FIFO为N位字长容量M八个always模块实现,两个用于读写FIFO,两个用于产生头地址head和尾地址tail,一个产生counter计数,剩下三个根据counter的值产生空,满,半满信号产生空,满,半满信号77、现有一用户需要一种集成电路产品,
35、要求该产品能够实现如下功能:y=lnx,其中,x为4位二进制整数输入信号。y为二进制小数输出,要求保留两位小数。电源电压为35v假设公司接到该项目后,交由你来负责该产品的设计,试讨论该产品的设计全程。(仕兰微电子)78、sram,flash memory,及dram的区别?(新太硬件面试)sram:静态随机存储器,存取速度快,但容量小,掉电后数据会丢失,不像DRAM 需要不停的REFRESH,制造成本较高,通常用来作为快取(CACHE) 记忆体使用flash:闪存,存取速度慢,容量大,掉电后数据不会丢失dram:动态随机存储器,必须不断的重新的加强(REFRESHED) 电位差量,否则电位差将
36、降低至无法有足够的能量表现每一个记忆单位处于何种状态。价格比sram便宜,但访问速度较慢,耗电量较大,常用作计算机的内存使用。79、给出单管DRAM的原理图(西电版数字电子技术基础作者杨颂华、冯毛官205页图914b),问你有什么办法提高refresh time,总共有5个问题,记不起来了。(降低温度,增大电容存储容量)(Infineon笔试)80、Please draw schematic of a common SRAM cell with 6 transistors,point out which nodes can store data and which node is word l
37、ine control? (威盛笔试题circuit design-beijing-03.11.09)81、名词:sram,ssram,sdram名词IRQ,BIOS,USB,VHDL,SDRIRQ: Interrupt ReQuestBIOS: Basic Input Output SystemUSB: Universal Serial BusVHDL: VHIC Hardware Description LanguageSDR: Single Data Rate压控振荡器的英文缩写(VCO)。动态随机存储器的英文缩写(DRAM)。名词解释,比如PCI、ECC、DDR、interrupt、pipeline、IRQ,BIOS,USB,VHDL,VLSI VCO(压控振荡器) RAM (动态随机存储器),FIR IIR DFT(离散傅立叶变换)或者是中文的,比如:a.量化误差 b.直方图 c.白平衡 PCI:Peripheral Component Interconnect(PCI),DDR:DoubleDataRateECC:Error Checking and Correcting