BRAM_PY改善2021-06-25

13 篇文章 0 订阅
9 篇文章 0 订阅

32bits,之前的代码没有连续赋值 BRAM_PY,Pynq对BRAM的操作1
改进此处,现在可以连续赋值了:

assign addrb=w_addr + w_addr + w_addr + w_addr;

在这里插入图片描述

附录:
完整ram_test.v如下

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2021/04/25 17:15:36
// Design Name: 
// Module Name: ram_test
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


`timescale 1ns / 1ps
//
module ram_test(
            input rst,
            input clk,
            output [31:0] addrb,
			output clkb,		          	//50MHz时钟
			output [31:0] dinb,
			input [31:0] doutb,
			output enb,
			output rstb,	             	//复位信号,低电平有效	
			output [3:0]web
		);

//-----------------------------------------------------------
reg		[10:0]  		w_addr;	   		//RAM PORTA写地址
reg		[31:0] 		w_data;	   		//RAM PORTA写数据
reg 	      		wea;	    	//RAM PORTA使能
reg		[10:0]  		r_addr;	  	 	//RAM PORTB读地址
wire	[31:0] 		r_data;			//RAM PORTB读数据

/*
//产生RAM PORTB读地址
always @(posedge clkb or negedge rstb)
begin
  if(!rstb) 
	r_addr <= 9'd0;
  else if (|w_addr)			//w_addr位或,不等于0
    r_addr <= r_addr+1'b1;
  else
	r_addr <= 9'd0;	
end
*/
//产生RAM PORTA写使能信号
always@(posedge clkb or negedge rst)
begin	
  if(!rst) 
  	  wea <= 1'b0;
  else 
  begin
      if(&w_addr) 			//w_addr的bit位全为1,共写入512个数据,写入完成
        wea <= 1'b0;                 
     else               
        wea	<= 1'b1;        //ram写使能
  end 
end 

//产生RAM PORTA写入的地址及数据
always@(posedge clkb or negedge rst)
begin	
  if(!rst) 
  begin
	  w_addr <= 11'd0;
	  w_data <= 16'd1;
  end
  else 
  begin
     if(wea) 					//ram写使能有效
	 begin        
		if (&w_addr)			//w_addr的bit位全为1,共写入512个数据,写入完成
		begin
			w_addr <= w_addr ;	//将地址和数据的值保持住,只写一次RAM
			w_data <= w_data ;
		end
		else
		begin
			w_addr <= w_addr + 1'b1;
			w_data <= w_data + 1'b1;
		end
	 end
  end 
end 

assign web={wea,wea,wea,wea};

//assign dintb = w_data;
assign addrb=w_addr + w_addr + w_addr + w_addr;
assign dinb= w_data;
assign rstb = 1'b0;
assign clkb = clk;
assign enb = wea;	
endmodule



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值