最详细的FPGA的双口RAM乒乓操作与数据处理实例(第一部分)

首先说明一下 代码都是自己完全手写的,如果有人看了我的代码,欢迎指出不足,写的不好也不要嘲笑,一个字一个字写出来的。
- 1、目的
测试双口RAM的乒乓操作的功能,研究RAM输入输出操作,以及乒乓操作时序。即可以运用乒乓操作将数据完整的存入两个缓冲RAM中,并按要求读出并进行模拟累加运算。
通过乒乓操作的方式,循环向双口RAM1存入奇数,向双口RAM2存入偶数。并将每个RAM的数据读取两次,并将每次的结果相加,并输出。

-2、内容
(1)双口RAM是否能够正常存储和读出数据,并且数据正确;
(2)乒乓操作是否可行;
(3)是否可用循环读出;
(4)模拟输出数据累加是否正确;
备注:存入数据时钟为2M,读数据速度为62M,RAM深度为32,位宽为14位。系统时钟62M

- 3、过程

  • 3.1乒乓双口RAM模块设计
  • 3.1.1 双口RAM产生

利用FPGA的IP核产生双口RAM模块,其中address_a为写地址输入口,address_b为读地址输入口,clock为62M时钟输入口。Data_a为数据输入端口,enable_a为写使能信号输入口。Enable_b为读使能输入口,对a端口进行写,b端口设置为读,最后q_b为数据输出。具体下所示

Store_RAM1 data1(
	               .address_a(RAM_addr_w_1),
	               .address_b(RAM_addr_R_1),
    	            .clock_a(clock),
	               .clock_b(clock),
	               .data_a(data_in_1),
	               .data_b(),
	               .enable_a(clk_enable_1),
	               .enable_b(1'b1),
	               .wren_a(1'b1),
	               .wren_b(1'b0),
	               .q_a(),
	               .q_b(data_out_1)
	                );
Store_RAM1 data2(
	               .address_a(RAM_addr_w_2),
	               .address_b(RAM_addr_R_2),
    	            .clock_a(clock),
	               .clock_b(clock),
	               .data_a(data_in_2),
	               .data_b(),
	               .enable_a(clk_enable_2),
	               .enable_b(1'b1),
	               .wren_a(1'b1),
	               .wren_b(1'b0),
	               .q_a(),
	               .q_b(data_out_2)
	            );
  • 3.1.2 乒乓操作2选一部分

根据乒乓操作

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值