Verilog 入门(一)(Verilog 简介)

文章目录

  • 什么是 Verilog HDL?
  • Verilog 主要能力
  • 模块
  • 时延
  • 数据流描述方式

什么是 Verilog HDL?

Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。

Verilog HDL 语言具有下述描述能力:

  • 设计的行为特性
  • 设计的数据流特性
  • 设计的结构组成
  • 包含响应监控和设计验证方面的时延和波形产生机制

所有这些都使用同一种建模语言。此外, Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。

Verilog 主要能力

  • 基本逻辑门,例如 andornand 等都内置在语言中。
  • 提供显式语言结构制定设计中的端口到端口的时延及路径时延和设计的时序检查。
  • 可采用三种不同方式或混合方式对设计建模。这些方式包括:行为描述方式——使用过程化结构建模;数据流方式——使用连续赋值语句方式建模;结构化方式——使用门和模块实例语句描述建模。
  • Verilog HDL中有两类数据类型:线网数据类型寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。
  • Verilog HDL 还具有内置逻辑函数,例如 &(按位与)和 |(按位或)。
  • 对高级编程语言结构,例如条件语句、情况语句和循环语句,语言中都可以使用。

模块

模块是 Verilog 的基本描述单位,用于描述某个设计的功能或结构及其与其他模块通信的外部端口。一个设计的结构可使用开关级原语、门级原语和用户定义的原语方式描述; 设计的数据流行为使用连续赋值语句进行描述; 时序行为使用过程结构描述。一个模块可以在另一个模块中使用。

一个模块的基本语法如下:

module module_name(port_list);Declarations:reg, wire, parameter,input, output, inout,function, task,...Statements:Initial statementAlways statementModule instantiationContinuous assignment
endmodule

时延

Verilog HDL 模型中的所有时延都根据时间单位定义。下面是带时延的连续赋值语句实例:

assign #2 Sum = A ^ B;

#2 指 2 个时间单位。使用编译指令将时间单位与物理时间相关联。这样的编译器指令需在模块描述前定义,如下所示:

` timescale 1ns/100ps

此语句说明时延时间单位为 1ns 并且时间精度为 100ps (时间精度是指所有的时延必须被限定在 0.1ns 内)。如果此编译器指令所在的模块包含上面的连续赋值语句, #2 代表 2ns。

数据流描述方式

用数据流描述方式对一个设计建模的最基本的机制就是使用连续赋值语句。在连续赋值语句中,某个值被指派给线网变量。连续赋值语句的语法为:

assign [delay] LHS_net = RHS_ expression

右边表达式使用的操作数无论何时发生变化, 右边表达式都重新计算, 并且在指定的时延后变化值被赋予左边表达式的线网变量。 时延定义了右边表达式操作数变化与赋值给左边表达式之间的持续时间。如果没有定义时延值, 缺省时延为 0。

例如,用数据流描述方式建模下图所示解码器电路模型:

在这里插入图片描述

`timescale 1ns/1ns
module Decoder2x4(A, B, EN, Z);input A, B, EN;output[3:0] Z;wire Abar, Bar;assign #1 Abar = ~ A;assign #1 Bbar = ~ B;assign #2 Z[0] = ~ (Abar & Bbar & EN);assign #2 Z[1] = ~ (Abar & B & EN);assign #2 Z[2] = ~ (A & Bar & EN);assign #2 Z[3] = ~ (A & B & EN);
endmodule

再次强调,连续赋值语句是并发执行的,也就是说各语句的执行顺序与其在描述中出现的顺序无关。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/182777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

景联文科技加入中国人工智能产业联盟(AIIA)数据委员会

近日,景联文科技加入中国人工智能产业联盟(AIIA)数据委员会,成为委员会成员单位。 中国人工智能产业发展联盟(简称AIIA)是在国家发改委、科技部、工信部、网信办指导下,由中国信息通信研究院等单…

docker stop停止一个容器

学习停止一个正在运行的容器,要求学习者参照示例将正在运行的名为firstContainer的容器停止。 相关知识 使用docker stop停止一个容器 docker stop可以用来终止一个正在运行的容器。它的命令格式如下: docker stop [OPTIONS] Container [Container .…

基于springboot家具商城系统

基于springboot家具商城系统 摘要 这个Spring Boot家具商城系统旨在通过现代化的Web应用程序技术提供一个全功能的电子商务平台。系统的核心实体是家具商品,通过RESTful API控制器提供对商品的增删改查等操作。这个系统使用了Spring Boot框架,借助其简便…

nn.TransformerEncoder的输出为NaN值的原因及解决方法

问题描述: 当使用nn.TransformerEncoder时,即如下情况: 实例化一个TransformerEncoder self.encoder_layer nn.TransformerEncoderLayer(d_modelencoder_in_dim, nheadencoder_head,dim_feedforwardencoder_ffnn_dim,batch_firstbatch_fir…

关于团队管理的一些思考

1、团队:为什么需要团队,一个人或者一群人不行吗,当一个项目需要的能力仅靠个人无法满足时,这时候就需要团队来完成,一群人和一个团队的主要区别就是团队有一个共同的目标,团队成员可以发挥自己的优势一起完…

06 C++中变量的作用域

系列文章目录 06 C中变量的作用域 目录 系列文章目录 文章目录 前言 一、局部变量 二、全局变量 三、块作用域变量 总结 前言 C中变量的作用域指的是变量可以被访问的范围,即变量在程序中存在的有效范围。不同作用域的变量具有不同的可见性和生命周期。 在…

Mac单独修改应用语言

方法1: 方法2: defaults write com.microsoft.Excel AppleLanguages ("zh-cn") defaults write com.microsoft.Word AppleLanguages ("zh-cn")参考:https://www.zhihu.com/question/24976020

红队攻防实战系列一之Cobalt Strike

他日若遂凌云志,敢笑黄巢不丈夫 本文首发于先知社区,原创作者即是本人 前言 在红队攻防中,需要我们拥有综合能力,不仅仅是web渗透的漏洞挖掘与利用,边界突破的方式有很多种,当然这需要我们拥有很强的意识…

【LeetCode】101. 对称二叉树

101. 对称二叉树 难度:简单 题目 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true示例 2: 输入:root [1,2,2,null,3,null,3] 输出&#…

图书管理系统源码,图书管理系统开发,图书借阅系统源码配置和运行图解源码已附加

目录 配置简介和软件条件 数据库附件配置 vs应用程序web.config配置数据库链接字符串 数据库文件脚本代码 配置简介和软件条件 所需要的软件是Vs2017以上数据库是Sqlserver2012以上,如果数据库附件不了可以使用数据库脚本附件数据库脚本会在文章末尾写出来。可以…

CG 运算符 流程控制

运算符 算数运算符 注意:取余运算只能作用于整数 加 减- 乘* 除/ 取余% 自增 自减--三目运算符 条件 ?条件真:条件假 例如:fixed a 4>5? 4:5; 逻辑运算符 && 逻辑与 || 逻辑或 注意:CG中的逻辑运算符…

ArkTS-页面转场动画

页面转场动画 在全局pageTransition方法内配置页面入场和页面退场时的自定义转场动效 两个页面间发生跳转,一个页面消失,另一个页面出现,这时可以配置各自页面的页面转场参数实现自定义的页面转场效果。页面转场效果写在pageTransition函数中…

【Python】获取ip

要使用Python获取IP地址,可以使用socket库中的gethostname()函数和gethostbyname()函数。 import socketdef get_ip_address():hostname socket.gethostname()ip_address socket.gethostbyname(hostname)return ip_addressip get_ip_address() print("IP地…

【BUG合集】(一)①数据库存1/0,请求结果返回true和false;②sql查数据库能查,但mybatis查为空;③data64图片存储为异常;

前言 最近,在工作上接手的任务中,各种 bug 问题出现,在解决的同时也可以记录一下。因此,觉得可以出个记录 bug 合集。方便后来者碰到类似情况,可以作为一个参考进行解决。 文章题目就包含当前文章内容中所遇到的三个 b…

用行云管家实现IT统一运维管理,提高运维效率

随着公司业务的不断壮大,需要用到的IT系统也越来越多,使用起来耗时耗力。因此实现IT统一运维管理已成为提高运维效率、降低成本、优化资源配置的重要途径。这里我们小编告诉您,用行云管家实现IT统一运维管理,提高运维效率&#xf…

目标检测——R-CNN算法解读

论文:Rich feature hierarchies for accurate object detection and semantic segmentation 作者:Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik 链接:https://arxiv.org/abs/1311.2524 代码:http://www.cs.berke…

VUE3+TS语法忽略、eslint忽略

typescript忽略 单行忽略 // ts-ignore忽略全文 // ts-nocheck取消忽略全文 // ts-checkeslint忽略typescript忽略 /* eslint-disable */ const watermark require("watermark-dom"); // ts-ignore /* eslint-enable */

高度自定义进度条实现完整代码附示意图

实现功能&#xff1a; 自定义一个进度条&#xff0c;能手动拖动进度条&#xff0c;也可以点击相应的进度&#xff0c;根据当前进度条的进度显示相应的内容。 效果图&#xff1a; 实现代码&#xff1a; 封装组件&#xff1a; <template><view class"boomBg&qu…

AIoT智能物联网平台技术架构参考

具体来说&#xff0c;AIoT平台能够实现智能终端设备之间、不同系统平台之间、不同应用场景之间的互融互通&#xff0c;进一步推动万物互联的进程。 AIoT智能物联网平台是结合了人工智能&#xff08;AI&#xff09;和物联网&#xff08;IoT&#xff09;技术的平台。它旨在通过物…

图像生成MaaS服务

小红书&#xff1a;http://www.qiyuai.net/apps/met/community/selected 美图&#xff1a;https://www.whee.com/ai/text-to-image 混元&#xff1a;小程序 微软&#xff1a;copilot DALLE3