FPGA-DFPGL22学习5-VERILOG

news2024/11/24 18:44:43

系列文章之 上章

FPGA-DFPGL22学习4-仿真平台学习

文章目录

  • 系列文章之 上章
  • 前言
  • 一、Verilog 简介
  • 二、Verilog基础
    • 1.逻辑值
    • 2.进制
    • 3.标识符
    • 4.数据类型
      • 寄存器类型
      • 线网类型
      • 参数类型
    • 5.运算符
  • 三、Verilog 程序框架
    • 1.注释
    • 2.关键字
    • 3.程序框架
  • 四、Verilog 程序语句
    • 1.结构语句
    • 2.赋值语句
    • 3.条件语句
  • 四、Verilog 状态机
    • 1.模型
    • 2.设计
  • 总结


前言

@和原子哥一起学习FPGA

开发环境:正点原子 ATK-DFPGL22G 开发板

参考书籍:
《ATK-DFPGL22G之FPGA开发指南_V1.1.pdf》

个人学习笔记,欢迎讨论

一、Verilog 简介

Verilog HDL(以下简称 Verilog),VHDL 是美国军方组织开发的,而 Verilog 是由一个公司的私有财产转化而来。

Verilog 是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻
辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。

目前,Verilog-2001 是 Verilog 的最主流版本,被大多数商业电子设计自动化软件支持。

二、Verilog基础

1.逻辑值

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

2.进制

二进制表示如下:4’b0101 表示 4 位二进制数字 0101;
十进制表示如下:4’d2 表示 4 位十进制数字 2(二进制 0010);
十六进制表示如下:4’ha 表示 4 位十六进制数字 a(二进制 1010)。
当代码中没有指定数字的位宽与进制时,默认为 32 位的十进制,比如 100,实际上表示的值为
32’d100。

3.标识符

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

4.数据类型

寄存器类型

寄存器数据类型有很多种,如 reg、integer、real 等,其中最常用的就是 reg 类型.不能赋初值,寄存器类型的缺省值是 x(未知状态)。

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

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

线网类型

线网表示 Verilog 结构化元件间的物理连线。

它的值由驱动元件的值决定,例如连续赋值或门的输出。如果没有驱动元件连接到线网,线网的缺省值为 z(高阻态)。

线网类型同寄存器类型一样也是有很多种,如 tri 和 wire 等,其中最常用的就是 wire 类型。

默认不指定就是线网类型!

参数类型

参数其实就是一个常量,常被用于定义状态机的状态、数据位宽和延迟大小等

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

5.运算符

Verilog 中的运算符按照功能可以分为下述类型:
1、算术运算符
Verilog 实现乘除比较浪费组合逻辑资源,尤其是除法。除法只能整除。

2、关系运算符
3、逻辑运算符
4、条件运算符
5、位运算符
6、移位运算符
在这里插入图片描述
7、拼接运算符
{} 用这个运算符可以把两个或多
个信号的某些位拼接起来进行运算操作

三、Verilog 程序框架

1.注释

和C语言一致

正点原子建议的写法:使用//作为注释。

2.关键字

在这里插入图片描述

3.程序框架

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、Verilog 程序语句

1.结构语句

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.赋值语句

在这里插入图片描述

RHS:赋值等号右边的表达式或变量可以写作 RHS 表达式或 RHS 变量;
LHS:赋值等号左边的表达式或变量可以写作 LHS 表达式或 LHS 变量;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.条件语句

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、Verilog 状态机

1.模型

状态机,全称是有限状态机(Finite State Machine,缩写为 FSM),是一种在有限个状态之间按一定规律转换的时序电路,可以认为是组合逻辑和时序逻辑的一种组合。
➢ Mealy 状态机:组合逻辑的输出不仅取决于当前状态,还取决于输入状态。
➢ Moore 状态机:组合逻辑的输出只取决于当前状态。
在这里插入图片描述

2.设计

四段论
1、状态空间的定义

2、状态跳转
在这里插入图片描述

3、下一状态判断
在这里插入图片描述

4、各个状态下的动作
在这里插入图片描述
在这里插入图片描述

总结

并行考虑,组合思维,时序思维很重要

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

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

相关文章

微信小程序+SpringBoot接入后台服务,接口数据来自后端

前言 前两天开发了一个微信小程序项目,只不过接口数据是自己设置的假数据。然后我就想将这些假数据替换掉。这些数据来自接口,之前做过前后端分离的项目,我就想能不能直接调用那些后端数据接口。结果是可以的。以下是自己编写的部分方法 步骤…

卷积神经网络--猫狗系列之下载、导入数据集

(由于是学习,所以文章会有一些报错及解决办法) 在Kaggle()获取数据集:(没有账号先去注册一个账号,在注册时可能会出现的问题见Kaggle注册出现一排“Captcha must be filled out.”!) https://www.kaggle.…

DOM编程事件与简单编程

文章目录 事件绑定绑定式事件监听方法event 事件对象client、offsetkeyCode 键盘事件事件冒泡阻止浏览器默认行为 DOM编程用户名输入框长度限制鼠标移入移出复选框全选DOM编程实现动态时钟第一种:第二种:第三种: 事件绑定 DOM编程中的事件&a…

excel只显示想要的内容

是 后面的FG等列是不需要的,选择F列,ctrl shift 右箭头 。选中后隐藏。

Ansible创建逻辑卷

Ansible创建逻辑卷: 环境准备: 清单文件: [dev] 192.168.110.129 [prod] 192.168.110.132 [all:vars] ansible_userroot ansible_passwordredhat磁盘准备: 在一台主机上添加一块sata接口的磁盘,一块不添加。 192.…

Linux--获取一长串目录的结构指令:tree

注意:这个tree指令不是Linux自带的,需要下载 yum install -y tree (-y的作用是免确定) 示例:

UE5 读写本地JSON,发送HTTP请求(get)

UE5 读写本地JSON,发送HTTP请求(get) 没有使用插件,就用UE提供的库开发(推荐使用插件VaRest在虚幻商城里有) PCHUsage PCHUsageMode.UseExplicitOrSharedPCHs;PublicDependencyModuleNames.AddRange(new …

win10 编译hadoop源码报错

报错信息: 信息: 用提供的模式无法找到文件。 "devenv command was not found. Verify your compiler installation level."解决方案 右键,以管理员身份打开 之后再次执行mvn 命令即可. 也可以再打开的时候先执行一下命令: dev…

数字化是信息化的升级吗?数字化信息化这两者有什么联系和区别?

也可以这样说吧,但总是太抽象,不准确的,两者还是有很大区别的。 首先来看信息化、数字化具体是什么意思 想要明白两者之间的差异,首先要搞清楚他们的出处—— 所谓信息化、数字化还有现在提很多的智能化,其实都是从…

如何免费将springboot+vue项目部署上线(云服务器+宝塔面板)

本文整个流程是在博主完成一次项目上线全过程后复盘的记录,有没有写到的细节不清楚的可以私聊提问,这里选用的是阿里云服务器,阿里云对学生用户可以免费使用一个月服务器,不定期也有活动,我白嫖了7个月服务器&#xff…

ZYNQ——脉宽调制之呼吸灯实现

文章目录 原理简介实验代码软件仿真板上验证 原理简介 呼吸灯的实现过程就是把不同占空比的脉冲输出后加在LED上,LED灯就会显示不同的亮度,通过不断地调节方波的占空比,LED灯的亮度也会跟着变化,看起来就像是“呼吸”一样。 要得…

陪诊小程序系统|陪诊软件开发|陪诊系统功能和特点

随着医疗服务的逐步改善和完善,越来越多的人群开始走向医院就诊,而其中不少人往往需要有人陪同前往,这就导致了许多矛盾与问题的发生,比如长时间等待、找不到合适的陪诊人员等。因此为人们提供一种方便快捷的陪诊服务成为了一种新…

如何挽救误剪切的TF卡数据 ?三招救援

在日常使用TF卡过程中,我们可能会遇到误操作导致数据被剪切并丢失的情况。这无疑给我们带来了困扰,因为我们可能丢失了重要的照片、视频、文档等文件。然而,不必过于担心,因为TF卡数据剪切后的恢复仍然有希望。本文将向您介绍几种…

基于DeepLabv3Plus开发构建人脸人像分割系统

在图像分割领域中有不少优秀出色的网络,DeepLab系列就是其中非常经典的分支之一,在之前的很多项目中陆续都已经有接触到了,在处理图像分割中表现出色。 DeepLabV3Plus是一种用于语义分割任务的深度学习模型,它是DeepLab系列模型的…

市场营销书籍推荐,这些书帮你学好营销

市场营销一直是商业运作中的重要环节,因此市场营销的知识一直备受关注。在这篇文章中,小编将向你推荐三本经典市场营销书籍,通过阅读这些书籍能让你更深入了解市场营销的基本概念和策略。 1、《经理人参阅:市场营销》 《经理人参…

高效游戏项目进度管理指南:打造顺畅开发之路!

完成一个游戏项目可能是一项具有挑战性的任务,特别是当你刚刚开始时。为了确保你的项目在预算内按时运行,制定计划并管理你的进度是很重要的。以下是一些帮助你管理游戏项目进度的技巧。 1、明确游戏目标: 在开始之前,你必须明确项目的范围以…

附件类文件存储在环信和不存储在环信时的两种实现方式

场景一: 附件类文件存储在环信服务器 使用环信EMChatManager#downloadAttachment下载附件方案 (本篇文章以图片消息为例,其他附件类消息类似): 一、 通过EMFileMessageBody#getLocalUrl判断有没有本地文件; EMImageM…

ROS学习篇之硬件准备(零)-thinkbook16+锐龙版 安装ubuntu20.04遇到的各种坑

文章目录 一.计算机配置二.遇到的问题及解决办法1.键盘失灵2.无法联wifi3.蓝牙搜索不到设备4.无法开热点 三.最后的感想 一.计算机配置 CPU: AMD R7 6800H (网卡,娱乐大师读出来的不对,在windos系统下,联想管家读出来网卡的型号是…

C++数据结构笔记(5)栈的顺序存储结构实现

1.对于栈和队列,相比于数组和线性表,使用规则受到了限制,因此也被称为“受限线性表”。 2.对于栈类型来说,元素符合先进后出的规律,且栈中的元素不能自由遍历。 3.栈的顺序存储结构简称为顺序栈,其思想是…

神经网络之VGG

目录 1.VGG的简单介绍 1.2结构图 3.参考代码 VGGNet-16 架构:完整指南 |卡格尔 (kaggle.com) 1.VGG的简单介绍 经典卷积神经网络的基本组成部分是下面的这个序列: 带填充以保持分辨率的卷积层; 非线性激活函数,如ReLU&a…