FPGA开发verilog语法基础1

在这里插入图片描述

文章目录

  • 主体内容
      • 1.1 逻辑值
      • 1.2 数字进制格式
      • 1.3 数据类型
        • 1.3.1 寄存器类型
        • 1.3.2 线网类型
        • 1.3.3 参数类型
        • 1.3.4 存储器类型
  • 参考资料

主体内容

1.1 逻辑值

       1,逻辑0,表示低电平

       2,逻辑1,表示高电平

       3,逻辑X,表示未知,有可能是高电平,也有可能是低电平(不区分x和X)

       4,逻辑Z,表示高阻态,外部没有激励信号,是一个悬空状态(不区分z和Z)

1.2 数字进制格式

       Verilog数字进制格式包括二进制(b)八进制(o)十进制(d)十六进制(h)。(注意对应的字母!)一般常用的为二进制、十进制和十六进制。

eg:

       4’b0101:表示4位二进制数字0101

       4’d2:表示4位十进制数字2(二进制0010)

       4’ha:表示4位十六进制数字a(二进制1010)

​       16’b1001_1010_1010_1001 = 16’h9AA9

数值的整数及其表示注意以下事项!!!

       1,在较长的数之间可以用下划线来分开,目的是提高可读性,下划线本身没有意义,但下划线符号不能用作首字符;

       2,当数字没有说明位宽时,默认为32位

       3,若没有定义一个整数的位宽,其宽度为相应值中定义的位数

eg:

'o642	//9位八进制数
'hBD	//8位十六进制数

       4,若定义的位宽比实际数的位宽大,则在左边用0补齐。但如果数最左边一位为x或z,就相应地用x或z在左边补齐,如果定义的位宽比实际数的位宽小,那么最左边的位被截断

       5,“?”是高阻态 z 的另一种表示符号,在数字的表示中,字符 “?” 和 Z 或 z 是等价的,可以互相替代。

       6,整数可以带正负号,并且正负号应写在最左边。负数表示为二进制的补码形式

eg:

4'd-4	//错误表达
-4		//等价于4'b1100

       7,如果位宽和进制都缺省,则代表十进制数

       8,位宽不能是表达式形式。

eg:

(4+4)'b11	//错误表达

1.3 数据类型

       在 Verilog 语言中,主要有三大类数据类型:寄存器数据类型、线网数据类型和参数数据类型。其中寄存器与线网类型都可以映射到实际物理电路上的,是真正在数字电路中起作用的。

1.3.1 寄存器类型

       寄存器数据类型的关键字是 reg,reg 类型数据的默认初始值为不定值x。在过程块内被赋值的每一个信号都必须定义为reg类型,reg类型的数据只能在 always 语句initial 语句中被赋值。且在定义reg型变量时,未指定位宽则默认为1

       与下面说的线网类型不同,reg 型数据保持最后一次的赋值,而 wire 型数据需要有持续的驱动

reg [31:0] delay_cnt;
reg key_reg;

       如果该过程语句描述的是时序逻辑,即always语句带有时钟信号,则该寄存器变量对应为触发器

       如果该过程语句描述的是组合逻辑,即always语句不带有时钟信号,则该寄存器变量对应为硬件连线

1.3.2 线网类型

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

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

wire key_flag;
1.3.3 参数类型

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

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

parameter H_SYNC = 11'd41;
1.3.4 存储器类型

       存储器(memory)本质上还是寄存器型变量阵列,只是 Verilog 中没有多维数组,所以就用 reg 型变量建立寄存器组(数组)来实现存储器的功能,也就是拓展的reg型数据地址范围。存储器类型变量可以描述 RAM 型、ROM 型存储器以及 reg 文件。数组中的每一个单元通过一个数组索引进行寻址

​       存储器型变量的一般声明格式如下:

reg <range1><name_of_register><range2>

​       其中 range1 和 range2 都是可选项缺省时都为1。range1 表示存储器寄存器的位宽;range2表示寄存器的个数

eg:

reg [7:0] mem1 [255:0];		//定义了一个有256个8位寄存器的存储器mem1,地址范围是0~255
reg [15:0] mem2 [127:0], reg1, reg2;	//定义了一个具有128个16位寄存器的存储器mem2和//2个16位的寄存器reg1和reg2

参考资料

1,正点原子领航者ZYNQ7020视频

2,《verilog HDL数字集成电路设计原理与应用(第二版)》 蔡觉平等

3,文心一言搜索结果

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

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

相关文章

网站安全问题都有哪些,分别详细说明

网站安全问题涉及多个方面&#xff0c;以下是一些常见的网站安全问题及其详细说明&#xff1a; 数据泄露 问题描述&#xff1a;数据泄露是指网站存储的用户敏感信息&#xff08;如用户名、密码、信用卡信息等&#xff09;被非法获取。黑客可能通过SQL注入、XSS攻击等手段窃取这…

学习分布式系统我来助你!【基本知识、基础理论、设计模式、应用场景、工程应用、缓存等全包含!】

基本知识 什么是分布式 分布式系统是一种通过网络连接多个独立计算机节点&#xff0c;共同协作完成任务的系统架构&#xff0c;具有高度的可扩展性、容错性和并发处理能力&#xff0c;广泛应用于大数据处理、云计算、分布式数据库等领域。 通俗来讲&#xff1a;分布式系统就…

git入门操作(2)

文章目录 git入门操作&#xff08;2&#xff09;git diff 查看差异git diff gitignore忽略文件1.在代码仓库创建这个文件2.添加对 log 文件过滤 连接远程仓库与ssh配置远程仓库和本地仓库关联步骤分支基本操作步骤命令&#xff1a; 合并冲突分支合并逻辑1.新建分支 dev&#xf…

ONLYOFFICE 文档8.2版本已发布:PDF 协作编辑、改进界面、性能优化等更新

ONLYOFFICE 在线编辑器最新版本已经发布&#xff0c;其中包含30多个新功能和500多个错误修复。阅读本文了解所有更新。 关于 ONLYOFFICE 文档 ONLYOFFICE 是一个开源项目&#xff0c;专注于高级和安全的文档处理。坐拥全球超过 1500 万用户&#xff0c;ONLYOFFICE 是在线办公领…

Tcp_Sever(线程池版本的 TCP 服务器)

Tcp_Sever&#xff08;线程池版本的 TCP 服务器&#xff09; 前言1. 功能介绍及展示1.1 服务端连接1.2 客户端连接&#xff08;可多个用户同时在线连接服务端&#xff09;1.3 功能服务1.3.1 defaultService&#xff08;默认服务&#xff09;1.3.2 transform&#xff08;大小写转…

【Qt】qss 设置通过 addAction 添加的 QToolButton的图标

文章目录 1. 使用 QSS 和状态示例代码2. 使用 QSS 动态更改图标QSS 示例总结 在 Qt 中&#xff0c;QSS 不能直接用于为 QAction 设置图标&#xff0c;因为 QSS 主要用于样式和外观的设置&#xff0c;而不是用于数据&#xff08;如图标&#xff09;的设置。 不过&#xff0c;你…

HTB:Antique[WriteUP]

目录 连接至HTB服务器并启动靶机 1.After running an nmap scan on TCP ports we identify port 23 open. If we run another scan on UDP ports, which port do we find open? 2.What service is running on the UDP port that we identified in the previous question? …

Next.js14快速上手

文章目录 ***客户端***什么是Next项目在线地址官方文档项目创建查看项目目录结构app属于根目录 ***服务端***vercel数据库prisma 客户端 什么是Next Next.js 是一个用于构建全栈 Web 应用程序的 React 框架。您可以使用 React Components 来构建用户界面&#xff0c;并使用 Ne…

java实现日志按天打印

<?xml version"1.0" encoding"UTF-8"?> <configuration><!-- 应用名称&#xff1a;和统一配置中的项目代码保持一致&#xff08;小写&#xff09; --><property name"APP_NAME" value"mita-main"/><!--日…

AudioSetCaps数据集:包含190万对来自AudioSet录音的音频-字幕对。

2024-10-21&#xff0c;由西北工业大学、西安联丰声学技术有限公司、南洋理工大学、萨里大学和中国科学院声学研究所创建了AudioSetCaps数据集&#xff0c;包含190万对来自AudioSet录音的音频-字幕对。这个数据集在音频-文本检索和自动音频字幕两项下游任务上展现了卓越的性能&…

百度翻译以及另外三款翻译工具推荐!!!

在这个全球化的时代&#xff0c;翻译工具已经成为我们生活中不可或缺的一部分。我们需要使用翻译工具来克服语言障碍&#xff0c;无论是出国旅行、商务谈判还是学术研究。那么&#xff0c;市场上有各种各样的翻译工具。有哪些好用的在线翻译软件呢&#xff1f;别担心&#xff0…

系统架构设计师教程 第2章 2.1-2计算机系统及硬件 笔记

2.1计算机系统概述 ★☆☆☆☆ 计算机系统 (Computer System) 是指用于数据管理的计算机硬件、软件及网络组成的系统。 一般指由硬件子系统和软件子系统组成的系统&#xff0c;简称为计算机。 将连接多个计算机以实现计算机间数据交换能力的网络设备&#xff0c;称为计算机网…

LabVIEW提高开发效率技巧----节省内存

在LabVIEW开发过程中&#xff0c;内存管理是保障程序稳定性和性能的关键。本文将详细介绍如何通过队列处理来节省内存&#xff0c;尤其是如何通过解耦释放不再需要的数据&#xff0c;防止内存泄漏。通过多个实际例子&#xff0c;从不同角度探讨队列处理在大数据量或长时间运行的…

HTB:CozyHosting[WriteUP]

目录 连接至HTB服务器并启动靶机 1.How many TCP ports are open on CozyHosting? 2.The webserver on TCP port 80 issues a redirect to what domain? 3.What relative path on the webserver returns a 500 error? 4.What is the Java web framework used in the we…

初识算法 · 二分查找(4)

目录 前言&#xff1a; 寻找峰值 题目解析 算法原理 算法编写 寻找旋转排序数组中的最小值 题目解析 算法原理 算法编写 寻找缺失的数字 题目解析 算法原理 算法编写 前言&#xff1a; ​本文的主题是二分查找&#xff0c;通过三道题目讲解&#xff0c;一道是寻找…

【Web开发】什么是Nuxt? 利用Nuxt快速搭建前端项目

Nuxt官网&#xff1a;https://nuxt.com/ 启动一个Nuxt项目 在vscode的项目文件终端运行以下命令&#xff1a; npx nuxilatest init <my-app>npm installnpm run dev然后就启动了一个Nuxt项目 安装Nuxt UI Nuxt UI官网&#xff1a;https://ui.nuxt.com/ npx nuxilates…

线程的同步

目录 引入 认识条件变量 快速认识接口​编辑 认识条件变量​编辑 测试代码​编辑 生产消费模型 为何要使用生产者消费者模型 理解 编写生产消费模型 BlockingQueue 单生产单消费 多生产多消费 引入 同步&#xff1a;在保证数据安全的前提下&#xff0c;让线程…

Hugging Face HUGS 加快了基于开放模型的AI应用的开发

在过去一年左右的时间里&#xff0c;开源人工智能模型在性能上已经明显赶上了 OpenAI、Google 和其他公司的流行闭源模型。 然而&#xff0c;由于在不同硬件上部署和维护这些模型所带来的开销&#xff0c;开发人员尚未广泛采用这些模型。为了解决这个问题&#xff0c;Hugging F…

【Unity】Unity中文本中插入超链接且可点击响应,TextMeshPro的进阶用法

一、需求和尝试 今天遇到这样一个需求&#xff1a;在文本中插入超链接&#xff0c;且这个链接可以点击跳转对应的url&#xff0c;具体形式如下图所示。 其实这个有一个简单粗暴的方法&#xff0c;就是把需要加超链接的文本单独拿出来&#xff0c;和其他文本进行拼接&#xf…

修改huggingface的缓存目录以及镜像源

执行以下语句查看当前配置 huggingface-cli env默认输出应该如下 (py39-transformers) PS D:\py_project\transformers_demo> huggingface-cli envCopy-and-paste the text below in your GitHub issue.- huggingface_hub version: 0.26.1 - Platform: Windows-10-10.0.22…