Avalon-MM总线控制DDR读写

Intel FPGA 的DDR控制器通过 Avalon总线进行读写控制,本文对Avalon总线突发读写DDR方法进行详细介绍。

Avalon-MM突发读写时序

突发写

下图是avalon突发写时序,当突发长度设置为4时,每次写入4个数据。waitrequest信号时从机发出的,主机操作只有在waitrequest为0低时有效,写是能信号write在waitrequest为低时,写入data1和addr1,在发送过程中如果waitrequest变为高电平,writedata、address和write需要保持原来的值,直到waitrequest变为低。突发写过程中,只需要写入首地址,其余地址会自动加1。

在这里插入图片描述

突发读

突发读时序中,在waitrequest为低时,读使能有效,主机输出突发读首地址,根据burstcount数值,在readdatavalid为高时,读取相应数量的数据。readdatavalid不受waitrequest影响。

在这里插入图片描述

DDR4接口ctrl_amm

DDR控制器的ctrl_amm接口是Avalon MM类型。通过ctrl_amm接口控制DDR读写。

在这里插入图片描述

在这里插入图片描述

DDR4读写时序

DDR接口读时序

对比DDR接口时序与Avalon总线协议接口时序,发现waitrequest信号存在差异,Avalon总线协议中waitrequest为低有效,DDR接口时序中waitrequest为高有效。

在这里插入图片描述

DDR接口写时序

DDR接口写时序更能明显看出waitrequest的差异。

在这里插入图片描述

代码

下面代码实现DDR简单读写。突发长度设置为4,将4个数据写入DDR,再读出4个数据。代码需要将输入的waitrequest先取反,把高电平有效改成低电平有效。

assign burstcount = 7'd4;
assign byteenable = 16'hffff;
assign writedata = {124'd0,cnt};

reg [5:0] state;
reg [3:0] cnt;
			 
always@(posedge clk,negedge rst_n)
begin
	if(!rst_n)
	begin
		state <= st0;
		address <= 25'd0;
		cnt <= 4'd0;
		write <= 1'b0;
		read <= 1'b0;
	end
	else
	begin
		case(state)
		st0:
		begin
			if(cal_success)
			begin
				state <= st1;
			end
		end
		st1:
		begin
			if(!waitrequest_n)
			begin
				if(cnt < 4'd4)
				begin
					cnt <= cnt + 1'b1;
					write <= 1'b1;
				end
				else
				begin
					cnt <= 4'd0;
					write <= 1'b0;
					state <= st2;
				end
			end
		end
		st2:
		begin
			if(!waitrequest_n)
			begin
				read <= 1'b1;
				state <= st3;
			end	
		end
		st3:
		begin
			read <= 1'b0;
			state <= st4;
		end
		st4:
		begin
			if(readdatavalid)
			begin
				state <= st5;
			end
		end
		st5:
		begin
			state <= st0;
		end

		endcase;
	end
end
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硬码农二毛哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值