当前位置: 首页 > news >正文

正点原子第一期

ZYNQ是一个fpga用来硬件编程,外加一个软件编程

 FPGA是可通过编程来修改其逻辑功能的数字集成电路

第三篇语法篇

第七章 verilog HDL语法

Verilog的简介

可编程逻辑电路:允许用户自行修改内部连接的集成电路,其内部的电路结构可以通过编程数据来设置,写入的编程数据还可以擦除

FPGA是基于查找表的CLB阵列

数字系统设计流程

Verilog和c的区别

Verilog是硬件描述语言,在下载到FPGA中后会生成电路,是并行运行的

c语言下载到单片机中之后,是存储器中的一组指令,而单片机处理软件指令是需要取指、译码、执行这个过程是串行执行

FPGA的特点就是运行速度特别快,要有硬件设计的思想

程序框架

Verilog的逻辑值

逻辑0:表示低电平,也就是电路的GND

逻辑1:表示高电平,也就是电路的vcc

逻辑x:表示未知,有可能是高电平,也有可能是低电平

逻辑z:表示高阻态,表示外部没有激励信号是一个悬空的状态

没有输入驱动 

verilogd的标识符

书写规范:

1、用有意义的有效的名字如 sum、cpu_addr 等。

2、用下划线区分词语组合,如 cpu_addr。

3、采用一些前缀或后缀,比如:时钟采用 clk 前缀:clk_50m,clk_cpu;低电平采用_n 后缀: enable_n;

4、统一缩写,如全局复位信号 rst。

5、同一信号在不同层次保持一致性,如同一时钟信号必须在各模块保持一致。

6、自定义的标识符不能与保留字(关键词)同名。

7、参数统一采用大写,如定义参数使用 SIZE。

进制

二进制

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

十进制

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

十六进制

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

要是没有标识默认位宽就是32位,位宽就是一次可以传输多少位二进制数

默认10进制数

数组类型

1、寄存器类型

寄存器类型是表示一个抽象的数据存储单元,它只能在always和initial语句中被赋值,并且它的值从一个赋值到另一个赋值过程中被保存下来。如果该过程语句描述的是时序逻辑,即 always 语句带有时钟 信号,则该寄存器变量对应为寄存器;如果该过程语句描述的是组合逻辑,即 always 语句不带有时钟信 号,则该寄存器变量对应为硬件连线;寄存器类型的缺省值是 x(未知状态)。 寄存器数据类型有很多种,如 reg、integer、real 等,其中最常用的就是 reg 类型,它的使用方法如 :

//reg define
reg [31:0] delay_cnt; //延时计数器
reg key_flag ; //按键标志

2、线网类型

线网表示 Verilog 结构化元件间的物理连线。它的值由驱动元件的值决定,例如连续赋值或门的输 出。如果没有驱动元件连接到线网,线网的缺省值为 z(高阻态)。线网类型同寄存器类型一样也是有很 多种,如 tri 和 wire 等,其中最常用的就是 wire 类型,它的使用方法如下

//wire define
wire data_en; //数据使能信号 
wire [7:0] data ; //数据

3、参数类型

我们再来看下参数类型,参数其实就是一个常量,常被用于定义状态机的状态、数据位宽和延迟大小 等,由于它可以在编译时修改参数的值,因此它又常被用于一些参数可调的模块中,使用户在实例化模块 时,可以根据需要配置参数。在定义参数时,我们可以一次定义多个参数,参数与参数之间需要用逗号隔 开。这里我们需要注意的是参数的定义是局部的,只在当前模块中有效。它的使用方法如下

//parameter define
parameter DATA_WIDTH = 8; //数据位宽为8位 

运算符

逻辑运算符与位运算符的差别

逻辑运算符

 位运算符

不同位宽的数据进行位运算会将位小的用0补齐 ,

一个数据位宽为4,表示这个数据由4位数组成

拼接运算符

Verilog程序框架

关键字(小写)

module                    模块开始定义

input                         输入端口定义

output                      输出端口定义

inout                        双向端口定义

parameter               信号的参数定义

wire                        wire信号定义

reg                          reg信号定义

always                   产生reg信号语句的关键字

assign                    产生wire信号的关键字

begin                     语句的起始标志

end                          语句的结束标志

posedge/negedeg      时序电路的标志

case                            case语句的起始标志

default                         case语句的默认·分支标志

endcase                      case语句结束标志

if                                  if/else语句标记

else                            if/else语句标志

for                               for语句标记

endmodule               模块结束定义

      Verilog 高级知识点

模块的结构

每个程序都由4个部分组成

端口定义、io说明、内部信号声明、功能定义

第一行给出了所有端口,第二、三行说明了端口的io功能,5、6是功能定义

 模块的调用(函数的调用)

 

相关文章:

正点原子第一期

ZYNQ是一个fpga用来硬件编程,外加一个软件编程 FPGA是可通过编程来修改其逻辑功能的数字集成电路 第三篇语法篇 第七章 verilog HDL语法 Verilog的简介 可编程逻辑电路:允许用户自行修改内部连接的集成电路,其内部的电路结构可以通过编程数…...

「mysql是怎样运行的」第24章 一条记录的多幅面孔---事务的隔离级别与MVCC

「mysql是怎样运行的」第24章 一条记录的多幅面孔—事务的隔离级别与MVCC 文章目录「mysql是怎样运行的」第24章 一条记录的多幅面孔---事务的隔离级别与MVCC一、事前准备二、事务的隔离级别事务并发执行遇到的问题SQL标准中的四种隔离级别MySQL中支持的四种隔离级别三、MVCC原…...

入门Java第十五天 线程

一、多线程 1.1进程和线程 进程:进程就是操作系统中运行的每一个应用程序。例如:微信,QQ 线程:线程是进程中的每一个任务。 多线程:在一个进程中,可以同时执行多个线程。同时完成多个任务。 并发&#x…...

探索用卷积神经网络实现MNIST数据集分类

问题对比单个全连接网络,在卷积神经网络层的加持下,初始时,整个神经网络模型的性能是否会更好。方法模型设计两层卷积神经网络(包含池化层),一层全连接网络。选择 5 x 5 的卷积核,输入通道为 1&…...

MySQL 索引失效场景

1,前言 索引主要是为了提高表的查询速率,但在某些情况下,索引也会失效的情况。 2,失效场景 2.1 最左前缀法则 查询从索引最左列开始,如果跳过索引中的age列,那么age后面字段的索引都将失效,…...

Xcode开发工具,图片放入ios工程

Xcode开发工具,图片放入ios工程,有三种方式: 一:Assets Assets.xcassets 一般是以蓝色的Assets.xcassets的文件夹形式在工程中,以Image Set的形式管理。当一组图片放入的时候同时会生成描述文件Contents.jso…...

操作系统权限提升(十九)之Linux提权-SUID提权

系列文章 操作系统权限提升(十八)之Linux提权-内核提权 SUID提权 SUID介绍 SUID是一种特殊权限,设置了suid的程序文件,在用户执行该程序时,用户的权限是该程序文件属主的权限,例如程序文件的属主是root,那么执行该…...

直播 | StarRocks 实战系列第三期--StarRocks 运维的那些事

2023 年开春, StarRocks 社区重磅推出入门级实战系列直播,手把手带你从 Zero to Hero 成为一个 “StarRocks Pro”!通过实际操作和应用场景的结合,我们将帮你系统性地学习 StarRocks 这个当今最热门的开源 OLAP 数据库。本次&…...

KingabseES执行计划-分区剪枝(partition pruning)

概述 分区修剪(Partition Pruning)是分区表性能的查询优化技术 。在分区修剪中,优化器分析SQL语句中的FROM和WHERE子句,以在构建分区访问列表时消除不需要的分区。此功能使数据库只能在与SQL语句相关的分区上执行操作。 参数 enable_partition_pruning 设…...

Operator-sdk 在 KaiwuDB 容器云中的使用

一、使用背景KaiwuDB Operator 是一个自动运维部署工具,可以在 Kubernetes 环境上部署 KaiwuDB集群,借助 Operator 可实现无缝运行在公有云厂商提供的 Kubernetes 平台上,让 KaiwuDB 成为真正的 Cloud-Native 数据库。使用传统的自动化工具会…...

【数据挖掘】2、数据预处理

文章目录一、数据预处理的意义1.1 缺失数据1.1.1 原因1.1.2 方案1.1.3 离群点分析1.2 重复数据1.2.1 原因1.2.2 去重的方案1.3 数据转换1.4 数据描述二、数据预处理方法2.1 特征选择 Feature Selection2.2 特征提取 Feature Extraction2.2.1 PCA 主成分分析2.2.2 LDA 线性判别分…...

(四十六)大白话在数据库里,哪些操作会导致在表级别加锁呢?

之前我们已经给大家讲解了数据库里的行锁的概念,其实还是比较简单,容易理解的,因为在讲解锁这个概念之前,对于多事务并发以及隔离,我们已经深入讲解过了,所以大家应该很容易在脑子里有一个多事务并发执行的…...

【Android源码面试宝典】MMKV从使用到原理分析(二)

上一章节,我们从使用入手,进行了MMKV的简单讲解,我们通过分析简单的运行时日志,从中大概猜到了一些MMKV的代码内部流程,同时,我们也提出了若干的疑问?还是那句话,带着目标(问题)去阅读一篇源码,那么往往收获的知识,更加深入&扎实。 本节,我们一起来从源码层次…...

如何使用ADFSRelay分析和研究针对ADFS的NTLM中继攻击

关于ADFSRelay ADFSRelay是一款功能强大的概念验证工具,可以帮助广大研究人员分析和研究针对ADFS的NTLM中继攻击。 ADFSRelay这款工具由NTLMParse和ADFSRelay这两个实用程序组成。其中,NTLMParse用于解码base64编码的NTLM消息,并打印有关消…...

【Python学习笔记】第二十二节 Python XML 解析

一、什么是XMLXML即ExtentsibleMarkup Language(可扩展标记语言),是用来定义其它语言的一种元语言。XML 被设计用来传输和存储数据。XML 是一套定义语义标记的规则,它没有标签集(tagset),也没有语法规则(grammatical rule)。任何XML文档对任何…...

5分钟轻松拿下Java枚举

文章目录一、枚举(Enum)1.1 枚举概述1.2 定义枚举类型1.2.1 静态常量案例1.2.2 枚举案例1.2.3 枚举与switch1.3 枚举的用法1.3.1 枚举类的成员1.3.2 枚举类的构造方法1)枚举的无参构造方法2)枚举的有参构造方法1.3.3 枚举中的抽象方法1.4 Enum 类1.4.1 E…...

华为OD机试【独家】提供C语言题解 - 最小传递延迟

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明最小…...

【Web前端】关于JS数组方法的一些理解

一、具备栈特性的方法unshift(...items: T[]) : number将一个或多个元素添加到数组的开头,并返回该数组的新长度。shift(): T | undefined从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。二、具备队列特性的方法push(...items: T[]): …...

多智能体集群协同控制笔记(1):线性无领航多智能体系统的一致性

对于连续时间高阶线性多智能体系统的状态方程为: x˙i(t)Axi(t)Bui(t),i1,2..N\dot {\mathbf{x}}_i(t)A\mathbf{x}_i(t)B\mathbf{u}_i(t),i1,2..N x˙i​(t)Axi​(t)Bui​(t),i1,2..N 下标iii代表第iii个智能体,ui(t)∈Rq1\mathbf{u}_i(t)\in R^{q \time…...

hadoop-Yarn资源调度器【尚硅谷】

大数据学习笔记 Yarn资源调度器 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行与操作系统之上的应用程序。 (也就是负责MapTask、ReduceTask等任…...

聊聊如何避免多个jar通过maven打包成一个jar,多个同名配置文件发生覆盖问题

前言 不知道大家在开发的过程中,有没有遇到这种场景,外部的项目想访问内部nexus私仓的jar,因为私仓不对外开放,导致外部的项目没法下载到私仓的jar,导致项目因缺少jar而无法运行。 通常遇到这种场景,常用…...

Flume 使用小案例

案例一:采集文件内容上传到HDFS 1)把Agent的配置保存到flume的conf目录下的 file-to-hdfs.conf 文件中 # Name the components on this agent a1.sources r1 a1.sinks k1 a1.channels c1 # Describe/configure the source a1.sources.r1.type spoo…...

DLO-SLAM代码阅读

文章目录DLO-SLAM点评代码解析OdomNode代码结构主函数 main激光回调函数 icpCB初始化 initializeDLO重力对齐 gravityAlign点云预处理 preprocessPoints关键帧指标 computeMetrics设定关键帧阈值setAdaptiveParams初始化目标数据 initializeInputTarget设置源数据 setInputSour…...

X和Ku波段小尺寸无线电设计

卫星通信、雷达和信号情报(SIGINT)领域的许多航空航天和防务电子系统早就要求使用一部分或全部X和Ku频段。随着这些应用转向更加便携的平台,如无人机(UAV)和手持式无线电等,开发在X和Ku波段工作,同时仍然保持极高性能水平的新型小尺寸、低功耗…...

推荐算法 - 汇总

本文主要对推荐算法整体知识点做汇总,做到总体的理解;深入理解需要再看专业的材料。推荐算法的意义推荐根据用户兴趣和行为特点,向用户推荐所需的信息或商品,帮助用户在海量信息中快速发现真正所需的商品,提高用户黏性…...

Android 系统的启动流程

前言:从开机的那一刻,到开机完成后launcher将所有应用进行图标展示的这个过程,大概会有哪一些操作?执行了哪些代码?作为Android开发工程师的我们,有必要好好的梳理一遍。既然要梳理Android系统的启动流程&a…...

自学5个月Java找到了9K的工作,我的方式值得大家借鉴 第二部分

我的学习心得,我认为能不能自学成功的要素有两点。 第一点就是自身的问题,虽然想要转行学习Java的人很多,但是非常强烈的想要转行学好的人是小部分。而大部分人只是抱着试试的心态来学习Java,这是完全不可能的。所以能不能学成Jav…...

Vue 3 第五章:reactive全家桶

文章目录1. reactive1.1. reactive函数创建一个响应式对象1.2. 修改reactive创建的响应式对象的属性2. readOnly2.1. 使用 readonly 函数创建一个只读的响应式对象2.2. 如何修改嵌套在只读响应式对象中的对象?3. shallowReactive3.1. 使用 shallowReactive 函数创建一个浅层响…...

【联机对战】微信小程序联机游戏开发流程详解

现有一个微信小程序叫中国象棋项目,棋盘类的单机游戏看着有缺少了什么,现在给补上了,加个联机对战的功能,增加了可玩性,对新手来说,实现联机游戏还是有难度的,那要怎么实现的呢,接下…...

优化基于axios接口管理的骚操作

优化基于axios接口管理的骚操作! 本文针对中大型的后台项目的接口模块优化,在不影响项目正常运行的前提下,增量更新。 强化功能 1.接口文件写法简化(接口模块半自动化生成) 2.任务调度、Loading调度(接口层…...

炫酷的电商网站设计/在线网络培训平台

树状数组的问题模型 首先我们搞明白树状数组是用来干嘛的,现在有一个这样的问题:有一个数组a,下标从0到n-1,现在给你w次修改,q次查询,修改的话是修改数组中某一个元素的值;查询的话是查询数组中…...

wordpress淘客单页主题/新闻发稿推广

DRF框架使用时的一些注意点之前的文章代码块在安卓手机显示正常,但是苹果手机总是不能滚屏,非常影响阅读。今天总算解决了这个问题,苹果手机显示正常了。希望给大家带来最好的阅读体验。喜欢的话就点一下好看,关注一下本公众号吧。…...

怎么去找做网站的/怎么建网站免费的

Vue第三篇 复习 """ v-if | v-show "tag 0"v-if | v-else-if | v-elsev-for"obj in objs"<div :abc"obj">{{ obj }}</div>computed&#xff1a;监听绑定函数中的所有变量&#xff0c;返回值给绑定的变量 watch&…...

自己制作一个网站/免费微信引流推广的方法

springboot本地启动Port 8996 was already in use端口占用解决方案 Win R 唤醒输入cmd命令进入控制台 1. 输入如下命令查看端口被占用的进程 netstat -ano|findstr 8996 2. 终止进程 taskkill /f /t /im 13584...

温州建设网站制作/外链生成工具

从这篇开始&#xff0c;是文本内容操作&#xff0c;区别于文本操作。 shell&#xff0c;perl,python&#xff0c;一直都是文本操作的专家语言&#xff0c;而我们今后学习的的将是shell的噱头--文本操作。下面提到最常见的一个&#xff1a; grep 这算是文本内容的一个重量级选手…...

百度 门户网站/衡阳seo优化推荐

也许你在写OC的时候已经用过了Masonry这个第三方库来写自动布局&#xff0c;今天我们来说说Swift版本的Masonry第三方库SnapKit SnapKit snp_remakeConstraints snp_remakeConstraints is similar to snp_makeConstraints, but will first remove all existing constraints ins…...