正点原子第一期

news2025/1/14 0:54:25

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是功能定义

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

 

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

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

相关文章

ADAS-CIS相机关键参数综述

引言 “ CIS传感器关键参数是工程师选型参考的依据,抛开镜头,本文介绍CIS可见光传感器关键参数之CRA、QE、CFA、Shutter、SNR等。” 关键参数 CRA CFA(Chief Ray Angle)主光角,在上一篇可见光相机的介绍中我们介绍了Sensor的叠层结构&am…

leecode+剑指offer

1.算法入门14天 1.704二分查找: 题目描述:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 思路…

Matlab进阶绘图第3期—方块热图

方块热图是一种特殊的热图(Heatmap)。 与传统热图相比,方块热图通过不同颜色、不同大小的正方形以表示数据/特征的大小,能够更加直观地对数据分布情况进行分析,也因此可以在一些顶级期刊中看到它的身影,比…

数据库设计三大范式

数据库设计遵循三大范式的理由:在面对复杂是数据库设计的时候,设计数据库要遵循一定的规则,有了一定的规范,这样就可以是自己看起来舒服。 1.第一范式(确保每列保持原子性) 第一范式主要是保证数据表中的每一个字段的…

Java缓存面试题——Redis解决方案

文章目录1、什么是缓存击穿?该如何解决2、什么是缓存穿透?该如何解决3、什么是缓存雪崩?该如何解决4、什么是BigKey?该如何解决bigkey的危害发现bigkey解决bigkey5、redis过期策略都有哪些?6、讲一讲Redis缓存的数据一…

FL Studio 21 中文正式版发布支持多种超个性化主题

万众期待的 FL Studio 21 版本正式发布上线,目前在紧锣密鼓的安排上线中,届时所有购买正版 FL Studio 的用户,都可以免费升级到21版! 按照惯例,本次新版也会增加全新插件,来帮助大家更好地创作。今天先给大…

利用 NVIDIATAO 和 WeightBias 加速AI开发

利用 NVIDIATAO 和 Weight&Bias 加速AI开发 利用图像分类、对象检测、自动语音识别 (ASR) 和其他形式的 AI 可以推动公司和商业部门内部的大规模转型。 然而,从头开始构建人工智能和深度学习模型是一项艰巨的任务。 构建这些模型的一个共同先决条件是拥有大量高…

Java枚举详解

一.枚举 1.为什么有枚举? 如果我们的程序需要表示固定的几个值: 比如季节:spring (春),summer(夏),autumn(秋),winter(冬) 用常量表示: public static final int SEASON_SPRING 1;public st…

机械键盘不只有轴体的区别!键帽高度也有些学问

键盘键帽的学问有很多,上篇文章中,笔者和大家聊了键帽的材质和耐油污的问题。 除此之外,键帽的高度和字符的印刷方式也有不同,对于多数机械键盘来说,会发现每一列键帽的倾斜角度都略有不同,使用起来可以减少…

vue在history模式下打包部署问题解决

引言 项目使用的模板是element-template,由于业务需要,我将路由的hash模式更改为了history模式,然后在打包部署项目时就出现了问题 个人发现是资源的访问路径有问题,在部署之后发现每次访问的js资源路径前都会自动携带上我路由的…

如何使用SpringBoot ⽇志?

Spring Boot自定义日志的打印:在一个类中先获取到打印日志对象(日志框架提供的日志对象,而日志框架默认已经集成到Spring Boot里了,springboot默认使用 slf4jlogback);注意:得到日志对象Logger ->来自于slf4j2、使用目志对象提…

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

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

深度学习之 imgaug (图像增强)学习笔记

深度学习之 imgaug (图像增强)前言1\. 安装和卸载2\. 示例2.1 基本使用2.2 包含常用的变换示例3 Augmenters常用函数3.1 iaa.Sequential()3.2 iaa.someOf()3.3 iaa.OneOf()3.4 iaa.Sometimes()3.5 iaa.WithColorspace()3.6 iaa.WithChannels()3.7 iaa.No…

KingbaseES V8R3 表加密

前言 透明加密是指将数据库page加密后写入磁盘,当需要读取对应page时进行加密读取。此过程对于用户是透明, 用户无需干预。 该文档进行数据库V8R3版本测试透明加密功能,需要说明,该版本发布时间早于V8R6,所以只能进行表…

我带过的一名C++实习生——Z同学

刚开始带Z同学,吃饭聊天时,我顺便了解了下他的擅长:linux平台下C、C网络编程。 接下来的实习,主要分为两个阶段:小组公共培训和项目实训。 小组公共培训为期2周,主要学习和了解公司文化制度,讲师…

【项目设计】高并发内存池(三)[CentralCache的实现]

🎇C学习历程:入门 博客主页:一起去看日落吗持续分享博主的C学习历程博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话: 也许你现在做的事情,暂时看不到成果,但不要忘记&…

脏牛复现(CVE2016-5195)

nmap扫描全网段,发现存货主机,ip为192.168.85.141nmap 192.168.85.0/24nmap 扫描端口,发现80端口,访问该网站nmap -p1-65535 192.168.85.141扫描该网站目录,什么也没扫出来 ,dirb扫描目录的字典在usr/share…

Android TV UI开发常用知识

导入依赖 Google官方为Android TV的UI开发提供了一系列的规范组件,在leanback的依赖库中,这里介绍一些常用的组件,使用前需要导入leanback库。 implementation androidx.leanback:leanback:$version常用的页面 这些Fragment有设计好的样式&…

RocketMQ的一些使用理解

1.RocketMQ的生产者生产负载策略(3种) (1)SelectMessageQueueByHash (一致性hash) (2)SelectMessageQueueByMachineRoom (机器随机) (3)SelectMessageQueueByRandom (随机) 第1种一…

字符流定义及如何深入理解字符流的编码

IputSrem类和OupuSrem类在读写文件时操作的都是字节,如果希望在程序中操作字符,使用这两个类就不太方便,为此JDK提供了字符流。同字节流样,字符流也有两个抽象的顶级父类,分别是Reader和Writer其中,Reader是…