verilog 简单语法 夏宇闻 语法入门

上传人:ji****72 文档编号:116888366 上传时间:2019-11-17 格式:PPT 页数:62 大小:193.50KB
返回 下载 相关 举报
verilog 简单语法 夏宇闻 语法入门_第1页
第1页 / 共62页
verilog 简单语法 夏宇闻 语法入门_第2页
第2页 / 共62页
verilog 简单语法 夏宇闻 语法入门_第3页
第3页 / 共62页
verilog 简单语法 夏宇闻 语法入门_第4页
第4页 / 共62页
verilog 简单语法 夏宇闻 语法入门_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《verilog 简单语法 夏宇闻 语法入门》由会员分享,可在线阅读,更多相关《verilog 简单语法 夏宇闻 语法入门(62页珍藏版)》请在金锄头文库上搜索。

1、<p>&lt;p&gt;&amp;lt;p&amp;gt;&amp;amp;lt;p&amp;amp;gt;Verilog HDL Verilog HDL 基础语法入门基础语法入门 第一讲 课程简介 4目的: 4简单介绍Verilog HDL语言和仿真工具 4介绍讲课计划 4介绍如何不断地学习新的有关知识 讲座中关于Verilog HDL的主要内容 讲课内容主要包括: &amp;amp;amp;#167;Verilog 的应用 &amp;amp;amp;#167;Verilog 语言的组成部件 &amp;amp

2、;amp;#167;结构级的建模与仿真 &amp;amp;amp;#167;行为级的建模与仿真 &amp;amp;amp;#167;延迟参数的表示 &amp;amp;amp;#167;Verilog 的测试平台: l 怎样产生激励信号和控制信号 l 输出响应的产生、记录和验证 &amp;amp;amp;#167;任务和函数 &amp;amp;amp;#167;用户定义的元器件(primitives) &amp;amp;amp;#167;可综合风格的Verilog 建模 讲座中关于Verilog仿真工具的主要内容 讲课内容主要包括: &am

3、p;amp;amp;#167;如何对所做的设计进行编译和仿真 &amp;amp;amp;#167;如何使用元器件库 &amp;amp;amp;#167;如何用Verilog-XL命令行界面调试代码 &amp;amp;amp;#167;如何用图形用户界面(GUI) &amp;amp;amp;#167;延迟的计算和标记 &amp;amp;amp;#167;仿真性能建模 &amp;amp;amp;#167;循环多次仿真 目的: &amp;amp;amp;#167; 了解用HDL语言设计数字逻辑的优点 &amp;amp;amp;#167;

4、 了解Verilog 主要应用领域 &amp;amp;amp;#167; 了解Verilog 的发展历史 &amp;amp;amp;#167; 了解电路系统的不同层次的Verilog抽象 第二讲:Verilog 的应用 Verilog HDL是一种用于数字逻辑电路设计的语言: - 用Verilog HDL描述的电路设计就是该电路 的 Verilog HDL模型。 - Verilog HDL 既是一种行为描述的语言也 是一种结构描述的语言。 这也就是说,既可以用电路的功能描述也可以用元器件和它们之间的连接来建立所设计电路的 Verilog HDL模型。Verilog模型可以是实际

5、电路的不同级别的抽象。这些抽象的级别和它 们对应的模型类型共有以下五种: Verilog 的应用 Verilog 的应用 ? 系统级(system): 用高级语言结构实现设计模块的 外部性能的模 ? 算法级(algorithmic): 用高级语言结构实现设计 算法的模型。 ? RTL级(Register Transfer Level): 描述数据在寄 存器之间流动和如何处理这些数据的模型。 ? 门级(gate-level): 描述逻辑门以及逻辑门之间的 连接的模型。 ? 开关级(switch-level): 描述器件中三极管和储存 节点以及它们之间连接的模型。 Verilog 的应用 一个复杂

6、电路的完整Verilog HDL模型是由若 个 Verilog HDL 模块构成的,每一个模块又 可以由若干个子模块构成。 利用Verilog HDL语言结构所提供的这种功能就可以 构造一个模块间的清晰层次结构来描述极其复杂的 大型设计。 Verilog HDL行为描述语言作为一种结构化和 过程性的语言,其语法结构非常适合于算法 级和RTL级的模型设计。这种行为描述语言具 有以下八项功能: Verilog 的应用 ? 可描述顺序执行或并行执行的程序结构。 ? 用延迟表达式或事件表达式来明确地控制过程的启 动时间。 ? 通过命名的事件来触发其它过程里的激活行为或停 止行为。 ? 提供了条件、if

7、-else、case、循环程序结构。 ? 提供了可带参数且非零延续时间的任务(task)程序 结构。 ? 提供了可定义新的操作符的函数结构(function)。 Verilog 的应用 &amp;amp;amp;#167; 提供了用于建立表达式的算术运算符、逻辑运算符 、位运算符。 &amp;amp;amp;#167; Verilog HDL语言作为一种结构化的语言也非常 适合于门级和开关级的模型设计。 &amp;amp;amp;#167; Verilog HDL的构造性语句可以精确地建立信号 的模型。这是因为在Verilog HDL中,提供了延迟和 输出强度的原语来建

8、立精确程度很高的信号模型。 信号值可以有不同的的强度,可以通过设定宽范围 的模糊值来降低不确定条件的影响。 Verilog 的应用 Verilog HDL作为一种高级的硬件描述编程语言,有 着类似C语言的风格。其中有许多语句如:if语句、 case语句等和C语言中的对应语句十分相似。如果读 者已经掌握C语言编程的基础,那么学习 Verilog HDL并不困难,我们只要对Verilog HDL某些语句的 特殊方面着重理解,并加强上机练习就能很好地掌 握它,利用它的强大功能来设计复杂的数字逻辑电 路。下面我们将对Verilog HDL中的基本语法逐一加 以介绍。 模块的抽象 技术指标: 用文字表示

9、 用算法表示 用高级行为的Verilog模块表 示 RTL/功能级: 用可综合的Verilog模块表示 门级/结构级: 用实例引用的Verilog模块表 示 版图布局/物理级: 用几何形状来表示 行为综合 逻辑综合 综合前仿真 综合后仿真 布局布线 第三讲.简单的 Verilog HDL 模块 目的: &amp;amp;amp;#167; 通过简单的例子了解Verilog模块的基本构成 &amp;amp;amp;#167; 了解Verilog模块的层次结构和行为模块 &amp;amp;amp;#167; 了解Verilog模块的测试 简单的 Verilog HDL 模块

10、 下面先介绍几个简单的Verilog HDL程序,然后从中分 析Verilog HDL程序的特性。 例2.1.1: module adder ( count,sum,a,b,cin ); input 2:0 a,b; input cin; output count; output 2:0 sum; assign count,sum=a+b+cin; endmodule 这个例子描述了一个三位的加法器。从例子中可以 看出整个Verilog HDL程序是嵌套在module和 endmodule声明语句里的。 简单的 Verilog HDL 模块 例2.1.2: module compare ( e

11、qual,a,b ); output equal; /声明输出信号equal input 1:0 a,b; /声明输入信号a,b assign equal=(a=b)?1:0; /*如果两个输入信号相等,输出为1。否则为0*/ endmodule 这个程序描述了一个比较器.在这个程序中 ,/*/和/.表示注释部分,注释 只是为了方便程序员理解程序,对编译是不起作用 的。 简单的 Verilog HDL 模块 例2.1.3: module trist2(out,in,enable); output out; input in, enable; bufif1 mybuf(out,in,enable

12、); endmodule 这个程序描述了一个三态驱动器。程序通过调用一个 实例元件bufif1来实现其功能。 简单的 Verilog HDL 模块 例2.1.4:module trist1(out,in,enable); output out; input in, enable; mytri tri_inst(out,in,enable); endmodule module mytri(out,in,enable); output out; input in, enable; assign out = enable? In : &amp;amp;amp;#39;bz; endmodul

13、e 简单的 Verilog HDL 模块 上述程序例子通过另一种方法描述了一个三 态门。 在这个例子中存在着两个模块:模块trist1 调用模块 mytri 的实例元件 tri_inst。 模块 trist1 是上层模块。模块 mytri 则被 称为子模块。 通过这种结构性模块构造可构成特大型模块 。 简单的 Verilog HDL 模块 通过上面的例子可以看到: ? Verilog HDL程序是由模块构成的。模块是可以进行层次嵌套的。 正因为如此,才可以将大型的数字电路设计分割成不同的小模块来实 现特定的功能,最后通过顶层模块调用子模块来实现整体功能。 ? 每个模块要进行端口定义,并说明输入

14、输出口,然后对模块的功能进 行行为逻辑描述。 ? Verilog HDL程序的书写格式自由,一行可以写几个语句,一个语句 也可以分写多行。 ? 除了endmodule语句外,每个语句和数据定义的最后必须有分号 ? 可以用/*.*/和/.对Verilog HDL程序的任何部分作注释。 一个好的,有使用价值的源程序都应当加上必要的注释,以增强程序 的可读性和可维护性。 模块的结构 Verilog的基本设计单元是“模块”(block)。一个模 块是由两部分组成的:一)描述接口;二)描述逻 辑功能,即定义输入是如何影响输出的。下面举例 说明: 模块的结构 从上面的例子可以看出: - Verilog模块

15、结构完全嵌在module和 endmodule声明语句之间; - 每个Verilog程序包括四个主要部分 :端口定义、I/O说明、内部信号声明 、功能定义。 第四讲 模块的测试 如何检查上述例子其功能是否正确? &amp;amp;amp;#167; 需要有测试激励信号输入到被测模块 &amp;amp;amp;#167; 需要记录被测模块的输出信号 &amp;amp;amp;#167; 需要把用功能和行为描述的Verilog模块 转换为门级电路互连的电路结构(综合) 。 &amp;amp;amp;#167; 需要对已经转换为门级电路结构的逻辑 进行测试(门级电路仿

16、真)。 &amp;amp;amp;#167; 需要对布局布线后的电路结构进行测试。 (布局布线后仿真)。 模块的测试 被测模块 激励和控 制信号 输出响应 和验证 模块的测试 测试模块常见的形式: module t; reg ; /被测模块输入/输出变量类型定义 wire; /被测模块输入/输出变量类型定义 initial begin ; ; ; end /产生测试信号 always #delay begin ; end /产生测试信号 Testedmd m(.in1(ina), .in2(inb), .out1(outa), .out2(outb) ); /被测模块的实例引用 ini

17、tial begin .; .; . end /记录输出和响应 endmodule 模块的测试 测试模块中常用的过程块: initial always 所有的过程块都 在0时刻同时启 动;它们是并行 的,在模块中不 分前后。 &amp;amp;amp;#167; initial块 只 执行一次。 &amp;amp;amp;#167; always块 只 要符合触发条件 可以循环执行。 模块的测试 如何描述激励信号: module t; reg a, b, sel; wire out; /引用多路器实例 mux2_m (out, a, b, sel); /加入激励信号 initi

18、al begin a=0; b=1; sel=0; #10 b=0; #10 b=1; sel=1; #10 a=1; #10 $stop; end 模块的测试 如何观察被测模块的响应: &amp;amp;amp;#167; 在initial 块中,用系统任务$time 和 $monitor &amp;amp;amp;#167; $time 返回当前的仿真时刻 &amp;amp;amp;#167; $monitor 只要在其变量列表中有某一个或某几个 变 量值发生变化,便在仿真单位时间结束时显示其变 量列表中所有变量的值。 例: initial begin $monit

19、or ($time, , “out=%b a=%b sel=%b”, out,a,b,sel); end 模块的测试 如何把被测模块的输出变化记录到数据库文件中? (文件格式为VCD,大多数的波形显示工具都能读取该格式) 可用以下七个系统任务: &amp;amp;amp;#167; $dumpfile(“file.dump”); /打开记录数据变化的数据文件 &amp;amp;amp;#167; $dumpvars(); /选择需要记录的变量 &amp;amp;amp;#167; $dumpflush; /把记录在数据文件中的资料转送到硬盘保存 &amp;amp;amp;#167; $dumpoff; /停止记录数据变化 &amp;amp;amp;#167; $dumpon; /重新开始记录数据变化 &amp;amp;amp;#167; $dumplimit(); /规定数据文件的大小(字节) &amp;amp;amp;#167; $dumpall; /记录所有指定信号的变化值到数据文件中 模块的测试 如何把被测模块的响应变化&amp;amp;lt;/p&amp;amp;gt;&amp;lt;/p&amp;gt;&lt;/p&gt;</p>

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号