| 查看: 430 | 回复: 0 | ||
zhangyuque新虫 (正式写手)
|
[求助]
verilog小白求助大神
|
|
利用块RAM实现a,b两路数据延迟,ab两路的数据位宽都是32bit,速率都是61.44Mb/s。要求a路延时16 个时钟周期,b路延时8个时钟周期,为什么addrb1的初始值是32?望大神解惑! module bram_delay(clk_122p88MHz,a,b,a_delay,b_delay); input clk_122p88MHz; input [31:0] a; input [31:0] b; output [31:0] a_delay; output [31:0] b_delay; reg [31:0] a_delay; reg [31:0] b_delay; wire[5:0] addra,addrb; wire[31:0] douta,doutb; reg[5:0] addra1=0; reg[5:0] addra2=0; reg[5:0] addrb1=32; reg[5:0] addrb2=32; reg wea=0; reg web=0; reg flag=0; always@(posedge clk_122p88MHz) begin flag<= !flag; if(flag ==1'b1) begin a_delay<=a_delay; b_delay<=b_delay; wea<=1'b1; web<=1'b1; addra2<=addra2; addrb2<=addrb2; if(addra1==31) addra1<=0; else addra1<=addra1+1'b1; if(addrb1==63) addrb1<=32; else addrb1<=addrb1+1'b1; end else begin wea<=1'b0; web<=1'b0; a_delay<=douta; b_delay<=doutb; addra1<=addra1; addrb1<=addrb1; if(addra1<=15) //控制A路延迟的时间 addra2<=addra1+16; else addra2<=addra1-16; if(addrb1<=39) //控制B路延迟的时间 addrb2<=addrb1+8;//........................ else addrb2<=addrb1-8; end end assign addra=!flag?addra1:addra2; assign addrb=!flag?addrb1:addrb2; bram_16 bram_16 ( .clka(clk_122p88MHz), // input clka .wea(wea), // input [0 : 0] wea .addra(addra), // input [3 : 0] addra .dina(a), // input [31 : 0] dina .douta(douta), // output [31 : 0] douta .clkb(clk_122p88MHz), // input clkb .web(web), // input [0 : 0] web .addrb(addrb), // input [3 : 0] addrb .dinb(b), // input [31 : 0] dinb .doutb(doutb) // output [31 : 0] doutb ); endmodule |
» 猜你喜欢
售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急
已经有4人回复
售SCI文章,我:8O.5.5.1O.54,科目全,可十急
已经有4人回复
售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急
已经有4人回复
售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急
已经有5人回复
售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急
已经有5人回复
售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急
已经有4人回复
售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急
已经有5人回复
售SCI文章,我:8O.5.5.1O.54,科目全,可十急
已经有5人回复
售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急
已经有4人回复
售一区SCI文章T0P,我:8O.551.O54,科目全,可十急
已经有4人回复










回复此楼
100