EDN首页   博客首页

日志档案

发表于 2007-2-5 22:39:36

13

标签: ripple  FIFO  VHDL  

感谢ripple的回复和建议

感谢ripple的回复和建议!终于看到有人回复了,心里特别的高兴,我以为我写的东西都是垃圾。另外ripple的建议确实很好,尤其是半满半空,读写指针时序关系等。当时写这个的初衷主要是为了描述一个同步FIFO的模型,所以考虑的还不是特别的全面,尤其对于半空半满这个当时根本就没有考虑。关于“正逻辑”,尤其复位信号,因为DFF一般都提供一步复位接口,所以我喜欢低电平的复位信号,至于内部接口用正逻辑,尤其是读写控制信号,当时也只是根据自己的习惯就用了“负逻辑”。Ripple的这些建议如果以后有机会再增加和更改。

       我主要使用Quartus II 6.0对代码进行了综合和布局布线,使用Modelsim6.0进行功能和时序仿真,布局布线选用的器件是Cyclone II 系列的EP2C5T144C8,没有添加任何约束。下面给出有关综合布局布线以及时序分析的RTL和报告。

点击看大图

 

                 图1 RTL顶层图

1 RTL顶层图,可以对照我刚开始画的原理框图(见<同步FIFOVHDL描述1>

 

点击看大图

 

                    2 Fitter报告概要

从图2Fitter报告概要中可以看出,所用FIFO所用RAMFPGA内部的RAM资源

 

 

点击看大图

 

              图3 时序分析概要报告

       布局布线时没有进行任何时序约束,从图3可以看出,这种同步FIFOVHDL描述可以在EP2C5T144C8运行在150MHz(不知道这样看对不对)

       最后再次感谢ripple!

       欢迎大家访问skycanny的笔记(副站)

 

 

 

 

 

 

系统分类: CPLD/FPGA   |   用户分类: FPGA/CPLD   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(1403)    回复(9)  

投一票您将和博主都有获奖机会!

  • skycanny

    2007-2-8 21:50:18

    做除法?困怕有点空难,尤其用CPLD,用FPGA至少应该还能完成,但是速度恐怕比较慢,耗费资源也很多

  • tingwhere

    2007-2-12 11:20:35

    很高兴能及时看到你的回复.通过你的讲解,对FIFO的认识加深了.

    下面再向你请教一个问题啊

    众所周知,同步FIFO较异步FIFO更为简单,那么,我的问题是:异步FIFO的主要作用是不是就是跨越时钟域的同步问题,也就是说,在以同步FIFO模块为核心,我只要解决了写模块和读模块的时钟同步问题,就容易写出异步的FIFO模块,

    打个比方把,将写请求同步到读时钟域,然后用读时钟来控制同步FIFO......

  • skycanny

    2007-2-9 19:11:19

    tingwhere ,你好,很高兴来我的副站!

    试着回答一下你的几个问题:

    1.dualram是简单的双口RAM,在同一时刻可以进行读写操作而互相不影响,因此将来在异步FIFO中直接可以调用。用两个的原因就是双口RAM有写端口和读端口,分别对应两个时钟,是为了双口RAM可以应用在异步的地方。

    2.不管是异步FIFO还是同步FIFO,在FIFO非空或非满的情况下读写地址是不相同的,因此需要两个地址,对应到双口RAM也就是addra和addrb。读写同时操作的时候没有优先级,互相不影响,只要FIFO非空,就可以读出来数据,只要FIFO非慢就可以写入数据。

    3.关于半满的问题,你的想法是对的,不过要考虑读写指针的循环和先后关系。

  • skycanny

    2007-2-9 19:14:24

    BTW

    关于同时对FIFO的读写可参加《同步FIFO之VHDL描述5(大结局) 》的图5

  • tingwhere

    2007-2-9 16:45:22

    从主站追看到副站来,拜读了skycanny同步FIFO的RTL框图.有两个问题要问一下,因为我是用verilog的,可能问的问题有些已经在程序上反映出来了,还麻烦您指点迷津.

    1.dualram有两个clk,clka和clkb,是不是意味着在未来异步的FIFO中,直接用这个dualram就可以用了.然后,既然FIFO是同步的,何必要设两个clk?只用一个即可啊

    2.同样的问题,addra和addrb其实就是读写地址吧,而对于同步FIFO而言读写针对的应该是同一地址而言,如addr,而且要考虑的是读写同时操作的时候是读优先还是写优先的问题.

    3,也和riple的问题有关,如果您用了读写地址,那么半满的判决就应该是写地址-读地址>=深度/2,就您的程序而言,就是addra-addrb,不知道我考虑的是否正确?

     

  • 孟涛

    2007-6-22 23:03:30

    你好,我现在在做毕业设计,基于VHDL的同步FIFO

    你贴的那个FIFO内部结构图 里面的wq rq是什么?

    还有输出Q是什么意思啊?

    谢谢

    QQ49427965

    meng2008y@163.com

    很着急 马上答辩了 我引用了你的图 但不知道那些符号代表什么

  • riple

    2007-2-6 9:11:02

    不谢,不谢。如此大张旗鼓地感谢我,真是受宠若惊。

    无人喝彩着实令人失望,可能原创是需要耐得住寂寞的。

    大家互相支持一下吧,读你的日志确实有收获。

  • riple

    2007-2-6 9:15:49

    能不能跑到150MHz,你可以用Quartus的仿真工具试一下。如果你仿真用的clk高于150M,可能仿真结果就不对了。

  • lnb-zj

    2007-2-6 12:49:39

    cpld器件输入两路正弦波sin,cos,经cpld如何处理实现tg?