EDN China > 设计实例 > 可编程器件 > FPGA > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

等效时间采样原理及基于FPGA的实现

刘建博?? 郭文秀?? 张捷?? 伍守豪?? 西北工业大学 深圳清华大学研究院 电子设计工程?? 2015年05月20日 ?? 收藏2

2 基于FPGA的等效时间采样实现

2.1 系统硬件实现框图

系统的总体框图如图2,FPGA 控制的等效采样时钟连接到ADC 器件的时钟部分,ADC 器件在时钟的控制下对宽带模拟信号进行采样,采集到的数据传送到FPGA 中的FIFO,FPGA 再将FPGA 中FIFO 的数据传递到USB 中的FIFO,然后USB 将USB 中FIFO 数据推送到计算机,计算机对接收到的数据进行重构处理。对于信号周期的获取,在电阻抗多频及参数成像技术中采集信号的周期是由发送信号的周期决定, 而对于其他复杂周期信号的周期获得可以通过所采用的方法获得。

图2 系统方案框图
图2 系统方案框图

2.2 等效时间采样时钟的程序实现

图3 展示了基于FPGA 生成的等效时间采样模块的输入端口与输出端口。其中CLK 表示高频时钟的输入,RESET表示的是复位输入端,FREN_CON 表示的是分频控制输入用于控制高频时钟的分频数,SANM_CONT 表示的是模拟信号的周期包含多少个高频时钟信号的波形,CLK_ADC_OUT 表示的是输出时钟端口,此端口连接到模数转换器件(ADC)的时钟输入端口。

图3 等效时间采样模块图
图3 等效时间采样模块图

以下是实现等效时间采样所需时钟的代码:

SIGNAL SAMP_CONTS:STD_LOGIC_VECTOR (11

DOWNTO 0):=(OTHERS=>'0');

SIGNAL ADC_CLK_BANK:STD_LOGIC_VECTOR (11

DOWNTO 0):=(OTHERS=>'0');

SIGNAL CLK_CNT :INTEGER RANGE 0 TO 5000:=0;

SIGNAL CLK_TANK:STD_LOGIC:='0';

SIGNAL EN :STD_LOGIC:='1';

BEGIN

PROCESS(CLK,RESET)

BEGIN

IF RESET='1' THEN EN<='1';

ELSE

IF CLK'EVENT AND CLK='1' THEN

IF SAMP_CONTSSAMP_CONTS<=SAMP_CONTS+'1';

IF ADC_CLK_BANKADC_CLK_BANK<=ADC_CLK_BANK+'1';

ELSE EN<='0';

END IF;

ELSE

ADC_CLK_BANK<=(OTHERS=>'0');

SAMP_CONTS<=(OTHERS=>'0');

EN<='1';

END IF;

END IF;

END IF;

END PROCESS;

---分频控制部分程序,作ADC 的时钟使用

PROCESS(CLK,RESET,EN)

BEGIN

IF RESET='1' THEN

CLK_TANK<='0';

CLK_CNT<=0;

ELSE

IF EN='1' THEN

IF CLK'EVENT AND CLK='1' THEN

IF (CLK_CNT=(CONV_INTEGER (FREN_CON)/2) -1)

THEN

CLK_TANK<=NOT CLK_TANK;

CLK_CNT<=0;

ELSE CLK_CNT<=CLK_CNT+1;

END IF;

END IF;

ELSE

CLK_TANK<='0';

CLK_CNT<=0;

END IF;

END IF;

END PROCESS;

CLK_ADC_OUT<=CLK_TANK;

END;

【分页导航】


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

数据采集? 变频? FPGA?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈