所谓不同的抽象类别,实际上是指同一个物理电路,可以在不同层次上用Verilog语言来描述。如果只从行为功能的角度来描述某一电路模块,就称作行为模块。如果从电路结构的角度来描述该电路模块,就称作结构模块。根据抽象的级别将Verilog的模块分为5种不同的等级:

1)系统级 2)算法级 3)RTL级(register-transfer-level)4)门级 5)开关级。

对于数字系统的逻辑设计工程师而言:熟练地掌握门级、RTL级、算法级、系统级的描述是非常重要的。

对于电路基本元部件的设计者而言,则需要掌握用户自定义原语(UDP)和开关级的描述。

Verilog中有关门类型的关键字有26个,这里简单介绍其中8种:

and-与门;nand-与非门;or-或门;nor-或非门;xor-异或门;xnor-异或非门;buf-缓冲器;not-非门。

用户定义原语:

用户定义原语是从英语User Defined Primitive直接翻译过来的,简称UDP。利用用户定义原语可以自己定义自己设计的基本逻辑器件的功能,由于UDP是用查表的方法来确定输出的,在用仿真器进行仿真时,对他的处理较对一般用户编写的模块和组合逻辑快得多。UDP的定义和一般模块类似,只是不用module而是改用primitive作为关键词,不用endmodule而是endprimitive关键词结束。

语法:primitive 元件名(输出端口,输入端口1,输入端口2,....);      //书上没有分号?

output   输出端口名;

input     输入端口1,输入端口2....;

reg    输出端口;

initial

begin 输出端口寄存器或者时序逻辑内部寄存器初始化0; end

table

//输入1  输入2  输入3  ... :输出

逻辑1  逻辑2  逻辑3  ... :逻辑值;

逻辑1  逻辑2  逻辑3  ... :逻辑值;

逻辑1  逻辑2  逻辑3  ... :逻辑值;

...          .... ... ... ..... ...........;

endtable

endprimitive

注意:

1)UDP只能有一个输出量,而且必须是端口说明的第一项;

2)UDP可以有多个输入端,最多允许有10个输入端;

3)UDP所有端口变量必须是标量,即必须是1位的;

4)在UDP的逻辑表中只允许出现0,1,x三种逻辑值,高阻状态z不允许出现。

5)只有输出端可以定义为reg寄存器类型变量;

6)initial语句用于为时序电路内部寄存器赋初值,只允许赋0,1,x的三种逻辑值,默认值为X。

Verilog HDL模型的不同抽象级别的更多相关文章

  1. 【转】Verilog HDL常用建模方式——《Verilog与数字ASIC设计基础》读书笔记(四)

    Verilog HDL常用建模方式——<Verilog与数字ASIC设计基础>读书笔记(四) Verilog HDL的基本功能之一是描述可综合的硬件逻辑电路.所谓综合(Synthesis) ...

  2. 基于Verilog HDL整数乘法器设计与仿真验证

    基于Verilog HDL整数乘法器设计与仿真验证 1.预备知识 整数分为短整数,中整数,长整数,本文只涉及到短整数.短整数:占用一个字节空间,8位,其中最高位为符号位(最高位为1表示为负数,最高位为 ...

  3. Verilog HDL基础语法讲解之模块代码基本结构

    Verilog HDL基础语法讲解之模块代码基本结构   本章主要讲解Verilog基础语法的内容,文章以一个最简单的例子"二选一多路器"来引入一个最简单的Verilog设计文件的 ...

  4. 关于Verilog HDL的一些技巧、易错、易忘点(不定期更新)

    本文记录一些关于Verilog HDL的一些技巧.易错.易忘点等(主要是语法上),一方面是方便自己忘记语法时进行查阅翻看,另一方面是分享给大家,如果有错的话,希望大家能够评论指出. 关键词: ·技巧篇 ...

  5. 【黑金教程笔记之003】【建模篇】akuei2的Verilog hdl心路

    Verilog hdl不是“编程”是“建模” Verilog hdl语言是一种富有“形状”的语言. 如果着手以“建模”去理解Verilog hdl语言,以“形状”去完成Verilog hdl语言的设计 ...

  6. No.1 Verilog HDL简介

       硬件描述语言HDL(Hardware Description Language)是一种用形式化方法来描述数字电路和系统的语言.设计者利用HDL可以从抽象到具体逐层描述自己的设计思想,用一系列的分 ...

  7. 关于初次使用Verilog HDL语言需要懂的基本语法

    关于初次使用Verilog HDL语言需要懂的基本语法 1.常量 数字表达式全面的描述方式为:<位宽><进制><数字> 8’b10101100,表示位宽为8的二进制 ...

  8. FPGA Verilog HDL 系列实例--------步进电机驱动控制

    [连载] FPGA Verilog HDL 系列实例 Verilog HDL 之 步进电机驱动控制 步进电机的用途还是非常广泛的,目前打印机,绘图仪,机器人等等设备都以步进电机为动力核心.那么,下面我 ...

  9. Verilog HDL模块的结构

    一个设计是由一个个模块(module)构成的.一个模块的设计如下: 1.模块内容是嵌在module 和endmodule两个语句之间.每个模块实现特定的功能,模块可进行层次的嵌套,因此可以将大型的数字 ...

随机推荐

  1. 由乱序播放说开了去-数组的打乱算法Fisher–Yates Shuffle

    之前用HTML5的Audio API写了个音乐频谱效果,再之后又加了个播放列表就成了个简单的播放器,其中弄了个功能是'Shuffle'也就是一般播放器都有的列表打乱功能,或者理解为随机播放. 但我觉得 ...

  2. 干货!表达式树解析"框架"(3)

    最新设计请移步 轻量级表达式树解析框架Faller http://www.cnblogs.com/blqw/p/Faller.html 这应该是年前最后一篇了,接下来的时间就要陪陪老婆孩子了 关于表达 ...

  3. Module Zero安装

    返回<Module Zero学习目录> 使用模板创建(自动方式) 手动安装 核心(领域)层 基础设施层 展示层 这里需要抱歉的是,这里使用的博客园的Markdown语法,代码显示不是很好看 ...

  4. GitHub的使用记录

    前言: 该贴为笔者在使用GItHub中的一些使用注意,及Git的基本命令,会一直记录笔者在使用GitHub中可能产生的错误及解决方法(会一直更新中),待一些Git初使用者参考,如果有说明不详细或不对的 ...

  5. Spring学习记录(七)---表达式语言-SpEL

    SpEL---Spring Expression Language:是一个支持运行时查询和操作对象图表达式语言.使用#{...}作为定界符,为bean属性动态赋值提供了便利. ①对于普通的赋值,用Sp ...

  6. jQuery源码分析系列(35) : Ajax - jsonp的实现与原理

    ajax的核心是通过XmlHttpRequest获取非本页内容,而jsonp的核心则是动态添加<script>标签来调用服务器提供的js脚本 json核心就是:允许用户传递一个callba ...

  7. Plant Design Review Based on AnyCAD

    Plant Design Review Based on AnyCAD eryar@163.com Abstract. AVEVA Review is used to 3D model visuali ...

  8. js+css实现骰子的随机转动

    网上找的例子,然后增添了新的东西,在这里展示一下...... 效果图预览: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitio ...

  9. 【原创】机器学习之PageRank算法应用与C#实现(1)算法介绍

    考虑到知识的复杂性,连续性,将本算法及应用分为3篇文章,请关注,将在本月逐步发表. 1.机器学习之PageRank算法应用与C#实现(1)算法介绍 2.机器学习之PageRank算法应用与C#实现(2 ...

  10. MyEclipse的项目中把 java EE 5 Libraries 删掉后怎么重新导入

    myeclipse中鼠标右击项目->properties->java Build Path=>Libraries=>Add Library...=>选择MyEclipse ...