在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6734|回复: 11

系列问题求救(新手)

[复制链接]
发表于 2003-12-15 21:31:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

1LPM_FIFO调用问题:
我使用verilog,采用ACEX1K器件,需要调用LPM_FIFO,但是synplify不支持(综合通不过),查synplify释放在c盘上的lib,没有LPM_FIFO, 哪儿能找到含有LPM_FIFO的lib?或者我的理解错了,,各位指点指点!
2异步FIFO理解问题
异步FIFO一般需要双时钟(LPM_FIFO是这样),但是我目前遇到的情形没有双时钟,自己编写无论如何都占用空间太大,这个怎么办?能不能把一个读写信号作为一个时钟,如果这样,会不会出现一些问题?
3三态门问题
我使用active,(有时使用modelsim),三态门描述如下(verilog)
inout  [7:0]data;
tri    [7:0]data;
assign data = (dataout_en) ? dataout : 8’bz;
(顶层调用模块也同时用tri [7:0]data;申明)
用synopsys综合后,data的每一位都是  unavailable(无效的),郁闷,何解?
4D锁存器设计问题:
我的设计为:
   always @( wrreq  or  bit_in  or  reset)
        if(reset)
mode_flag = 1’b0;
                else
                    mode_flag = bit_in;
        synopsys综合后,发现mode_flag在 reset的上升沿为‘0’,下降沿后马上变为‘1’,而这时bit_in 和wrreq没有动作,不知何故。
 楼主| 发表于 2003-12-16 11:33:42 | 显示全部楼层

系列问题求救(新手)

连载:
问题1 : 我采用自己编写的FIFO,使用EAB,SYNPLIFY综合后,显示逻辑资源(LOGIC SOURCE CELL)用的很少(1260  25% (总共有4990),但在MAXPLUS2中却有7770,什么原因?
发表于 2003-12-16 16:07:59 | 显示全部楼层

系列问题求救(新手)

如果你把fifo设置为black box,那在synplify中是不统计其资源占用的。
读写信号最好不要用做时钟,可以考虑作为使能信号。
三态门仅看这几行代码好像没什么问题,最好浮到最顶层。
 楼主| 发表于 2003-12-16 19:33:27 | 显示全部楼层

系列问题求救(新手)

回BRAVELU:
    设计FIFO时,我试过black box(使用synplify),但是我不知道MaxPlus2能不能识别,这种black box在edif中有体现吗?
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   三态门没有问题,我专门设计试过,但是在真正设计中总是不能赋上值(模块大一些),synopsys综合时总是出现一些没有逻辑联系的问题。我再细查!
发表于 2003-12-17 12:30:02 | 显示全部楼层

系列问题求救(新手)

Altera的我没有试过,但是应该可以识别。
 楼主| 发表于 2003-12-18 17:48:02 | 显示全部楼层

系列问题求救(新手)

三态门搞定,模块太大,单独仿没有问题,联合仿便无效,由此反复差不多折腾我一周,刚才把三态门浮到顶层,搞定。多谢多谢,
发表于 2003-12-19 20:24:33 | 显示全部楼层

系列问题求救(新手)

     我现在经常用的是MaxplusII,MaxplusII的file菜单里有MegaWizard Plug-In Manager,在quartusII里是tools菜单,可以调用lpm_fifo。以前我咨询过Altera的代理骏龙,自己编写fifo的代码,不如直接调用MegaWizard Plug-In Manager,因为MegaWizard Plug-In Manager产生的代码可以充分调用EAB,但自己编写的效果很差。
    关于异步fifo,我没看懂你的意思。读写信号不能作为一个时钟,我想你的读写信号不是一直连续,即不是标准的方波,fifo内部需要一个稳定的时钟源,以用于内部计数器。
    异步fifo有两种情形,一种是读写各有自己的的时钟,一种是读写都没时钟,只要读信号来一个低脉冲(低电平有效),就表示读一次,后一种情形用fpga很难实现
 楼主| 发表于 2003-12-20 17:56:27 | 显示全部楼层

系列问题求救(新手)

to dragoyoo:
    我目前需要的异步FIFO没有读写时钟,调用的LPM_FIFO需要读写时钟,我没招了,于是自己写,不但一大堆warning,而且占用资源太多,几个FIFO就把我的逻辑资源占完了,我使用EAB,可以综合,但是在使用MaxplusII时,它警告说EAB不支持feed back信号([m-1:0]data[n-1:0]就是feedback 寄存器),所以EAB也用不了,根本没办法写,
    想必你碰见过这样的问题,怎么解决的?
    听说异步FIFO很难做,我考虑过用同步FIFO代替,采用一个比较高的时钟,那样由于外部读写信号有效时间不定,还需要一个判别机制(即如果外部时钟太长,我过采样,但是只能作为一个读写信号),不过仍然不能达到要求,
   郁闷,可能最终还是要做个异步FIFO,!
发表于 2003-12-20 20:47:47 | 显示全部楼层

系列问题求救(新手)

    我这儿有Altera编写的VHDL语言的lpm_fifo,但我在MaxplusII 编译通不过,很多语法他不支持,我也不知道怎么回事。你所说的feedback寄存器的情况我没碰到,不清楚何原因。
    你自己编写fifo,虽然编译时选择使用EAB选项,但你的fifo不一定是在EAB实现,因为它是在顶层综合时按照全局逻辑来选择哪些是在EAB中实现,但如果你调用Altera的库,情况不一样。
   使用异步fifo(我指的是没有时钟),一种方法是在fpga外面接异步fifo,IDT公司就有,另一种方法正如你所说得,用高速时钟,你可以用读写信号的沿,来产生同步读写信号,这样就不需要考虑读写信号的持续时间。
 楼主| 发表于 2003-12-22 20:14:41 | 显示全部楼层

系列问题求救(新手)

我现在改为同步调用LPM_FIFO,异步太难做了,用高速时钟采样,如下:
wire genclk; //生成的时钟
reg  genclk_en;//
assign genclk_en = (genclk_en) ? clock : 1'b1;
always @(posedge clock or reset)
if(reset)
  genclk_en<=1'b1;
else
  if(wrreq || rdreq)//读写请求信号有效
  genclk_en<=1'b0;
  else
  genclk_en<=1'b1;
把这个时钟作为LPM_FIFO(同步的FIFO)基准时钟,这个可以在MP2通过,
但是,有一个问题,即
   外部读写信号有效时间至少是我采用时钟位时间(比如48M时钟的位时间为40ns)两倍,
   我这种说法对吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-26 03:54 , Processed in 0.030719 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表