Verilog的逻辑系统及数据类型(一):四值逻辑系统

news2024/11/24 14:34:12

目录

  • 1. Verilog采用的四值逻辑系统
  • 2.主要数据类型
    • 2.1 net(线网)
    • 2.2 寄存器类 (register)
    • 2.3 Verilog中net和register声明语法
      • 2.3.1 net声明
      • 2.3.2 寄存器声明
    • 2.4 选择正确的数据类型
    • 2.5 选择数据类型时常犯的错误
      • 2.5.1 信号类型确定方法总结
      • 2.5.2 常出的错误及相应的错误信息(error message)
      • 2.5.3 选择数据类型时常犯的错误举例

微信公众号获取更多FPGA相关源码:
在这里插入图片描述

1. Verilog采用的四值逻辑系统

Verilog采用的四值逻辑系统

2.主要数据类型

Verilog主要有三类(class)数据类型:

  • net (线网) : 表示器件之间的物理连接
  • register (寄存器) :表示抽象存储元件
  • parameters(参数) : 运行时的常数(run-time constants)

2.1 net(线网)

  • net需要被持续的驱动,驱动它的可以是门和模块。
  • 当net驱动器的值发生变化时, Verilog自动的将新值传送到net上。在例子中,线网out由or门驱动。
  • 当or门的输入信号置位时将传输到线网net上。

net(线网)

有多种net类型用于设计(design-specific)建模和工艺(technology-specific)建模

多种net类型

**特别注意:**没有声明的net的缺省类型为 1 位(标量)wire类型。

  • wire类型常用于组合电路描述。
  • wire类型是最常用的类型,只有连接功能。
  • wire和tri类型有相同的功能。用户可根据需要将线网定义为wire或tri以提高可读性。tri型的信号综合后具有三态的功能。
  • wand、wor有线逻辑功能。
  • trireg类型很象wire类型,但trireg类型在没有驱动时保持以前的值。这个值的强度随时间减弱。
  • 修改net缺省类型的编译指导:
`default_nettype  <nettype>

其中nettype不能是supply1和supply0。

2.2 寄存器类 (register)

  • 寄存器类型在赋新值以前保持原值
  • 寄存器类型大量应用于行为模型描述及激励描述。在下面的例子中,reg_a、reg_b、reg_sel用于施加激励给2:1多路器。
  • 用行为描述结构给寄存器类型赋值。给reg类型赋值是在过程块中。

寄存器类 (register)

下表给出了寄存器类有四种数据类型:

寄存器类型功能
reg可定义的无符号整数变量,可以是标量(1位)或矢量,是最常用的寄存器类型
integer32位有符号整数变量,算术操作产生二进制补码形式的结果。通常用作不会由硬件实现的的数据处理。
real双精度的带符号浮点变量,用法与integer相同。
time64位无符号整数变量,用于仿真时间的保存与处理
realtime与real内容一致,但可以用作实数仿真时间的保存与处理

2.3 Verilog中net和register声明语法

2.3.1 net声明

 <net_type> [range] [delay] <net_name>[, net_name];
变量含义
net_typenet类型
range矢量范围,以[MSB:LSB]格式
delay定义与net相关的延时
net_namenet名称,一次可定义多个net, 用逗号分开。

2.3.2 寄存器声明

<reg_type> [range] <reg_name>[, reg_name];
变量含义
reg_type寄存器类型
range矢量范围,以[MSB:LSB]格式。只对reg类型有效
reg_name寄存器名称,一次可定义多个寄存器,用逗号分开

举例:

	reg a;     //一个标量寄存器
	wand w; // 一个标量wand类型net
	reg [3: 0] v; // 从MSB到LSB的4位寄存器向量
	reg [7: 0] m, n; // 两个8位寄存器
	tri [15: 0] busa; // 16位三态总线
	wire [0: 31] w1, w2; // 两个32位wire,MSB为bit0

2.4 选择正确的数据类型

选择正确的数据类型

2.5 选择数据类型时常犯的错误

2.5.1 信号类型确定方法总结

  1. 信号可以分为端口信号和内部信号。出现在端口列表中的信号是端口信号,其它的信号为内部信号。
  2. 对于端口信号,输入端口只能是net类型。输出端口可以是net类型,也可以是register类型。若输出端口在过程块中赋值则为register类型;若在过程块外赋值(包括实例化语句),则为net类型。
  3. 内部信号类型与输出端口相同,可以是net或register类型。判断方法也与输出端口相同。若在过程块中赋值,则为register类型;若在过程块外赋值,则为net类型。

2.5.2 常出的错误及相应的错误信息(error message)

  1. 用过程语句给一个net类型的或忘记声明类型的信号赋值。
    报错信息:illegal …… assignment.
  2. 将实例的输出连接到声明为register类型的信号上。
    报错信息:<name> has illegal output port specification.
  3. 将模块的输入信号声明为register类型。
    报错信息:incompatible declaration, <signal name> ……

2.5.3 选择数据类型时常犯的错误举例

修改前:

module example(o1, o2, a, b, c, d);
     input a, b, c, d;
     output o1, o2;
     reg c, d;
     reg o2
     and u1(o2, c, d);
     always @(a or b)
          if (a) o1 = b; else o1 = 0;
endmodule

修改前编译信息:

Compiling source file "example.v"
Error!    Incompatible declaration, (c) defined as input                       
          at line 2                                         [Verilog-IDDIL]    
          "example.v", 5: 
Error!    Incompatible declaration, (d) defined as input                       
          at line 2                                         [Verilog-IDDIL]    
          "example.v", 5: 
Error!    Gate (u1) has illegal output specification        [Verilog-GHIOS]    
          "example.v", 8: 
3 errors

修改后:

module example(o1, o2, a, b, c, d);
     input a, b, c, d;
     output o1, o2;
//     reg c, d;
//     reg o2
     reg o1;
     and u1(o2, c, d);
     always @(a or b)
          if (a) o1 = b; else o1 = 0;
endmodule

修改后编译信息:

Compiling source file "example.v"
Error!    Illegal left-hand-side assignment                 [Verilog-ILHSA]    
          "example.v", 11: o1 = b;
Error!    Illegal left-hand-side assignment                 [Verilog-ILHSA]    
          "example.v", 12: o1 = 0;
2 errors

微信公众号获取更多FPGA相关源码:
在这里插入图片描述

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

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

相关文章

使用 Spring Boot 3.x 与图形学技术,添加电子印章防伪特征

使用 Spring Boot 3.x 与图形学技术,添加电子印章防伪特征 在电子办公和无纸化办公日益普及的今天,电子印章的使用越来越广泛。然而,如何确保电子印章的安全性和防伪能力成为了一个亟待解决的问题。本文将通过 Spring Boot 3.x 和图形学技术,深入探讨如何为电子印章添加防…

速卖通自养号测评:安全高效的推广手段

在速卖通平台上&#xff0c;卖家们常常寻求各种方法来提升商品的曝光、转化率和店铺权重。其中&#xff0c;自养号测评作为一种低成本、高回报的推广方式&#xff0c;备受关注。然而&#xff0c;若操作不当&#xff0c;也可能带来风险。以下是如何安全有效地进行自养号测评的指…

label studio数据标注平台的自动化标注使用

&#xff08;作者&#xff1a;陈玓玏&#xff09; 开源项目&#xff0c;欢迎star哦&#xff0c;https://github.com/tencentmusic/cube-studio 做图文音项目过程中&#xff0c;我们通常会需要进行数据标注。label studio是一个比较好上手的标注平台&#xff0c;可以直接搜…

MAB规范(3):Chapter6 Glossary 术语表

第6章 - 术语表 此章不做过多的批注&#xff0c;都是些简单的术语解释。

【算法学习】判断点在多边形内外的算法以及确定内外两点连线与边界的交点

1.前言&#xff1a; 在GIS开发中&#xff0c;经常会遇到确定一个坐标点是否在一块区域的内部这一问题。 如果这个问题不是一个单纯的数学问题&#xff0c;例如&#xff1a;在判断DEM、二维图像像素点、3D点云点等含有自身特征信息的这些点是否在一个区域范围内部的时候&#x…

Java三层框架的解析

引言&#xff1a;欢迎各位点击收看本篇博客&#xff0c;在历经很多的艰辛&#xff0c;我也是成功由小白浅浅进入了入门行列&#xff0c;也是收货到很多的知识&#xff0c;每次看黑马的JavaWeb课程视频&#xff0c;才使一个小菜鸡见识到了Java前后端是如何进行交互访问的&#x…

20240626 每日AI必读资讯

&#x1f30d;警告&#xff01;OpenAI宣布全面封锁中国API接入&#xff01; - 7月9号开始封锁不支持的国家API - 如果在OpenAI不允许的国家使用其 API 将面临封杀 &#x1f517; 警告&#xff01;OpenAI 宣布全面封锁中国 API 接入-CSDN博客 &#x1f3b5;索尼、环球音乐、华…

29-Matplotlib数学表达式

Matplotlib数学表达式 Matplotlib 中的文本字符串都可以使用 Text Markup&#xff08;一种文本标记语言&#xff09;显现出来&#xff0c;具体的使用方法是将文本标记符放在一对美元符号$内&#xff0c;语法格式如下&#xff1a; #数学表达式 plt.title(r$\alpha > \beta$…

【c语言】二级指针

1&#xff0c;定义 本质还是从指针的角度去理解&#xff0c;只不过存的指针的值 2&#xff0c;使用方法

小程序的基本使用

【 0 】前言 【 0 】 这个就是js代码的存放地方 app.json // pages/banner/banner.js Page({/*** 页面的初始数据*/data: {},/*** 生命周期函数--监听页面加载*/onLoad(options) {},/*** 生命周期函数--监听页面初次渲染完成*/onReady() {},/*** 生命周期函数--监听页面显示…

互联网应用主流框架整合之Spring Boot运维体系

先准备个简单的系统&#xff0c;配置和代码如下 # 服务器配置 server:# 服务器端口port: 8001# Spring Boot 配置 spring:# MVC 配置mvc:# Servlet 配置servlet:# Servlet 的访问路径path: /sbd# 应用程序配置application:# 应用程序名称name: SpringBootDeployment# 配置数据…

云动态摘要 2024-06-25

给您带来云厂商的最新动态&#xff0c;最新产品资讯和最新优惠更新。 最新产品更新 Web应用防火墙 - 验证码支持微信小程序接入 阿里云 2024-06-25 支持客户从微信小程序场景下接入&#xff0c;提供人机识别的安全防护。 工业数字模型驱动引擎 - iDME控制台换新升级 华为云…

cropperjs 裁剪/框选图片

1.效果 2.使用组件 <!-- 父级 --><Cropper ref"cropperRef" :imgUrl"url" searchImg"searchImg"></Cropper>3.封装组件 <template><el-dialog :title"title" :visible.sync"dialogVisible" wi…

亚马逊云科技官方活动:一个月拿下助理架构师SAA+云从业者考试认证(送半价折扣券)

为了帮助大家考取AWS SAA和AWS云从业者认证&#xff0c;小李哥争取到了大量考试半价50%折扣券&#xff0c;使用折扣券考试最多可省75刀(545元人民币)。 领取折扣券需要加入云师兄必过班群&#xff0c;在群中免费领取。目前必过班群招募到了超过200名小伙伴&#xff0c;名额有限…

前端自动化

前端自动化的内容 自动化代码检查自动化测试自动化构建自动化部署自动化文档 前端自动化的最佳实践

(六)使用统计学方法进行变量有效性测试(43道选择题)

本文整理了使用统计学方法进行变量有效性测试相关的练习题&#xff0c;共43道&#xff0c;适用于想巩固理论基础的同学。来源&#xff1a;如荷学数据科学题库&#xff08;CDA二级-第7章&#xff09;。 1&#xff09; 2&#xff09; 3&#xff09; 4&#xff09; 5&#xff09;…

CS-流量通讯特征修改-端口store证书流量通讯规则

免责声明:本文仅做技术交流与学习... 目录 1.修改默认端口&#xff1a; 2.去除store证书特征&#xff1a; 查看证书指纹&#xff1a; 生成证书指纹&#xff1a; 应用证书指纹&#xff1a; 3.去除流量通讯特征&#xff1a; 规则资源 http流量特征修改: https流量特征修改:…

营销效果大揭秘:评估你的市场营销活动是否达标

在营销的世界里&#xff0c;每一次活动都是一场精心策划的表演&#xff0c;而评估活动的效果就是我们的幕后总结会。 作为营销人员&#xff0c;我们需要问自己&#xff1a;我们为什么要做营销效果评估&#xff1f; 答案很简单&#xff0c;我们评估是为了总结经验、为未来的营…

Python 全栈体系【四阶】(六十一)

第五章 深度学习 十三、自然语言处理&#xff08;NLP&#xff09; 5. NLP应用 5.2 文本情感分析 目标&#xff1a;利用训练数据集&#xff0c;对模型训练&#xff0c;从而实现对中文评论语句情感分析。情绪分为正面、负面两种 数据集&#xff1a;中文关于酒店的评论&#…

[20] Opencv_CUDA应用之 关键点检测器和描述符

Opencv_CUDA应用之 关键点检测器和描述符 本节中会介绍找到局部特征的各种方法&#xff0c;也被称为关键点检测器关键点(key-point)是表征图像的特征点&#xff0c;可用于准确定义对象 1. 加速段测试特征功能检测器 FAST算法用于检测角点作为图像的关键点&#xff0c;通过对…