陶志妖妖的个人空间 https://blog.eetop.cn/926170 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

调用IP RAM核实现0差值

已有 1291 次阅读| 2012-6-14 12:49 |个人分类:FPGA—RTL代码编程

   本来一直在用时钟的倍频来实现小波变换中的0差值的,今天受到启发。调用xilinx中的simple dual ram 来同样实现了此功能,这样就避免了多时钟问题。听前辈们说FPGA设计中尽量要避免多时钟问题,不然在综合阶段会出现意想不到的错误,而且无从查找。下面是以存储200个数据为例,实现0差值的代码及tesbench.

 

(1)module chazhiram(
  input  CLK,
  input wire Enable,         //上个模块的使能信号
  input wire [23:0] DIN,
  output wire [23:0] DOUT,
  output reg [7 : 0]  addra=8'd0,
  output reg ena=1'b0,
  output reg [7 : 0]  addrb=8'd1,
  output reg enb=1'b0
  
  );
  
wire addr_rsta=(addra==8'd198)?1'b1:1'b0;

always@(posedge CLK)
  if(Enable)
    begin
    ena<=addr_rsta?1'b0:1'b1;
    addra<= addr_rsta ? addra:addra+2;
 end
  else
 ena<=1'b0;

wire addr_rstb=(addrb==8'd199)?1'b1:1'b0;  
always@(posedge CLK)
   begin
 if(addra==8'd198)
    begin
 addrb<= addr_rstb ? addrb:addrb+1;
 enb<=addr_rstb?1'b0:1'b1;
 end
 else
    enb<=1'b0;
end


ram1 buffer (
  .clka(CLK), // input clka
  .ena(ena), // input ena
  .wea(1'b1), // input [0 : 0] wea
  .addra(addra), // input [7 : 0] addra
  .dina(DIN), // input [23 : 0] dina
  .clkb(CLK), // input clkb
  .enb(enb), // input enb
  .addrb(addrb), // input [7 : 0] addrb
  .doutb(DOUT) // output [23 : 0] doutb
);
endmodule


(2)Testbench:
module testbench1;

// Inputs
reg CLK=0;
always #4 CLK=!CLK;
reg Enable=0;
reg [23:0] DIN=24'd0;

// Outputs
wire [23:0] DOUT;
wire [7:0] addra;
wire ena;
wire [7:0] addrb;
wire enb;

// Instantiate the Unit Under Test (UUT
chazhiram uut (
.CLK(CLK), 
.Enable(Enable), 
.DIN(DIN), 
.DOUT(DOUT), 
.addra(addra), 
.ena(ena), 
.addrb(addrb), 
.enb(enb)
);
initial #100 Enable=1'b1;
always@(posedge CLK)
  DIN<=DIN+1;
      
endmodule


 


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 1

    评论
  • 131

    访问数
关闭

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

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

GMT+8, 2024-11-5 20:16 , Processed in 0.014061 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部