Verilog 入门(一)(Verilog 简介)

news2025/1/24 11:24:41

文章目录

  • 什么是 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 statement
    Always statement
    Module instantiation
    Continuous 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.coloradmin.cn/o/1268206.html

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

相关文章

Windows 11的新功能不适用于所有人,但对将要使用的人来说非常酷

正如一个新的预览版本所示,Windows 11即将为那些使用手写笔的人添加一些智能功能,以及其他改进。 这是预览版22635.2776(也称为KB5032292),已推出Beta频道,这是发布预览版之前的最后一个测试方法&#xff…

Oracle E-Business Suite软件 任意文件上传漏洞(CVE-2022-21587)

0x01 产品简介 Oracle E-Business Suite(电子商务套件)是美国甲骨文(Oracle)公司的一套全面集成式的全球业务管理软件。该软件提供了客户关系管理、服务管理、财务管理等功能。 0x02 漏洞概述 Oracle E-Business Suite 的 Oracle…

创建Asp.net MVC项目Ajax实现视图页面数据与后端Json传值显示

简述回顾 继上篇文章创建的mvc传值这里说明一下Json传值。在mvc框架中,不可避免地会遇到前台传值到后台,前台接收后台的值的情况(前台指view,后台指controller),有时只需要从控制器中返回一个处理的结果&a…

Lombok工具包的安装和使用

目录 一.常用的注解 二.引入依赖的两种方式 1.在maven仓库中引入 2.安装插件EditStarter 三.使用举例 四.原理 Lombok是一个java库,它可以自动插入到编辑器和构建工具中,增强java的性能。不需要再写getter、setter或equals方法,只要有一…

使用MAT分析内存泄漏(mac)

前言 今天主要简单分享下Eclipse的Memory Analyzer在mac下的使用。 一、Mat(简称)干什么的? 就是分析java内存泄漏的工具。 二、使用步骤 1.下载 mac版的现在也分芯片,别下错了。我这里是M2芯片的,下载的Arch64的。 …

软件测试面试时问你的项目经验,你知道该怎么说吗?

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

【中间件】DAL中间件intro

中间件middleware 内容管理 intro数据访问层why use DAL中间件主流DAL中间件方案DAL浅析 本文从理论上介绍一下服务化背景下的DAL中间件的理论并浅析相关中间件 cfeng之前work的时候产品发展到分离服务不分库的阶段,所以根本不需要DAL中间件,也没有分布式…

Linux(11):Linux 账号管理与 ACL 权限设定

Linux 的账号与群组 每个登入的使用者至少都会取得两个 ID,一个是使用者 ID(User ID ,简称UID)、一个是群组ID (Group ID ,简称GID)。 Linux系统上面的用户如果需要登入主机以取得 shell 的环境来工作时,他需要如何进行呢? 首先…

网络通信与TCP.IP协议

网络通信与TCP.IP协议 URI 用字符串标识某一互联网资源,而 URL 表示资源的地点(互联网上所处的位置)。可见 URL 是 URI 的子集 URL (Uniform Resource Locator),统一资源定位符 ,用于描述一个网络上的资源 DNS: &#…

TCP 连接建立

1:TCP 三次握手过程是怎样的? 客户端和服务端都处于 CLOSE 状态,服务端主动监听某个端口,处于 LISTEN 状态 第一次握手:客户端带着序号和SYN为1,把第一个 SYN 报文发送给服务端,客户端处于 SYN-…

沈阳师范大学期末考试复习pta循环数组函数指针经典编程题汇总+代码分析

前言:临近期末,接下来给大家分享一些经典的编程题,方便大家复习。不一定难,但都是入门的好题,尽可能的吃透彻。因为据说期末考试的题很多来自pta上面的原题。 对于一些语言我是用c来写的,不妨碍理解&#…

【软件测试学习】—软件测试模型(二)

【软件测试学习】—软件测试模型(二) 我 | 在这里 👩‍🦰👩‍🦰 读书 | 长沙 ⭐计算机科学与技术 ⭐ 本科 【2024届】 🎃🎃 爱好 | 旅游、跑步、网易云、美食、摄影 🎖️…

C++ day44完全背包问题 零钱兑换Ⅱ 组合总和Ⅳ

完全背包:一个物品可以使用无数次,将01背包中倒序遍历背包变成正序遍历背包 遍历顺序:在完全背包中,对于一维dp数组来说,其实两个for循环嵌套顺序是无所谓的! 先遍历物品,后遍历背包可以&#…

ESP32-Web-Server 实战编程-使用文件系统建立强大的 web 系统

ESP32-Web-Server 实战编程-使用文件系统建立强大的 web 系统 概述 在前述章节我们讲述了在网页端控制多个 GPIO 的案例。当程序开始变得复杂,让一些功能“自动起来”是一个好的选择。 在前面的示例中,我们需要在后端为每个前端代码的 URL 指定一个对…

SQL server界面操作链接服务器

1.打开链接服务器,右击连接服务器“新建链接服务器” 2.输入链接服务器名称和数据源 3.安全性中输入密码建立远程连接,点击确定: 4.打开新建的连接服务器,测试连接: 注意:链接服务器必须在局域网执行,不是同…

不同类型的开源许可证

不同类型的开源许可证 什么是开源许可证 最简单的解释是,开源许可证是计算机软件和其他产品的许可证,允许在定义的条款和条件下使用、修改或共享源代码、蓝图或设计。开源并不意味着该软件可以根据需要使用、复制、修改和分发。根据开源许可证的类型&a…

荣耀IPO站上新起点:市场望眼欲穿,发展未来可期

撰稿|行星 来源|贝多财经 荣耀手机HONOR(简称“荣耀”)IPO上市一事有了新的进展。 近日,荣耀终端有限公司发布董事会公告称,为实现公司下一阶段的战略发展,该公司将不断优化股权结构,吸引多元化资本进入…

面试题:海量PDF的OCR处理思路

关键点: 1000wPDF:数据量非常大。3天处理完:有时间限制。一篇PDF1~10s:可能需要以最高10s去做计算,这样时间才能保证留有富余。要求资源最大化利用:也就是尽可能节省服务器资源,能复用尽量复用&…

一切为了应用!九章云极DataCanvas大模型系列成果重磅发布!

11月21日,「筑基赋能 智向未来」九章云极DataCanvas大模型系列成果发布会(以下简称“发布会”)在北京重磅召开,本次成果发布距离今年6月30日DataCanvas Alaya九章元识大模型公布仅4个多月,是九章云极DataCanvas公司大模…

用flutter 写一个专属于儿子的听书的app

背景: 儿子最近喜欢上了用儿童手表听故事,但是手表边里的应用免费内容很少,会员一年要300多,这么一笔巨款,怎能承担的起,所以打算自己开发一个专属于儿子的听书app。 最终效果: 架构: 后端由两…