自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 FPGA学习之---串口+IIC实现对EEPROM读写操作

并指定读取多少或写入多少字节 设定功能cmd[7]:1为读 0为写 cmd[4:0]指定读取或者写入的字节数,设定最大为16。传输的数据帧为 0X55 OXA5 byte_address 功能码 数据字节0到15个 0XF0。M24LC64:器件地址1010_000 寄存器为16位,最高支持32字节连续读写。Byte_address为两个字节的寄存器起始地址 本次实验从0003开始。0X55 OXA5为帧头 0XF0为帧尾。最开始写操作功能码:10。

2024-05-29 23:07:40 339

原创 FPGA学习之---IIC总线协议

去年0基础参加高云赛道跟着野火手搓了一个IIC,但是调用OV5640时一直不出图,又没学会仿真IIC,一直以为没有写出来,头痛炸裂半年的阴影。现在跟着小梅哥课程学习到可以仿真EEPROM器件。本实验采用的是镁光官网提供的 EEPROM 仿真模型,仿真模型为24LC04B.v 文件。实验中系统时钟为50Mhz,SCL频率为250Khz。下图中红框中为发送区域。下图中红框中为接收区域。仿真时先对8'hB1地址写入8'h11,再读出数据。EEPROM:器件id:1010_000。

2024-05-24 15:16:23 343 1

原创 FPGA学习之------FIFO IP核

Vivado2019.1仿真FIFO ip,存储255个数据再读出。3:wr_rst_busy信号出现不定态是正常的,信号会被正常读取。仿真FIFO时,wr_rst_busy信号出现未知态的原因。5:读出的数据和valid信号延迟rd_en一个周期。2:wr_data_count延迟写入数据一个周期。4:almost_full相对full提前一个周期。6:almost_empty提前empty一个周期。1:fifo ip核复位信号rst是高电平有效。(出处: 芯路恒电子技术论坛)

2024-05-22 17:30:58 627 1

原创 FPGA学习之----串口发送图片+ram存储+tft屏幕显示

1:ram ip核输出时会有延迟,导致图像数据和屏幕坐标对应不上,将rgb_valid图像区域有效信号发送给ip核,然后ram会开始读出图像数据,所以采取将坐标信号延迟输出,因为提前给rgb_valid有效信号不好处理,将坐标信号延迟输出(根据ram输出数据的具体延迟周期),从而让输出的图像数据和屏幕坐标对应。该项目从串口发送256x256像素图片至ram存储(注意该芯片ram存储容量只有100k),再将图像数据发送到tft屏幕采取RGB565显示.2:小梅哥uart_rx接收教程有问题,

2024-05-18 17:48:12 582

原创 vivado进行rtl仿真时,数据和时钟同时跳变,是取变化前还是后的值?

图中箭头指向write_en的时刻,要想write_en产生变化,那么data_cnt采集的是变化之前的数据--data_cnt[0]=1,然而图中指向addra的时刻,要想addra产生变化,data_cnt应该采集变化之后的值,即dara_cnt[0]=1,为什么会产生这样的结果?计算赋值号右手边的信号时,所有的变量值均是触发沿到来前的值,更新的赋值号左手边的信号作为触发沿后的值,并且保持到下一个触发沿到来时候,等待更新。非阻塞赋值可以简单的认为 是赋予下一状态的值。根据仿真测试是取变化之前的值。

2024-05-06 01:01:18 1274 2

原创 FPGA学习之---串口+ram ip核存储数据

4:小梅哥的crtl模块对tx_done进行了三个延时,因为ram读出数据加了两个寄存器,有3个周期延时,才能正确控制uart_tx模块的send_en信号,但是我没看他写的uart_tx模块,自己写的时候是要求一直触发send_en才能进行发送,所以不需要考虑tx_done延时,只需要发送状态为发送数据时即有按键输入时就触发,这比他的简单多了。但是最终肯定是往zynq靠,慢慢来吧,读研自我救赎之路宛如长征。算是对前几天学的做了一个复习,利用串口收发模块和ram ip核进行了一个简易收发显示。

2024-04-25 22:04:21 611 1

原创 深入浅出玩转FPGA读书笔记3--异步信号的同步设计思想

脉冲信号和控制总线信号是两个时钟域信号,当他们同时有效,对寄存器counter操作时,一个在写入数据,一个在读取数据。实现方式,对两个信号变化采用脉冲边缘检测法,即上升沿和下降沿检测法,使他们被时钟信号clk约束。当来自两个不同的时钟域信号对同一个寄存器操作时,可能会产生亚稳态。为了避免这种情况,应该将两个信号同步化。

2024-04-14 10:13:19 390 1

原创 深入浅出玩转FPGA读书笔记2--分频时钟和使能时钟

2:保持一个始终,减少跨时钟域。可见最终输出效果一致。

2024-04-14 08:52:40 280 1

原创 深入浅出玩转FPGA读书笔记1--复位信号处理

电路没有统一的时钟,有些触发器的时钟输入端与时钟脉冲源相连,这些触发器的状态变化与时钟脉冲同步,而其他的触发器的状态变化不与时钟脉冲同步。verilog描述一个同步的D触发器,当有时钟脉冲时才会做出响应,而reset只会在时钟上升沿或者下降沿才会做出响应。:存储电路中所有触发器的时钟输入端都接同一个时钟脉冲源,因而所有触发器的状态的变化都与所加的时钟脉冲信号同步。用verilog描述一个异步的D触发器,即使没有clk触发条件,rst有触发条件时也会复位,与时钟无关。解决办法:采用异步复位,同步释放。

2024-04-13 19:01:50 195 1

原创 根升余弦滤波器

匹配滤波器设计的目标是最大化在噪声背景下的有用信号功率,也就是说,在接收信号经过匹配滤波器后,期望信号的峰值信噪比能达到最大。我理解的成型滤波器的作用是限制基带信号频谱,因为如果直接传输二进制基带信号时,0和1的跳变时间太快了,类似于阶跃信号,频谱无线宽,所以将二进制信号通过一个成型滤波器进行脉冲整形,从而限制基带信号的频谱范围,刚好根升余弦滤波器能满足,且满足奈奎斯特定理时,能够做到无码间串扰(ISI)。记录一下学习过程,一遍摸索一边学习吧~

2024-04-11 21:46:47 1678 2

原创 数字信号插值和 抽取

此时,假设信号最高频率为fc,那么当L比较大时,不满足抽样定理时,即fsL

2024-04-11 15:26:56 669 1

原创 串口UART 接收 Verilog实现

本次实验设置波特率115200,系统时钟50Mhz,所以每个比特持续8680纳秒,系统时钟计数至434个周期时bit数加1,每个比特分成16份,即一份占用434/16=27个周期,在计数至27个周期中任取一个时刻采样就可以了,最后判决6次采样0 1次数是否大于4。在实现串口时,吧每个bit分成16份,采样中间6个份,每一份采样一个点,就需要设置采样时钟。

2024-04-05 16:37:39 551 1

原创 FPGA学习之vivado综合优化问题

原因:猜测可能设置Data初始化为0时,从0开始计数发送,没有用到后面的位宽,这就导致行为仿真时位宽正确,post-synthesis 功能仿真时位宽被优化掉。解决办法:(*DONT_TOUCH="YES"*) reg [7:0]Data;强制约束Data变量不被优化。在实现的过程中发送的数据[7:0]Data在综合时被优化掉了前面的位宽,只剩下了一位。在实现串口问题:每隔10ms发送一个数据,依次加一。

2024-03-11 18:51:25 388 1

原创 FPGA学习之串口发送模块

的上升沿(从低电平到高电平的跳变)发生时触发后续的逻辑块执行。这种结构通常出现在测试模块(testbench)或设计模块中的同步时序逻辑描述中。1: 串口是异步收发器,保证发送的数据在时钟到来前稳定,对输入数据寄存一拍。波特率设置为115200时,数据位周期为8680ns,仿真结果与理论一致。是一个事件控制语句,它用于定义敏感列表,表示当信号。2: 保证STOP_BIT保持一个高电平。3: 在Verilog HDL中,

2024-03-10 13:42:11 214 1

原创 simulink模块学习之Error Rate Calculation的接收延迟

下图为测试搭建的系统:采用两个参数相同的随机序列发生器产生两路信号,其中一路信号经过1个延迟,使用Find Delay模块显示两个信号的延迟为1,所以在Error Rate Calculation接受延迟设置为1,可见误码率为0。1001个数据错误了731个数据,可见正确验证接受延迟。

2024-03-05 11:40:44 1479 3

原创 simulink实现QPSK调制解调

1帧是simulink处理数据的最小单位,本质还是一系列串行数据,每个数据持续时间是由sample time决定。所以输出信号维度是2x1。binary输入时,sample per frame 最少设置为2.因为QPSK Modulator要求设置为binary输入时比特时要成对输入。binary输入时,sample per frame 最少设置为2.因为QPSK Modulator要求设置为binary输入时比特时要成对输入。该模块有两种观察方式,一种是port输出,该方式会输出一个列向量:[R;

2024-03-04 17:42:12 3977 6

FPGA学习之-串口+IIC实现对EEPROM读写操作

vivado工程

2024-05-29

FPGA学习之-IIC总线协议

FPGA学习之-IIC总线协议

2024-05-24

FPGA学习之-串口发送图片+ram存储+tft屏幕显示

工程源码

2024-05-18

FPGA学习之-串口+ram ip核存储数据

基于小梅哥7a35t开发板

2024-04-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除