九江论坛网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 807|回复: 1
打印 上一主题 下一主题

【讨论|求助】verilog怎么写能综合出异步的RAM [复制链接]

Rank: 7Rank: 7Rank: 7

跳转到指定楼层
楼主
发表于 2020-4-8 19:37:36 |只看该作者 |倒序浏览
欢迎来到九江论坛网--江西九江市生活交流社区! 请记住我们的网址 www.ganzw.com
先把代码貼出来,一段很簡单的代码

   

         

            
module asyn_ram

#(parameter DWIDTH=4,//data width

                                AWIDTH=10)//address width

(

        input wr_clk,

        input[DWIDTH-1:0] wr_data,

        input wr_en,

        input[AWIDTH-1:0] wr_addr,

        

        input  rd_clk,

        output [DWIDTH-1:0] rd_data,

        input  rd_en,

        input[AWIDTH-1:0] rd_addr

);



reg[DWIDTH-1:0] rw_mem [2**AWIDTH-1:0];//define the memory

reg[AWIDTH-1:0] raddr;

always@(posedge wr_clk )

begin

        if(wr_en) begin

                rw_mem[wr_addr]<=wr_data;

        end

end



always@(posedge rd_clk)

begin

        if(rd_en) begin

                raddr<=rd_addr;

        end

end

assign rd_data=rw_mem[raddr];

endmodule


        

   

    复制代码

在quartus中综合后的RTL视图是这样的:
   


这个和我的逻辑对不上呢,读时钟不是驱动数据的输出的
在technology map viewer中是这样的
   


这个是在FPGA中实际生成的,应该是对的,可是RTL为什么是错的呢?有朋友知道原因吗?

分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享分享0 收藏收藏0

使用道具 举报

Rank: 2

沙发
发表于 2020-4-8 19:37:39 |只看该作者
欢迎来到九江论坛网--江西九江市生活交流社区! 请记住我们的网址 www.ganzw.com
1# fucong_59
用modelsim仿真结果也是正确的

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

联系我们|九江论坛网

GMT+8, 2024-6-1 19:31 , Processed in 1.234375 second(s), 12 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部