搜索
bottom↓
回复: 17

请教:同一单次脉冲四次采集问题

[复制链接]

出0入0汤圆

发表于 2011-10-6 02:29:12 | 显示全部楼层 |阅读模式
我对单次脉冲四次采样,第一次采样的时间是当脉冲到来时就采样,第二采样的时间是当第二次脉冲到来时要延时一个时钟周期,第三次采样的时间是第三个脉冲到来时要延时两个时钟周期,第四次采样就是延时三个时钟周期。
下面的问题是如何解决延时问题?最好能提供程序。谢谢!

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2011-10-6 08:08:48 | 显示全部楼层
你说的这个问题感觉是我在04年的时候做一个医疗电子的时候所使用的到一种采集方法!我当时是采用定时实现的

出0入42汤圆

发表于 2011-10-6 08:35:18 | 显示全部楼层
传说的等效采样嘛

出420入0汤圆

发表于 2011-10-6 10:28:33 | 显示全部楼层
最笨就是状态机贝。反正也不用你综合

出0入0汤圆

 楼主| 发表于 2011-10-6 22:42:17 | 显示全部楼层
急求!
请讲的详细点。谢谢了

出0入0汤圆

发表于 2011-10-9 23:36:33 | 显示全部楼层

(原文件名:C1.JPG)


(原文件名:C2.JPG)

出0入0汤圆

发表于 2011-10-10 09:18:38 | 显示全部楼层
恳求楼上,程序是怎么写的?

出0入0汤圆

 楼主| 发表于 2011-10-11 21:08:05 | 显示全部楼层
恳求6大侠楼,有木有程序啊。急需啊!谢谢啦!

出0入0汤圆

发表于 2011-10-12 00:24:37 | 显示全部楼层
回复【8楼】libaozhu
-----------------------------------------------------------------------
上面的图就是程序呀,我只会原理图方式
我把它转换为VHDL格式,如果你再看不懂,我也没办法了
-- Copyright (C) 1991-2008 Altera Corporation
-- Your use of Altera Corporation's design tools, logic functions
-- and other software and tools, and its AMPP partner logic
-- functions, and any output files from any of the foregoing
-- (including device programming or simulation files), and any
-- associated documentation or information are expressly subject
-- to the terms and conditions of the Altera Program License
-- Subscription Agreement, Altera MegaCore Function License
-- Agreement, or other applicable license agreement, including,
-- without limitation, that your use is for the sole purpose of
-- programming logic devices manufactured by Altera and sold by
-- Altera or its authorized distributors.  Please refer to the
-- applicable agreement for further details.

-- PROGRAM                "Quartus II"
-- VERSION                "Version 8.1 Build 163 10/28/2008 SJ Web Edition"
-- CREATED ON                "Wed Oct 12 00:20:52 2011"

LIBRARY ieee;
USE ieee.std_logic_1164.all;

LIBRARY work;

ENTITY test IS
        PORT
        (
                CLK :  IN  STD_LOGIC;
                CP :  IN  STD_LOGIC;
                CT :  OUT  STD_LOGIC
        );
END test;

ARCHITECTURE bdf_type OF test IS

ATTRIBUTE black_box : BOOLEAN;
nATTRIBUTE noopt : BOOLEAN;

COMPONENT \74139_0\
        PORT(A1 : IN STD_LOGIC;
                 A2 : IN STD_LOGIC;
                 B1 : IN STD_LOGIC;
                 B2 : IN STD_LOGIC;
                 Y10N : OUT STD_LOGIC;
                 Y20N : OUT STD_LOGIC;
                 Y13N : OUT STD_LOGIC;
                 Y12N : OUT STD_LOGIC;
                 Y11N : OUT STD_LOGIC;
                 Y21N : OUT STD_LOGIC;
                 Y22N : OUT STD_LOGIC;
                 Y23N : OUT STD_LOGIC);
END COMPONENT;
ATTRIBUTE black_box OF \74139_0\: COMPONENT IS true;
ATTRIBUTE noopt OF \74139_0\: COMPONENT IS true;

SIGNAL        SYNTHESIZED_WIRE_24 :  STD_LOGIC;
SIGNAL        SYNTHESIZED_WIRE_25 :  STD_LOGIC;
SIGNAL        TFF_inst7 :  STD_LOGIC;
SIGNAL        TFFE_inst26 :  STD_LOGIC;
SIGNAL        SYNTHESIZED_WIRE_0 :  STD_LOGIC;
SIGNAL        SYNTHESIZED_WIRE_1 :  STD_LOGIC;
SIGNAL        SYNTHESIZED_WIRE_2 :  STD_LOGIC;
SIGNAL        SYNTHESIZED_WIRE_3 :  STD_LOGIC;
SIGNAL        SYNTHESIZED_WIRE_26 :  STD_LOGIC;
SIGNAL        SYNTHESIZED_WIRE_27 :  STD_LOGIC;
SIGNAL        SYNTHESIZED_WIRE_28 :  STD_LOGIC;
SIGNAL        SYNTHESIZED_WIRE_8 :  STD_LOGIC;
SIGNAL        DFF_inst17 :  STD_LOGIC;
SIGNAL        DFF_inst18 :  STD_LOGIC;
SIGNAL        SYNTHESIZED_WIRE_29 :  STD_LOGIC;
SIGNAL        SYNTHESIZED_WIRE_30 :  STD_LOGIC;
SIGNAL        SYNTHESIZED_WIRE_14 :  STD_LOGIC;
SIGNAL        SYNTHESIZED_WIRE_15 :  STD_LOGIC;
SIGNAL        SYNTHESIZED_WIRE_16 :  STD_LOGIC;
SIGNAL        SYNTHESIZED_WIRE_17 :  STD_LOGIC;
SIGNAL        DFF_inst20 :  STD_LOGIC;
SIGNAL        SYNTHESIZED_WIRE_19 :  STD_LOGIC;
SIGNAL        SYNTHESIZED_WIRE_20 :  STD_LOGIC;
SIGNAL        SYNTHESIZED_WIRE_21 :  STD_LOGIC;
SIGNAL        SYNTHESIZED_WIRE_22 :  STD_LOGIC;
SIGNAL        SYNTHESIZED_WIRE_23 :  STD_LOGIC;


BEGIN
SYNTHESIZED_WIRE_19 <= '1';



b2v_inst : 74139_0
PORT MAP(A1 => SYNTHESIZED_WIRE_24,
                 A2 => SYNTHESIZED_WIRE_25,
                 B1 => TFF_inst7,
                 B2 => TFFE_inst26,
                 Y10N => SYNTHESIZED_WIRE_3,
                 Y20N => SYNTHESIZED_WIRE_22,
                 Y13N => SYNTHESIZED_WIRE_1,
                 Y12N => SYNTHESIZED_WIRE_21,
                 Y11N => SYNTHESIZED_WIRE_23,
                 Y21N => SYNTHESIZED_WIRE_20,
                 Y22N => SYNTHESIZED_WIRE_0,
                 Y23N => SYNTHESIZED_WIRE_2);


SYNTHESIZED_WIRE_15 <= NOT(SYNTHESIZED_WIRE_0 OR SYNTHESIZED_WIRE_1);


SYNTHESIZED_WIRE_16 <= NOT(SYNTHESIZED_WIRE_2 OR SYNTHESIZED_WIRE_3);


SYNTHESIZED_WIRE_30 <= NOT(SYNTHESIZED_WIRE_26 OR SYNTHESIZED_WIRE_27);



PROCESS(CLK)
BEGIN
IF (RISING_EDGE(CLK)) THEN
        DFF_inst17 <= CP;
END IF;
END PROCESS;


PROCESS(CLK)
BEGIN
IF (RISING_EDGE(CLK)) THEN
        DFF_inst18 <= SYNTHESIZED_WIRE_28;
END IF;
END PROCESS;


PROCESS(CLK)
BEGIN
IF (RISING_EDGE(CLK)) THEN
        DFF_inst20 <= SYNTHESIZED_WIRE_27;
END IF;
END PROCESS;


SYNTHESIZED_WIRE_8 <= NOT(CP);



SYNTHESIZED_WIRE_29 <= NOT(SYNTHESIZED_WIRE_8 AND DFF_inst17);


SYNTHESIZED_WIRE_14 <= NOT(DFF_inst18);



PROCESS(CLK,SYNTHESIZED_WIRE_29)
VARIABLE SYNTHESIZED_WIRE_25_synthesized_var : STD_LOGIC;
BEGIN
IF (SYNTHESIZED_WIRE_29 <= '0') THEN
        SYNTHESIZED_WIRE_25_synthesized_var := '0';
ELSIF (RISING_EDGE(CLK)) THEN
        IF (SYNTHESIZED_WIRE_30 <= '1') THEN
        SYNTHESIZED_WIRE_25_synthesized_var := SYNTHESIZED_WIRE_25_synthesized_var XOR CP;
        END IF;
END IF;
        SYNTHESIZED_WIRE_25 <= SYNTHESIZED_WIRE_25_synthesized_var;
END PROCESS;


PROCESS(CLK,SYNTHESIZED_WIRE_29)
VARIABLE TFFE_inst26_synthesized_var : STD_LOGIC;
BEGIN
IF (SYNTHESIZED_WIRE_29 <= '0') THEN
        TFFE_inst26_synthesized_var := '0';
ELSIF (RISING_EDGE(CLK)) THEN
        IF (SYNTHESIZED_WIRE_30 <= '1') THEN
        TFFE_inst26_synthesized_var := TFFE_inst26_synthesized_var XOR SYNTHESIZED_WIRE_25;
        END IF;
END IF;
        TFFE_inst26 <= TFFE_inst26_synthesized_var;
END PROCESS;


CT <= SYNTHESIZED_WIRE_28 AND SYNTHESIZED_WIRE_14;


SYNTHESIZED_WIRE_27 <= SYNTHESIZED_WIRE_15 OR SYNTHESIZED_WIRE_16 OR SYNTHESIZED_WIRE_17;


SYNTHESIZED_WIRE_28 <= DFF_inst20 OR SYNTHESIZED_WIRE_26;


PROCESS(CP)
VARIABLE SYNTHESIZED_WIRE_24_synthesized_var : STD_LOGIC;
BEGIN
IF (RISING_EDGE(CP)) THEN
        SYNTHESIZED_WIRE_24_synthesized_var := SYNTHESIZED_WIRE_24_synthesized_var XOR SYNTHESIZED_WIRE_19;
END IF;
        SYNTHESIZED_WIRE_24 <= SYNTHESIZED_WIRE_24_synthesized_var;
END PROCESS;


PROCESS(CP)
VARIABLE TFF_inst7_synthesized_var : STD_LOGIC;
BEGIN
IF (RISING_EDGE(CP)) THEN
        TFF_inst7_synthesized_var := TFF_inst7_synthesized_var XOR SYNTHESIZED_WIRE_24;
END IF;
        TFF_inst7 <= TFF_inst7_synthesized_var;
END PROCESS;


SYNTHESIZED_WIRE_17 <= NOT(SYNTHESIZED_WIRE_20 OR SYNTHESIZED_WIRE_21);


SYNTHESIZED_WIRE_26 <= NOT(SYNTHESIZED_WIRE_22 OR SYNTHESIZED_WIRE_23);


END bdf_type;

出0入0汤圆

 楼主| 发表于 2011-10-13 14:27:06 | 显示全部楼层
谢谢楼上的

出0入0汤圆

发表于 2011-10-20 17:07:52 | 显示全部楼层
好东西啊,收藏了,等效采样

出0入0汤圆

发表于 2011-10-22 00:14:41 | 显示全部楼层
写点思路,照此编程序即可:

两个计数器cnt、cnt_max
每来一个脉冲,cnt_max加1,加到3后清零,即01230123循环
每来一个脉冲cnt清零,然后每个clk让cnt加1直到cnt=cnt_max,此时进行采样。

实际运行时:
第一个脉冲到来:cnt_max=0,cnt=0=cnt_max,立即采样;
第二个脉冲到来:cnt_max=1,cnt=0,过一个clk后cnt=1=cnt_max,即延迟一个周期采样;
以此类推………………

出0入0汤圆

 楼主| 发表于 2011-10-23 09:34:54 | 显示全部楼层
非常感谢!!

出0入0汤圆

发表于 2011-10-25 11:36:20 | 显示全部楼层
回复【楼主位】libaozhu
-----------------------------------------------------------------------

建议注意以下,输入时钟沿的考虑,必须过采样以及滤波,否则比较容易误触发,尤其在《1m的情况下

出0入0汤圆

发表于 2011-10-28 20:34:20 | 显示全部楼层
首先:对于跨时间域的单比特信号,用本地时钟域打2拍同步后才能时能。按照楼主说法,当脉冲宽度》= 本地时钟宽度5倍。
实现方法:采样单次脉冲的上升沿,然后作一个从1到4计数器,该计数器在发现单次脉冲上升沿是累加1,
当计数器=1和上升沿时,第一次采样的时间是当脉冲到来时就采样,
当计数器=2和上升沿时第二采样的时间是当第二次脉冲到来时要延时一个时钟周期,
当计数器=3和上升沿时第三次采样的时间是第三个脉冲到来时要延时两个时钟周期,
当计数器=4和上升沿第四次采样就是延时三个时钟周期。
延时实现方法,就用本地时钟把输入信号延时一拍.

出0入0汤圆

 楼主| 发表于 2011-11-4 00:08:52 | 显示全部楼层
谢谢各位的回复!

出0入0汤圆

发表于 2011-11-6 15:21:33 | 显示全部楼层
6楼的方法好神奇啊,mark下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 11:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表