在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3033|回复: 3

[原创] 双口RAM求助

[复制链接]
发表于 2011-11-15 07:41:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
小弟新学FPGA想做一个双口RAM,当A部分写完的时候开始写B部分(先光写不读),代码如下:
本人有几个疑惑的地方:求高手能给小弟解答一下
1. 初始状态下的写使能该如何确定下来呢?按我这样的写法可以么?
2. 这里我用地址自动计数到31时,在时钟周期到来时控制写使能,在下一时钟周期到来时控制写入数据流的方向。按我这样的写法可以么?
3. 仿真发现只到第31个地址的时候就翻转了,理论上应该到32才翻转的,而且地址怎么过了15之后就出现负值了, 这个很奇怪。

module ram ( clk, rst_n, idin);
input clk;
input rst_n;
input [7:0] idin;

reg wr_a , wr_b;
reg [4:0] addr_a, addr_b;
reg [7:0] data_a, data_b;
wire a ,b;


assign a = addr_a == 'b1_1111 ? 1 : 0;
assign b = addr_b == 'b1_1111 ? 1 : 0;

always @ (posedge clk or negedge rst_n)
if (!rst_n)
  begin
   wr_a <= 1'b1;
   wr_b <= 1'b0;
  end
else if (a)
  begin
   wr_a <= 1'b0;
   wr_b <= 1'b1;
  end
else if (b)
  begin
   wr_a <= 1'b1;
   wr_b <= 1'b0;
  end


always @ (posedge clk or negedge rst_n)
if (!rst_n)
  begin
   data_a <= 'b0;
   addr_a <= 'b0;
   data_b <= 'b0;
   addr_b <= 'b0;
  end
else if (wr_a)
  begin
   data_a <= idin;
   addr_a <= addr_a + 1'b1;
  end
else if (wr_b)
  begin
   data_b <= idin;
   addr_b <= addr_b + 1'b1;
  end

dualram ram (
     // input
     .address_a(addr_a),
     .address_b(addr_b),
     .clock(clk),
     .data_a(data_a),
     .data_b(data_b),
     .wren_a(wr_a),
     .wren_b(wr_b),
   
     //output
     .q_a(),
     .q_b()
    );
   
endmodule

*************************************************************************
module ramtb;
reg clk;
reg rst_n;
reg [7:0] idin;

always #5 clk = ~clk;
initial
begin
#0  clk = 0;
#0 rst_n = 0;
#5  rst_n = 1;
      idin = 0;
end

always @ (posedge clk)
idin <= idin + 1;

ram ram_tb (
   .clk(clk),
   .rst_n(rst_n),
   .idin(idin)
   );
   
endmodule

Capture.JPG
发表于 2011-11-15 09:18:39 | 显示全部楼层
3.32个数是0~31而不是1~32.你选择的现实模式有错,选择无符号十进制显示就行了
 楼主| 发表于 2011-11-15 09:24:09 | 显示全部楼层
谢谢了,第三个问题解决了。
 楼主| 发表于 2011-11-15 16:17:28 | 显示全部楼层
最大的问题是如何能让此程序写A的时候读B, 写B读A 呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-18 02:14 , Processed in 0.026900 second(s), 13 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表