如果给一个很简单的例子,估计感受不深。详细复杂的吧,时间没有。临时来个短的抛砖引玉吧:
类似下面的例子,很多情况下,如果不加控制,只是通过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.............
|