FPGA学习心得--01

FPGA实习报告 在过去的十天里,我参加了FPGA的实习,学习了一系列关于FPGA开发的内容。在这段时间里,我掌握了数码管、呼吸灯、按键消抖、LED流水灯等基本概念,并学会了编写测试文件和顶层文件。 阅读详情

1. Verilog

1.1 数字表示形式

例:多少位的什么进制数→4′d8(4位的十进制数8)例:多少位的什么进制数 \rightarrow 4'd8 (4位的十进制数8)例:多少位的什么进制数→4′d8(4位的十进制数8)
如果将 ′'′ 一撇读作汉字 的的的,Verilog的数字表示语法符合口头语言的习惯。

1.2 数据类型

Verilog作为硬件描述语言,数据类型与硬件有直接对应关系。

数据类型介绍符号
寄存器可以理解为一个抽象化的数据存储单元,这与其他编程语言的变量概念很相近,只是Verilog以硬件寄存器作为变量的实现载体,而高级编程语言将使用一段内存来存储变量值(或是CPU中的寄存器)reg、integer、real
线网连接各个硬件功能单元的连线wire
参数有点类似于高级编程语言中的宏定义parameter

1.3 运算符

1.3.1 算数运算符

种类和功能和C其他编程语言一样。
值得注意的是,乘除运算在底层实现时往往会比较消耗资源

1.3.2 拼接运算符

这个运算符是Verilog特有的运算符,作用是将两个信号绑定为一个信号,例如:
{a,b}→将a,b两个信号拼接起来作为一个新信号\{a, b\} \rightarrow 将a, b两个信号拼接起来作为一个新信号{a,b}→将a,b两个信号拼接起来作为一个新信号

1.3.3 赋值

符号=<=
含义阻塞赋值语句并行赋值语句
介绍在always块中,该赋值语句只有当前面的语句都执行完毕后才会执行,和其他顺序执行的编程语言中赋值语句功能相同在always块中和其他语句并行执行,不等待上一条语句的执行结果
应用场景1. assign语句
2. 不带时钟的always块(组合逻辑)
带时钟的always块

1.3.4 其他

关系运算符; 逻辑运算符; 三目运算符 (条件运算符); 移位运算符

1.4 程序框架

model model_name (
	input	input_var_name
	output	output_var_name
	...
	);
	
parameter PAR_NAME	=123
reg	[:]		reg_name
wire		wire_name

assign	wire_name = ...

always @(posedge clk) begin
	if (...)
	else if (...)
	else
	end begin
		case(...)
			... : ...;
			... : ...; 
			...
			default : ;
		endcase
	end
end

endmodule

上面的伪代码定义了Verilog一个模块,begin、end的作用与C语言中的"{}""\{ \}""{}"作用相同,begin、end代码段中的语句是顺序执行的(并行赋值语句是例外)。为了保证代码的规范性,即使逻辑判断分支中仅有一条语句,也可以用begin、end打包起来。

1.5 锁存器

锁存器与寄存器的最大区别是:锁存器属于组合逻辑,输出电平变化仅与输入信号有关,不受时钟约束。
锁存器对输入脉冲敏感,容易产生毛刺,这种瞬时的不确定性在后级电路中引发的BUG难以察觉。
另外由于FPGA中没有现成的锁存器资源,消耗底层资源。
锁存器产生的原因往往是代码逻辑不完整。例如,if语句缺少else与之对应,case语句中没有default等。

1.6 状态机

1.6.1 状态机适用的场景

某项工作需要按照固定的流程或步骤来完成,工作过程中总在各个阶段之间切换。例子:升降机。

1.6.2 状态机的优势

开发人员在编写代码时不需要考虑到所有状态的排列组合,仅需要考虑各个工作状态或工作阶段之间的转换条件。例如:升降机的控制程序不需要各个楼层分别编写,而是通过状态机来完成开关门、上升下降等动作。

1.6.3 状态机的分类

状态机全称“有限状态机”。在电路实现上可以看作组合电路和时序电路的组合,状态机的各个状态往往是时序电路,而状态之间的切换和输出往往是组合逻辑实现的。根据状态机的输出是否和输入相关,状态机又分成“摩尔型状态机”和“米勒型状态机”。

状态机分类介绍
米勒型状态机(Mealy)组合逻辑的输出不仅取决于当前状态还取决于状态机的输入
摩尔型状态机(Moore)组合逻辑的输出仅取决于当前的状态

在这里插入图片描述

米勒型状态机示意图(该插图来自正点原子教程)

在这里插入图片描述

摩尔型状态机示意图(该插图来自正点原子教程)

1.6.4 状态机在Verilog中的写法

1.6.4.1 二段式

一个always模块适用同步时序描述状态转移。
另一个always模块采用组合逻辑判断状态转移条件,以及描述状态机输出。

1.6.4.2 三段式

一个always模块使用同步时序描述状态转换
一个always模块使用组合逻辑判断状态转移条件
最后一个always模块用于描述状态机输出,可以采用时序电路,也可以使用组合电路。

为什么很多人会觉得FPGA难学? 以上是个人的一些见解,但是没有涉及到具体市场行情、工资待遇,本人在去年年底到今年年初,从各个方向做过半年的市场调研,由于篇幅原因,这里就不给大家去说了,后续有时间再整理一下,相信各种选择FPGA的大侠们,应该都发现了FPGA现在确实很火,尤其近两年,一句话总结,市场行情、薪资待遇,无可挑剔,但是,前提是技术硬实力过关。 对于FPGA的展望,这里放一张原来做报告的图吧,其他的就不过多说了。 图片 FPGA的学习其实就像学习围棋一样,学会如何在棋盘上落子很容易,成为一位高手却是难上加难。要真成为李昌镐那样 阅读详情

相关推荐

一、在Xilinx FPGA上使用Cortex M1 软核——FPGA工程搭建

在Xilinx FPGA上使用Cortex M1 软核——FPGA工程搭建获取资源VIVADOCortex M1软核IPKEIL(MDK)其他搭建工程工程概述添加IP库新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可...

lai823177557的博客 1万+

1、流水灯-FPGA---个人实验总结---

采用的是黑金公司的AX516 板子 实验一  永远的流水灯1、我的理解    对于流水灯,两种理解方式:    方式一:这个灯亮-延时-熄灭-下一个灯亮-延时-熄灭  这种在同一个主程序中的操作的思路----------即顺序操作    方式二:各自的灯有自己的工作时许,各自互不干扰,只是在宏观上看来类似流水灯的样子---------即并行的操作             上两个图 分别是 方式一和...

scottar的博客 6241

fpga学习心得

对于fpga的学习产生了自己的一点心得,完全自己的心得体会,可以借鉴下

FPGA课程实验报告(使用Quartus Ⅱ&Verilog语言开发)

本文是大规模可编程器件(FPGA)的课程实验报告,内容偏操作部分的讲解,可以当半个实验指导书用。内含键控LED、跑马灯、密码锁、时钟四个小实验。 系统环境:Windows 10; 硬件环境:Altera Cyclon Ⅲ; 开发环境:Quartus Ⅱ; 编程语言:Verilog; 仿真环境:ModelSim 10.1

yul13579的博客 8886

一文告诉你:如何在trae中编译运行STM32程序,并让AI帮你修改代码

本文详细介绍了如何将STM32程序从Keil迁移到国产免费工具Trae,并利用AI进行代码修改的全过程。

水滴爬呀爬 4860

从零搭建Python接口自动化测试框架:pytest+requests+Allure实战指南

接口自动化测试是现代软件工程中保障交付质量、提升测试效率的核心实践。其基本原理是通过脚本模拟客户端请求,对服务端接口进行自动化的功能验证、性能探测与回归测试,从而替代重复的手工操作。在技术实现上,Python凭借其简洁语法和丰富的生态,成为构建此类框架的主流选择,其中pytest测试框架、requests HTTP库和Allure报告工具构成了技术栈的黄金组合。这套技术方案的价值在于,它能将测试用例数据(如YAML文件)与执行逻辑分离,实现数据驱动测试,并通过持续集成(如Jenkins)无缝融入DevOps

weixin_31822733的博客 375

fpga流水灯实验报告_跟我学FPGA系列之三:状态机(第一部分)

状态机是FPGA设计中必不可少的设计手段,也是思考问题的一种方法,几乎每个项目中都会涉及。学会使用状态机这一工具来思考问题解决问题是每一个设计者必备技能。以下内容是杨曦宫同学学习的记录,供大家参考学习。由于内容比较多,我会分为四个部分给来呈现。以下为总目录,第一部分包含:状态机基础知识、基于状态机形式的工程设计流程、使用状态机进行流水灯设计;第二部分包含:使用状态机进行10010...

weixin_34923852的博客 2196

PostGIS 小白入门详细指南

PostGIS 是 PostgreSQL 的一个扩展,它将 PostgreSQL 转变为一个功能强大的空间数据库,使其能够存储、查询和分析地理空间数据。PostGIS 遵循开放地理空间联盟(OGC)的标准,支持各种空间数据类型和操作,如点、线、多边形、缓冲区、空间连接等。存储各种空间数据类型(如几何类型和地理类型)空间索引,提高查询性能丰富的空间函数和操作支持投影和坐标系统转换城市规划与管理环境监测与分析物流与运输优化地图制作与可视化位置服务与导航。

落魄书生的职业学习生涯 1万+

数字 07 verilog仿真实例

D型主从触发器module //D_flip_flop module flop(data,clock,clear,q,qb); input data,clock,clear; output q,qb; nand #10 nd1(a,data,clock,clear), nd2(b,ndata,clock), nd4(d,c,b,clear), nd5(e,c,nclock), nd6(f,d,nclock), nd8(qb,q,f,clear); nand #9 nd...

qq_41034231的博客 1797

GPMC开发笔记(TI开发者推荐笔记)

因为gpmc(General-Purpose Memory Controller)是TI特有的驱动,gpmc的资料比较少,本人开发gpmc驱动算是摸了很多石头过河的。所以想通过这遍文章可以给也做GPMC驱动开发的后来者有一点参考价值。文章如有瑕疵也请各位批评改正。 1.GPMC介绍 gpmc主要用于与nandflash,norflash,fpga进行通信。在这里主要介绍gpmc16位数据和地址线不复用nor模式下的通信。 注意:在这种模式下gpmc_a[0]引脚是没法使用的 1.1GPMC信号线

weixin_44316996的博客 7485

手把手教你搭建Howland电流源:从原理图到实测避坑指南(附Python数据分析)

本文详细介绍了Howland电流源的设计与实现,从原理图到实测避坑指南,涵盖电阻匹配、运放选择和PCB布局等关键环节。通过Python数据分析,展示了如何优化电路性能并解决常见问题,适合电子工程师和爱好者参考。

weixin_29291069的博客 623

SANXIN B01 FPGA开发板,FPGA初学小白优选!

​ SANXIN - B01 FPGA开发板为叁芯智能公司-郝旭帅团队打造的 INTEL(原 ALTERA) FPGA 入门级产品,面向初学者,性价比高,齐全的配套学习资料,资深工程师提供专业的技术支持服务,同时还可以选择有保障的就业培训服务,高新技术,高薪就业。 SANXIN - B01 FPGA开发板采用 INTEL(原 ALTERA)公司的 CYCLONE IV 系列 FPGA 芯片,型号为EP4CE6E22C8,拥有 144 管脚。开发板采用 USB 供电,解决供电难的问题,大小..

1456

【音视频】PJSIP库——示例简介、C++类说明

aectest音频回声消除测试工具,用于演示音频处理模块中的回声消除(AEC)功能,通常用于 VoIP 场景中优化语音质量。auddemo音频播放 / 录制演示,展示如何使用 PJProject 的音频接口进行基本的音频数据采集、播放和处理,例如波形显示或格式转换。stereotest立体声处理测试,可能用于演示多声道音频的处理方式,如混音、声道分离等。tonegen音频信号生成工具,用于生成测试用的音频信号(如正弦波、音调等),常用于音频设备测试或调试。recfile。

郭老二 431

FPGA 设计篇(06-01)FPGA 芯片架构

芯片原厂必学课程 - 第六篇章 - FPGA 设计篇

新芯设计的博客 2638

AD9361功能介绍和使用

AD9361使用分数分频锁相环(PLL)来产生发射机和接收机本地振荡器(LO)频率和BB PLL。BB PLL 可用于数据转换、数字滤波器和 |/O 端口。PLL的参考时钟可以由外部振荡器或外部晶体(XO)和数字可编程片内可变电容提供,电容微调产生参考时钟频率,XO和微调电容的组合统称为DCXO。有多个天线输入的分集系统。接收链数据首先经过低噪声放大器(LNA),然后是同相(1)和正交(Q)放大器,混频器和频带整形滤波器,可将接收到的信号下变频为基带以进行数字化。时分双工(TDD)和频分双工(FDD)。。。

wangjie36的博客 1万+

Android15车载系统开机冷启动流程源码解析

本文主要介绍Android15车机系统开机冷启动的流程,暂不包含bootloader,仅从kernel开始直至Launcher首页展示。

jidapenglin28的专栏 251

01什么是FPGA?

什么是FPGA?应用场景,有哪些公司?

小胡同学的工程师学习之路 1421

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

FPGA学习心得——矩阵键盘

1、行列式键盘概述 为了减少键盘与单片机接口时所占用I/O口线的数目,在键数较多时,通常都将键盘排列成行列矩阵式,行列式键盘又叫矩阵式键盘。用带有I/O口的线组成行列结构,按键设置在行列的交点上。例如用2*2的行列结构可以构成4个键的键盘,4*4的行列结构可以构成有16个键的键盘。这样,当按键数量平方增长时,I/O口线只是线性增长,这样就可以节省I/O口线。 2、行列式键盘原理 教研室已有薄

SixthSence的专栏 2万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

FPGA引脚简介

一、 FPGA的硬件结构 这里说的硬件结构主要从FPGA的引脚功能方面描述,FPGA内部的电路逻辑暂不讨论。 FPGA的引脚大致可以分为三类:功能引脚、IO引脚、电源和接地引脚。 1. 功能引脚 FPGA的功能引脚包含了FPGA配置程序加载、FPGA配置模式选择、状态及错误提示、JTAG调试等等。 DCLK、DATA0、NCONFIG、CONF_DONE这几个引脚是配置FPGA所必须的,DATA1~DATA7可以用作其他功能,INIT_DONE可以不使用。TDI、TDO、TMS、TCK四个脚是

撒哈拉的绿洲 3万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

FPGA - 7系列 FPGA内部结构之SelectIO -01- 简介与DCI技术简介

FPGA的SelectIO就是I/O接口以及I/O逻辑的总称。Xilinx SelectIO支持电平标准多,除MIPI C-PHY电平(三电平标准)外,IO能直接对接3.3V以及3.3V以下基本所有电平标准,初步统计支持72种不同电平标准。同时在使用是经常需要根据具体的应用设计进行配置电平标准以及IO配置,本文节选翻译整理自UG471的第一章,对7系列的FPGA的SelectIO资源进行简要介绍以及数控阻抗 (DCI) 技术的介绍。 .........

Vuko_Coding Zone 9622

FPGA设计基础01——计数器

1.计数器的功能就是计数。 2.计数器计的数是时钟脉冲的个数。 3.计数的最大值与位宽有关,位宽为n,则最大数为2的n次方。 4.常用于计算时间,如若FPGA的晶振为50M赫兹,那么他一个时钟的时间就是1/50_000_000=20ns,也就是说每来一个时钟就+20ns,通过多次计数可以得到想要的不同的时间。 5.计数器的设计只需要记住两个关键:加一条件、结束条件。 always @(posedge clk or negedge rst_n)begin i

qq_38502780的博客 8341

CASE_01 基于FPGA的交通灯控制器

目录 1 案例引导 1.1 硬件设计初窥 1.2逻辑设计初窥 2 模块级逻辑设计 2.1 时钟分频模块 2.2 数码管译码模块 2.3主逻辑运行模块 3 系统逻辑设计 4 硬件设计 4.1电源接口电路设计 4.2电源系统设计 4.3时钟设计 4.4 JTAG端口和FPGA配置电路设计 4.5FPGA芯片的电源引脚 4.6 A方向信号灯电路 4.7 B方向信号灯电路 4.8 复位电路 4.9PCB设计图 4.10实物图 5 实物验证 5.1管...

比特电子工作室 7855

FPGA学习心得分享——交通灯(EGO1)

FPGA学习经验

Hismber的博客 3855

python做FPGA EG01约束文件文本格式批量更改

python做FPGA EG01约束文件文本格式批量更改一切机械的重复的工作都应该自动化1.读取原文件功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowch...

yuukkki的博客 1055

FPGA - 7系列 FPGA内部结构之Memory Resources -01- Block RAM资源

7系列的FPGA内部存储资源主要包括RAM、FIFO这些部分,本文主要节选自UG473第一章,介绍了7系列的FPGA内部的Block RAM资源。Xilinx 7 系列 FPGA 中的 Block RAM 可存储高达 36 Kb 的数据,可配置为两个独立的 18 Kb RAM 或一个 36 Kb RAM。 ...

Vuko_Coding Zone 1万+

FPGA-01FPGA流水灯实验

流水灯作为一个经典的入门实验,其地位堪比编程界的“Hello,World”。对于很多电子工程师来说,流水灯都是他们在硬件上观察到的第一个实验现象。流水灯是指多个LED灯按照一定的时间间隔,顺序点亮并熄灭,周而复始形成流水效果。本章我们同样通过流水灯实验,带你进入FPGA的精彩世界。 本章包括以下几个部分: 1 LED灯简介 2 实验任务 3 硬件设计 4 程序设计 5 下载验证 LE...

特别的猫 1586
上一篇: 【转载】VMvare Tools图标灰色,无法安装或重新安装
下一篇: 【转载】RN组件
-Willing-
博客等级 码龄7年 129粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值