返回信息流我现在编了一个a/d采样的vhdl程序,然后我想每隔一段时间采集256点的数据后进行后续的信号处理,然后再采集256点的数据后再信号处理,这样实现循环进行(采集、信号处理)的功能。现在不知道应该怎么控制a/d进行间隔采样。
肯请高人指点!
这是一条镜像帖。来源:北邮人论坛 / circuit / #4089同步于 2008/3/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Circuit机器人发帖
[求助] 关于 a/d采样的vhdl程序 !
yywd
2008/3/28镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
我用了一个单片机软核 想通过单片机控制ad采样工作
比如说,当ad采样的clk为1时,采样;clk为0时,ad停止工作
我想取出连续的256点数据进行后续处理
信号处理结束后再采256点数据进行后续处理
【 在 WasteHeaven 的大作中提到: 】
: 请问你说的256点是什么意思??并行的?
: 周期采样的话 给出需要的时钟或者如此之类不就行了
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY RESERV IS
PORT(CLK, KEY1 : IN STD_LOGIC;
DA_CLK,AD_CLK : OUT STD_LOGIC;
TRAG, DOUT : OUT STD_LOGIC_VECTOR (9 DOWNTO 0);
ADIN : IN STD_LOGIC_VECTOR (7 DOWNTO 0) );
END;
ARCHITECTURE DACC OF RESERV IS
COMPONENT DPRAM
PORT ( address : IN STD_LOGIC_VECTOR (9 DOWNTO 0);
inclock, wren : IN STD_LOGIC ;
data : IN STD_LOGIC_VECTOR (7 DOWNTO 0);
q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0));
END COMPONENT;
SIGNAL Q1 : STD_LOGIC_VECTOR (9 DOWNTO 0);
SIGNAL MD0,DIN : STD_LOGIC_VECTOR (7 DOWNTO 0);
BEGIN
PROCESS(CLK)
BEGIN
IF rising_edge(CLK) THEN Q1 <= Q1 + 1; END IF;
END PROCESS;
process(CLK, ADIN)
begin
if rising_edge(CLK) then DIN <= ADIN ; end if;
end process;
DOUT(9 DOWNTO 2)<=MD0; TRAG<=Q1; DOUT(1 DOWNTO 0) <= "00";
u1 : DPRAM PORT MAP(data=>DIN, wren=>KEY1, address=>Q1, q=>MD0, inclock=>CLK);
DA_CLK<=CLK; AD_CLK<=CLK;
END;
个人感觉在两个进程里面都加上if KEYIN='1' then .....应该就可以了,不过最好搞个计数器,采样256之后关闭KEYIN,当处理完或者说缓冲区空时再开始采样,加几层逻辑就好了,在遇到问题可以贴出调试错误:)
【 在 yywd 的大作中提到: 】
: LIBRARY IEEE;
: USE IEEE.STD_LOGIC_1164.ALL;
: USE IEEE.STD_LOGIC_UNSIGNED.ALL;
: ...................