【EDA verilog 基础语法】

文章目录

  • 前言
  • 一、逻辑值
  • 二、数字进制格式
  • 三、标识符
  • 四、数据类型
    • 1.寄存器类型:
    • 2.线网类型:
    • 3. 参数类型:
  • 五、运算符
    • 1.算术运算符
    • 2.逻辑运算符
    • 3.条件运算符
    • 4.位运算符:
    • 5.移位运算符
    • 6.拼接运算符:
    • 7.运算符的优先级:
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

课程需要:


提示:以下是本篇文章正文内容,下面案例可供参考

一、逻辑值

逻辑 0:表示低电平,也就对应我们电路 GND;
逻辑 1:表示高电平,也就是对应我们电路的 VCC;
逻辑 X:表示未知,有可能是高电平,也有可能是低电平;
逻辑 Z:表示高阻态,外部没有激励信号,是一个悬空状态。

在这里插入图片描述

二、数字进制格式

Verilog数字进制格式包括二进制、八进制、十进制和十六进制。
一般常用的为二进制、十进制和十六进制。

二进制表示如下:4’b0101 表示4位二进制数字0101
十进制表示如下:4’d2 表示4位十进制数字2(二进制0010)
十六进制表示如下:4’ha 表示4位十六进制数字a(二进制1010)

16’b1001_1010_1010_1001 = 16’h9AA9

三、标识符

标识符( identifier)用于定义模块名、端口名、信号名等。
标识符可以是任意一组字母、数字、$符号和_(下划线)符号的组合;
但标识符的第一个字符必须是字母或者下划线;
标识符是区分大小写的;

不建议大小写混合使用;
普通内部信号建议全部小写;
信号命名最好体现信号的含义,简洁、清晰、易懂;

以下是一些推荐的写法:
1、用有意义的有效的名字如 sum 、cpu_addr等。
2、用下划线区分词,如cpu_addr。
3、采用一些前缀或后缀,比如时钟采用clk前缀:clk_50,clk_cpu;

四、数据类型

在 Verilog 语言中,主要有三大类数据类型:
寄存器数据类型、线网数据类型和参数数据类型。

从名称中,我们可以看出,真正在数字电路中起作用的数据类型应该是 寄存器数据类型和线网数据类型。

1.寄存器类型:

  寄存器表示一个抽象的数据存储单元,通过赋值语句可以改变寄存器储存的值寄存器数据类型的关键字是 reg,reg 类型数据的默认初始值为不定值x

reg类型的数据只能在 always 语句和 initial 语句中被赋值。

  如果该过程语句描述的是时序逻辑,即always语句带有时钟信号,则该寄存器变量对应为触发器;如果该过程语句描述的是组合逻辑,即always语句不带有时钟信号,则该寄存器变量对应为硬件连线;
reg key;   //1位
reg [11:0]count;  //12位

2.线网类型:

线网数据类型表示结构实体(例如门)之间的物理连线。
线网类型的变量不能储存值,它的值是由驱动它的元件所决定的。
驱动线网类型变量的元件有门、连续赋值语句、assign等。
如果没有驱动元件连接到线网类型的变量上,则该变量就是高阻的,即其值为z。

线网数据类型包括 wire 型和 tri 型,其中最常用的就是 wire 类型。

wire key;   //1位
wire  [11:0]count;  //12位

3. 参数类型:

数其实就是一个常量,在 Verilog HDL 中用 parameter 定义常量。
我们可以一次定义多个参数,参数与参数之间需要用逗号隔开。
每个参数定义的右边必须是一个常数表达式。

参数型数据常用于定义状态机的状态、数据位宽和延迟大小等。
采用标识符来代表一个常量可以提高程序的可读性和可维护性。
在模块调用时,可通过参数传递来改变被调用模块中已定义的参数。

parameter h_sync =11'd 20

五、运算符

Verilog中的操作符按照功能可以分为下述类型:
1、算术运算符
2、关系运算符
3、逻辑运算符
4、条件运算符
5、位运算符
6、移位运算符
7、拼接运算符

1.算术运算符

在这里插入图片描述

2.逻辑运算符

在这里插入图片描述

3.条件运算符

在这里插入图片描述
result = (a >= b) ? a : b;

4.位运算符:

在这里插入图片描述

5.移位运算符

在这里插入图片描述两种移位运算都用0来填补移出的空位。
左移时,位宽增加;右移时,位宽不变。
4’b1001 << 2 = 6’b100100;
4’b1001 >> 1 = 4’b0100;

6.拼接运算符:

在这里插入图片描述
c = { a, b[3:0] };

7.运算符的优先级:

在这里插入图片描述

总结

EDA verilog 基础语法,为后面工程打下了基础。

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

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

相关文章

系统分析师-数学与经济管理

系统架构设计师 系统架构设计师-软件开发模型总结 文章目录 系统架构设计师前言一、最小生成树二、最短路径三、网络与最大流量四、不确定型决策 前言 数学是一种严谨、缜密的科学&#xff0c;学习应用数学知识&#xff0c;可以培养系统架构设计师的抽象思维能力和逻辑推理能…

如何在CentOS使用Docker部署Traefik服务并创建固定公网地址远程访问

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

【干货】一份10万字免费的C#/.NET/.NET Core面试宝典

前言 C#/.NET/.NET Core相关技术常见面试题汇总&#xff0c;不仅仅为了面试而学习&#xff0c;更多的是查漏补缺、扩充知识面和大家共同学习进步。该知识库主要由自己平时学习实践总结、网上优秀文章资料收集&#xff08;这一部分会标注来源&#xff09;和社区小伙伴提供三部分…

如何在 Ubuntu 安装桌面环境

在 Ubuntu 上安装不同的桌面环境 如果你正在使用官方的 Ubuntu 发行版&#xff0c;它运行在 GNOME 上&#xff0c;那么你可以很容易地从默认的包管理器安装其他流行的桌面环境&#xff08;DE&#xff09;。让我们开始吧… 在 Ubuntu 上安装 KDE Plasma 如果你正在使用 GNOME…

企业微信知识库:从了解到搭建的全流程

你是否也有这样的疑惑&#xff1a;为什么现在的企业都爱创建企业微信知识库&#xff1f;企业微信知识库到底有什么用&#xff1f;如果想要使用企业微信知识库企业应该如何创建&#xff1f;这就是我今天要探讨的问题&#xff0c;感兴趣的话一起往下看吧&#xff01; | 为什么企业…

C#手术麻醉信息系统全套商业源码,自主版权,支持二次开发 医院手麻系统源码

手术麻醉信息系统是HIS产品的中的一个组成部分&#xff0c;主要应用于医院的麻醉科&#xff0c;属于电子病历类产品。医院麻醉监护的功能覆盖整个手术与麻醉的全过程&#xff0c;包括手术申请与排班、审批、安排、术前、术中和术后的信息管理提供支持。 手术麻醉信息系统可与EM…

Flink-CDC 无法增量抽取SQLServer数据

1.问题 因部署在WindowsServer服务器SQLServer发生过期后重启&#xff0c;Flink-CDC同步进行作业重启&#xff0c;启动后无报错信息&#xff0c;数据正常抽取。但是观察几天后发现当天数据计算指标无法展示 2.定位 因为没用进行任何修改&#xff0c;故初步判断不是因Flink-C…

启动“宁波零碳工厂”建设,开启宁波“零碳”未来

宁波&#xff0c;&#x1f972;这座位于东海之滨的&#x1f970;繁荣城市&#xff0c;一直以来都是&#x1f34e;中国工业发展的&#x1f966;重要引擎。然而&#xff0c;&#x1f95d;随着全球气候变化⛅️问题的日益严峻&#xff0c;如何在&#x1fa85;确保经济持续发展的同…

面向对象:继承

文章目录 一、什么叫继承&#xff1f;二、单继承三、多继承3.1多继承的各种情况3.1.1一般情况3.1.1特殊情况&#xff08;菱形继承&#xff09; 四、菱形继承引发的问题4.1 问题1:数据冗余4.2 问题2:二义性&#xff08;无法确定到底是访问哪个&#xff09; 五、虚拟继承解决菱形…

word文档属性怎么更改?详细教你更改文件属性

一、了解Word属性 在修改Word属性之前&#xff0c;我们首先需要了解Word属性的含义和作用。Word属性主要包括标题、主题、作者、关键词、摘要等&#xff0c;这些属性可以帮助我们更好地描述和归类文档&#xff0c;提高文档的可读性和可搜索性。同时&#xff0c;Word属性还可以…

linux网络服务学习(4):SAMBA

1.什么是SAMBA SAMBA也是一种文件共享工具 &#xff08;1&#xff09;服务名&#xff1a;smb &#xff08;2&#xff09;软件名&#xff1a;samba &#xff08;3&#xff09;配置文件&#xff1a; /etc/samba/smb.conf /etc/samba/smb.conf.example &#xff08;4&#…

免费在线制流程图和思维导图ProcessOn高效协同

免费在线制流程图和思维导图ProcessOn高效协同&#xff0c;还有海量的免费模板。在ProcessOn&#xff0c;你可以与全球超过1.1亿的优秀人才一起合作&#xff0c;共同绘制出精美的流程图和思维导图。无论是工作中的项目管理&#xff0c;还是学习中的知识整理&#xff0c;Process…

Android room 在dao中不能使用挂起suspend 否则会报错

错误&#xff1a; Type of the parameter must be a class annotated with Entity or a collection/array of it. kotlin.coroutines.Continuation<? super kotlin.Unit> $completion); 首先大家检查一下几个点 一、kotlin-kapt 二、 是否引入了 room-ktx 我是2024年…

CSGO赛事管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文&#xff08;设计&#xff09;学生选题参考合集推荐收藏&#xff08;包含Springboot、jsp、ssmvue等技术项目合集&#xff09; 目录 1. 系…

Java安全篇-Fastjson漏洞

前言知识&#xff1a; 一、json 概念&#xff1a; json全称是JavaScript object notation。即JavaScript对象标记法&#xff0c;使用键值对进行信息的存储。 格式&#xff1a; {"name":"wenda","age":21,} 作用&#xff1a; JSON 可以作为…

权限框架Sa-Token

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一个轻量级 java 权限认证框架,让鉴权变得简单、优雅! https://sa-tok…

【学习】JMeter和Postman两种测试工具的主要区别有哪些

Postman和JMeter都是常用的API测试工具&#xff0c;但它们之间存在一些不同之处。以下是Postman和JMeter的主要区别&#xff1a; 语言支持 Postman是一个基于Chrome的应用程序&#xff0c;因此它使用JavaScript作为编程语言。这意味着你可以使用JavaScript来编写测试脚本和断…

高精度原 控制电路——D3820

概 况 D3820是一款高精度原边控制离线式PWM功率开关。本文主要介绍D3820的特征和详细的工作原理&#xff0c;对反激式隔离AC-DC开关电源提供较为详细的测试过程。 特 点 1、全电压范围CC/CV精度保持在5%以内 2、用原边控制&#xff0c;无需TL431和光耦 3、欠压锁定…

vue前端工程化

前言 本文介绍的是有关于vue方面的前端工程化实践&#xff0c;主要通过实践操作让开发人员更好的理解整个前端工程化的流程。 本文通过开发准备阶段、开发阶段和开发完成三个阶段开介绍vue前端工程化的整体过程。 准备阶段 准备阶段我将其分为&#xff1a;框架选择、规范制…

CY3.5-COOH热稳定性Cyanine3.5-COOH星戈瑞

CY3.5-COOH的热稳定性是评估其性能和应用的指标之一。在实际应用中&#xff0c;特别是在高温环境下&#xff0c;热稳定性决定了染料能否保持其原有的物理化学性质&#xff0c;从而确保实验结果的准确性和可靠性。 研究表明&#xff0c;CY3.5-COOH花菁染料羧基科研试剂具有较高…