1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
想利用RAM块实现a,b两路数据的延迟,其中a,b都是32位,速率为61.44Mb/s ,要求a路延迟16个数据时钟周期,b路延迟8个数据周期
请各位帮忙瞧一瞧代码哪里有问题??我怎么也查不出问题来,也没有报错就是仿真得出的结果不对!!!!!!!!!!!! `timescale 1ns / 1ps //利用RAM实现两路数据的延迟,其中a,b都是32位,速率为61.44Mb/s ,要求a路延迟16个数据时钟周期,b路延迟8个数据周期 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 |
|
相关推荐
3个回答
|
|
延迟很容易做呢,
1.使用一位使能位(记作a)当作数据输入,用一个16位(或者8位)把使能位延迟16(8)个时钟周期(记作b),然后用fifo做延迟输出可以,写使能是a,读使能是b,但 fifo的大小要大于延迟长度。 2.使用16组(8组)寄存器 将数据缓存16(8)个时钟也可以 双口RAM,有点复杂,暂时你的代码是不对的 |
|
|
|
可以参考一下这个代码
利用块RAM实现数据延迟的一些问题:http://bbs.eetop.cn/viewthread.php?tid=431323 |
|
|
|
现在的程序相当于是在程序第一个clk_122p88MHz上升沿处理 if(flag ==1'b1) 后的程序,第二个clk_122p88MHz上升沿处理else后的程序。还有一个错误是程序没有初始化存储器 a_delay和b_delay;
设计fpga程序,首先要画出时序逻辑图,然后根据逻辑图来编写程序,这样编写完程序后就可以有目的的验证,不要先动手编程序,要不然还要从头开始设计。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1367 浏览 1 评论
助力AIoT应用:在米尔FPGA开发板上实现Tiny YOLO V4
1046 浏览 0 评论
2442 浏览 1 评论
2146 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
2408 浏览 0 评论
1898 浏览 50 评论
6018 浏览 113 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 01:56 , Processed in 0.627768 second(s), Total 75, Slave 59 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号