两个双口ram之间数据的传递

本文探讨了在FPGA中,如何实现两个双口RAM之间数据的传递。当两个RAM数据位宽相同时,利用时钟差异进行数据迁移;若位宽不同,通过移位或拼接方式实现。具体实现中,位宽不一致时,详细阐述了如何在相同时钟周期内,将RAM A的10位数据写入到RAM B的2位数据中,涉及地址管理和时序控制的处理技巧。
摘要由CSDN通过智能技术生成

1.如果两个双口ram数据位宽相同,则采用时钟快的ram等待时钟慢的ram来完成从一个ram中读取数据并存储到另一个ram中;例如从ram A中读取数据到ramB中,ram A的时钟为20M,而ram B的时钟为40M,可以重复读ram A来覆盖写ram B的方法,如果把ramB中的数据读取出写到ram A中,ram B需要等待ram A一个时钟后再改变地址。

2.如果两个双口ram数据位宽不同,可以通过移位或者拼凑位数来达到两个ram 之间的数据读写;例如,ram A的数据位宽为10,ram B的数据位宽为2,如果从A中读取数据写到B中,则ram A 每变动一次地址,需要有5个ram B的地址来接收数据,假如ram A B的读写时钟相同,则ram A 读取一个数据并写到ram B中至少需要5个时钟周期,考虑到ram读取的延时,对ram B 的地址addrB进行分析,一般初始化地址为0,0-4需要四次时钟累加,而4-9、9-14、......需要5次时钟累加,对于初始时第一次写入的5个时钟需要处理,方便做循环处理,可以通过延时或状态机来处理,使用6个时钟来读取1个位宽10的数据并写入到5个位宽为2的ram中。如下:A中100个数据写到B中500个地址中:

always@(posedge clk_high or negedge rst_n)
	if(~rst_n)
		main_state<=IDLE;
	else
		main_state&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值