当前位置:文档之家› 信号采集与回放系统

信号采集与回放系统

信号采集与回放系统
技术报告
电信082班084775240 周霞
(合作者:电信082班084775228 吴迪)
指导教师:倪海燕
2010-5-27
摘要:本设计通过A/D转换和D/A转换实现输入信号与输出信号的变化。

通过实验箱上的模式3的ADC输入正弦波信号,设计按键选择,有3种模式分别是直接回放,单次回放,循环回放和定点回放。

关键字:信号回放模式选择
一、实验要求
1. 实现输入,存储,回放信号
2. 回放模式选择(直接回放,单次波形回放,循环回放,分段存储定点回放等)
二、总原理图
三、系统总体方案设计
根据实验要求,TLC5510A 是采样率最高为20MHz的8位并行高速ADC ,FPGA的PIO48输出信号控制ADC1的输出使能信号OE(低电平有效);PIO15为转换时钟信号CLK;AD转换结果送至PIO16~PIO23,并且同时显示在数码管1和数码管2上。

ADC的模拟信号输入端在实验箱的左侧,允许输入0~5V的信号。

转换关系:DATA=255×Ain/5
数据从采集到转换结束需要两个半时钟周期
四、软件电路的设计
4.1控制器的设计
用VHDL语言编写控制器的程序,要有读写使能和模式选择。

用choose[2]的四个状态分别表示直接回放,单次回放,循环回放和定点回放。

程序如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity control is
port ( clk:in std_logic; --时钟
writ:in std_logic; --读写使能
en:in std_logic; --使能
choose:in std_logic_vector(1 downto 0); --模式选择
ch:in std_logic_vector(1 downto 0); --阶段选择
enout:out std_logic; --读写使能输出
adr:out std_logic_vector(9 downto 0) ); --地址
end entity control;
architecture behave of control is
signal count1:std_logic_vector(9 downto 0);
signal count11:std_logic_vector(9 downto 0);
signal count2:std_logic_vector(9 downto 0);
signal count22:std_logic_vector(9 downto 0);
begin
process(writ,en,ch,choose)
begin
if(en='1')then count1<="0000000000";count11<="0000000000";
count2<="0000000000";count22<="0000000000";
elsif (clk'event and clk='1')then
if(choose="01")then ---- 单次回放
if(writ='0')then enout<='1';adr<=count1;
if(count1="1111111111")then count1<="1111111111";
else count1<=count1+1;
end if;
else enout<='0';adr<=count2;
if(count2="1111111111")then count2<="1111111111";
else count2<=count2+1;
end if;
end if;
elsif(choose="10")then ---- 循环回放
if(writ='0')then enout<='1';adr<=count1;
if(count1="1111111111")then count1<="1111111111";
else count1<=count1+1;
end if;
else enout<='0';adr<=count2;
if(count2="1111111110")then count2<="0000000000";
else count2<=count2+1;
end if;
end if;
elsif(choose="11") then ---- 定点回放
if(writ='0')then enout<='1';adr<=count1;
if(count11="0011111111")then count11<="0011111111";
else count11<=count11+1;
end if;
if (ch="00")then count1<="0000000000"+count11;
elsif(ch="01")then count1<="010*******"+count11;
elsif(ch="10")then count1<="1000000000"+count11; else count1<="1100000000"+count11;
end if;
else
enout<='0';adr<=count2;
if(count22="0011111110")then count22<="0000000000";
else count22<=count22+1;
end if;
if (ch="00")then count2<="0000000000"+count22;
elsif(ch="01")then count2<="010*******"+count22;
elsif(ch="10")then count2<="1000000000"+count22; else count2<="1100000000"+count22;
end if;
end if;
else enout<='0';
end if;
end if;
end process;
end behave;
4.2输入信号到输出信号的转换
输入信号是8位的,输出信号是10位的。

所以回放时把输入信号乘以4即左移两位。

程序如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
entity mul is
port ( qin:in std_logic_vector(7 downto 0); qout:out std_logic_vector(9 downto 0)
);
end mul;
architecture behave of mul is
begin
qout<=qin&"00";
end behave;
五、硬件电路的设计
5.1直接回放
5.2模式选择
5.3输出回路
六、总结
本设计通过A/D转换和D/A转换实现输入信号与输出信号的变化。

通过实验箱上的模式3的ADC输入正弦波信号,设计按键选择,有3种模式分别是直接回放,单次回放,循环回放和定点回放。

当进行单次波回放时,很难在示波器上看出波形,只是一瞬间会显示出来,这和频率有关系。

参考文献
[1]数字电路逻辑设计高等教育出版社王毓敏2005
[2]模拟电子技术基础高等教育出版社华成英童诗白 2006。

相关主题