Verilog硬件描述语言基础.ppt

上传人:牧羊曲112 文档编号:5452070 上传时间:2023-07-08 格式:PPT 页数:96 大小:438.50KB
返回 下载 相关 举报
Verilog硬件描述语言基础.ppt_第1页
第1页 / 共96页
Verilog硬件描述语言基础.ppt_第2页
第2页 / 共96页
Verilog硬件描述语言基础.ppt_第3页
第3页 / 共96页
Verilog硬件描述语言基础.ppt_第4页
第4页 / 共96页
Verilog硬件描述语言基础.ppt_第5页
第5页 / 共96页
点击查看更多>>
资源描述

《Verilog硬件描述语言基础.ppt》由会员分享,可在线阅读,更多相关《Verilog硬件描述语言基础.ppt(96页珍藏版)》请在三一办公上搜索。

1、Verilog硬件描述语言基础,简介,HDLHardware Description Language,简介,发展概况Verilog:1983年Gateway Design Automation为其模拟器开发的硬件建模语言;专用、用于模拟、仿真1990 OVI(Open Verilog International)1995 成为IEEE标准Std1364-1995可用于模拟、仿真、综合的硬件建模,简介,Verilog 的特征支持多级建模方式算法、行为级建模寄存器传输(RTL)级建模门级建模开关级建模,简介,支持多种建模方式行为功能建模方式结构建模方式数据流建模方式,简介,层次描述,在描述中显式

2、进行时序建模提供了强大的硬件建模能力,内嵌的任务和函数类C语言,易学已成为业界标准可通过PLI与C接口提供原语描述能力,简介,EDA工具对Verilog的支持良好Simulation ToolsVerilogXL:业界的黄金模拟器VCS(ViewLogic)NCVerilogNC_Sim(兼容Verilog、VHDL混合结构的描述形式)Synthesis ToolsSynopsys DesignCompilerVeriBest、Ambit、RTLCompilerMagmaEmulation ToolsQuickTurn、PalladiumModelSource、VstationArms、Mot

3、orola,简介,混合建模能力,二、Verilog的总体结构,1 总体描述方式,二、Verilog的总体结构,模块的基本描述形式:module module_name(input/output_port list);Declarations:input/output_port declarations;reg,wire,parameter,function,task,UDP.Statements:initial statementsalways statementsGate/Module instantiationUDP instantiationassign statementsendmod

4、ule,二、Verilog的总体结构,描述方式说明,二、Verilog的总体结构,行为功能描述,二、Verilog的总体结构,数据流描述方式,一、Verilog HDL描述的层次,1、结构化、层次式描述2、行为、功能描述3、电路级描述,Verilog类C语言的特征,行为描述时可采用类C的语言结构ifelsecaseforwhile赋值语句结构与C的语言结构相似算术、逻辑操作与C的语言相似,三、Verilog语言要素,模块的基本描述形式:module module_name(input/output_port list);Declarations:input/output_port declar

5、ations;reg,wire,parameter,function,task,UDP.Statements:initial statementsalways statementsGate/Module instantiationUDP instantiationassign statementsendmodule,三、Verilog语言要素,1、标识符不能使用保留字作标识符,三、Verilog语言要素,2、数据类型2.1 verilog 的允许基本逻辑值0:逻辑0/真1:逻辑1/假x:未知()z:高阻,三、Verilog语言要素,2.2常量类型整型b、o、d、h分别表示二进制数、八进制数、十

6、进制数、十六进制数用数字表示数据宽度3b101表示3位二进制数1018hdf表示8位16进制数df实型字符串型,三、Verilog语言要素,2.3信号类型线网类型寄存器类型,三、Verilog语言要素,线网类型wiretriworwandtriortriandtriregtri1tri0supply0supply1,三、Verilog语言要素,wand:线与,三、Verilog语言要素,寄存器类型reg 并不一定代表设计中实际的寄存器reg数据类型说明时要注意数据长度问题integer数据类型说明时要注意数据长度问题integer数据默认长度为64位,三、Verilog语言要素,存储器说明及操

7、作说明方式:reg msb:lsbmemory_nameupper:lower;reg 15:0mem1255:0;mem1定义为深度为256的16位存储器,三、Verilog语言要素,存储器说明及操作存储器赋值方式:单个存储单元的赋值reg 15:0 mem1255:0;mem1I=16h8c;mem18=16ha9;使用系统任务对存储器赋值$readmemb(“filename”,memory_name);$readmemh(“filename”,memory_name);,存储器说明及操作,reg 7:0mem14:0;$readmemb(“memory1”,mem1);memory1内

8、容如下:0100100110110110110100011001110011000111,三、Verilog语言要素,2.4参数说明parameter参数名 值;parameterBUS_SIZE=16;parameterfilename=“/export/home/joe/my_file”使用参数的优点:增加可读性;可修改性好;设计的可重用性好,四、表达式,4.1操作数寄存器类型数据线网类型数据,四、表达式,4.2操作符算术操作+-*/%逻辑操作&|!&|=!=条件操作?:,五、行为建模,5.1建模机制initial 语句always 语句,五、行为建模,5.2always语句always(

9、敏感信号表)描述体always#timing 描述体always描述体敏感信号表的完整性问题:敏感信号不完整会导致逻辑模拟结果错误;信号过多会导致逻辑模拟速度慢、逻辑模拟结果错误。,五、行为建模,5.3时序控制延时控制事件控制,五、行为建模,事件控制边沿触发事件控制(event)Procedure_statements(posedge clk)Current_State=Next_State;(negedge clk)Current_State=Next_State;电平触发事件控制(信号表)Procedure_statements(a or b)Sum=a b;wait(表达式)Proced

10、ure_statementswait(DataReady)Data=Bus;wait(Sum=22)Sum=0;,五、行为建模,描述语句块顺序语句块:语句块内的语句按书写的次序执行;begin描述语句1;描述语句2;。描述语句n;end,五、行为建模,描述语句块并行语句块:语句块内的语句并行执行;fork描述语句1;描述语句2;。描述语句n;join,五、行为建模,描述语句块顺序语句块内可嵌套并发语句块;并发语句块内可嵌套顺序语句块。,分支、条件语句if else及其嵌套语句case语句case、casex、casez基本语法结构与C语言类似,五、行为建模,五、行为建模,循环语句forever

11、 循环forever procedural_statementrepeat 循环repeat(loop_number)procedural_statement,五、行为建模,循环结构while循环语句while(condition)procedural_statementfor循环语句for(initial_assignment;condition;step_assignment)procedural_statement,五、行为建模,function定义function range function_id;input_declarationsother declarationsprocedu

12、ral_statementsendfunctionfunction适合描述组合逻辑块,五、行为建模,function BUS_SIZE-1:0 function_example;inputBUS_SIZE-1:0 Din;integerk;begin for(k=0;kBUS_SIZE-1;k=k+1)function_exampleBUS_SIZE-k=Dink;endendfunction函数调用func_id(exp1,expn);reg BUS_SIZE-1:0 din,dout;dout=function_example(din);,五、行为建模,Task定义task task_id

13、;input_declarationother declarationprocedural statementsendtasktask适合于描述时序任务,五、行为建模,一个建模实例,五、行为建模,六、UDP定义,6.1 UDP定义primitive UDP_name(Output_Name,List_of_inputs);output_declarationdeclaration of List_of_inputsother declarations|initial 语句tableList of table entriesendtableendprimitive,六、UDP定义,6.2 组合逻

14、辑UDP表中规定了不同的输入组合和相对应的输出值。6.3 时序电路UDP用1位寄存器描述内部状态,该寄存器的值是时序电路UDP的输出值。初始化语句用于描述触发器的初始状态。电平触发的触发器的描述沿触发的触发器的描述,六、UDP定义,六、UDP定义,六、UDP定义,六、UDP定义,?:0、1、xb:0,1-:输出保持(AB):由A变到B r:上跳变沿,与(01)相同f:下跳变沿,与(10)相同p:(01)、(0 x)、(x1)的任一种n:(10)、(1x)、(x0)的任一种,七、系统任务和系统函数,7.1 显示和写入任务$display$displayb$displayo$displayh$wr

15、ite$writeb$writeo$writeh7.2 探测任务$strobe$strobeb$strobeo$strobeh,七、系统任务和系统函数,7.3 监测任务$monitor$monitorb$monitoro$monitorh7.4 文件输入、输出任务文件的打开、关闭$fopen$fclose从文件中读取数据$readmemb$readmemh,七、系统任务和系统函数,7.4 模拟控制任务$finish;退出模拟器,返回操作系统$stop;模拟器挂起。任何TestBench中的激励码须包含下述形式语句:initialbegin$stop;$finish;end,七、系统任务和系统函

16、数,7.5 值转储(VCD)任务$dumpfile(file_name):指定VCD文件名$dumpvars(level,module_name);$dumpall;$dumplimit(number);$dumpon;$dumpoff;,八、与模拟有关的论题,8.1 信号驱动强度,八、与模拟有关的论题,8.2 竞争问题出现竞争的原因:Nonblocking assignment with nonedelay;Concurrent always statements;Signals are assigned in multiple always statements or in multipl

17、e nonblocking assignments.,八、与模拟有关的论题,8.3 如何避免竞争,HDL Coding Style,How to write a good verilog code,HDL Coding Style,ObjectiveReadableModifiableReuseableOptimal Result in SynthesisFast Simulation保证综合前后逻辑模拟结果的一致性,HDL Coding Style,Basic Coding PracticesCoding for PortabilityGuidelines for Clocks and Re

18、set/SetCoding for SynthesisHow to Partition a DesignDesigning with MemoriesCoding Profiling,Overview of the Coding Guidelines,Simple structureBasic type(VHDL only)Simple Clocking SchemeConsistent coding style,consistent naming conventions,consistent structure for process and state machinesRegular pa

19、rtitioning schema,all module outputs registered and each module roughly the same sizeEasy to read,modify,reuseableUsage of parameters,Basic Coding Practices,尽可能多使用function描述、少用Task描述尽量少用循环结构注意变量、信号、模块、块命名的协调注意端口描述按一定次序、端口连接的方式,Basic Coding Practices,命名规则常数名字大写且有确定意义信号名、变量名、端口名小写参数名大写时钟名以clk、clock开头低

20、电平有效信号名为:信号名_nrst、reset/set为复/置为信号名模块名应有意义提高可读性不使用保留字,Basic Coding Practices,模块端口描述及其引用时的连接建议模块端口描述按次序进行:输入信号输出信号clocks clocksresetsresetsenablesenablesother control signalsother control signalsdata/address signalsdata描述大的模块连接结构时,采用端口名、信号名相对应的连接方式,提高可读性和可修改性.端口名(信号名),Coding for Portability,Objective

21、Technology-independentCompatible with various simulation toolsCompatible with various synthesis toolsEasily translated from Verilog to VHDLEasily combined with C,Coding for Portability,Dont use hard-coded numeric valusa poor coding style:wire 7:0my_in_bus;wire 7:0 my_out_bus;建议采用:parameterBUS_SIZE=8

22、 wire BUS_SIZE-1:0my_in_bus;wire BUS_SIZE-1:0 my_out_bus;Use technology-independent libraries描述尽量避免与综合、模拟工具相关,Guidelines for Clocks and Resets,最简单的设计单个的全局时钟上/下跳变沿触发器优点简单、易懂、易分析,Guidelines for Clocks and Resets,Avoid Mixed Clock EdgesDifficulty in timing analysis(the duty cycle is a critical issue in

23、 timing analysis,in addition to the clock frequency itself);Difficulty in scan_based test;Difficulty to maintain a design.,Guidelines for Clocks and Resets,Avoid Use Gated Clock使用内部产生时钟要特别注意:设计的可测性受到严重影响(扫描测试难度大);应将内部产生时钟模块描述放在设计描述的领层;绝对禁止将内部产生时钟模块描述作为宏单元的子模块。,Guidelines for Clocks and Resets,Guidel

24、ines for Clocks and Resets,Make sure your design are controlled only by a simple reset/set signals;避免条件置复/位;时序逻辑器件的置复/位不应放在initial描述块中(可综合性、保证综合前和综合后的模拟结果相同),Coding for Synthesis,ObjectivePerformance Testability Synthesis Simplification and Timing Analysis 保证综合前、后的逻辑模拟结果的一致,Coding for Synthesis,时序元件

25、问题;always(敏感信号/变量表)完整性问题;组合电路的反馈问题;Blocking/Nonblocking赋值语句的使用问题;ifelse/case描述的选择;FSM的描述,Coding for Synthesis,1 时序元件问题:避免不必要的Latch;触发器的初始赋值(reset/set)不应在initial描述块内定义,而应该在其功能描述中加以定义。组合电路避免出现反馈回路,Coding for Synthesis,避免不必要的Latch:在组合逻辑描述中,保证:所有的ifelse及其嵌套结构、case、casex、casez结构是满的描述变量、信号的赋值在每一个分支中都应有明确的

26、指定;ifelse及其嵌套结构本身是满的;case、casex、casez必须包含default分支;,Coding for Synthesis,Coding for Synthesis,2(敏感信号/变量表)问题敏感信号/变量表必须完整,以保证综合前、后的模拟结果一致,但不相关的信号的加入则会降低模拟速度。对组合块,每一个出现在赋值语句右边且没有在块内被预先赋值的信号应列入表中;对时序块,1)时钟控制信号必须出现在敏感表中;2)若为异步置/复位,则相应的置/复位信号必须列入敏感表。,Coding for Synthesis,3 Blocking and NonBlocking Assignm

27、ents Blocking(阻塞)赋值语句顺序执行 Nonblocking(非阻塞)赋值语句并发执行对于组合逻辑块描述,建议采用阻塞赋值语句;对于时序块描述,建议采用非阻塞赋值语句。,Coding for Synthesis,Coding for Synthesis,Coding for Synthesis,4 ifelse 及其嵌套结构与case语句 尽量少用嵌套的ifelse结构;级联的二选一开关采用case、casex、casez结构 多路选择开关,Coding for Synthesis,Coding for Synthesis,4 FSM描述Mealy机NS=f(PS,INPUT);

28、OUTPUT=h(PS,INPUT);posedge Clk:PS=NS;,Coding for Synthesis,描述方式:组合块:always(INPUT or PS)begin NS=f(PS,INPUT);OUTPUT=h(PS,INPUT);end时序块:,Partitioning for Synthesis,Objective Better Synthesis Results Faster Compile Runtimes Ability to Use Simple Strategy to meet Timing Constraints Optimal Design,Partit

29、ioning for Synthesis,GuidelinesRegister all output signals of the module Separate modules that have different design goals Complete combinational logic paths in a single module,and specially avoid glue logic Considering resource sharing Separate asychronous logic from synchronous logic Separate bloc

30、ks controlled by different clocksSeparate memory from random logic,Partitioning for Synthesis,Register all output signals of the module,Partitioning for Synthesis,Separate modules that have different design goals,Partitioning for Synthesis,combinational logic paths in a single module,Partitioning for Synthesis,Partitioning for Synthesis,Partitioning for Synthesis,FSM PartitionObjective:High performanceMethod:Cascade partitionMaster-Slave Partition,Partitioning for Synthesis,Partitioning for Synthesis,Partitioning for Synthesis,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号