




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、绝密请输入文档编号Verilog基本电路设计指导书深圳市华为技术有限公司文档编号版本密级研究管理部文档中心1.0内部公开资源类别:HDL语言共56页Verilog基本电路设计指导书(仅供内部使用)拟制:Verilog Group日期:2000/04/04批准:日期:yyyy/mm/dd批准:日期:yyyy/mm/dd深圳市华为技术有限公司版权所有不得复制修订记录日期修订版本描述作者2000/04/04 1.00初稿完成Verilog Group2001/02/28 1.01修订,主要增加三态和一些电路图苏文彪2001/02/28版权所有,侵权必究第5页,共56页目录1刖二52典型电路的设计52
2、.1 全加器的设计62.2 数据通路62.2.1 四选一的多路选择器62.2.2 译码器72.2.3 优先编码器82.3 计数器92.4 算术操作102.5 逻辑操作102.6 移位操作112.7 时序器件122.7.1 上升沿触发的触发器122.7.2 带异步复位、上升沿触发的触发器122.7.3 带异步置位、上升沿触发的触发器132.7.4 带异步复位和置位、上升沿触发的触发器142.7.5 带同步复位、上升沿触发的触发器152.7.6 带同步置位、上升沿触发的触发器162.7.7 带异步复位和时钟使能、上升沿触发的触发器162.7.8 D-Latch (锁存器)172.8 ALU182.
3、9 有限状态机(FSM)的设计202.9.1 概述202.9.20 ne-hot 编码232.9.21 Binary 编码262.10 三态总线302.10.1 三态 buffer302.10.2 双向 I/O buffer313常用电路设计313.1 CRC校验码产生器的设计313.1.1 概述313.1.2 CRC校验码产生器的分析与硬件实3.1.3 323.1.4 并行CRC-16校验码产生器的 VerilogHDL编码333.1.5 串行 CRC-16校验码产生器的 VerilogHDL编码353.2 随机数产生电路设计373.2.1 概述373.2.2 伪随机序列发生器的硬件实现37
4、3.2.3 8位伪随机序列发生器的VerilogHDL编码383.3 双端口 RAM仿真模型403.4 同步FIFO的设计413.4.1 功能描述413.4.2 设计代码413.5 异步 FIFO设计443.5.1 概述443.5.2 设计代码44Verilog基本电路设计指导书关键词:电路、摘要:本文列举了大量的基本电路的Verilog HDL代码,使初学者能够迅速熟悉基本的HDL建模;同时也列举了一些常用电路的代码,作为设计者的指导。缩略语清单:对本文所用缩略语进行说明,要求提供每个缩略语的英文全名和中文解释。参考资料清单:请在表格中罗列本文档所引用的有关参考文献名称、作者、标题、编号、发
5、布日期和出版单位等基本信息。参考资料清单名称作者编号发布日期查阅地点或渠 道出版单位(若 不为本公司发 布的文献,请填写此列)ActelHDLcodingStyleGuideNovember 1997文档室Actel公司1前言当前业界的硬件描述语言中主要有VHDL和Verilog HDL。公司根据本身 ASIC设计现有的特点、现状,主推Verilog HDL语言,逐渐淡化 VHDL语言,从而统一公司的ASIC/FPGA设计平台,简化流程。为使新员工在上岗培训中能迅速掌握ASIC/FPGA设计的基本技能,中研基础部ASIC设计中心开发了一系列的培训教材。该套HDL语言培训系列包括如下教程:Ver
6、ilog HDL入门教程Verilog HDL代码书写规范Verilog基本电路设计指导书 TestBench编码技术系列教材完成得较匆忙,本身尚有许多不完善的地方,同时,可能还需要其他知识方面的培训但没有形成培训教材,希望大家在培训过程中,多提宝贵意见,以便我们对它进行修改和完善2典型电路的设计绝密请输入文档编号Verilog基本电路设计指导书/非饱和计数器、FSM等在本章节中,主要讲述触发器、锁存器、多路选择器、解码器、编码器、饱和 常用基本电路的设计。如果你是初学者,我们建议你从典型电路学起,如果你已经非常熟悉电路设计,我 们建议你从第3章看起。2.1全加器的设计/*、Filename:
7、fulladd.vAuthor:Verilog_gruopDescription:Example of a one-bit full add.Revision:2000/02/29Company:Verilog_group、*/module FULLADDR(Cout, Sum, Ain, Bin, Cin);2001/02/28版权所有,侵权必究第7页,共56页inputAin, Bin, Cin;outputSum, Cout;wireSum;wireCout;assignSum = Ain A Bin A Cin;assignCout = (Ain & Bin) | (Bin & Cin
8、) | (Ain & Cin);endmodule2.2数据通路2.2.1四选一的多路选择器case勺多路选择器用cases旬实现的多路选择器,一般要求选择信号之间是相关的;般是并行的操作,但有些工具也可能综合成优先级的译码器除非加一些控制参数。/*、Filename:mux.vAuthor:Verilog_gruopDescription:Example of a mux4-1Revision:2000/02/29Company:Verilog_group、*/module MUX( C,D,E,F,S,Mux_out);绝密请输入文档编号Verilog基本电路设计指导书inputC,D,E
9、,F ;/inputinput1:0S ;/select controloutputMux_out ;/resultreg Mux_out ;/muxalways(C or D or E or F or S) begincase (S)2b00 : Mux_out = C ;2b01 : Mux_out = D ;2b10 : Mux_out = E ;default : Mux_out = F ; endcaseendendmodule以上代码实现的功能如下所示:2.2.2译码器因为译码信号之间是相关的,因此,译码器要case语句实现 /*、Filename:decode.vAuthor:V
10、erilog_gruopDescription:Example of a 3-8 decoder.Revision:2000/02/29Company :Verilog_group、*/ module DECODE(Ain,En,Yout);inputEn ;/enableinput2:0Ain ;/input codeoutput 7:0Yout ;reg 7:0 Yout ;always(En or Ain)beginif(!En)Yout = 8b0 ;elsecase (Ain)3b000 : Yout = 8b0000_00013b001 : Yout = 8b0000_0010 ;
11、3b010 : Yout = 8b0000_0100 ;3b011 : Yout = 8b0000_1000 ;3b100 : Yout = 8b0001_0000 ;3b101 : Yout = 8b0010_0000 ;3b110 : Yout = 8b0100_0000 ;3b111 : Yout = 8b1000_0000 ; default : Yout = 8b0000_0000 ; endcaseendendmodule2.2.3优先编码器/*、Filename:Prio-encoder.vAuth0r:Verilog_gruopDescription:Example of a
12、Priority Encoder.Revision:2000/02/29Company :Verilog_group、*/ input signals/input select control/output select resultmodule PRIO_ENCODER (Cin,Din,Ein,Fin,Sin,Pout);input Cin,Din,Ein,Fin;input 1:0 Sin;,一/ Pout assignmentalways (Sin or Cin or Din or Ein or Fin) beginif (Sin = 2 b00)Pout = Cin;else if
13、(Sin = 2 b01)Pout = Din;else if (Sin = 2 b10)Pout = Ein;elsePout = Fin;endendmodule以上代码实现的功能如下图:2001/02/28版权所有,侵权必究第15页,共56页1使用if的优先译码器2.3计数器FilenameAuthor/*、count_en.vVerilog_gruopDescription:Example of a counter with enable.Revision:2000/02/29Company:Verilog_group、*/ module COUNT_EN (En,Clock,Rese
14、t,Out);parameterparameterinputoutput Width-1:0Width =8 ;U_DLY =1;Clock , Reset , En ;Out ;reg Width-1:0 Out ;always(posedge Clock or negedge Reset) if (!Reset)Out= 8b0 ;else if (En)Out BQ2=A = Bif (A = B)Q4elseQ4endendmodule2.6 移位操作/*、Filename:shifter.vAuthor:Verilog_gruopDescription:Example of a sh
15、ifterRevision:2000/02/29Company:Verilog_group、*/module SHIFT (Data ,Q1, Q2);input 3:0Data ;output 3:0Q1,Q2 ;parameterreg3:0Q1, Q2 ;always(Data)beginQ1=Data B ;endendmodule2.7 时序器件一个时序器件(指触发器或锁存器)就是一个一位存储器。锁存器是电平敏感存储器件,触发器是沿VERILOG中采用如下方法表示:触发存储器件。触发器也被称为寄存器,在程序中体现为对上升沿或下降沿的探测,(posedge Clk)上升沿(negedg
16、e Clk)下降沿下面给出各种不同类型触发器的描述。2.7.1 上升沿触发的触发器实现了一个D触发器。/*、Filename:dff.vAuthor:Verilog_gruopDescription:Example of a Rising Edge Flip-FlopRevision:2000/03/30Company:Verilog_group、*/module DFF (Data, Clk, Q);inputData, Clk;outputQ;regQ;always (posedge Clk)Q = Data;endmodule功能如下图:2.7.2带异步复位、上升沿触发的触发器/*、Fi
17、lename:dff_async_rst.vAuthor:Verilog_gruopDescriptionExample of a Rising Edge Flip-Flop with AsynchronousReset.绝密请输入文档编号Verilog基本电路设计指导书Verilog基本电路设计指导书 4 tRevision:2000/03/30Company :Verilog_group、*/module DFF_ASYNC_RST (Data, Clk, Reset, Q);inputData, Clk, Reset;outputQ;parameterU_DLY =1;reg Q;alw
18、ays (posedge Clk or negedge Reset) if (Reset)Q= #U_DLY 1b0 ;elseQ= #U_DLY Data ;endmudule 功能如下图:2001/02/28版权所有,侵权必究第19页,共56页2.7.3 带异步置位、上升沿触发的触发器Filename:dff_async_pre.vAuthor:Verilog_gruopDescription:Example of a Rising Edge Flip-Flop with AsynchronousRevision:2000/03/30Company:Verilog_group/*、*/Pr
19、eset.module DFF_ASYNC_PRE (Data, Clk, Preset, Q);inputData, Clk, Preset;outputQ;parameter U_DLY =1;reg Q;always (posedge Clk or negedge Preset) if ( Preset)Q= #U_DLY 1b1 ;elseQ= #U_DLY Data ;endmudule功能如下图:2.7.4 带异步复位和置位、上升沿触发的触发器/*、Filename:dff_async.vAuthor:Verilog_gruopReset and Preset.Descriptio
20、n:Example of a Rising Edge Flip-Flopwith AsynchronousRevision:2000/03/30Company:Verilog_group、*/module DFF_ASYNC (Data, Clk, Reset, Preset, Q);inputData, Clk, Reset, Preset ;outputQ;parameterU_DLY =1;regQ;always (posedge Clk or negedge Reset or negedge Preset)漏物绝密Verilog基本电路设计指导书请输入文档编号if (Reset)Q =
21、 1b0 ;else if (preset )Q= 1b1;elseQ= #U_DLY Data ;endmudule功能如下图:Preset ,Dat;Clk R Reset P1带异步置位、复位 D触发器2.7.5 带同步复位、上升沿触发的触发器/*、Filename:dff_sync_rst.vAuthor:Verilog_gruopDescription:Example of a Rising Edge Flip-Flop with Synchronous ResetRevision:2000/03/30Company:Verilog_group、*/module DFF_SYNC_R
22、ST (Data, Clk, Reset, Q);inputData, Clk, Reset;outputQ;parameterU_DLY = 1;Q;reg always (posedge Clk )if ( Reset)=#U_DLY 1b0 ;else=#U_DLY Data ;endmudule功能如下图:2.7.6带同步置位、上升沿触发的触发器/*、Filename:dff_sync_pre.vAuthor:Verilog_gruopDescription:Example of a Rising Edge Flip-Flop with Synchronous Preset.Revis
23、ion:2000/03/30Company:Verilog_group、*/module DFF_SYNC_PRE (Data, Clk, Preset, Q);inputData, Clk, Preset;outputQ;parameterU_DLY = 1;Q;reg always (posedge Clk )if ( Preset)Q= #U_DLY 1b1 ;elsec= #U DLY Data ;Qendmudule功能如下图:绝密请输入文档编号Verilog基本电路设计指导书2001/02/28版权所有,侵权必究第21页,共56页1带同步置位的D触发器2.7.7带异步复位和时钟使能
24、、上升沿触发的触发器/*、Filename :dff_ck_en.vAuthorDescriptionRevisionCompanyVerilog_gruopExample of a Rising Edge Flip-Flop with Asynchronous Resetand Clock Enable.2000/03/30Verilog_group、*/module DFF_CK_EN (Data, Clk, Reset, En, Q);inputData,Clk,Reset, En;outputQ;parameterudly =1;regQ;always (posedge Clk or
25、negedge Reset)if ( Reset)Q= 1b0 ;else if (En)Q= #U_DLY Data ;endmudule功能如下图:1带异步复位、使能端的 D触发器DFT问题,因此,在2.7.8D-Latch (锁存器)锁存器是电平敏感器件,在ASIC设计中,锁存器会带来诸多问题,如额外时延、实际设计中必须尽量避免锁存器的出现。module d_latch (enable,data,y);input enable ;input data;output y;reg y;always (enable or data)if (enable )y = data;endmodule功
26、能如下图:data 一enable _D Q -T一 y1 D-Latch2.8ALU/*、Filename:alu.vAuthor:Verilog_gruopDescription:Example of a 4-bit Carry Look AheadALU绝密请输入文档编号Verilog基本电路设计指导书CompanyRevision:2000/02/29Verilog_group、*/ module ALU(A, B, Cin, Sum, Cout, Operate, Mode);/input signalsinput3:0A, B;/ two operands of ALUinputC
27、in;/carry in at the LSBinput3:0Operate;/determine f(.) of sum = f(a, b)inputMode;/arithmetic(mode = 1b1) or logic operation(mode = 1b0)output3:0Sum;/result of ALUoutputCout;/carry produced by ALU operation/ carry generation bits and propogation bits.wire 3:0 G, P;/ carry bits;C;reg 2:0/ function for
28、 carry generation:function geninputA, B;input i:o Oper;begincase(Oper)2b00: gen = A;2b01: gen = A & B;2b10: gen = A & (B);2b11: gen = 1b0;endcase;endendfunction2001/02/28版权所有,侵权必究第25页,共56页/ function for carry propergation:function propinputA, B;input 1:0 Oper;begincase(Oper)2b00: prop = 1;2b01: prop
29、 = A | (B);2b10: prop = A | B;2b11: prop = A;endcase;endendfunction/ producing carry generation bits;assign G0 = gen(A0, B0, Oper1:0);assign G1 = gen(A1, B1, Oper1:0);assign G2 = gen(A2, B2, Oper1:0);assign G3 = gen(A3, B3, Oper1:0);/ producing carry propogation bits;assign P0 = por(A0, B0, Oper3:2)
30、;assign P1 = por(A1, B1, Oper3:2);assign P2 = por(A2, B2, Oper3:2);assign P3 = por(A3, B3, Oper3:2);/ producing carry bits with carry-look-ahead; always (G or P or Cin, Mode)beginif (Mode) beginC0 = G0 | P0 & Cin;C1 = G1 | P1 & G0 | P1 & P0 & Cin;C2 = G2 | P2 & G1 | P2 & P1 & G0 | P2 & P1 & P0 & Cin
31、;Cout = G3 | P3 & G2 | P3 & P2 & G1 | P3 & P2 & P1 & G0 | P3 &P2 & P1 & P0 & Cin;endelse beginC0 = 1b0;C1 = 1b0;C2 = 1b0;Cout = 1b0;endend/ calculate the operation results;assign Sum0=(G0 & P0) A Cin;assign Sum1=(G1 & P1) a C0;assign Sum2=(G2 & P2) a C1;assign Sum3=(G3 & P3) a C2;endmodule2.9有限状态机(F
32、SM)的设计2.9.1 概述有限状态机(FSM)是一种常见的电路,由时序电路和组合电路组成。设计有限状态机的第一步是确定采用Moore状态机还是采用Mealy状态机。(Mealy型:状态的转变不仅和当前状态有关,而且跟各输入信号有关;Moore型:状态的转变只和当前状态有关)。从实现电路功能来讲,任何一种都可以实现同样的 功能。但他们的输出时序不同,所以,在选择使用那种状态机时要根据具体情况而定,在此,把他们的主 要区别介绍一下:1. Moore状态机:在时钟脉冲的有限个门延时之后,输出达到稳定。输出会在一个完整的时钟周期内 保持稳定值,即使在该时钟内输入信号变化了,输出信号也不会变化。输入对
33、输出的影响要到下一个时钟 周期才能反映出来。把输入和输出分开,是Moore状态机的重要特征。2. Mealy状态机:由于输出直接受输入影响,而输入可以在时钟周期的任一时刻变化,这就使得输出状 态比Moore状态机的输出状态提前一个周期到达。输入信号的噪声可能会出现在输出信号上。3.对同一电路,使用Moore状态机设计可能会比使用Mealy状态机多出一些状态。根据他们的特征和要设计的电路的具体情况,就可以确定使用那种状态机来实现功能。一旦确定状态 机,接下来就要构造状态转换图。现在还没有一个成熟的系统化状态图构造算法,所以,对于实现同一功 能,可以构造出不同的状态转换图。但一定要遵循结构化设计。
34、在构造电路的状态转换图时,使用互补原 则可以帮助我们检查设计过程中是否出现了错误。互补原则是指离开状态图节点的所有支路的条件必须是 互补的。同一节点的任何 2个或多个支路的条件不能同时为真。同时为真是我们设计不允许的。在检查无冗余状态和错误条彳后,就可以开始用 verilog HDL来设计电路了。NextstLogicCurr_stNext st -二 Curr_st - 匚I Logic CombiLogicResetClock1状态机电路逻辑图在设计的过程中要注意以下方面:1.full_case specLatch ,因为 Latch定义完全状态,即使有的状态可能在电路中不会出现。目的是避
35、免综合出不希望的 可能会带来:a.额外的延时;b.异步Timing问题always (Curr_st)begincase(Curr_st)ST0 : Next_st = ST1;ST1 : Next_st = ST2;ST2 : Next_st = ST0;endcaseend绝密请输入文档编号Verilog基本电路设计指导书2001/02/28版权所有,侵权必究第27页,共56页always (Curr_st)begincase(Curr_st)ST0 : Next_st = ST1;ST1 : Next_st = ST2;ST2 : Next_st = ST0;default : Next
36、_st = ST0;endcaseend1没有采用full-case/synthesis full_caseCurrstCurrstDNextst1 采用 full-case2. parallel_case spec确保不同时出现多种状态case(En3, En2, En1)3b?1 : Out = In1;绝密请输入文档编号Verilog基本电路设计指导书/synthesis parallel_case3b?1? : Out = In2;3b1? : Out = In3;endcasecase(En3, En2, En1)3b?1 : Out = In1;3b?1? : Out = In2;
37、3b1? : Out = In3;endcase2001/02/28版权所有,侵权必究第31页,共56页1 采用 parallel-case3 .禁止使用casexX, 一定casex在综合时,认为Z, X为Dont cares ,会导致前仿真和后仿真不一致。如果电路中出现 要分析是否会传递。4 .推荐在模块划分时,把状态机设计分离出来,便于使用综合根据对状态机优化。RTL级的功5 .在条件表达式或附值语句中,要注意向量的宽度适配。否则,前仿真和后仿真不一致, 能验证很难找出问题所在。下图是一个状态机的状态转换图,在Verilog HDL中我们可以用如下方法设计该状态机。E Multi = 0
38、Contig= 0ResetA&(!B)&C Multi = 1siMulti = 1Contig = 1A&B&(!C)S7Multi = 0 !E -.,Contig = 1Singal = 0Singal = 0 1一 Ds2Contig= 0、Singal = 0Singal = 1Multi = 0Contig= 1Singal = 1A&B&(!C)./Multi = 1Contig = 0Singal = 0!D Multi = 0Contig= 1Singal = 01状态转换图2.9.2One-ho编码/*、Filename:one_hot_fsm.vAuthor:Veril
39、og_gruopDescription:Example of a one-hot encoded state machine.Revision:2000/02/29Company:Verilog_group、*/module ONE_HOT_FSM (Clock, Reset, A, B, C, D, E,Single, Multi, Contig);inputClock;/system ClockinputReset;/async Reset, active highinputA, B, C, D, E;/FSM input signalsoutputSingle, Multi, Contig;/FSM output signals/define output signals typeregSingle;regMulti
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 超市提成合同协议书
- 邻居违建调解协议书
- 道路损毁修复协议书
- 高中宿舍承包协议书
- ufc比赛伤亡协议书
- 单位章程及联营协议书
- 衣柜闲置转让协议书
- 车位包租返租协议书
- 路人死亡赔偿协议书
- 高中就业合同协议书
- 至诚则成立信于行主题班会
- 2024年四川雅安中考满分作文《与书为伴》
- 人音版2025-2026学年一年级音乐下册教学工作计划(及进度表)
- 2025年危废知识考试试题及答案
- 《人工智能基础(Python实现)》全套教学课件
- 基于主题教学的高中课时内容整合的实践研究
- 市政工程围挡合同样本简易
- 医学 急危重症病人抢救中的医护配合学习课件
- 隧道施工风险评估模型构建-深度研究
- 社区儿童主任培训
- 《分子动力学模型》课件
评论
0/150
提交评论