- 博客(22)
- 收藏
- 关注
原创 FPGA实时图像采集与显示(二)----- HDMI显示
早期基于FPGA的开发板上,实现HDMI一般使用的是HDMI发送芯片,典型的例如ADV7513sil9022CH7301,使用这些芯片实现HDMI发送,本质上还是将FPGA输出的 24位像素数据+3位的控制信号(HSYNCVSYNCDE)接入这些芯片,然后由这些芯片完成数据的编码和串行发送。例如DE10_NANO_SOC 开发板上使用 ADV7513 实现的 HDMI发送电路,可以看到,除去用于音频传输的 I2S 相关信号,仅与视频数据传输相关的信号就高达 28 个。
2024-08-10 19:14:53
5034
原创 FPGA串口通信----uart(二)
一、多字节发送(Tx_bytes)在UART(一)中主要解决的是单字节的发送和接受但是单字节的应用场景相对较小。在大多数场景下,串口都是用于连续多字节的收发工作。因此,本篇文章将基于已有的单字节串口收发模块,结合上一章学习的状态机,完成多字节串口发送模块和多字节串口接收模块的设计,并通过仿真和板级测试对设计进行验证,完成多字节串口收发的验证。一、多字节发送(Tx_bytes)
2024-08-08 23:25:45
1229
1
原创 状态机(一)
1、第一个进程,同步时序always模块,格式化描述次态寄存器迁移到现态寄存器,即描述状态转移2、第二个进程,组合逻辑always模块,描述判断状态转移条件,描述状态转移规律3、第三个进程,同步时序always模块,格式化描述次态寄存器输出,其它always(个数与输出信号个数有关)使用同步时序电路设计每一个状态的输出。
2024-08-06 23:39:55
235
原创 FPGA串口通信----uart(一)
通过PLL锁相环IP的使用,可以输入时钟进行分频,倍频,也可以产生多路时钟输出信号。外部提供晶振的原因:①Fpga电路大多数需要时序分析②晶振在Fpga内部占空间大,所以放置于外部PCB板上Uart异步传输速率不能很快的原因:考虑到工程实际问题,假如时钟周期大(传输速率慢的话),采取到数据电平变化的边沿时刻的概率会小很多,这样数据也很准确,通常uart适用于2M.
2024-08-05 17:57:59
657
原创 FPGA实时图像采集与显示(一)---- VGA控制与显示
使用 FPGA驱动VGA 虽然不适合用来显示复杂多变的图像内容,但是却常用于显示实时图像内容,例如显示图像传感器实时采集到的图像。此种方式数据流由图像传感器实时提供,FPGA只需要控制好图像数据流的存储和传输即可,无需主动生成需要绘制的图像数据,所以实现相对简单。图像的采集和显示系统设计,我们首先解决VGA部分的理解与代码设计。
2024-07-27 19:06:47
477
原创 异步FIFO理解及设计
由图可见,异步FIFO的核心部件就是一个 Simple Dual Port RAM;左右两边的长条矩形是地址控制器,负责控制地址自增、将二进制地址转为格雷码以及解格雷码;下面的两对D触发器 sync_r2w 和 sync_w2r 是同步器,负责将写地址同步至读时钟域、将读地址同步至写时钟域。
2024-07-26 14:52:04
2203
原创 同步FIFO理解及设计
读/写存储阵列FIFO 从读写时钟上来分有两类结构:同步 FIFO和异步FIFO。同步 FIFO 具有一个时钟(读写共用一个时钟)输入,因此所有输入信号的读取都是在这个时钟的上升沿进行的,所有输出信号的变化也是在这个时钟信号的上升沿的控制下进行的,即单时钟 FIFO的所有输入输出信号都是同步这个时钟信号的。而在异步FIFO结构中,写端口和读端口分别有独立的时钟,所有与写相关的信号都是同步于写时钟 wr_clk,所有与读相关的信号都是同步于读时钟 rd_clk。
2024-07-24 16:49:06
889
原创 亚稳态及跨时钟域处理
数据传输中不满足触发器的Tsu(建立时间)和Th(保持时间),或者复位过程中复位信号的释放相对于有效时钟沿的恢复时间(recovery time)不满足,就可能产生亚稳态。情形一(不满足建立时间和保持时间)情形二(复位信号释放实际不满足)在同源时钟下,时钟驱动寄存器的信号改变在保持时间之后;在同源时钟下,时钟判断、检测寄存器的数值都是在刚开始建立时间时。
2024-07-22 21:20:51
1412
原创 FPGA ------ SDRAM控制器(一)
SDRAM的全称即同步动态随机存储器(这里的同步是指其时钟频率与对应控制器(CPU/FPGA)的系统时钟频率相同,并且内部命令的发送与数据传输都是以该时钟为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机指数据的读取和写入可以随机指定地址,而不是必须按照严格的线性次序变化。sdram存储容量 = 数据位宽 * 存储单元数量(Bank数 * 行地址 * 列地址)
2024-06-20 17:31:23
1296
原创 使用Uart串口控制LED灯闪烁
通过串口调试助手,使用串口发送电脑指令到fpga开发板,来控制led灯的工作状态。通过三个模块来实现 串口控制led闪烁:1.uart的数据接收模块:将用户数据通过串口调试助手发到fpga2.串口命令模块:将uart接受模块的数据通过该模块,通过一个自定义协议来发送led灯所需的控制信号3.led工作状态的控制模块:闪烁时间和闪烁状态由用户指定(Time,Ctrl[on/off])自定义协议如下:类似于起始位和停止位的判定,通过数据的移位和比较。
2024-04-09 21:53:37
1618
1
原创 FPGA串口通信之Uart接收
PS:由于实际工程的问题,1_000_000_000/115200 = 8680这边的计算舍去了小数,因此经过这么多位的数据传输,每一位都比实际问题少了20ns,所以不能用理想的@(posedge rx_done)去接受,所以tb文件的编写#90000必须将延时拉到后面。(在接收单个bit时,将其分为16段,分别取每一个bit的中间段,在通过比较其七小段所加之和与4的大小,来判断接受数据为0或者1)答:通过检测起始位的下降沿,一旦检测到下降沿的产生,即为数据的接受开始。ps:需要检测边沿的理解。
2024-04-08 22:23:21
349
原创 FPGA串口通信之Uart发送(基础及应用)
PS: 1.在编写代码是,counter1从1开始传输起始位,是为了避免ounter1==0时与空闲状态重合。2.baud_counter == 1是为了缩小起始位的到达时间,这样就可以很快的进入到counter1== 1 的状态,从而实现起始位的传输。
2024-04-08 13:13:10
985
原创 从计数器到可控线性序列机——LED灯实验六部曲
设计定义:让LED灯按照指定的亮灭模式亮灭,亮灭模式未知,由用户随机指定,8个变化状态为一个循环,每个变化状态的时间值可以根据不同场景来选择而非固定的0.25s。
2023-10-18 20:33:33
165
1
原创 从计数器到可控线性序列机——LED灯实验六部曲
设计定义:让LED灯按照指定的亮灭模式亮灭,亮灭模式未知,由用户随机指定,以0.25秒为一个变化周期,8个变化状态为一个循环。
2023-10-17 16:38:38
107
原创 Verilog学习----4个LED的闪烁
设计定义:LED0以1HZ的频率闪烁,时间间隔为500ms;LED1以2HZ的频率闪烁,时间间隔为250ms;LED2以4HZ的频率闪烁,时间间隔为125ms;LED3以10HZ的频率闪烁,时间间隔为50ms。
2023-10-17 13:38:07
626
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人