一路脉冲上升沿计数,然后某个时刻下降沿计数,CPLD怎么实现
高手帮帮忙 ........楼主搜边沿检测 上升沿 下降沿 同时检测出来了后面的 不用我说了吧 能说得详细点么 我是新手谢谢 FPGA、CPLD里一般没有双边沿触发器,所以这样的代码一般是不可以综合的 没理解明白你的意思。 用一个足够快的高速脉冲抓你的“一路脉冲”。抓到前一个是‘1’后一个是‘0’说明是下降沿。反之是上升沿。一开始上升沿计数,对下降沿不理会,然后到了“某时刻”改成下降沿,不理会上升沿即可 回复【5楼】arokh 圆圆的饭团用一个足够快的高速脉冲抓你的“一路脉冲”。抓到前一个是‘1’后一个是‘0’说明是下降沿。反之是上升沿。一开始上升沿计数,对下降沿不理会,然后到了“某时刻”改成下降沿,不理会上升沿即可
-----------------------------------------------------------------------
貌似可以 5楼说的对,就是用快的时钟来打慢的时钟,慢的时钟周期最少是快的两倍!!! pulse: in std_logic;(端口)
然后定义两个信号
reg1,reg2: std_logic;
process(clk)
begin
if rising_edge(clk) then
reg1<=pulse;
reg2<=reg1;
end if;
end process;
上升沿就是(up_edge<=reg1 and (not reg2);
下降沿 down_edge<= not reg1 and reg2;
剩下的你想怎么控制你说的算!!!! clk :时钟大于大于din
din :输入信号
up_diff :din 上升沿后输出一个clk周期宽的脉冲
dn_diff :din 下降沿后输出一个clk周期宽的脉冲
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
ENTITY DIFF IS
PORT (
clk : in std_logic;
din : in std_logic;
up_diff,dn_diff :out std_logic);
END DIFF;
ARCHITECTURE epm570 OF DIFF IS
SIGNAL t1,t2 :std_logic;
BEGIN
PROCESS
BEGIN
WAIT UNTIL (clk'EVENT AND clk = '1');
t2 <= t1;
t1 <= din;
END PROCESS;
up_diff<=t1 AND NOT t2;
dn_diff<=NOT t1 AND t2;
END epm570; 组合逻辑的阻塞 试试
页:
[1]