51
01/01/24 1 Microelectronics School Xidian University Verilog HDL 数字集成电路设计原 理与应用 蔡觉平 西安电子科技大学微电子学院 [email protected]

Verilog HDL 数字集成电路设计原理与应用

  • Upload
    elliot

  • View
    131

  • Download
    5

Embed Size (px)

DESCRIPTION

Verilog HDL 数字集成电路设计原理与应用. 蔡觉平 西安电子科技大学微电子学院 [email protected]. 教材和参考书. 教材: 《 Verilog HDL 数字集成电路设计原理与应用 》 西安电子科技大学出版社 参考书: XXXXX. 第一章 Verilog HDL 数字集成电路设计方法概述. 多块印刷版系. 以元件为基础. 70 年代. 以单元为基础. 80 年代. 单片系统. 以 RTL 综合为基础. 90 年代. 片上系统. 以 IP 为基础. 当前. 数字集成电路的发展和设计方法的演变. - PowerPoint PPT Presentation

Citation preview

  • **Microelectronics School Xidian University Verilog [email protected]

    Microelectronics School Xidian University

  • Verilog HDLXXXXX**Microelectronics School Xidian University

    Microelectronics School Xidian University

  • Verilog HDL

    **Microelectronics School Xidian University

    Microelectronics School Xidian University

  • **Microelectronics School Xidian University

    Microelectronics School Xidian University

  • 70ICIntegrated CircuitMicro Processor Unit, MPU

    80FoundryICMPUMicro Control Unit, MCUICApplication-Specific IC, ASIC

    90ICCentral Processing UnitCPUDigital Signal ProcessingDSP

    ICFundryIP**Microelectronics School Xidian University

    Microelectronics School Xidian University

  • HDLCFORTRANPascal

    HDLHardware Description LanguageHDL

    **Microelectronics School Xidian University

    Microelectronics School Xidian University

  • HDLGateway Design AutomationVerilog HDLDARPAVHDLOO VHDLDE VHDLVITAL

    Verilog HDLVHDLHDL19951987IEEE

    **Microelectronics School Xidian University

    Microelectronics School Xidian University

  • Verilog HDL**Microelectronics School Xidian University

    Microelectronics School Xidian University

  • Verilog HDL**Microelectronics School Xidian University

    VerilogIEEE1364-1995199512Verilog HDLIEEEVerilog HDLIEEEVerilog HDL 1364-1995Verilog-A1996Verilog-AOVIIEEE1364 Verilog1999VerilogVerilogIEEE1364-20012001IEEEVerilog IEEE1364-2001HDL1995PLISystemVerilog IEEE1800-20052005VHDLVerilog HDLVerilog HDL IEEE 1364 Verilog-2001 Verilog-2001

    Microelectronics School Xidian University

  • Verilog HDLVHDL**Microelectronics School Xidian University

    Microelectronics School Xidian University

  • Verilog HDL1: **Microelectronics School Xidian University a4b32module aand4(a,b,c); input [3:0]a,b; output [3:0]c; reg [3:0] c; always @(a or b) c=a&b;endmodulemodule aand32(a,b,c); input [31:0]a,b; output [31:0]c; reg [31:0] c; always @(a or b) c=a&b;endmoduleVerilog HDL

    Microelectronics School Xidian University

    a[3:0]

    b[3:0]

    c[3:0]

    a[31:0]

    b[31:0]

    c[31:0]

  • Verilog HDL**Microelectronics School Xidian University 2: 4module shiftregist4 (clk,din,Reset, qout);input clk,Reset,din;output [3:0] qout;reg [3:0] qout;always @(posedge clk or posedge Reset )beginif(Reset) qout
  • Verilog HDL**Microelectronics School Xidian University 2: 8module shiftregist8 (clk,din, Reset,qout);input clk,Reset,din;output [7:0] qout;reg [7:0] qout;always @(posedge clk or posedge Reset )beginif(Reset) qout
  • **Microelectronics School Xidian University .(1)Soft Core5000Verilog HDLVHDL

    (2) Firm CoreASICFPGA5000

    (3) Hard CoreASIC5000

    Microelectronics School Xidian University

  • Verilog HDL**Microelectronics School Xidian University

    Microelectronics School Xidian University

    RTL

    /

    Verilog HDL

  • Verilog HDL**Microelectronics School Xidian University

    Microelectronics School Xidian University

  • 2.1 Verilog HDL2.1.1\b\tinitial begin a = 3 b100; b = 3b010; end

    initialbegin a = 3 b100;b = 3b010;end

    **Microelectronics School Xidian University

    Microelectronics School Xidian University

  • 2.1.21//Verilog HDL2/**/Verilog HDL

    assign a=b & c; // assign a[3:0]=b[3:0]&c[3:0;]; /*12 */

    /* /**/ *//* //*/**Microelectronics School Xidian University

    Microelectronics School Xidian University

  • 2.1.3Verilog HDLIdentifier$ _**Microelectronics School Xidian University 2.1-3countCOUNT //count_CC_G5B25_78SIX2.1-430count //out* //*a+b-c //+-n@238//@

    Microelectronics School Xidian University

  • 2.1.3

    Verilog HDLEscaped Identifier\()**Microelectronics School Xidian University 2.1-5\ a+b=c\7400\.*.$\{******}\~Q\OutGate //OutGate

    Microelectronics School Xidian University

  • 2.1.4Verilog HDLVerilog HDL,

    ALWAYSalways()

    2.1.4**Microelectronics School Xidian University

    Microelectronics School Xidian University

  • 2.1.5Verilog HDL**Microelectronics School Xidian University

    0011xXzZ

    Microelectronics School Xidian University

  • **Microelectronics School Xidian University +/-< base_format >< number >2.1-68b10001101 //8100011018ha6 //8a65o35 //5354d6 //464b1x_01 //41x012.1-74d-4 //3 b001 //b(4+4)b11 //

    bB01xXzZ_oO0~7xXzZ_dD0~9_hH0~9a~fA~FxXzZ_

    Microelectronics School Xidian University

  • 13.04.540.25.2564.2e256420.0 8.7E2870.0(e)3E-30.003

    **Microelectronics School Xidian University 2.1-8 2.7//5.2e8//3.5E-6//eE5_4582.2158_5896//6.//.3e5//

    Microelectronics School Xidian University

  • 2.2 :;:

    **Microelectronics School Xidian University

    supplystrongpulllargeweakmediumsmallhighz

    Microelectronics School Xidian University

  • 2.2.11. **Microelectronics School Xidian University

    wiretriwortriorwandtrandtriregtri1tri0supply11supply00

    Microelectronics School Xidian University

  • (1) wiretri

    (2) wortrior**Microelectronics School Xidian University

    wire/tri01xz00xx01x1x1xxxxxz01xz

    wor/trior01xz001x011111xx1xxz01xz

    Microelectronics School Xidian University

  • 2.: reg reg

    regreg a;//aregreg [3:0] b;//4bregreg[8:1]c,d,e;//cde8reg

    regregreg signed[3:0] rega;rega=-2;//rega1110142

    **Microelectronics School Xidian University

    Microelectronics School Xidian University

  • 2.2.2reg [list_of_variables];

    net_ declarationwiretritri0tri1wandtriandtriorwor

    range11

    delay

    list_of_variables

    drive_strength**Microelectronics School Xidian University

    Microelectronics School Xidian University

  • reg

    rangereg1

    **Microelectronics School Xidian University

    Microelectronics School Xidian University

  • 2.2-2 reg rega;//1reg [7:0] regb;//8tri [7:0] tribus;//8tri0[15:0] busa;//16tri1[31:0] busb;//32reg scalared[1:4]b;//4wire(pull1,strong0)c=a+b;//101ctrireg(large) storeline;//**Microelectronics School Xidian University

    Microelectronics School Xidian University

  • 2.2.3RAMROMregreg ;range1range21[msb:lsb][msb:lsb]msb-lsb+1

    **Microelectronics School Xidian University

    Microelectronics School Xidian University

  • 2.2-3reg[7:0] mem1[255:0];// 2568mem1//0255reg [15:0]mem2[127:0],reg1,reg2;//12816mem2//16reg1reg22.2-4reg[n-1:0] a;//nareg mem1[n-1:0];//n1mem1

    **Microelectronics School Xidian University

    Microelectronics School Xidian University

  • 2.2.4integertimerealparameterinteger;

    2.2-6integer index;//32integer i[310]//32

    **Microelectronics School Xidian University

    Microelectronics School Xidian University

  • 64$timetime;time a,b;//64

    **Microelectronics School Xidian University

    Microelectronics School Xidian University

  • real;real stime;//parameterparameter 1=1,2=2,,n=n;2.2-7parameter length=32,weight=16;parameter PI=3.14,LOAD=4b1101;parameter DELAY=(BYTE+BIT)/2;

    **Microelectronics School Xidian University

    Microelectronics School Xidian University

  • 2.3 **Microelectronics School Xidian University

    Verilog! ~ * / %+ ->< >===!====!==&^ ^~|&&||?:if-else

    Microelectronics School Xidian University

  • 2.3.1 +-*/%12.3-1reg[3:0]A,B,C;reg[5:0]D;A=B+C;//4D=B+C;//6

    **Microelectronics School Xidian University

    Microelectronics School Xidian University

  • 22.3-2module arith_tb;reg[3:0]a;reg[2:0]b;initialbegina=4'b1111;//15b=3'b011; //3$display("%b",a*b);//4'b1101//45$display("%b",a/b);//4'b0101$display("%b",a+b);//4'b0010$display("%b",a-b);//4'b1100$display("%b",a%b);//4'b0000endendmodule

    **Microelectronics School Xidian University

    Microelectronics School Xidian University

  • 2.3.2 > =
  • 2.3.3 = =!== = =! = =10x**Microelectronics School Xidian University 2.3-2 a== 2.3-2 b== =2.3-4module equal_tb;reg[3:0]a,b,c,d;initial begina=4'b0xx1;b=4'b0xx1;c=4'b0011;d=2'b11;$display(a==b); //x$display(c==d); //1$display(a===b); //1$display(c===d); //0endendmodule

    ===01xz0100010100x0010z0001

    ==01xz110xx101xxxxxxxzxxxx

    Microelectronics School Xidian University

  • 2.3.4 &&||!

    ab4b11104b0000!a=0!b=1a&&b=0a||b=1a4b1100b4b01x0!a=0!b=xa&&b=xa||b=xx**Microelectronics School Xidian University

    ab!a!ba&&ba||b110011100101011001001100

    Microelectronics School Xidian University

  • 2.3.5 ~ & | ^^~

    **Microelectronics School Xidian University 2.3-5module bit_tb;reg[2:0]a;reg[4:0]b;initial begin a=5'b101;//a5b00101 b=5'b11101; $display("%b",~a);//5'b11010 $display("%b",~b);//5'b00010 $display("%b",a&b); //5'b00101 $display("%b",a|b); //5'b11101 $display("%b",a^b);//5'b11000 endendmodule

    &01x0000101xx0xx

    Microelectronics School Xidian University

  • 2.3.6 & | ^~&~|~^^~**Microelectronics School Xidian University 2.3-6module cut_tb;reg[5:0]a;initial begin a=6'b101011; $display("%b",&a); //1'b0 $display("%b",|a); //1'b1 $display("%b",^a); //1'b0 endendmodule

    Microelectronics School Xidian University

  • 2.3.7

    0

    **Microelectronics School Xidian University 2.3-7module shift_tb;reg[5:0]a,b,c,d;reg[7:0]e;initial begina=6'b101101;b=a3; d=a

  • 2.3.8 ?:10x12

    **Microelectronics School Xidian University 2.3-8:module mux2(in1,in2,sel,out);input [3:0]in1,in2;input sel;output [3:0]out;reg [3:0]out;assign out=(!sel)?in1:in2; //sel0outin1,outin2endmodule 21

    Microelectronics School Xidian University

    in1

    in2

    out

    sel

    0

    1

  • 2.3.9{{}}12n

    {{}}**Microelectronics School Xidian University 2.3-9 module con_rep_tb;reg [2:0]a;reg [3:0]b;reg [7:0]c;reg [4:0]d;reg [5:0]e;initial begina=3'b101;b=4'b1110;c={a,b};//d={a[2:1],b[2:0]};//e={2{a}}; // $display("%b",c); //8'b01011110 $display("%b",d);//5'b10110 $display("%b",e);/6'b101101 endendmodule

    Microelectronics School Xidian University

  • 2.4 2.4.1moduleVerilog HDL

    **Microelectronics School Xidian University 2.4-1

    Microelectronics School Xidian University

  • 1moduleendmodule2inputoutputinout3wireregmemoryparameter4initialalwaysUDPassignfunctiontask

    **Microelectronics School Xidian University

    Microelectronics School Xidian University

  • **Microelectronics School Xidian University 2.4-1 D

    module dff (din,clk,q,);input din,clk;output q;reg q;always@(posedge clk)q

  • 2.4.21inputoutputinout211221122

    **Microelectronics School Xidian University

    Microelectronics School Xidian University

    ***