FPGA中利用fifo时钟域转换---慢时钟域转快时钟域

devtools/2025/2/26 0:57:03/

FPGA中利用fifo时钟域转换—慢时钟域转快时钟域

一、时间计算方法

FIFO的输入数据的时钟是40MHz,FIFO输出数据取60MHz,刚好是40MHz的1.5倍,将慢时钟域转快时钟域。另外,fifo输出的数据,要输出给上位机,一帧数据要传输640*512=327680个像素数据,要求帧频为100Hz,对应的时间是1/100Hz=10ms,即要求10ms内将327680个数据传输完毕。验证fifo的输出时钟60MHz是否满足要求的方法:输出一帧数据的时间 = 一帧的总数据量/频率,T=(640 ×1.5 ×512 )/ 60M=8.192 ms

什么是频率:单位时间内周期变化的次数。1 Hz 表示每秒发生一次

二、注意的问题

1、FPGA中的计数器其实就是在计时。FIFO输入端的时钟频率小,输出时钟频率快,为了保证输入FIFO的数据与输出数据速度相等,即FIFO不至于读空,行计数器计数的最大值也必须放大1.5倍,即640*1.5=960,从FIFO中读数据时前640个计数时数据有效,这640个计数期间可以至一个标志rd_en位为1,作为FIFO读使能信号,960中的后320个计时为FIFO读数据消隐期,此时rd_en=0,即不读数据。这样输入FIFO的数据读出FIFO的数据时间上就可以匹配上,不至于将FIFO读空。

2、先预存一行640个数据到FIFO中,存第二行数据的同时,读取第一行的数据,这样FIFO就不会被读空;

3、FIFO输出后面的模块必须要60M的时钟来接收数据,不然数据会不正确。后面模块的时钟慢了数据会丢失,时钟快了会多出无效的数据。

三、代码设计:


module Slow2Fast(input i_reset,input i_clk_60m ,input i_clk_40m,input i_valid ,input [15:0] data ,output o_hsync,output o_vsync,output [11:0]o_vcnt,output [15:0] o_data
);reg  fifo_clr;reg  vsync ;reg  hsync ;reg  vsync_d ;reg  hsync_d;wire fifo_rd_req ;wire fifo_wr_req  ;wire [15:0] fifo_wr_data ;wire [15:0] fifo_rd_data ;reg [11:0]  hcnt;reg [11:0]  vcnt ;reg i_valid_d1;reg i_valid_d2,i_valid_d3;reg valid_shift_out,valid_buf;    //行场计数器,就是计时    always@(posedge i_clk_60m)begini_valid_d1 <= i_valid;i_valid_d2 <= i_valid_d1;i_valid_d3 <= i_valid_d2;if ((i_valid_d2 == 1'b1) && (i_valid_d3 == 1'b0)) begin //valid 信号的上升沿。上升沿到来,行场计数器清零hcnt <= 0;vcnt <= 0;endelse beginif (hcnt == (960 - 1))begin //输入时钟为40M,输出时钟为60M,60M=1.5*40M。 640*513 乘1.5时得: 960*563if (vcnt = (566 - 1)) //563vcnt <= vcnt;else beginvcnt <= vcnt + 1;endhcnt <=0;endelsehcnt <= hcnt + 1;      end//vcnt:0到513 hcnt:0到639      always@(posedge i_clk_60m) beginif (vcnt >= 1 and vcnt <= 512)// vcnt从1开始,因为要预存一行vsync <= 1'b1;elsevsync <= 1'b0;if((hcnt >= 0 && hcnt <= 639) && (vcnt >= 1 && vcnt <= 512))//FIFO读使能信号,在60M下在前640个计数,读信号为1,后320个计数为读FIFO消隐期hsync <= 1'b1;elsehsync <= 1'b0;if(vcnt = 513) fifo_clr <=  1'b1;elsefifo_clr <=  1'b0;end //		打拍always@(posedge i_clk_60m)  begin //60Mhsync_d <= hsync;vsync_d <= vsync;endassign  fifo_wr_req  = i_valid;assign  fifo_wr_data = i_data;assign  fifo_rd_req  = hsync;assign  o_hsync      = hsync_d;assign  o_vsync      = vsync_d; assign  o_data       = fifo_rd_data;assign  o_vcnt = vcnt;fifo_out inst_fifo_out (.rst		( fifo_clr ),.wr_clk	(  i_clk_40m ),//写FIFO时钟为40M.rd_clk 	(i_clk_60m) ,//读FIFO时钟为60M.din  	(fifo_wr_data)   ,.wr_en   	(fifo_wr_req)  ,.rd_en   	(fifo_rd_req) ,.dout    	(fifo_rd_data) ,.full  	(),.empty   	(),.wr_rst_busy	(),.rd_rst_busy 	());endmodule    
---晓凡	2025220日于武汉书

http://www.ppmy.cn/devtools/162685.html

相关文章

postgresql链接详解

PostgreSQL连接概述 连接基础 在探讨PostgreSQL连接的基础之前&#xff0c;我们需要理解什么是数据库连接。 数据库连接 是客户端应用程序与数据库服务器之间建立的一种通信通道&#xff0c;使用户能够访问和操作数据库中的数据。 PostgreSQL连接涉及以下几个关键要素&#…

Redis 存在线程安全问题吗?为什么?

Redis线程安全问题解析&#xff1a;从基础到深入 前言 Redis 是一种高性能的内存键值数据库&#xff0c;广泛应用于缓存、消息队列等多种场景。在高并发和分布式环境下&#xff0c;程序的线程安全问题尤为关键。许多开发者都会问&#xff1a;Redis 是否存在线程安全问题&#x…

C++ openssl AES/CBC/PKCS7Padding 256位加密 解密示例 MD5示例

C openssl AES/CBC/PKCS7Padding 256位加密 解密示例 加密 为了确保 AES 加密使用 AES/CBC/PKCS7Padding&#xff0c;我们需要确保在加密过程中正确处理填充。OpenSSL 的 AES_cbc_encrypt 函数并不自动处理填充&#xff0c;因此我们需要手动实现 PKCS7 填充。 以下是更新后…

【GESP】C++二级模拟 luogu-b3995, [GESP 二级模拟] 小洛的田字矩阵

GESP二级模拟题&#xff0c;多层循环、分支语句练习&#xff0c;难度★✮☆☆☆。 题目题解详见&#xff1a;https://www.coderli.com/gesp-2-luogu-b3995/ 【GESP】C二级模拟 luogu-b3995, [GESP 二级模拟] 小洛的田字矩阵 | OneCoderGESP二级模拟题&#xff0c;多层循环、分…

AI写代码工具ScriptEcho:赋能数据分析,驱动精准营销

在数字化时代&#xff0c;数据已成为企业发展的核心资产。而前端开发作为连接用户和数据的桥梁&#xff0c;其效率直接影响着数据分析的质量和营销决策的精准性。传统前端开发在处理海量用户行为数据时&#xff0c;常常面临效率低下、代码维护困难等挑战。然而&#xff0c;随着…

【文本】词嵌入经典模型:从one-hot到BERT

【文本】词嵌入经典模型&#xff1a;从one-hot到BERT one-hot编码&#xff08;独热编码&#xff09;&#xff1a; 根据词表的所有词构建一个向量特征。每一个文段中每个单词有一个词向量&#xff08;二进制且只有一位为1&#xff09; — 稀疏、缺乏语义&#xff08;father&am…

垂类大模型微调(二):使用LLaMA-Factory

上一篇博文和大家一起安装了LLaMA-Factory工具,并下载了大模型在上面进行了简单的加载和推理,今天尝试通过LoRa技术对大模型进行微调; 一、训练集准备 1.1 介绍训练集结构 这里演示对Qwen2.5-0.5B-Instruct-GPTQ-Int4模型进行LoRA微调, 大家可以根据垂类大模型微调(一)…

直播美颜工具架构设计与性能优化实战:美颜SDK集成与实时处理

当下&#xff0c;直播美颜工具的架构设计与性能优化显得尤为重要&#xff0c;尤其是在集成美颜SDK与实时图像处理的过程中。本文将围绕直播美颜工具的架构设计与性能优化展开探讨&#xff0c;分享美颜SDK集成与实时处理的技术实战。 一、直播美颜工具架构设计的核心要素 在直播…