- 注册时间
 - 2012-11-7
 - 最后登录
 - 2020-4-8
 - 阅读权限
 - 100
 - 积分
 - 10
 - 精华
 - 0
 - 帖子
 - 1775
  
 
 
 
    
 | 
欢迎来到九江论坛网--江西九江市生活交流社区!
请记住我们的网址 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为什么是错的呢?有朋友知道原因吗? 
 
 |   
 
  
 |