![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FPGA学习
文章平均质量分 73
2023.7英特尔FPGA中国创新中心实习记录
Álegg xy.
这个作者很懒,什么都没留下…
展开
-
FPGA驱动SDRAM
SDRAM(同步动态随机存取存储器)。原创 2023-10-19 16:06:53 · 583 阅读 · 0 评论 -
SPI读写FLASH
存储结构:FLASH包括32个扇区(sector),每个扇区包含256个页(page),每个页包含256个字节(byte)。因此,每个字节的存储地址需要8bit的扇区地址+8bit的页地址+8bit的字节地址才能定位。指令集常用的指令有WREN(读使能),RDID(读ID),RDSR(读状态寄存器),READ(读数据),PP(页编程),SE(扇区擦除)时间满足条件:页写,全擦除,扇区擦除指令执行完成需要一定的时间指令与指令之间需要相隔一段时间。原创 2023-10-08 18:48:20 · 464 阅读 · 0 评论 -
AHT10读取温湿度
由图可知我们不同状态的命令不同,需要符合起始位/写数据/读数据/停止位/校验位,对应的关系存在如下情况。(iic_interface可直接用前文IIC读写EEPROM一文的接口模块)读数据和写数据时 8bit,起始位,校验位,停止位都是 1bit。温度测量命令同理,读数据更改为 7 个字节,也就是循环 7 次。其中用到了仿真模型,完整工程可以通过。因为图片太长,分两部分截图。原创 2023-09-29 16:28:35 · 513 阅读 · 1 评论 -
FPGA实现滤波器
根据如图的电路图实现滤波器功能其中h[0]–>h[11]为抽头系数输入的波形数据详情可见。其中包含coe_q.txt 为抽头系数文件,wave_bin.txt 为输入的数据波形文件,仿真.png 为我们最终要实现的效果。原创 2023-09-29 14:10:09 · 141 阅读 · 0 评论 -
IIC读写EEPROM
EEPROM的全称是“电可擦除可编程只读存储器”,即Electrically Erasable Programmable Read-Only Memory。本项目中使用的是24LC04B器件ID(可以视为是7’b1010000加上一位的0/1)单字节写页写当前地址读随机地址读顺序地址读24LC04B存储空间包括2个block,每个block中包含256个字节。原创 2023-09-23 16:47:50 · 233 阅读 · 0 评论 -
DS18B20读取温度实验
DS18B20数字温度传感器提供9-12bit的摄氏温度测量精度和一个用户可编程的非易失性且具有过温和低温报警功能。采用单总线接口方式通信每个设备内部ROM上烧写了一个独一无二的序列号可以由数据线供电而不需要外部电源供电测量范围在-55℃~125℃在温度范围超过-10摄氏度至85摄氏度之外时还具有±0.5℃的精度。原创 2023-08-26 14:21:41 · 903 阅读 · 1 评论 -
uart串口环回(加校验位)
根据传输的数据计算出一个校验位和我们传输的校验位做对比。使能信号需要保证在传输的校验位和计算的校验位相等时才有效。根据无校验位,奇校验位,偶校验位三种情况,需要改变状态转移图。原创 2023-08-24 15:38:33 · 949 阅读 · 0 评论 -
uart串口环回(加FIFO)
UART(universal asynchronous receiver-transmitter)是一种采用异步串行通信方式的通用异步收发传输器。定义如上,那么出现问题了,什么叫异步串行通信?请关注下文原理。原创 2023-08-24 10:58:35 · 1916 阅读 · 0 评论 -
ws2812动态滚动显示图片
如图所示:第一帧为红色框,显示第一个8 * 8的图像,然后向右平移,显示绿色框内的第二个8 * 8的图像…到最后显示紫色框内最后一个8 * 8的图像。可以设置帧与帧之间延时500ms,在视觉上就得到了滚动的状态。3.rom核中地址值的考量,(横坐标+帧数)取余32+纵坐标乘32。2.加入一个状态,在此状态计数500ms,跳转到显示下一帧。4.rom核的数据深度需要调整,不然会溢出,影响最后显示。1.在静态基础上加入帧计数器。原创 2023-08-15 21:04:42 · 319 阅读 · 0 评论 -
ws2812静态显示图片
我们可以理解为共64个位置,每个位置需要24bit的数据,我们生成64*24bit的数据,这些数据每经历一个位置,就把这个位置给足24bit的数据,然后再经历下一个位置,走完64个位置也就把数据给完了。上图中,高低电平时间给的是范围,那么我们可以根据范围内取合适的值,例如T0H取300ns,T0L取900ns,T1H取600ns,T1L取600ns(保证T0H+T0L=T1H+T1L)可以读出mif文件的数据,这里rom用在ws2812_ctrl模块中。注意:要将mif文件保存至工程文件夹prj文件夹下!原创 2023-08-15 19:12:33 · 423 阅读 · 0 评论 -
综合之自动售货机2.0
1.初始状态按key[0]开始购物,按key[3]进入管理员模式。2.开始购物后选择商品,按key[0]切换商品。3.选择商品后按key[1]选择商品数量,按key[1]加一,按key[2]减一。4.选择商品和数量后,可以按key[0]返回继续购物,也可以按key[3]现在结算。5.初始状态按key[3],输入正确的密码进入管理员模式。6.进入管理员模式后可以选择商品,按key[0]切换商品。7.选择商品后按key[3]可以修改单价,按按key[1]加一,按key[2]减一。原创 2023-08-14 19:42:49 · 199 阅读 · 0 评论 -
综合之多功能电子时钟
蜂鸣器低电平有效数码管低电平有效。原创 2023-08-12 16:47:46 · 51 阅读 · 0 评论 -
EP4CE6F17C8程序固化
1.File->Convert Programming Files2.配置如下3.加入.sof文件生成.jic文件4.Programming界面delete原本的sof文件5.加入.jic文件6.勾选Programming Configure再下载即可原创 2023-08-12 15:38:36 · 150 阅读 · 0 评论 -
IP核之FIFO
FIFO(First In First Out)即先入先出,适用于跨时钟域信号传递。原创 2023-08-12 15:05:45 · 1371 阅读 · 0 评论 -
IP核之RAM
RAM(Random Access Memory),即随机存取存储器,可以将数据写入地址,可以随时从任意指定地址读取数据。时钟频率决定了读取速度。原创 2023-08-12 10:52:11 · 1197 阅读 · 0 评论 -
IP核之PLL
IP,知识产权。其可分为三种:软核,固核,硬核PLL(锁相环),其功能有:时钟分频,时钟倍频,调节相位,调节占空比。PLL核就是一种硬核。PLL原理是一个反馈电路,原理如下图:我们使用的EP4CEF17C8芯片有两个PLL,每个PLL可以有5路输出注意:!!!FPGA内部生成的信号不能控制PLL!!!原创 2023-08-07 19:55:01 · 456 阅读 · 0 评论 -
蜂鸣器播放《粉刷匠》
每两个“ | ”之间设定为1s,那么每一拍设定为250ms,有一些空拍,我们将空拍设定为保持上一个音符的频率。于是我们可以对应每一个音符应该是DO,RE,MI,FA,SO,LA,SI中的哪一个。我们想播放《粉刷匠》,需要得到它的乐谱如下。原创 2023-08-07 17:22:08 · 298 阅读 · 0 评论 -
改进电子门锁并加入数码管
前文已经发过电子门锁初步设计,但是后来发现有缺陷:多错误几次就很容易猜到正确的密码,有损安全性,于是本文做改进设计,并补充加入数码管显示键入密码功能。原创 2023-08-02 20:16:50 · 49 阅读 · 0 评论 -
数码管实现电子秒表
在结束计数的条件做修改,当它计满或者按下key[1]的时候则计数器清零。后来我才想到,好像复位就可以实现清零的操作。原创 2023-08-02 19:46:15 · 985 阅读 · 0 评论 -
数码管实现电子时钟
【代码】数码管实现电子时钟。原创 2023-08-02 18:56:13 · 932 阅读 · 0 评论 -
状态机实现电子门锁
【代码】状态机实现电子门锁。原创 2023-07-30 18:12:45 · 268 阅读 · 1 评论 -
动态数码管
2.考察状态:确定对应的sel应该哪个亮;并data赋给对应的值。3.考察data:data值对应真值表给seg赋值。1.flag状态转移条件:计满1s。原创 2023-07-30 13:51:49 · 108 阅读 · 1 评论 -
静态数码管
数码管分为7段数码管和8段数码管,其区别在于是否有小数点位。其本质是led点亮,则该段点亮。原创 2023-07-29 16:58:18 · 95 阅读 · 0 评论 -
状态机点亮流水灯
有限状态机(Finite State Machine, FSM),又称有限状态自动机,简称状态机,是指在有限个状态之间按照一定规律转换的时序电路。有限状态机主要包括:米勒状态机和摩尔状态机。其中摩尔状态机输出只依赖于当前状态而与输入无关。米勒状态机不仅依赖于当前状态,还取决于该状态的输入条件。原创 2023-07-27 20:26:17 · 265 阅读 · 1 评论 -
按键消抖补充
该时序图实现的是一位按键的情况。在使用消抖后按键信号的时候,可以在顶层调用消抖模块多次;也可以写多位按键消抖情况。1、4位按键信号赋值需要4位位宽的二进制数。5、如何赋值可以实现输出的脉冲信号。2、上升沿和下降沿如何求值。原理:仍然是采用延时方法。原创 2023-07-27 19:25:06 · 150 阅读 · 1 评论 -
按键消抖&蜂鸣器
由于按键的物理特性,芯片会识别信号出现多次高低电平变化,会出现如下图的未消抖信号。影响我们的整个项目。所以我们在使用按键时需要消抖,以确保按键被按下时只检测到一次低电平,我们期望的效果如下。根据延时计数器获取状态(是否抖动)的按键信号。原创 2023-07-26 20:58:00 · 582 阅读 · 1 评论 -
PWM呼吸灯
PWM就是在合适的信号频率下,通过一个周期里改变占空比的方式来改变输出的有效电压。频率很高时,看不到闪烁,占空比越大,LED越亮;频率很低时,可看到闪烁,占空比越大,LED越亮。原创 2023-07-24 19:37:47 · 261 阅读 · 0 评论 -
时序逻辑基础之D触发器&分频器
由图可知Q值不仅与D有关,同时需要考虑到clk上升沿到来后有效。仍然以5分频和8分频为例,探究奇数和偶数的仿真效果。D触发器模拟波形图如下。原创 2023-07-22 16:45:03 · 4419 阅读 · 0 评论 -
组合逻辑基础之全加器
全加器也是由半加器进而实现的,不仅可以用verilog代码实现,也可以用模块图实现。N位全加器可以成为一个模板,需要不同位数的全加器只需要修改N值即可,仿真文件的修改需要对应我们修改的N值来定义激励信号和输出信号的位宽。原创 2023-07-22 15:50:41 · 240 阅读 · 0 评论 -
多路选择器
使用组合逻辑电路,always语句中需使用reg类型,所以先定义一个reg类型的out_r在always语句中使用,最后再用assign out = out_r实现同步。回到wave界面对波形crtl+A,再ctrl+G可以对信号进行分类。再点击Restart和Run all,即可得到最终的信号波形。Quartus上面的菜单栏中,如图中框1是全编译,如图中框2为分析综合。仅分析综合可以实现语法检错,并且比全编译要更快一些。四个输入信号,一个输入的选择信号,一个输出信号。观测例化模块波形按下图操作。原创 2023-07-20 19:51:55 · 3827 阅读 · 0 评论 -
按键控制LED灯
由图分析可得,按下按键时KEY的值为0。原创 2023-07-20 09:24:48 · 647 阅读 · 0 评论 -
verilog基本语法
逻辑 X:表示未知,有可能是高电平,也有可能是低电平;逻辑 Z:表示高阻态,外部没有激励信号是一个悬空状态。逻辑 0:表示低电平,也就是对应我们电路的 GND;逻辑 1:表示高电平,也就是对应我们电路的 VCC;原创 2023-07-19 19:01:13 · 149 阅读 · 0 评论 -
LED流水灯
打开Quartus后选择File->New Project Wizard或者直接点击主页上的New Project Wizard。笔者个人习惯先在vscode中写好代码后建立项目,因此此处我直接添加的代码文件。选择工程路径(放在3.1中新建文件夹的prj子文件夹中)以及为工程命名。右键左侧芯片EP4CE6F17C8后点击Device。点击Device and Pin Options。引脚配置如下(注意编译通过后方可配置引脚)选择芯片EP4CE6F17C8。原创 2023-07-19 19:05:06 · 81 阅读 · 0 评论 -
Quartus&Modelsim安装及有关配置
在Verilog->Linting->Modelsim:Work中填入刚刚的work所在的路径。选择Tools->Run Simulation Tool->RTL Simulation即可观测波形(由于此处我没有打开工程文件所以是灰色无法点击)再次点击Tools->License Setup。Quartus中点击Tools->options,选中EDA Tools Options,填入Modelsim的安装路径。选择如下图安装的路径,勾选包括子文件夹后再点击下一步即可完成usb_blaster的更新。原创 2023-07-18 18:54:04 · 1934 阅读 · 0 评论