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.rhkb.cn/news/461124.html

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

相关文章

Java阶段三02

第3章-第2节 一、知识点 面向接口编程、什么是spring、什么是IOC、IOC的使用、依赖注入 二、目标 了解什么是spring 理解IOC的思想和使用 了解IOC的bean的生命周期 理解什么是依赖注入 三、内容分析 重点 了解什么是spring 理解IOC的思想 掌握IOC的使用 难点 理解IO…

Android Preference浅析(设置Setting)

各位&#xff0c;好久不见&#xff0c;最近时间较为充裕&#xff0c;更新一下博客。 本篇在我的理解、认识范围内&#xff0c;讲述一下Android中的Preference&#xff08;破粉斯~&#xff09;这玩意&#xff0c;常用于项目中的设置模块中。在工作中我也主要负责了设置模块相关…

鸿道Intewell操作系统架构介绍之Intewell-Hyper I 虚拟化构型

鸿道Intewell-Hyper I 虚拟化构型是鸿道Intewell-V虚拟化架构下的构型体系&#xff01;鸿道Intewell-V是科东软件自主研发的实时虚拟化操作系统&#xff0c;包括鸿道Intewell-Hyper I 和鸿道Intewell-Hyper II。鸿道Intewell-V可以实现多个操作系统在同一物理硬件上并行运行&am…

讲一讲 kafka 的 ack 的三种机制?

大家好&#xff0c;我是锋哥。今天分享关于【K讲一讲 kafka 的 ack 的三种机制&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; 讲一讲 kafka 的 ack 的三种机制&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Kafka的消息确认机制&…

多租户系统的应用架构

大家好&#xff0c;我是汤师爷~ 我们看下多租户系统的应用架构是如何从一层层构建起来的。 1、应用层设计 应用层的主要作用是为具体的用户场景提供应用服务&#xff0c;帮助用户在特定场景下完成操作。通过编排领域层的各项能力&#xff0c;实现SaaS产品的核心功能。应用层包…

波兰喜嘎嘎

之前做的一个项目&#xff0c;需要用c写一个服务去访问和控制硬件。这个服务是同事写的&#xff0c;今年年中离职了&#xff0c;很自然地&#xff0c;轮到我接手。 一、认知 我捣鼓了几天&#xff0c;勉强读懂一点原来的代码&#xff0c;并在原来基础上&#xff0c;做了一些修…

基于LORA的一主多从监测系统_4G模块上巴法云

临时添加一个更新&#xff0c;更换云平台为巴法云&#xff0c;事情的起因是因为阿里云这个老六&#xff0c;早上睡了一觉起来发短信告诉我云平台给我停了&#xff0c;得交钱&#xff0c;好嘛&#xff0c;不过也没办法现在这基本都收费&#xff0c;当然还有onenet可以用&#xf…

.NET Core WebApi第4讲:控制器、路由

一、控制器是什么&#xff1f; 1、创建一个空的API控制器&#xff1a;TestController.cs 2、里面有一个类叫TestController&#xff0c;把它叫做控制器 因为它继承了ControllerBase类&#xff0c;ControllerBase类里提供了一系列的方法&#xff0c;使得TestController这个类具…

Java面试经典 150 题.P55. 跳跃游戏(009)

本题来自&#xff1a;力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解&#xff1a; class Solution {public boolean canJump(int[] nums) {int…

计算机网络网络层笔记

互联网提供的两种服务 1.虚电路服务 2.数据报服务 需要记住的是现在只用第二种也就是数据报服务 网际协议IP 物理层的中断系统:转发器(hub) 链路层的中断系统:交换机 网络层的中断系统:路由器 网络层以上:网关 如上图所示,网关是用来访问其他的网段的一个接口,网关的地…

【热门主题】000015 大数据治理:开启数据价值新纪元

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【热…

CentOS8.5.2111(4.1)数据中心主DNS部署

【背景】 某公司的数据中心DC&#xff0c;要架设DNS服务器负责解析“学生姓名缩写.cqie”的域名解析工作。DNS服务器的FQDN&#xff08;完全正式域名标识&#xff09;为dns.姓名.cqie&#xff0c;IP地址为192.168.学号.66。要求为以下域名实现正反向域名解析服务。&#xff08…

【C/C++】模拟实现strlen

学习目标&#xff1a; 使用代码模拟实现strlen。 逻辑&#xff1a; strlen 需要输入一个字符串数组类型的变量&#xff0c;并且返回一个整型类型的数据。strlen 需要计算字符串数组有多少个元素。 代码1&#xff1a;使用计数器 #define _CRT_SECURE_NO_WARNINGS 1 #include&…

渗透测试-百日筑基—SQL注入篇时间注入绕过HTTP数据编码绕过—下

day8-渗透测试sql注入篇&时间注入&绕过&HTTP数据编码绕过 一、时间注入 SQL注入时间注入&#xff08;也称为延时注入&#xff09;是SQL注入攻击的一种特殊形式&#xff0c;它属于盲注&#xff08;Blind SQL Injection&#xff09;的一种。在盲注中&#xff0c;攻击…

Linux 文件内容显示

文件内容显示 浏览普通文件 文件内容查看 cat 命令 作用&#xff1a;查看文件内容&#xff0c;适合数据量较少 格式&#xff1a; cat -参数 文件名 参数&#xff1a; -n &#xff1a;显示行号&#xff0c;加上 -b &#xff1a;文件中所有非空行增加行号&#xff0…

ALIGN: Tuning Multi-mode Token-level Prompt Alignment across Modalities

文章汇总 当前的问题 目前的工作集中于单模提示发现&#xff0c;即一种模态只有一个提示&#xff0c;这可能不足以代表一个类[17]。这个问题在多模态提示学习中更为严重&#xff0c;因为视觉和文本概念及其对齐都需要推断。此外&#xff0c;仅用全局特征来表示图像和标记是不…

linux学习笔记 Ubuntu下的守护进程supervisor安装与多项目部署

我这里首先是在本地WSL上进行安装&#xff0c;WSL2的是ubuntu 24.04&#xff0c;之后又再正式环境的ubuntu 20.04上安装&#xff0c;再次记录一下。 1、首先安装supervisor apt install -y supervisor 2、创建配置文件 echo_supervisord_conf > /etc/supervisor/supervisor…

Linux特种文件系统--tmpfs文件系统前传:虚拟内存子系统

虚拟内存子系统是操作系统中的一个重要组成部分&#xff0c;它负责管理和优化计算机的内存使用。虚拟内存的概念允许操作系统为每一个进程创建一个虚拟地址空间&#xff0c;这个空间比实际物理内存要大得多。虚拟内存子系统通过将部分虚拟地址映射到物理内存&#xff0c;部分映…

【测试工具】通过Jmeter压测存储过程

目录 一、存储过程准备1.1、 建立空表1.2、 建立存储过程1.3、调试 二、测试工具准备三、工具配置及执行3.1、配置JDBC Connection Configuration&#xff1a;3.2、配置吞吐量控制器3.3、配置JDBC Request 一、存储过程准备 1.1、 建立空表 CREATE TABLE test_data ( id NUMB…