1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
喜
请帮忙 我需要一个可以合成的FIFO,它不会带有相应的重复字。 为此,我写了一个verilog代码,它在仿真中给出了很好的结果 - 这里是- 模块fifo_8(clk,rstp,din,writep,readp,dout,emptyp,fullp); 参数位= 3; parameterDEPTH = 3,// 2比特,例如 FIFO中的4个字.MAX_COUNT = 3'b111; // FIFO中的最高地址。 inputclk; inputrstp; input [bits:0] din; inputreadp; inputwritep; output [bits:0] dout; outputemptyp; outputfullp; reg emptyp; regfullp; //注册输出//reg [bits:0] dout; //定义FIFO指针。 FIFO本质上是一个循环队列//reg [(DEPTH-1):0] tail; reg [(DEPTH-1):0] head; FIFO_MEM_BLK memblk(.clk(clk),. writeN(writep),. rd_addr(tail),. wr_addr(head),。data_in(din),. data_out(dout)); 总是@(din [bits:0])beginif(rstp)head = 0;否则if(writep == 1'b1&& fullp = 0)beginhead = head + 1; end //更新尾部寄存器//总是@(posedge clk)beginif(rstp == 1'b1)begin tail = 0; 如果(readp == 1'b1&& emptyp == 1'b0)开始// READ tail = tail + 1; 结束了 总是@(posedge clk)beginif((head-tail)== 2'b01)emptyp = 1;否则emptyp = 0; if((head-tail)== MAX_COUNT)beginfullp = 1; endelse fullp = 0; endendmodule 模块FIFO_MEM_BLK(clk,writeN,wr_addr,rd_addr,data_in,data_out); 参数位= 3; parameterDEPTH = 3,// 2比特,例如 FIFO中的4个字.MAX_COUNT = 3'b111; // FIFO中的最高地址。 输入clk; //输入clk.input writeN; //写信号将数据放入fifo.input [DEPTH-1:0] wr_addr; //写入Address.input [DEPTH-1:0] rd_addr; //读取Address.input [bits:0] data_in; // DataIn到内存块 输出[位:0] data_out; //来自内存//块的数据输出(FIFO) wire [bits:0] data_out; reg [位:0] FIFO [0:MAX_COUNT]; assign data_out = FIFO [rd_addr]; 始终@(posedge clk)如果(writeN == 1'b1)beginFIFO [wr_addr] = data_in; endend endmodule ////////////////////////////////////////////////// //////////////////////////////// 但是,当我尝试使用我的XUPV2P板时,它不起作用。我认为问题在于 - //总是@(din [bits:0]) 它不可合成吗? 我尝试了一个临时登记册,但没有交付货物.. 这个bug在哪里? 请帮忙 |
|
相关推荐
4个回答
|
|
你是对的总是@(din [31:0])绝对是你的问题。
添加一个寄存器,保存写入的最后一个din值,并将该寄存器与要写入的当前din进行比较。 如果它们不相等则增加头指针。 埃德 ------您是否尝试在Google中输入问题? 如果没有,你应该在发布之前。太多结果? 尝试添加网站:www.xilinx.com |
|
|
|
好的,所以我带来了以下变化 -
/ ------------------------------------------------- -------------------------------------------------- -------------------- / reg [位:0] temp = 4'b0000; 总是@(posedge clk)beginif(rstp)开始头端 否则如果(temp!= din)开始 if(writep == 1'b1)开始临时头部endendend / ------------------------------------------------- -------------------------------------------------- -------------------- / 我使用了电路板上的系统时钟(100Mhz)和我得到的警告 - Xst:2734 - 属性“use_dsp48”不适用于此技术。 LIT:243 - 逻辑网络inst_Mram_mem1 / SPO没有负载。 LIT:395 - 上面的警告信息base_net_load_rule重复了3次以下(最多显示5个):inst_Mram_mem / SPO,inst_Mram_mem2 / SPO,inst_Mram_mem3 / SPOTo查看这些警告信息的详细信息,请使用-detail开关。 最后 - 设计不起作用。 Head的值没有增加。模拟工作正常,但我没有从董事会得到结果! |
|
|
|
您的新代码应该正常工作。
它在模拟中有效吗? 是否保持rstp输入有效或写入输入无效?顺便说一句,您应该知道启动时有一个边缘情况,您没有涉及可能导致数据丢失的情况。 ------您是否尝试在Google中输入问题? 如果没有,你应该在发布之前。太多结果? 尝试添加网站:www.xilinx.com |
|
|
|
谢谢
是的,FIFO工作正常, 我最初使用了一个“重置”按钮,它有反向输入并导致所有麻烦。 //'你应该知道在启动时有一个边缘情况,你没有涉及可能导致数据丢失。' 你能详细说明一下吗? |
|
|
|
只有小组成员才能发言,加入小组>>
2416 浏览 7 评论
2821 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2292 浏览 9 评论
3372 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2459 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
1149浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
582浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
448浏览 1评论
2003浏览 0评论
727浏览 0评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 20:06 , Processed in 1.471149 second(s), Total 82, Slave 66 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号