打印

说下FPGA内部类似逻辑分析仪的chipscope信号检测技巧

[复制链接]
2607|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nir|  楼主 | 2012-11-10 12:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
经常看到有网友问,chipscope仿真,监测信号不对。
其实,chipscope作为一个类似FPGA内部逻辑分析仪的工具,不能简单的以为绑定好时钟和信号就可以了。
最好设置一个准确的触发条件,如同示波器的单次触发,上升下降触发等等条件设置。chipscope其实可以设置的更好。你可以另外编一个或增加一个暂时的进程变量来作为触发条件。如此,你一次就能仿真,检测数据准确。
有机会,举一个详细的例子来说说。

相关帖子

沙发
shang651| | 2012-11-10 21:30 | 只看该作者
en,学习了。

使用特权

评论回复
板凳
GoldSunMonkey| | 2012-11-10 22:09 | 只看该作者
经常看到有网友问,chipscope仿真,监测信号不对。
其实,chipscope作为一个类似FPGA内部逻辑分析仪的工具,不能简单的以为绑定好时钟和信号就可以了。
最好设置一个准确的触发条件,如同示波器的单次触发,上升下降 ...
nir 发表于 2012-11-10 12:22
期待你的例子。

使用特权

评论回复
地板
nir|  楼主 | 2012-11-12 14:56 | 只看该作者
:)

使用特权

评论回复
5
lxAPP| | 2012-11-12 21:33 | 只看该作者
;P

使用特权

评论回复
6
GoldSunMonkey| | 2012-11-12 21:45 | 只看该作者
:)
nir 发表于 2012-11-12 14:56
我的心再等待啊。

使用特权

评论回复
7
星星之火红| | 2012-11-14 18:37 | 只看该作者
:lol

使用特权

评论回复
8
GoldSunMonkey| | 2012-11-14 18:47 | 只看该作者
例子啊,快来啊。哈哈

使用特权

评论回复
9
nir|  楼主 | 2012-11-19 10:03 | 只看该作者
例子啊,快来啊。哈哈
GoldSunMonkey 发表于 2012-11-14 18:47


乍一看,还以为猴哥说,例假啊,快来啊。:lol

使用特权

评论回复
10
nir|  楼主 | 2012-11-19 10:34 | 只看该作者
如果给一个很简单的例子,估计感受不深。详细复杂的吧,时间没有。临时来个短的抛砖引玉吧:

类似下面的例子,很多情况下,如果不加控制,只是通过clk时钟同步采集,再深的fifo缓存,在采集时机不合适的时候可能都是采集到的全0信号或非自己希望观察到的时段。假设,我们希望看到x1信号等于奇数值的时候的情况,这里把x1信号最后一位付给trig_ctrl信号。这样,在chipscope中设置触发条件是trig_ctrl为1时采集,或者上升,下降沿采集,就屏蔽了全0的情况,把有限的缓存用来存储有变化的信号或奇数的信号。
同理,如果你希望观察一个总线或信号在特定时间段里的情况,精确控制同步触发点,应该可以观察到。

感觉说的还是笼统,其实chipscope里的触发设置的很好,也不需要额外增加触发变量控制。

--component xwr_icon is
--  port (
--    CONTROL0 : inout STD_LOGIC_VECTOR ( 35 downto 0 )
--  );
--end component xwr_icon;
---
--
--component xwr_ila is
--  port (
--    CLK : in STD_LOGIC := 'X';
--    CONTROL : inout STD_LOGIC_VECTOR ( 35 downto 0 );
--    TRIG0 : in STD_LOGIC_VECTOR ( 0 downto 0 );
--    TRIG1 : in STD_LOGIC_VECTOR ( 7 downto 0 );
--    TRIG2 : in STD_LOGIC_VECTOR ( 7 downto 0 );

--  );
--end component xwr_ila;
---------------------------------------------------------------------------------------------------


--- signal CONTROL:std_logic_vector(35 downto 0);
----signal trig_ctrl:std_logic_vector(0 downto 0);
----signal x1:std_logic_vector(7 downto 0);
----signal x2:std_logic_vector(7 downto 0);
----
------Signal declare END!
-------------------------------------------------------------------
----
begin
----

--xwr_icon_inst: xwr_icon port map
--(CONTROL0 =>CONTROL);
--
--xwr_ila_inst:xwr_ila port map
--(CONTROL =>CONTROL,
-- clk =>clk50M,
-- TRIG0 =>trig_ctrl,
-- TRIG1 =>x1(7 downto 0),
-- TRIG2 =>x2(7 downto 0)
);


--------------------combinational logic------------------------

--trig_ctrl<=x1(0 downto 0);

end.............

使用特权

评论回复
11
GoldSunMonkey| | 2012-11-20 00:25 | 只看该作者
不错,谢谢啦。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

nir

15

主题

166

帖子

1

粉丝