永发信息网

VHDL如何测量两个外部输入信号的上升沿的时间差啊?求代码啊!

答案:2  悬赏:80  手机版
解决时间 2021-03-27 21:48
VHDL如何测量两个外部输入信号的上升沿的时间差啊?求代码啊!
最佳答案
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.std_logic_unsigned.ALL;
ENTITY edge_detection IS
PORT(clr,clk,first_edge,second_edge:IN std_logic;
counter_out:OUT std_logic_vector(31 DOWNTO 0));
END edge_detection;
ARCHITECTURE behavioral OF edge_detection IS
SIGNAL counter:std_logic_vector(31 DOWNTO 0);
SIGNAL detection_on:std_logic:='0';
BEGIN
PROCESS(clr,first_edge,second_edge)
BEGIN
IF clr='0' THEN
detection_on <= '0';
ELSIF first_edge='1' AND first_edge'Last_Value='0' THEN
detection_on <= '1';
ELSIF second_edge='1' AND second_edge'Last_Value='0' THEN
detection_on <= '0';
END IF;
END PROCESS;

PROCESS(clk)
BEGIN
IF rising_edge(clk) THEN
IF detection_on='1' THEN
counter <= counter + '1';
ELSE
counter <= (OTHERS =>'0');
END IF;
END IF;
END PROCESS;

PROCESS(detection_on)
BEGIN
IF falling_edge(detection_on) THEN
counter_out <= counter;
END IF;
END PROCESS;

END behavioral;
全部回答
首先你要确定这个时间差要求达到的精度量级,三五个纳秒以上的话一般的FPGA就可以,更高的精度就要特殊处理了。学过VHDL这个语言的一般都会写上升沿条件的表达式:
process(xxx)
begin
if rising_edge(xxx) then
~~~
end if;
end process;
此处xxx就是你希望捕获其上升沿的信号,这个信号的上升沿到来时这个if语句满足执行条件
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎么区别男人是因为无聊寂寞想找你聊天,还是
求一张美女图,一个美女躺在床上,黑白相间的
斜碰中的弹性碰撞怎么定义?
陈奕迅有哪几首歌既有国语版又有粤语版?
请问北纬55°东经52°是哪里
X~U(0,1)求Y=3X+ 1的概率密度
新桥有个办健康证的地方在哪里
冠开头四字成语
相信爱能超越一切这是哪首歌的歌词
若失业6个月,会选择去送外卖吗
以下哪位是鼓手A.zim B.vincent C.rojer D.sh
悲痛的布冯,深渊梅迪尔,巨腕王子三个哪个性
头突然疼是什么原因
衡字的来源是什么?
列夫托尔斯泰 除了穷人还有什么课文
推荐资讯
黔张常铁路咸丰火车站建在哪里
吃油甘有什么好处
做电疗时脸部肌肉有点抽是怎么回事?
诡术妖姬如何对线刀锋之影
惠普Pavilion 14-B042TU笔记本重装系统找不到
我的多玩键盘连点器遇到和你一样的问题了 你
口渴的地精大灾变怎么接不了?
郑强配货站(物流中心111房间郑强配货站)地址
求MJ.YouarenotAlone的mp3格式链接地址
d-link路由器用户名和密码怎么设置
云内d25发动机参数是什么?
为什么镶完假牙老是牙疼
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?