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

Verilog HDL的基本功能之一是描述可综合的硬件逻辑电路。所谓综合(Synthesis)是指将Verilog HDL程序、原理图等设计输入翻译成由与门(and)、或门(or)、非门(not)等基本逻辑单元组成的门级连接,并根据设计目标和要求对门级逻辑连接进行优化,得到优化的门级网表文件。

  Verilog HDL主要有三种建模方式:

  4.1结构级建模

  结构级建模包括门级建模和分层建模两种情况。门级建模就是将逻辑电路图用Verilog HDL规定的文本语言表示出来,即调用Verilog HDL中内置的基本门级元件(Gate Level Primitives,门级源语)描述逻辑图中的元件以及元件之间的连接关系。分层次就是将一个数字系统划分为多个组成模块,再分别对每个模块建模,然后将这些模块组合成一个总模块,完成所需的功能。

Verilog HDL中内置了12个基本门级元件模型,门级元件的输出、输入必须为网类型的变量。当使用这些元件逻辑仿真时,仿真软件会根据程序描述给每个元件中变量分配逻辑0,逻辑1,不确定态x和高阻态z这4个值之一。

  这些门可分为:多输入门,多输出门,三态门。

  4.2数据流建模

  对于基本单元逻辑电路,使用Verilog HDL提供的门级元件模型描述电路非常方便,但随着电路复杂性的增加,当使用的逻辑门较多时,使用Verilog HDL门级描述的工作效率就很低。数据流建模的抽象级别介于门级和行为级之间,它是行为级建模的一种形式,组合电路的逻辑行为最好使用数据流建模方式。

  数据建模使用的基本语句是连续赋值语句,连续赋值语句用于对wire型变量进行赋值,它由关键词assign开始,后面跟着操作数和运算符组成的逻辑表达式。

  例如:

  wire  a,b,sel,out;  //declare four wires variables

  assign out = (a& (~b)) | (b & sel);  //a continuous assignment

  连续赋值语句的执行过程是:只要逻辑表达式右边变量的逻辑值发生变化,则等式右边表达式的值会立即被计算出来并赋给左边的变量。注意:在assign语句中,左边变量的数据类型必须是wire型。

  4.3行为级建模

  行为级建模就是以抽象的形式描述数字逻辑电路的功能和算法,在Verilog HDL 中,行为级建模主要使用由关键词initialalways定义的两种结构类型的描述语句。一个模块内部可以包含多个initial或always语句,仿真时这些语句同时执行,即与它们在模块内部排列的顺序无关,仿真都从0时刻开始执行。initial语句主要是一条面向仿真的过程语句,不能用来描述硬件电路的功能。

  在always结构型语句内部有一系列过程赋值语句,用来描述电路的行为(功能)。过程性赋值语句包括在结构型的语句内部使用的逻辑表达式、条件语句(if-else)、多路分支语句(case-endcase)和循环语句等。

  顺序语句块就是由块标识符begin...end保卫界定的一组行为描述语句,其作用是:相当于给块中的这组行为描述语句进行打包处理,使之在形式上与一条语句一致。在这个模块内部的各条语句按照书写的先后顺序依次执行。在Verilog HDL中,可以给每个语句块取一个名字,方法是:在关键词begin后面加上一个冒号,之后给出名字即可。取了名字的块被称为有名块

【转】Verilog HDL常用建模方式——《Verilog与数字ASIC设计基础》读书笔记(四)的更多相关文章

  1. Verilog HDL常用综合语法

    前面已经记录了一些组成Verilog的基本组成,可以用这些基本组成来构成表达式.这一节,就来记录一下把这些表达式构成一个文件的各种行为描述语句. ①这里用Verilog基本要素进行的行为描述主要是针对 ...

  2. Verilog HDL常用的行为仿真描述语句

    一.循环语句 1.forever语句 forever语句必须写在initial模块中,主要用于产生周期性波形. 2.利用for.while循环语句完成遍历 for.while语句常用于完成遍历测试.当 ...

  3. Sublime Text 2 和 Verilog HDL

    Sublime Text 2 和 Verilog HDL Date  Fri 04 July 2014 Tags Sublime Text / Vivado Sublime Text 代码编辑器之于程 ...

  4. 【Verilog HDL】赋值语句之阻塞赋值方式与非阻塞赋值方式

    刚开始接触Verilog HDL语言时,这种硬件描述语言有一点与软件的程序设计语言直观上的最大区别大概就是这个赋值语句了(这里只是强调直观上的最大区别,事实上的最大区别并非如此). Verilog H ...

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

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

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

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

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

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

  8. Verilog HDL的程序结构及其描述

    这篇博文是写给要入门Verilog HDL及其初学者的,也算是我对Verilog  HDL学习的一个总结,主要是Verilog HDL的程序结构及其描述,如果有错,欢迎评论指出. 一.Verilog ...

  9. Verilog HDL程序设计——基本要素

    Verilog基本上熟悉了,继续整理一下Verilog的学习笔记吧.前面记载了Verilog的结构,写Verilog的结构有了,但是该怎么写呢?在写之前就得了解一下Verilog的一些基本要素了,也就 ...

随机推荐

  1. 六、Delphi10.3通过Json.Serializers单元对大量数据序列化

    一.参考我之前的博客,Delphi可以很方便的把类和结构体转换成JSON数据,但是数据量大了,就会非常之慢,1万条数据需要20秒左右.如果引用Serializers单元,那么100万数据只需要4秒左右 ...

  2. C语言中数组定义方式

    <1>前言 大家首先来思考一个问题,若是我们想要定义两个变量,求这两个数的平均数,该怎么求呢? 例如:int a = 10,b = 20 int average = (a + b) / 2 ...

  3. 浅析 golang module

    什么是 module?module 解决了什么问题? module 代表一个版本管理单元,它包括一个或者多个 packages. 一般来说,一个版本控制仓库(比如 golang.org/x/text  ...

  4. Truck History(prime)

    Truck History Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 31871   Accepted: 12427 D ...

  5. Android 使用系统自带分享功能

    way1: Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain");// setT ...

  6. jQuery学习-键盘事件

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. [ATL/WTL]_[初级]_[选择目录对话框]

    场景 1.起因是创建标准选择目录对话框时使用了 SHCreateItemFromParsingName 函数, 这个函数支持vista以上系统. 之后再winxp上运行就报错: 无法定位程序输入点 S ...

  8. Golang 写一个端口扫描器

    前话 最近痴迷于Golang这个新兴语言,因为它是强类型编译型语言,可以直接编译成三大平台的二进制执行文件,可以直接运行无需其他依赖环境.而且Golang独特的goroutine使得多线程任务执行如n ...

  9. 如何用python获取文件中的某一行——python小技巧

    很多人有的时候只需要获取文章中的固定的一行,那么我知道这一行,我需要怎么样去获取呢 可能会有人说读取这一行,如果这一行是已什么开头的就读出来, 其实还有一种办法,就是我知道文件的路径.知道我要取的行数 ...

  10. h5 和之前版本的区别

    html5和之前版本的区别就是:以前版本多采用<tr><td>等标签,对于webapp的开发不是很好把控.H5采用<div>等标签直接进行布局(且多了许多标签功能很 ...