ZKX's LAB

控制fifo IP核读写 请问,verilog中调用ip核,比如调用两个fifo核,两个核的端口一样,要怎么区分呀?小弟是在

2020-07-22知识14

xilinx fifo IP核的问题 prog_full引脚设置为N,当存储数据到N时开始读数,这时写数据是继续往下一个地址里写还是指针跳到0地址从头开始写?下个地址!就像你上学用父母的钱,你父母不断地往你的。问各位学长前辈们:用Xilinx自带内核生成器产生了一个FIFO核,添加到工程顶层文件sch中之后如何处理?? 自己需要写FIFO控制器如果是简单的FIFO和自己写的FIFO是差不多 使用IP核最大的好处是可以加速设计进度吧而且fpga厂商应该更了解自己的fpga架构 从而写出更优化的程序 我个人觉得.复杂的还是有区别的吧 比如异步的FIFO什么的 第一次写也挺麻烦的xilinx fpga内部fifo ip核怎样生成 首先有你得安装 ISE.然后你也可以在一个工程中添加文件,选择IP。也可以建一个coregen的工程,专门管理项目工程使用到的IP。显然是你的使用问题。你用empty取反做读使能,。verilog编程时,我先调用ip核定制了一个ram,叫ram1吧,同时整 你这3个定制的RAM1,RAM2,ROM他们都有对应的端口,只在在顶层文件中例化调用就行了;FIFO相当于双端口RAM,不过它们的端口不一样,控制方式也不一样。quartus ii调用异步FIFO IP核,为什么写不进去数据? 查一下是不是被复位着?quartus调用altera内部的IP核 异步FIFO,在控制读写上如何进行控制,要求写满读,读空了写?最好有代码 在配置FIFO的时候,读和写都添加满/空信号.就像下图里面把四个勾都勾上,这样你再编点代码就可以了求助:xilinx fifo ip核使用谢谢了,大神帮忙啊 显然是你的使用问题。你用empty取反做读使能,读时钟又大于写时钟。可能会出现:上一个周期FIFO中还有一个数,被你发出的读使能读出,但是empty信号还没反映出,你的下一个读使能又发出去了,造成“读空”的问题。100M读时钟没问题,是因为读时钟慢于写时钟,你的读取端一直“供货充足”。你可以用almost_empty啊,不管是直接例化原语还是用coregen做IP,都可以调这个阈值的。查看原帖>;>;altera FIFO 读写 QII 的FIFO核不是有选择full和empty信号吗?你可以写一个简单的testbench,比如一直写数据,当写的数据超过设置FIFO的最大值时,观察哪些信号变化了(比如full一直为高电平);或者先写几个数据到FIFO,然后开始读,一直读到FIFO空,观察empty信号有什么变化(是否一直为高)。如果你想写满读,那么判断当full信号为高时,停止写操作(不然就写溢出了),然后开始读操作;一直到empty信号为高时,停止读,然后开始写。建议读写时钟一直存在,用读写操作用读写的使能端口来控制。最后,使用QII 异步FIFO时,一定要勾上 是否选择full和empty 端口,不然你就无法知道FIFO处于什么状态下了。quartus调用altera内部的IP核 异步FIFO,在控制读写上如何进行控制,要求写满读,读空了写?最好有代码 代码如下:`define ADDR_WIDTH 12/地址位宽`define DATA_WIDTH 12/数据位宽`define RAM_WIDTH 12/RAM数据位宽`define RAM_DEPTH 4096/RAM深度module fifo_test(clk_10M,/写时钟clk_5M,/读时钟rst_n,/全局复位信号wr_en,/写使能 低有效rd_en,/读使能 低有效wr_data,/12位数据输入rd_data,/12位数据输出wr_full,/写满标志 高有效rd_empty);读空标志 高有效输入信号input clk_10M;input clk_5M;input rst_n;input wr_en;input rd_en;input[`DATA_WIDTH-1:0]wr_data;output reg[`DATA_WIDTH-1:0]rd_data;output reg wr_full;output reg rd_empty;reg[`RAM_WIDTH-1:0]mem[`RAM_DEPTH-1:0];12位4096单元reg[`ADDR_WIDTH-1:0]wr_addr;12位写地址reg[`ADDR_WIDTH-1:0]rd_addr;12位读地址reg rd_flag;reg wr_flag;写地址产生逻辑always@(posedge clk_10M or negedge rst_n)beginif。rst_n)beginwr_addr;wr_flag;endelse if。wr_en)beginif。wr_full&(rd_addr。(wr_addr+1)))beginwr_flag;wr_addr;endelsewr_flag;endend写数据产生逻辑always@(posedge clk_10M)beginif。wr_en&。wr_full&wr_flag)mem[wr_addr];end写满产生标志always@(posedge。

随机阅读

qrcode
访问手机版