[讨论] 关于检测CPLD外部信号上升沿的问题

MYMCU   2010-6-10 11:06 楼主

请哪位大虾指教一下关于如何用CPLD检测外部信号的上升沿(程序最好是用VHDL)

谢谢了!

回复评论 (2)

port(
  data_in : in std_logic;
  clk : in std_logic;
  data_out : out std_logic
)

signal data_temp : std_logic;
-- 将输入数据打一个节拍,用于判断上升沿
process(clk, data_in)
begin
   if clk'event and clk = '1' then
       data_temp <= data_in;
  end if;
end process;
-- 当 当前的data_in = 为高电平,而前一个clk输入的data_in即data_temp = 0 为低电平时,表示检测到data_in的上升沿。
porcess(clk, data_in, data_temp)
begin
  if clk'event and clk = '1' then
    if data_in = '1' and data_temp = '0' then
        data_out <= '1';
    else
        data_out <= '0'
    end if;
  end if;
end process;
点赞  2010-6-10 11:27

楼上兄弟是标准的检测外部信号的上升沿写法。但有个前提,一定要主时钟大于检测信号变化的频率,否则检测有问题,可能丢掉的检测事件。我个人建议如果FPGA内部有PLL,先把主时钟CLK PLLL后,然后对外部信号检测,确保CLK》》外部信号周期,保证采样的正确性。

一个为理想不懈前进的人,一个永不言败人! http://shop57496282.taobao.com/ 欢迎光临网上店铺!
点赞  2010-6-11 08:16
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复