首页 > > > verilog黄金参考指南中文版.pdf

verilog黄金参考指南中文版.pdf

verilog黄金参考指南中文版.pdf

上传者: wanghao198901 2013-12-08 评分1 评论0 下载0 收藏10 阅读量622 暂无简介 简介 举报

简介:本文档为《verilog黄金参考指南中文版pdf》,可适用于硬件技术领域,主题内容包含广州周立功单片机发展有限公司Tel:()Fax:http:wwwzlgmcucomVerilog黄金参考指南V年月版权Doulos保留所有权力本刊物符等。

广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925 http://www.zlgmcu.com - 1 - Verilog黄金参考指南 V1.0 1996年 8月 版权 1996 Doulos 保留所有权力 本刊物的任何部分在得到 DOULOS 的书面许可前都不能通过包括电子 机械 影印 录像或其他任 何形式或任何方式复制 保存在搜索系统或发布 在英国和北爱尔兰印刷 Verilog-XLTM是商标 Verilog是 Cadence Design System Inc的注册商标 DOULOS Church Hatch, 22 Market Place, Ringwood. Hampshire. BH24 1AW England. Tel (+44) (0)1425 471223 Fax (+44) (0)1425 471573 Email info@doulos.co.uk URL http://www.doulos.co.uk 广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925 http://www.zlgmcu.com - 2 - 序言 .............................................................................................................................. 4 指南的使用 ................................................................................................................................. 4 索引............................................................................................................................................ 4 用于定义 Verilog语法的记号说明 ............................................................................................... 4 Verilog的简单介绍 ....................................................................................................... 5 背景............................................................................................................................................ 5 语言............................................................................................................................................ 5 编译............................................................................................................................................ 6 模块结构..................................................................................................................................... 6 语句............................................................................................................................................ 7 按字母顺序参考的部分................................................................................................. 9 Always........................................................................................................................................ 9 Begin........................................................................................................................................ 10 Case......................................................................................................................................... 12 编码标准................................................................................................................................... 13 注释.......................................................................................................................................... 14 连续赋值................................................................................................................................... 15 Defparam ................................................................................................................................. 16 Delay........................................................................................................................................ 17 设计流程................................................................................................................................... 18 Disable ..................................................................................................................................... 18 错误.......................................................................................................................................... 19 事件.......................................................................................................................................... 20 表达式 ...................................................................................................................................... 21 For............................................................................................................................................ 22 Force........................................................................................................................................ 23 Forever..................................................................................................................................... 24 Fork.......................................................................................................................................... 25 函数.......................................................................................................................................... 26 函数调用................................................................................................................................... 27 门 ............................................................................................................................................. 27 IEEE1364................................................................................................................................. 30 If ............................................................................................................................................... 31 Initial......................................................................................................................................... 32 实例化 ...................................................................................................................................... 33 模块.......................................................................................................................................... 35 名字.......................................................................................................................................... 37 线网.......................................................................................................................................... 38 数字.......................................................................................................................................... 41 运算符 ...................................................................................................................................... 43 参数.......................................................................................................................................... 44 PATHPULSE$ .......................................................................................................................... 46 端口.......................................................................................................................................... 47 过程赋值................................................................................................................................... 48 广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925 http://www.zlgmcu.com - 3 - 过程连续赋值 ........................................................................................................................... 50 编程语言接口 ........................................................................................................................... 51 寄存器 ...................................................................................................................................... 51 Repeat ..................................................................................................................................... 53 保留字 ...................................................................................................................................... 53 Specify ..................................................................................................................................... 54 Specparam............................................................................................................................... 57 语句.......................................................................................................................................... 57 强度.......................................................................................................................................... 58 字符串 ...................................................................................................................................... 60 任务.......................................................................................................................................... 61 任务使能................................................................................................................................... 64 定时控制................................................................................................................................... 65 用户定义的原语 ........................................................................................................................ 67 While ........................................................................................................................................ 70 编译器伪指令 ............................................................................................................. 71 编译器伪指令 ........................................................................................................................... 71 `define ...................................................................................................................................... 72 `ifdef ......................................................................................................................................... 74 `timescale................................................................................................................................. 74 系统任务和函数.......................................................................................................... 76 系统任务和函数 ........................................................................................................................ 76 $display和$write...................................................................................................................... 81 $fopen和$fclose ...................................................................................................................... 82 $monitor等............................................................................................................................... 83 $readmemb和$readmemh ...................................................................................................... 84 $strobe ..................................................................................................................................... 85 $timeformat .............................................................................................................................. 86 随机建模................................................................................................................................... 86 定时检查................................................................................................................................... 89 值改变转储 ............................................................................................................................... 91 命令行选项 ................................................................................................................. 93 命令行选项 ............................................................................................................................... 93 广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925 http://www.zlgmcu.com - 4 - 序言 Verilog 黄金参考指南是 Verilog 硬件描述语言及其语法 语义 合并以及将它应用到硬件设计的一个 简明的快速参考指南 Verilog黄金参考指南并不是要代替 IEEE的标准 Verilog语言参考手册 它不像 IEEE的标准手册提供 了 Verilog完整 正式的描述 相反 黄金参考指南以一种方便的参考格式解答了在 Verilog的实践应用过 程中经常遇到的问题 Verilog黄金参考指南也不想成为介绍性的指南 这里所提出的信息是一种扼要的参考格式 而不是学 习像 Verilog这种复杂的主题所必要的渐进和共鸣方式 但必须承认的是已经熟悉计算机语言的人希望将这 个参考指南作为 Verilog的课本 因此在开始本指南就会对这个主题进行一个简单的非正式介绍 Verilog 黄金参考指南的主要特征是它包含了从许多 Verilog 项目中积聚起来的大量实践知识 指南不 仅提供方便的语法参考 很多类似的书也有 还对最常见的语言错误提出警告 在代码不能编译的时候给 出线索指出要看什么地方 警告你注意合并问题并对改善你的编码形式提出建议 Verilog黄金参考指南是为了给Doulos的系列Verilog训练课程增值 也是HDL PaceMaker Doulos Verilog计算机基础训练包的补充 指南的使用 本指南的主体被分成 3个主要部分 每个部分都按字母顺序组织 每一部分都以每页顶部的关键字词 条作为索引 通常 你只要快速翻阅指南查找相应的关键字词条的就可以找到想要的信息 如果找不到 也可以用最后的完整索引查找 本指南的很多信息都围绕 Verilog的句法组织 但也有另外一些有关编码标准 设计流程 错误 保留 字以及在正文按字母顺序参考部分后面的编译器伪指令 系统任务和函数以及命令行选项等特殊的部分 如果你是 Verilog的新手 请先阅读次页的 Verilog简单介绍 索引 粗体的索引条目在指南的主体有对应的页 剩下的索引条目按重要性的顺序在字符参考部分的页参考 后面 用于定义 Verilog语法的记号说明 在任何可能的时候 语法定义要写得和例子相似 但有需要引入一些额外的记号 简单地来说 方括 号[ ]包含可选的项目 三个点号…表示重复 花括号{ }包含的是注释 斜体表示语法该部分在别处定义 记号的完整描述如下 包含注释的花括号{ }所不是被定义的 Verilog 语法的一部分 但它向你提供了有关语法定义的补充信 息 粗体的花括号{ }是 Verilog句法的一部分 连接运算符 包含在方括号[ ]中的语法是可选的 粗体的方括号是[ ]Verilog语法的一部分 矢量范围 位和部分选 择 存储器元素 …表示前面的项目或行的重复 0次或者多次 或者表示一个列表 例如 Item…表示 Item重复 0次或多次 ,…表示在用逗号分隔的列表重复 例如 A,B,C 列表中至少有一个项目 列表的结尾没有,号 小写的字是保留字 是 Verilog语言的组成部分 例如 module 以大写字母开头的字 不是斜体 是 Verilog的标识符 即用户定义的名字 它们都不是保留的标识符 例如 InstanceName 斜体的字是句法范畴 即在别处完整给出句法名字的定义 句法范畴可以在相同的页里定义 也可以 在独立的页定义 还可以在下面定义的其中一个特殊范畴中定义 广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925 http://www.zlgmcu.com - 5 - 斜体=表示在同一页定义和使用的句法范畴 特殊的语法范畴 MinTypMaxExpression以 Expression定义 UnsignedNumber以 Number定义 SomethingExpression=Expression 其中 Something 给出有关表达式的含意信息 例如 ConstantExpression ConstantMinTypMaxExpression Verilog的简单介绍 下面向不懂 Verilog语言的读者在技术上简要介绍一下 Verilog 背景 Verilog 硬件描述语言 HDL 是描述电子电路行为和结构的一种语言 是一种 IEEE 标准 IEEE Std.1364-1995 Verilog用于模拟从随机和纯行为到门级和开关级的抽象范围等层次的数字电子电路功能 也用于从许 多抽象 寄存器传输级 描述合并 即自动产生 门级描述 Verilog一般用于支持高层次的设计 或基于 语言的设计 其中电子设计在用自动合并工具进行详细设计前要通过高层次的完全抽象仿真来检验 Verilog也广泛应用于 IC的门级检验 包括仿真 故障仿真和定时检验 Verilog最初是在 1984年由Gateway Design Automation公司开发 Verilog-XL仿真器的时候一起开发 出来 1989年 Cadence Design Systems公司并购 Gateway公司 同时拥有对 Verilog语言和 Verilog-XL 仿真器的权力 1990 年 Cadence 将 Verilog 语言 不是 Verilog-XL 放到公共领域 为了使 Verilog 语 言通过 IEEE标准化过程 一个非赢利性组织 Open Verilog International OVI 将它不断推进 结果在 1995 年 Verilog成为一个 IEEE标准 此后 OVI仍继续不断维护和开发这种语言 语言 在本部分和指南剩下的部分 以大写字母开头的斜体字都是技术术语 都可以在本指南的主体中找到 硬件设计的层次部分在 Verilog 中用模块 Module 描述 模块定义了硬件单元的接口 即输入和输 出 及其内部结构或行为 大量的原语或者门 Gates 都内置在 Verilog语言内 它们表示基本的逻辑门 例如 and or 另 外 还可以定义用户定义的原语 User Defined Primitives UDPs 电子电路的结构通过在高层模块内对模块和原语 UDPs和门 举实例 Instances 来描述 而且实 例之间通过线网 Nets 连接 线网表示一个电气连接 一条线路或总线 端口 Port 连接列表用于将 线网连接到模块的端口或者连接到原语的实例 其中一个端口表示一个管脚 寄存器 Registers 见下面 也可以连接到实例的输入端口 只能连接到输入端口 线网 和寄存器 的值由逻辑值 0 1 X 未知或未初始化的 和 Z 高阻或悬空 组成 除了逻辑 值外 线网还有强度 Strength 值 强度广泛地用于开关级模型以及解释网络有超过一个驱动器的情况 电子电路的行为是用 Initial和 Aways结构以及连续赋值 Continuous Assignments 描述 这些结构 以及 UDPs和门表示设计的层次树的叶子 每个 Initial Always 连续赋值 UDP和门实例相对于所有其 他结构是同时执行的 Initial或 Always内的语句 Statements 在很多方面上都和软件编程语言的语句相 似 它们在用定时控制 Timing Controls 规定的时间例如延迟以及用 仿真 事件控制触发执行 语句 在 Begin-End 块顺序地执行 在 Fork-Join 块并行地执行 连续赋值语句修改线网的值 Initial 和 Aways 修改寄存器的值 Initial 或 Always 可以分解成有给定变量的指定的任务 Tasks 和函数 Functions Verilog语言还有大量内置的系统任务 System Tasks 和函数 Functions 编程语言接口 Programming Language Interface PLI 是 Verilog 语言的一个组成部分 它提供了一种和调用系统任务和函数相同的 方法调用以 C写的函数 广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925 http://www.zlgmcu.com - 6 - 编译 Verilog 源代码通常输入到计算机的一个或多个文本文件中 然后 这些文本文件被提交到 Verilog 编 译器或解释器 编译用于仿真或合并的数据文件 有时候仿真在编译后立即进行 不创建中间的数据文件 模块结构 module M (P1, P2, P3, P4); input P1, P2; output [7:0] P3; inout P4; reg [7:0] R1, M1[1:1024]; wire W1, W2, W3, W4; parameter C1 = "This is a string"; initial begin : BlockName // 语句 end always begin // 语句 end // 连续赋值... assign W1 = Expression; wire (Strong1, Weak0) [3:0] #(2,3) W2 = Expression; // 模块实例... COMP U1 (W3, W4); COMP U2 (.P1(W3), .P2(W4)); task T1; input A1; inout A2; output A3; begin // 语句 end endtask function [7:0] F1; input A1; begin 广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925 http://www.zlgmcu.com - 7 - // 语句 F1 = Expression; end endfunction endmodule 语句 #delay wait (Expression) @(A or B or C) @(posedge Clk) Reg = Expression; Reg <= Expression; VectorReg[Bit] = Expression; VectorReg[MSB:LSB] = Expression; Memory[Address] = Expression; assign Reg = Expression deassign Reg; TaskEnable(...); disable TaskOrBlock; -> EventName; if (Condition) ... else if (Condition) ... else ... case (Selection) Choice1 : ... Choice2, Choice3 : ... default : ... endcase for (I=0; I<MAX; I=I+1) ... 广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925 http://www.zlgmcu.com - 8 - repeat (8) ... while (Condition) ... forever ... 这个快速参考语法摘要不遵从本指南剩余部分所使用的符号惯例 广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925 http://www.zlgmcu.com - 9 - Verilog黄金参考指南 按字母顺序参考的部分 Always 包含一条或多条语句 过程赋值 任务使能 if case和循环语句 这些语句在仿真运行中重复执行 由定时控制管理 语法 always Statement 在何处使用 module-<HERE>-endmodule 规则 • always只能赋值寄存器 reg integer real time realtime类型 • 启动仿真时 所有 always都开始执行 而且在仿真过程中持续执行 当到达 always的最后一条 语句时 程序返回到 always的第一条语句继续执行 注意 • 如果 Always包含超过一条语句 语句要包含在 begin-end或 fork-join块中 • 没有定时控制的 always将永远循环 合并 always是其中一条很有用的 Verilog合并语句 但 always通常是不合并的 为了使结果最好 代码应 受到下面其中一种模板的限制 always @(Inputs) // 所有输入 begin ... // 组合逻辑 end always @(Inputs) // 所有输入 if (Enable) begin ... // 锁存器的动作 end always @(posedge Clock) // 只是时钟 begin ... // 同步的动作 end always @(posedge Clock or negedge Reset) 广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925 http://www.zlgmcu.com - 10 - // 只是时钟和复位 begin if (!Reset) // 测试异步复位的有效激活电平 ... // 异步行动 else ... // 同步行动 end // 给出触发器+逻辑 举例 下面的例子是一个寄存器传送级 always always @(posedge Clock or negedge Reset) begin if (!Reset) // 异步复位 Count <= 0; else if (!Load) // 同步载入 Count <= Data; else Count <= Count + 1; end 接下来的例子是描述组合逻辑的 always always @(A or B or C or D) begin R = {A, B, C, D} F = 0; begin : Loop integer I; for (I = 0; I < 4; I = I + 1) if (R[I]) begin F = I; disable Loop; end end // 循环 end Begin 用于组合语句 使它们按顺序执行 Verilog 的语法通常要求例如在 always 中只有一条语句 如果需 要超过一条语句 语句就要被包含在一个 begin-end块内 语法 begin [: Label [ Declarations...]] 广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925 http://www.zlgmcu.com - 11 - Statements... end Declaration = {either} Register Parameter Event 在何处使用 见语句 规则 • begin-end块必须包含至少一条语句 • Begin-end 块内的语句按顺序执行 定时控制与前一语句有关 执行完 begin-end 块的最后一条 语句后 整个 begin-end块的执行也完成 • Begin-end和 fork-join块可在自己内部或相互之间嵌套 • 如果 begin-end块要包含局部声明 必须先命名这个 begin-end块 即必须有标记 • 如果要禁能一个 begin-end块 必须先命名这个块 注意 仿真中 Verilog LRM允许 begin-end块被交叉执行 这就是说 即使 begin-end块包含的两个相邻语 句之间没有定时控制 仿真器也可以选择执行另一个过程的部分 例如 另一个 always 的语句 这就是 Verilog语言有不确定性的原因 提示 • 在没有局部声明和块不会被禁能的情况下也可以给 begin-end块加上标记 增加其可读性 • 不会在别处使用的寄存器可以用局部声明来声明 这使声明更明确 举例 initial begin : GenerateInputs integer I; for (I = 0; I < 8; I = I + 1) #Period {A, B, C} = I; end initial begin Load = 0; // 时刻 0 Enable = 0; Reset = 0; #10 Reset = 1; // 时刻 10 #25 Enable = 1; // 时刻 35 #100 Load = 1; // 时刻 135 end 广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925 http://www.zlgmcu.com - 12 - Case 一个语句基于 case表达式的值条件地执行最多一个分支 语法 CaseKeyword ( Expression) Expression,... : Statement {表达式可以是变量} Expression,... : Statement ... {任意数量的情况} [default [:] Statement] {不一定在结尾} endcase CaseKeyword = {either} case casex casez 在何处使用 见语句 规则 • casex语句的 X和 Z以及 casez语句的 Z表示 无关 • 最多可以有一条 default语句 当没有标记表达式符合 case表达式时执行 default语句 标记 是在冒号左面的一个表达式或是用逗号分隔的表达式列表 也可以是保留字 default default后面 可以有或者没有冒号 • 如果标记是用逗号分隔的两个或多个表达式列表 只要 case 表达式符合其中一个标记表达式就 认为标记就符合 case表达式 • 如果没有标记表达式符合 case表达式而且没有 default语句 case语句不起作用 注意 • 如果特殊的标记要执行超过一条语句 语句必须包含在 begin-end或 fork-join块内 • 如果相应的标记是第一个符合 case 表达式的标记 case 只会执行这个分支 Case 的标记不需 要互斥 因此当相同的标记被错误地重复使用时 Verilog编译器不会

该用户的其他资料

  • 名称/格式
  • 评分
  • 下载次数
  • 资料大小
  • 上传时间

用户评论

0/200
    暂无评论
上传我的资料

相关资料

资料评价:

/ 93
所需积分:1 立即下载
返回
顶部
举报
资料
关闭

温馨提示

感谢您对爱问共享资料的支持,精彩活动将尽快为您呈现,敬请期待!