- 博客(79)
- 收藏
- 关注
原创 FPGA开发——使用verilog实现异步FIFO
1、FIFO的分类FIFOFirst In First Out)先进先出存储器。根据接入的时钟信号,可以分为同步FIFO和异步FIFO。FIFO底层是基于双口RAM,同步FIFO的读写时钟一致,异步FIFO 读时钟和写时钟不同。作用:
2024-08-26 21:15:20
2315
3
原创 FPGA开发——IIC实现简单的串口回环
在我们进行日常开发时,不管是进行MCU、单片机、还是FPGA,都会使用到IIC通信协议。采用串行总线可以简化系统硬件结构、减小系统体积、提高系统可靠性。常 用的串行总线有单总线(1-Wire Bus)、IIC)、SPISerial Peripheral Interface)等。IIC 总线是Phlips公司推出的一种同步串行总线,是一种支持多主机多从机 系统、总线仲裁以及高低速器件同步功能的高性能串行总线技术。
2024-08-26 20:54:06
1070
原创 FPGA开发——IIC协议介绍
其实关于IIC通信协议的相关原理的相关理论我在最开始的文章当中进行过讲解,但是没有详细的去进行过说明,在今天的这篇文章中我们就来详细说明一下IIC协议的相关理论。
2024-08-22 19:24:22
912
原创 FPGA开发——verilog的运算符以及相关优先级的介绍
在我们学习任何一门编程语言时,不可避免的都会遇见运算符和相关的运算优先级的问题,只有掌握了各个运算符的优先级关系我们才能进行更好的代码编写。在前面的时候因为我没有遇到因为优先级而导致的工程结果错误,所以没有过多注意,但是遇到之后才发现运算符优先级的重要性。
2024-08-22 12:35:25
4324
原创 解决怎样在使用Signal Tap进行在线调试时,单独编译工程没有报错,而在Signal tap添加了信号之后进行时编译报错。
解决怎样在使用Signal Tap进行在线调试时,单独编译工程没有报错,而在Signal tap添加了信号之后进行时编译报错。
2024-08-20 13:52:58
308
原创 FPGA开发——在线调试工具Signal Tap的使用
在我们进行FPGA进行开发时通常都会经历代码编写,仿真,下板验证等过程。使用FPGA进行开发的小伙伴都知道,在代码编写时往往花费不了太长的时间,下板验证更是。在开发中占绝大部分时间的是仿真,有时候编写代码只需要1天,而仿真就需要几天才能调试出来。而仿真有分为功能仿真(RTL仿真)、在线调试等两方面。在一般情况下我们往往只需要编写测试文件进行功能仿真就行,这样就能解决大多数问题。但这是在项目功能少,结构简单的方面。
2024-08-20 10:58:19
2683
原创 FPGA开发——DS18B20读取温度并且在数码管上显示
在上一篇文章中我们对于DS18B20的相关理论进行了详细的解释,同时也对怎样使用DS18B20进行了一个简单的叙述。在这篇文章我们通过工程来实现DS18B20的温度读取并且实现在数码管伤显示。
2024-08-19 14:35:57
1737
5
原创 FPGA开发——DS18B20的使用(理论)
DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出,相比较于模拟温度传感器,具有功能强大、硬件简单、易扩展、抗干扰性强等特点测温范围:-55°C 到 +125°C通信接口:1-Wire(单总线)
2024-08-19 13:42:45
1341
原创 FPGA串口调试中当电脑串口无法正常通信,设备管理器中“其它设备”位置显示“USB-Blaster”显示感叹号等问题应该怎么解决?
在图片中我们可以看到FPGA要使用的串口显示已停产或者感叹号的,其实这里存在的问题就是串口驱动版本太老了,所以设备才会显示停产。当我们进行FPGA开发关于串口等试验的设计中,都需要用到串口,而要使用串口就需要先安装串口驱动,但是在安装驱动的过程中会出现各种各样的问题。4)如图所示,进行①、②操作,“更新驱动程序警告”提示框选择“是(Y)”2、进入设备管理器中“USB-Blaster”位置,点击更新驱动。5)更新成功,设备管理器成功显示“JTAG cables”。2)点击“让我......选取”,如下图。
2024-08-13 20:02:30
861
1
原创 FPGA开发——UART回环实现之发送模块的设计和数据回环整体实现
在上一篇文章当中我们实现了UART接收模块的相关设计和功能实现,在今天的文章中我们继续实现剩下的发送模块的相关设计和完成完整的串口数据回环的实验。在文章的最后我会给出完整的工程,给小伙伴们参考。
2024-08-13 19:49:39
1318
原创 FPGA开发——UART回环实现之接收模块的设计
因为我们本次进行串口回环的实验的对象是FPGA开发板和PC端,所以在接收和发送模块中先编写接收模块,这样可以在后面更好的进行发送模块的验证。(其实这里先编写哪个模块)都不影响,这里看自己心情,反正都可以独立进行仿真。在上一篇文章中,我们对于UART回环实现的总体系统框架做了一盒简单的构建,所以在实现时我们也按照那个框架来。这里就先对于接收模块进行一个设计。
2024-08-12 19:38:51
772
原创 FPGA开发——UART串口通信的介绍和回环实验框架构建
UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种广泛使用的串行通信协议,特别适用于微控制器、计算机和各种嵌入式设备之间的数据通信。UART是一种异步串行通信方式,通过数据线上传输二进制数据位。它不需要专门的时钟信号线来同步发送和接收双方的数据传输,而是通过起始位和停止位来标识数据帧的开始和结束。UART通信具有简单、易于实现和广泛应用的特点,适用于短距离、低速度的数据传输。
2024-08-12 18:57:38
326
原创 FPGA开发——verilog随机涵数$random的使用方法
我们进行FPGA开发的过程中在做仿真的时候,难免会需要一些数据作为输入。有的时候需要输入大量的数据对于设计结果进行一个验证,如果逐个去进行输入,就需要花费大量的时间。这种情况下我们通常会想到使用随机数。随机数在我们的日常开发中非常常见。不管是在软件编程还是硬件开发中,应用都非常广泛。在FPGA开发中我们同样也可以使用Verilog提供的随机数生成系统任务$random来帮助生成大量的随机数。
2024-08-09 19:46:07
1007
4
原创 FPGA开发——IP核的FIFO调用
FIFO 的英文全称是 First In First Out,即先进先出。FPGA 使用的 FIFO 一般指的是对数据的存储具有先进先出特性的一个缓存器,常被用于数据的缓存或者高速异步数据的交互,也即所谓的跨时钟域信号传递。它与 FPGA 内部的 RAM 和 ROM 的区别是没有外部读写地址线,采取顺序写入数据,顺序读出数据的方式,使用起来简单方便,由此带来的缺点就是不能像 RAM 和 ROM 那样可以由地址线决定读取或写入某个指定的地址。
2024-08-09 19:21:30
1804
2
原创 FPGA开发——IP核RAM的调用(双端口)
在上一篇文章中我们对于单端口的RAM调用进行了一个简单的介绍和相关应用,在这篇文章当中我们对于双端口的RAM进行介绍和调用,在调用程度上来说,双端口RAM是单端口RAM的一个进阶。双端口RAM分类简单双口 RAM:一组读数据和读地址线,一组写数据和写地址线,能同时进行读和写操作, 但不能同时对同一地址进行读和写操作。真双口 RAM:有两组读数据线与读地址线,两组写数据线与写地址线;能同时进行两个端口 读,能同时进行两个端口写,也能一个端口读同时另一个端口写。
2024-08-08 18:40:29
2189
原创 FPGA开发——IP核的RAM调用(单端口)
RAM(Random Access Memory),即随机存取存储器。可以随时吧数据写入任一制定的地址的 存储单元,可以随时从任一指定地址独处数据。时钟频率决定读写速度。RAM 主要用来存放程序以及程序执行过程中产生的中间数据和运算结果。
2024-08-08 17:26:56
1384
原创 FPGA开发——在Quartus中实现对IP核的PLL调用
PLL主要由鉴相器(PD)、环路滤波器(LF)和压控振荡器(VCO)三部分组成。鉴相器检测输入信号与VCO输出信号的相位差,并输出一个与相位差成正比的电压信号。该信号经过环路滤波器滤除高频噪声后,作为控制电压输入到VCO,调整其振荡频率,使输出信号的相位逐渐接近输入信号的相位,直至两者相位锁定。PLL是FPGA重要的资源,不同FPGA的PLL 是不一样。以我们开发板的Cyclone IV为例,它有两个PLL,每个PLL可以提供5路输出。
2024-08-07 19:49:15
2168
原创 FPGA开发——IP核的介绍
在我们在使用FPGA进行相关开发,设计涉及到复杂的开发时往往需要编写大量的代码对于想要实现的功能进行一个实现,这不仅增加了我们的工作量,往往还会增加开发难度。今天我们就来引入在FPGA开发中IP核的相关概念。在FPGA(现场可编程门阵列)开发中,IP核(Intellectual Property Core)扮演着至关重要的角色。IP核是具有独立功能的电路模块的成熟设计,这些设计可以应用于包含该电路模块的其他芯片设计项目中,从而显著减少设计工作量,缩短设计周期,并提高芯片设计的成功率。
2024-08-07 18:38:01
2129
原创 Quartus中进行RTL仿真时出现cannot launch the Modelsim software ...........的错误
刚开始 我以为测试文件的问题,反复检查了几遍,后面检查了十几分钟以后发现了错误所在,是仿真的类型出现了错误,导致在modelsim仿真时出现错误。在这里将Modelsim换成Modelsim-Altera。最后点击apply和ok,重新点仿真,问题成功解决。
2024-08-06 20:16:19
623
原创 FPGA开发——开发流程的介绍
在我们进行FPGA的开发时,虽然能够正常进行开发和设计,单单往往会忽略一些相关的理论。这里我们来讲一下FPGA开发中的设计流程进行一个概述.
2024-08-06 13:21:10
657
原创 FPGA开发——数码管数字时钟的设计
涉及到复杂的代码编写时,我们就需要使用分块化的代码编写思想对不同功能的代码进行分层、分块、分文件编写,最后将各部分进行整理总和,采取这种方式进行代码可以时我们在编写代码时条件清晰,逻辑明确,如果是全部写在一个设计文件里我们的代码就会显得非常多并且就算注释写了不少也回显示杂乱无章。在本次设计中我们使用6个数码管分别进行“hh.mm.ss”的格式让数码管进行显示,这篇文章我们先进行时钟的单纯显示,在下一篇文章中往里面加入按键灯进行可调的时钟的设计。这里对于顶层文件进行仿真,所以新建一个top_tb.v文件。
2024-08-03 15:42:27
1225
1
原创 FPGA开发——基于Quartus的工程建立以及下载仿真全过程
在使用了这么久的FPGA之后,才发现前面光发了各个设计的设计文件和测试问价,还没有发过怎么利用我们编写的代码进行仿真和使用软件进行工程建立和下载验证的过程,今天就补发一篇Quartus的工程建立以及下载仿真全过程。这里只针对在前面创建工程时没有添加设计文件的情况。如果添加过了就可以直接跳过这一步。在object Navigator 里面选择files选项出现一个文件夹。在这是我们双击文件夹就可以进入添加设计文件的界面。
2024-08-03 14:36:11
2719
1
原创 FPGA开发——呼吸灯的另一种实现方式
关于呼吸灯的设计其实在前面的文章中就已经提到过,这篇文章更多的针对前面的实现方式进行一个改良。在前面的呼吸灯的设计使用的是us、ms、s的三级计数器进行功能实现,这种实现方法应该是我们最后理解也是最常用的方式。但经过蜂鸣器的音乐播放器的设计之后突然一想,既然呼吸灯也用的PWM进行设计,为什么不直接使用调制占空比的方式进行实现呢。经过系统的总结,其实前面文章实现的方式虽然通俗易懂,但严格来说不算是PWM调制,只能说刚好踩在了点上,所以也能实现。
2024-08-01 19:41:02
858
原创 FPGA开发——蜂鸣器实现音乐播放器的设计
我们在进行蜂鸣器的学习的时候,总会在想既然蜂鸣器能够发出声音,那么它能够播放音乐吗,今天这篇我们文章我们就一起来学习怎样使用使用蜂鸣器来播放音乐,也就是怎样成为一个音乐播放器。PWM(Pulse Width Modulation),即脉冲宽度调制,是一种模拟信号电平数字编码方法。它通过将有效的电信号分散成离散形式,从而来降低电信号所传递的平均功率。PWM技术的核心在于通过调节脉冲的时间宽度(占空比)来等效地获得所需要合成的相应幅值和频率的波形。
2024-08-01 19:13:18
3222
原创 FPGA开发——按键控制数码管的设计
按键控制数码管是一种常见的电子显示技术,它结合了按键输入与数码管显示的功能。在这一设计中,用户通过按下不同的按键来发送指令,这些指令随后被处理并转换为数码管上显示的数字或字符。按键通常作为输入设备,通过电路连接到微控制器(如FPGA、单片机等)的输入引脚,而数码管则作为输出设备,其显示内容由微控制器控制。按键输入处理:微控制器不断扫描按键的状态,当检测到按键被按下时,根据按键的编号或功能执行相应的操作。指令转换:将按键的输入转换为数码管能够理解的显示指令。
2024-07-31 20:26:08
1635
原创 FPGA开发——数码管的使用(二)
在上一篇文章中我们针对单个数码管的静态显示和动态显示进行了一个设计和实现,这篇文章中我们针对多个数码管同时显示进行一个设计。这里和上一篇文章唯一不同的是就是数码管位选进行了一个改变,原来是单个数码管的显示,所以位选就直接赋值就可以了,但在本篇文章中一次性使用了多个数码管,所以在位选信号中我们就需要进行一个更改。实验的重难点在进行多位数码管的显示时,最大的难点就是怎样选择每个数码管的位选,以及每个数码管之间显示的时间间隔,这时本次设计中所设计的两个重难点,只要掌握着两个点,设计也就变得非常简单。
2024-07-31 18:49:50
717
原创 FPGA开发——数码管的使用
市场上我们常见的数码管有共阴极啊和共阳极两种信号,其外观上没有什么区别,都是通过原理图进行判断和区分,两种数码挂对应的驱动方式也不一样。在对数码管进行相关控制时,其实就是对于8段发光二极管和一个位选信号进行控制,也就是我们熟悉的段选和位选。在最下面的三极管我们可以看到只有当SELx_T为低电平时三极管才会接通,所以这里通过判断是共阳极,通过低电平触发。在我们的日常开发中,数字显示的领域中用得最多的就是数码管,这篇文章也是围绕数码管的静态显示和动态显示进行一个讲解。2、共阴极和共阳极的判断。
2024-07-30 21:11:54
903
原创 FPGA开发——蜂鸣器的控制
在项目开发的过程当中,我会通常会需要一个东西就行报警显示,有使用语音报警,信息报警等注入此类的方式,但最为简单使用的还是蜂鸣器的使用,蜂鸣器控制简单,成本低,是最为常用的模块之一。今天我们就来对蜂鸣器在FPGA中的使用进行一个简单实现。
2024-07-29 15:23:54
901
原创 FPGA开发——按键控制LED的实现
在顶层文件中,使用一个中间变量key_out将按键中的输出赋值给LED模块中的按键标志位输入key_flag。通过我们前面编写的按键消抖的文件和LED文件将按键和LED两个模块进行交互,从而达到按键控制LED的目的。在上一篇文章中我们学习了按键的相关消抖及其使用,在这篇文章当中我们就针对通过按键实现LED的控制。通过波形图我们可以看见当按键按下一次,LED状态切换一次,实现了按键控制LED的功能实现。新建led_ctrl.v文件。2、LED相关设计文件编写。
2024-07-29 10:39:23
1030
原创 FPGA开发——按键的使用及其消抖方法
我们在进行各种硬件开发时通常都会实现多效果的综合和实现,而在实际的开发中,每个时刻只会显示单个效果,这就需要涉及到效果之间的切换了,而要实现状态切换最好的就是使用按键进行按键,所以按键在我们的日常硬件开发中占据很大的作用。
2024-07-27 14:54:16
1370
原创 FPGA开发——状态机的使用
我们在使用FPGA进行开发的过程当中,实现一个东西用得最多的实现方法就是状态机的实现方法,用一句话总结就是万物皆可状态机,这和我们在学习Linux时常说的在Linux中万物都是文件差不多,这里就主要就是突出状态机的应用范围很广。
2024-07-27 11:30:47
1348
1
原创 FPGA开发——呼吸灯的设计
呼吸灯的原理主要基于PWM(脉冲宽度调制)技术,通过控制LED灯的占空比来实现亮度的逐渐变化。这种技术通过调整PWM信号的占空比,即高电平在一个周期内所占的比例,来控制LED灯的亮度。当占空比从0%逐渐变化到100%,再从100%变化回0%,就实现了灯光亮度由暗到亮,再由亮到暗的循环变化,模拟了人的呼吸效果。
2024-07-26 13:12:29
816
原创 FPGA开发——LED流水灯实现先从左往右流水,再从右往左流水
我们在设计完一个方向的流水灯的设计时,总是会想实现让流水灯倒着流水回去的设计,这里我也是一样,实现这种设计的方法有很多种,其中就有直接使用case语句将所有可能包含进去编写,这种设计方法是最简单的,还有就是使用多个计数器的方式进行标志判断,实现方向流水的切换,以及我们最常用的状态机方法的实现。因为这里的设计不太难,所以我就讲解前面两种实现方式,至于最后一种方法感兴趣的可以去实现一下。
2024-07-26 12:41:15
1319
原创 FPGA开发——实现流水灯的设计
众所周知,在我们学习任何一款硬件,不管是单片机MCU,DSP以及其他的一系列硬件在内的最开始接触的都是LED流水灯的实现,这就和我们在学习编程时的输出“HelloWorld”一样,我们在学习FPGA的过程当中也是要从LED流水灯开始学起。
2024-07-25 21:20:41
682
原创 FPGA开发——奇数分频器的设计
在我们进行FPGA分频器的学习当中,我们通常会学习怎样完成任意分频器的设计,其中就包括偶数分频最为常见。在实现的分频器的同时我们也会不定时的要求同时设置对应的占空比。今天我们就来看看怎样同时设置奇数分频器和其对应50%的占空比。
2024-07-25 20:50:55
538
原创 FPGA开发——偶数分频器的设计
我们在日常进行FPGA的开发之中,会根据需求的不同设计不同的功能实现,这就需要不同的分频信号,而分频的思想在我们的日常开发中显得尤为重要。
2024-07-24 20:32:29
818
原创 FPGA开发——独立仿真和联合仿真
我们在进行FPGA开发的过程之中,大部分情况下都是在进行仿真,从而验证代码实现结果的正确与否,这里我们引入了独立仿真和联合仿真进行一个简单介绍。联合仿真:一般我们在进行仿真之前需要在相应的软件中建立相应的工程之后才能进行结果仿真(这里我们使用的Quartus和modelsim)。这是我们习惯上采用的方式。独立仿真:顾名思义就是不依靠其他因素,对于代码进行直接仿真。这里我们通过得到的波形图和运用联合仿真的波形图是一致的,两者实现的结果都一样,只不过独立仿真更适用于代码结果的仿真。
2024-07-23 16:40:38
1227
蓝桥杯(Python)相关知识点记录,包含基础知识点,数据结构等算法实现,真题练习
2024-03-24
NLP项目,主要包括atten-seq2seq和transformer模型,实现机器翻译以及对话系统
2024-03-24
outline.js - 自动生成文章导读(Table of Contents)导航的 JavaScript 工具
2024-03-24
使用ruby解析awdb离线库
2024-03-24
Hprose 全名是高性能远程对象服务引擎
2024-03-24
基于MATLAB的绘图配色
2024-03-24
汇编语言实现计算器功能
2024-03-13
Python量化投资交易平台
2024-03-13
Ascend PyTorch adapter
2024-03-11
唛盟企业级研发管理系统简称唛盟xm,属于唛盟生态的专业子系统之一
2024-03-11
一些数学建模的模型,可供参考
2024-03-11
PaddlePaddle (PArallel Distributed Deep LEarning 并行分布式深度学习)
2024-03-11
iOS 自定义播放器,手势快进/快退,手势修改音量/亮度,类似优酷等视频类应用的视频播放器
2024-03-11
Android实时投屏软件.此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制 它不需要任何root
2024-03-11
JFinal 是基于 Java 语言的极速 WEB + ORM 框架
2024-03-11
两行js实现html全自动翻译,页面无需改动,无语言配置文件,无API Key,对SEO友好!
2024-03-10
基于stm32和proteus的家居环境采集仿真设计
2024-03-10
一个基于Qt开发的 *斗*地*主*小游戏
2024-03-10
一款管理AT命令通信交互组件
2024-03-10
一种新型的功能强大的串口工具
2024-03-10
基于嵌入式的智能开关平台
2024-03-10
基于51单片机的智能声控灯
2024-03-06
利用51单片机和水流量传感器检测水流量
2024-03-06
智能车联-实时监控汽车信息,实时数据
2024-03-28
简单的网站信息收集工具
2024-03-28
识别生物染色体的数据以及代码
2024-03-28
LZUPAT组织的ACM镜像仓库
2024-03-28
Swift版字典转模型框架
2024-03-28
YOLO系列网络的改进仓库
2024-03-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人