EDA 基础总结修订 LELE was finally revised on the morning of December 16, 2020 EDA基础总结 综述部分 1. EDA 的中文全称为电子设计自动化,英文全名为ElectronicDesignAutomation 2. EDA 平台常用的两种输入电路的方法是:电路原理图输入法、HDL 输入法 3. EDA 平台工作流程:电路输入、综合优化、功能仿真、布局布线、门级仿真 数字电路部分 1. EDA 中常用的仿真语言为 Verilog 和 VHDL 2. VHDL 其英文全名为 VHSICHardwareDescriptionLanguage,而 VHSIC 则是VeryHighSpeedIntergeraterdCircuit 的缩写词,意为甚高速集成电路,故VHDL 其准确的中文译名为甚高速集成电路的硬件描述语言 3. VerilogHDL 其英文全名为 VerilogHardwareDecriptionLanguage,HDL 中文译名为硬件描述语言 4. Verilog 和 VHDL 的比较 共同点:能形式化地抽象表示电路的行为和结构;支持逻辑设计中层次与范围的描述;可借用高级语言的精巧结构来简化电路行为的描述;具有电路仿真与验证机制以保证设计的正确性;支持电路描述由高层到低层的综合转换;硬件描述与实现工艺无关;便于文档管理;易于理解和设计重用。
不同点:Verilog 在系统级抽象方面略差,VHDL 在门级开关电路方面略差 5. 软核、固核和硬核 软核:功能经过验证的、可综合的、实现后电路结构总门数在 5000 门以上的Verilog 模型 固核:在某一种现场可编程门列器件上实现的经验证是正确的,且总门数在5000 门以上的电路结构编码文件 硬核:在某一种专用集成电路工艺的器件上实现的,经验证是正确的,且总门数在 5000 门以上的电路结构版图掩膜 6. 自顶向下(TopDown)设计 7. 自底向上(DownTop)设计 8. 名词解释: ASIC:ApplicationSpecificIntegratedCircuit,专用集成电路 FPGA:FieldProgrammableGateArray,现场可编程门阵列 PLD:ProgrammableLogicDevice,可编程逻辑器件 Verilog 编程题: 数据比较器(2 位) " modulet; rega,b; wireequal; initial begin a=0; b=0; #100 a=0;b=1; #100 a=1;b=1; #100 a=1;b=0; #100 a=0;b=0; #100$stop; end comparem(.equal(equal),.a(a),.b(b)); endmodule 数据比较器(8 位) modulecompare8(equal,a,b); input[7:0]a,b; outputequal; regequal; always@(aorb) if(a>b) begin equal=1; end else begin equal=0; end endmodule 分频器 modulehalf_clk(reset,clk_in,clk_out); inputclk_in,reset; outputclk_out; regclk_out; always@(posedgeclk_in) begin if(!reset)clk_out=0; elseclk_out=~clk_out; end endmodule 10M 时钟分频为 500K modulefdivision(RESET,MB,KB); inputMB,RESET; outputKB; regKB; reg[7:0]j; always@(posedgeMB) if(!RESET) begin KB<=0; j<=0; end else begin if(j==19) beginj<=0; KB<=~KB; end else j<=j+1; end endmodule 译码电路 `defineplus3'd0 `defineminus3'd1 `defineband3'd2 `definebor3'd3 `defineunegate3'd4 modulealu(out,opcode,a,b); output[7:0]out; reg[7:0]out; input[2:0]opcode; input[7:0]a,b; always@(opcodeoraorb) begin case(opcode) `plus:out=a+b; `minus:out=a-b; `band:out=a&b; `bor:out=a|b; `unegate:out=~a; default:out=8'hx; endcase end endmodule 八路数据选择器 moduleselecting8(addr,in1,in2,in3,in4,in5,in6,in7,in8,dataout,reset); input[2:0]addr; input[3:0]in1,in2,in3,in4,in5,in6,in7,in8; inputreset; output[3:0]dataout; reg[3:0]dataout; always@(addrorin1orin2orin3orin4orin5orin6orin7orin8orreset) begin if(!reset) case(addr) 3'b000:dataout=in1; 3'b001:dataout=in2; 3'b010:dataout=in3; 3'b011:dataout=in4; 3'b100:dataout=in5; 3'b101:dataout=in6; 3'b110:dataout=in7; 3'b111:dataout=in8; endcase else dataout=0; end endmodule 逻辑运算电路 moduletryfunct(clk,n,result,reset); output[31:0]result; input[3:0]n; inputreset,clk; reg[31:0]result; always@(posedgeclk) begin if(!reset) result<=0; else begin result<=n*factorial(n)/((n*2)+1); end end function[31:0]factorial; input[3:0]operand; reg[3:0]index; begin factorial=operand1:0; for(index=2;index<=operand;index=index+1) factorial=index*factorial; end endfunction endmodule moduletryfunct(clk,n,result,reset); output[31:0]result; input[3:0]n; inputreset,clk; reg[31:0]result; always@(posedgeclk) begin if(!reset) result<=0; else begin result<=n*factorial(n)/((n*2)+1); end end function[31:0]factorial; input[3:0]operand; reg[3:0]index; begin factorial=operand1:0; for(index=2;index<=operand;index=index+1) factorial=index*factorial; end endfunction endmodule 高速排序组合逻辑 modulesort4(ra,rb,rc,rd,a,b,c,d); output[3:0]ra,rb,rc,rd; input[3:0]a,b,c,d; reg[3:0]ra,rb,rc,rd; reg[3:0]va,vb,vc,vd; always@(aorborcord) begin {va,vb,vc,vd}={a,b,c,d}; sort2(va,vc); sort2(vb,vd); sort2(va,vb); sort2(vc,vd); sort2(vb,vc); {ra,rb,rc,rd}={va,vb,vc,vd}; end tasksort2; input[3:0]x,y; reg[3:0]tmp; if(x>y) begin tmp=x; x=y; y=tmp; end endtask endmodule 检测 5 位二进制序列 10010 moduleseqdet(x,z,clk,rst,state); inputx,clk,rst; outputz; output[2:0]state; reg[2:0]state; wirez; parameterIDLE='d0,A='d1,B='d2,C='d3,D='d4,E='d5,F='d6,G='d7; assignz=(state==E&&x==0) 1:0; always@(posedgeclk) if(!rst) begin state<=IDLE; end else case(state) IDLE: if(x==1) begin state<=A; end A: if(x==0) begin state<=B; end B: if(x==0) begin state<=C; end else begin state<=F; end C: if(x==1) begin state<=D; end else begin state<=G; end D: if(x==0) begin state<=E; end else begin state<=A; end E: if(x==0) begin state<=C; end else begin state=A; end F: if(x==1) begin state<=A; end else begin state<=B; end G: if(x==1) begin state<=F; end default: state=IDLE; endcase endmodule 模拟电路部分 1. 目前,集成电路最常用的材料是单晶硅。
2. 集成电路的生产由设计、制造、封装三部分组成 3. 集成电路中基片主要制作工艺为:光刻、扩散、注入、刻蚀、键合 4. 集成电路中基片的制造步骤为:光刻、扩散、注入、刻蚀 5. 衡量集成电路产业水平的两个主要参数为:硅晶圆片直径和光刻精度(特征尺寸)这两个参数在业界达到的水平为:硅晶圆片直径 12 英寸(300mm),光刻精度主流水平为:硅晶圆片直径 200mm,光刻精度 6. 模拟电路中常用的仿真算法是 SPICE,英文全名为SimulationProgramwithIntegratedCircuitEmphasis 7. 世界上设计 EDA 软件实力最强的两个公司为 Cadence 和 Synopsys其中,Cadence 的优势为电路布局布线,Synopsys 的优势为逻辑综合仿真 8. WorkBench 是加拿大 IIT 公司推出的电子线路仿真软件它可以对模拟、数字和模拟/数字混合电路进行仿真,克服了传统电子产品的设计受实验室客观条件限制的局限性,用虚拟的元件搭接各种电路,用虚拟的仪表进行各种参数和性能指标的测试特点如下:(1)系统集成度高,界面直观,操作方便2)具备模拟、数字及模拟/数字混合电路仿真。
3)提供较为丰富的元器件库4)电路分析手段完备5)输出方式灵活6)兼容性好 9. SPICE 语言举例: EXAMPLE ****文件名任意名都可以但必须要有**** VCC8012? ****电源正极接于节点 8 负极接于 0 电压为 12V**** VEE0912? ****电源正极接于节点 0,负接接于节点 9,电压为 12V;**** VIN10 AC1SIN ****信号源 VIN 接于 1 和接点 0;交流 1V 进行交流分析 同时加一个正弦信号直流偏置为 0,振幅为频率为 5M 的交流信号源,进行瞬态分析;**** RC18410K? ****电阻 RC1 分别接于节点 8 节点 4;阻值为 10K;**** RC28510K? ****电阻 RC2 分别接于节点 8 节点 5;阻值为 10K;**** RS211K? ****电阻 RS 分别接于节点 1 节点 0;阻值为 1K;**** RS18720K? ****电阻 RS1 分别接于节点 8 节点 7 阻值为 20K;**** RS2301K? ****电阻 RS2 分别接于节点 3 节点 0 阻值为 1K;**** Q1426MOD1?****三极管 Q1CBE 分别接于节点 426 模型为 MOD1**** Q2536MOD1?****三极管 Q2CBE 分别接于节点 536 模型为 MOD1**** Q3679MOD1?****三极管 Q3CBE 分别接于节点 679 模型为 MOD1**** Q4779MOD1?****三极管 Q4CBE 分别接于节点 779 模型为 MOD1**** .OP?****求出直流工作点.本电路共有 9 个节点;温度值为 27 度;**** .为直流分析语句,分析输入电压从到扫描特性,每作一次分析;**** .PRINTDCV(4)V(5) ****.PRINT 为打印语句,其中 DC 是打印直流内容,这里规定打印节点 4 和 5 上的电位,既相对地参考点的电压随输入的变化关系;**** .PLOTDCV(4)V(5) ****.PLOT 为绘图语句,其中 DC 表示绘制直流分析的传输特性,说明是绘制V(4)V(5)的输出电压和 VIN 关系曲线;**** .TFV(5)VIN?****.TF 是转移函数分析语句,该句表示计算直流分析时,小信号输出电压 V(5)和输入电压 VIN 的转移函数值,输入电阻和输出电阻;**** .ACDEC1025K250MEG?****.AC 是交流分析语句,是在规定的频率范围内从 25K 到250M 进行频域分析 DEC 表示按数量级变化,10 表示每一数量级中取的分析点数目;**** .PRINTACVM(5)VP(5) ****打印 AC 分析 VM(5)VP(5)的取点数;**** .PLOTACVM(5)VP(5) ****绘制 AC 分析 VM(5)VP(5)的取点数;**** .TRAN4N100N1N?****.TRAN 是瞬态分析语句,并规定了打印或绘图时间增量为 4N 秒,计算终止时间为 100N 秒,打印或绘图开始时间 1NS*;**** .PRINTTRANV(5)V(4) ****.打印出点的电压随时间变化;**** .PLOTTRANV(5)V(4) ****.绘图出节点的电压随时间变化;**** .END?****结束语句...一定要有;**** 。