最近用FPGA在做一个mii接口的收发程序,遇到一个问题

modelsim仿真过后,上板调试,因为调试的方便就加入了signal tap ii来抓取有关关键信号,最终从抓到的关键信号来看数据包是被正确的接收下来和发送出去了的,在电脑上用抓包工具也能抓到数据包,但是这个是在我将signal tap ii使能后一起编译后烧入板子的情况。现在问题来了,当不使能signal tap ii 对工程进行编译,烧入板子后程序运行功能就不正常了,用示波器抓TXEN 以及数据线,都是有的,txen也是对的,但是示波器抓到的数据是4位宽,公司的示波器是两个探头,能抓到一个时钟和一位数据,所以卡在这里,不知道怎么分析了,现在我想问的是是不是使能与不使能signal tap ii编译后对时序造成了比较大的影响,然后是否可以通过设置编译选项来优化来解决或者还是代码不够严谨导致的,因为这个模块公司以前一直在用 也没见出问题,现在感觉是不能很准确的定位问题

这个问题很可能是时序的问题,有以下两个可能:
1、FPGA的输出方向,输出延时output delay在有无signal tap ii时发生变化,造成MII时钟和数据的相位关系改变,或者说开始对方芯片时钟可以采到正确的数据,但output delay变化后时钟采不到正确的数据。
2、时钟频率约束。增加MII时钟频率约束。由于MII的时钟仅为25M,现在绝大多数FPGA可以轻松超过这个频率,所以这个因素可能性不大。

另外可以试试Quartus II的设定:
Assignment —> Settings —> Compilation proecess settings —>
勾选
perform physical synthesis on combinational logic
perform register duplication
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-08
你好,能问你一下关于MII接口的问题吗?我现在在做FPGA 的UDP的通信。这个MII management 如何判断上一个 operation已经结束了呢?operation 比如read或者write或者scan status等。