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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

[求助] 请教一个问题,大虾请进

[复制链接]
发表于 2011-11-12 19:53:57 | 显示全部楼层 |阅读模式

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

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

x
环境:
用DSP + FPGA 实现一些脉冲编码输出,FPGA负责编码输出,DSP做一些控制,以及对FPGA输出编码的配置,DSP与FPGA之间通过数据线、地址线、片选线相连,
FPGA内部的不同模块采用地址线译码后具有独立的地址,DSP通过读写这些地址来控制输出
现象:
单独用FPGA工作是,脉冲输出波形很好,
DSP采用uClinux系统运行后,脉冲输出波形出现很多毛刺,
请大家帮忙分析下有哪些原因导致的?
 楼主| 发表于 2011-11-12 21:01:55 | 显示全部楼层
刚分析下,是否有可能是DSP的SDRAM与FPGA的数据、地址总线公用的原因?
发表于 2011-11-12 21:27:31 | 显示全部楼层
回复 1# andyjoan

同一块硬件电路吗?
 楼主| 发表于 2011-11-12 21:28:27 | 显示全部楼层
补充一下:
  DSP核心频率400M ,EBIU 80M FPGA 50Mhz
 楼主| 发表于 2011-11-12 21:30:15 | 显示全部楼层
硬件电路是同一块,以上所说的只是将DSP程序不启动的情况下,脉冲输出物毛刺
发表于 2011-11-13 09:37:53 | 显示全部楼层
回复 5# andyjoan

若一块硬件电路板有多控制芯片,如FPGA+DSP,或者FPGA+ARM时候i,会考虑三个方面问题:
1. 数据BUS和地址BUS的问题;
2.高频分布参数的影响;
3.接口时序同步的问题。

据楼主所说问题,1的问题应该没有涉及到,因为1出现问题电路板输出会出现错误,问题2则会对输出波形有影响会产生高频分量进而出现脉冲失真。怀疑是3的问题。
DSP把FPGA当做外围芯片可以,但若是对FPGA输出控制信号,应该在FPGA内部对控制信号做同步处理,不知楼主是直接把DSP输出给FPGA的信号拿来用了么?还是做了相应的同步处理?(用高脉冲采样,或者两个寄存器打拍?)
 楼主| 发表于 2011-11-13 14:44:06 | 显示全部楼层
回复 6# wjhdmmm


    与FPGA相接得地址线、数据线采用双向驱动,只对读写信号打了一拍,您说的是地址线跟数据线也要打吗?
发表于 2011-11-13 16:40:09 | 显示全部楼层
本帖最后由 wjhdmmm 于 2011-11-13 16:42 编辑

回复 7# andyjoan


    对地址和数据bus总线打拍就没有用了,寄存器打拍只是对单bit有用。你需要对读写控制以及其他控制信号与数据、地址信号的同步做一下优化(参考异步时钟域有关资料)。这些都是个人建议,毕竟没有看到你的设计。我觉得这是接口问题造成的。
   在FPGA内部信号有时也会出现短暂的亚稳态,那些大都因为数据信号与时钟信号延迟不同造成的。希望能对你有帮助。
 楼主| 发表于 2011-11-15 19:09:42 | 显示全部楼层
回复 8# wjhdmmm

非常感谢,根据你说的,我把问题定位了一下,发现了问题的所在:
1.环境描述:
数据线:  DSP <-> FPGA <-> LCD
地址线:  DSP -> FPGA -> LCD
其中数据、地址线在FPGA中的逻辑如下:
module bf518_busbuf(   input   [16:1]   DSPaddr,                //DSP的数据线                          
                                           output  [16:1]  LCDaddr,         //经FPGA后输出到LCD的数据线,且FPGA内部也要用到                                  
                                           input            DSPoe,           //DSP读使能信号
                                           input            DSPams_n,     //DSP片选
                                           inout   [15:0]  DSPdata,        //与DSP数据线相接                                 
                                           inout   [15:0]  LCDdata);    //FPGA内部及LCD用数据线

        wire cs,from_bf,to_bf;
        assign cs = ~DSPams_n;       
        assign to_bf = ~DSPoe;
        assign from_bf = DSPoe;       
        assign LCDaddr = DSPaddr;               
    assign DSPdata= (cs & to_bf )?  LCDdata:16'hzzzz;
    assign LCDdata=  from_bf? DSPdata:16'hzzzz;
endmodule
2. 发现问题:
  1)将LCDaddr 、LCDdata地址线、数据线仅用于内部使用而不输出到引脚给LCD用时,输出正常;
  2)将LCDaddr 、LCDdata地址线、数据线输出到引脚给LCD用时,输出不正常正常;

烦请分析指教!!!非常感谢!
发表于 2011-11-15 19:54:01 | 显示全部楼层
回复 10# andyjoan

指教不敢当,我对DSP了解比较少,只是一些皮毛,暂且把它当做一个普通芯片来说。说的不对,你也包涵。
你写的这些组合逻辑应该只是你程序的一部分吧。DSPaddr与LCDaddr应该是地址信号吧?

暂且不说其他没有写出来的逻辑,只对
   assign DSPdata= (cs & to_bf )?  LCDdata:16'hzzzz;      (1)
    assign LCDdata=  from_bf? DSPdata:16'hzzzz;              (2)
这两句赋值语句说一下。若DSP读使能(称OE吧)为高,满足(2),LCD从DSP读数,假设为0xabcd;当OE为低且(1)条件为真,楼主的意思应该是DSP读取LCD中的数值,但此时(2)LCDdata为16'hz,究竟是(2)中LCDdata先变化还是(1)中DSPdata先读数呢?这个不好判断。

再者,楼主说不把信号引到外围管脚上时序正常,这个可能是因为FPGA在综合的时候把这部分逻辑去掉了。即:assign LCDdata=  from_bf? DSPdata:16'hzzzz;

这个程序中用到了inout,我的意见是楼主用寄存器暂存,使用时序电路试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-21 19:18 , Processed in 0.031798 second(s), 8 queries , Gzip On, Redis On.

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