由于TLV1562芯片是可配置A/D转换器,其配置转换时序图见图。所以如何利用CPLD实现对TLV1562的配置与读写是关键技术之一。对于TLV1562的读写控制易于实现,而对于其配置,由于是对四通道循环采集,较为复杂。在TLV1562中有两个寄存器需要配置,也就是要有两次写,而每次配置的数据还不一样(见表一),所以应该在每次写的时候都应相应的提供数据。整个配置过程用VHDL语言采用有限状态机的方式来实现。定义5个状态,分别为st0,st1,st2,st3,ST4,st0是空闲态,st1,st2,st3,ST4是对应相应采集通道的状态,INDEXREG[1..0]是用来监测写信号的第几次写的标识码。 程序如下:
type states is (st0,st1,st2,st3,ST4);
signal current_state,next_state :states :=st0;
signal indexreg:STD_LOGIC_vector(1 downto 0);
signal chanel_data: STD_LOGIC_vector(9 downto 0);
begin
indexreg<=index_reg; cs<=not start;
process(current_state,indexreg,ad_ale)
begin
if ad_ale='0' then
chanel_data<="ZZZZZZZZZZ";
&else
if indexreg="10" then
chanel_data<="0100000100";
else
case current_state is
when st0=>ad_end<='0'; chanel<="00";
next_state<=st1;
chanel_data<="0011000000";
when st1=> ad_end<='0';chanel<="01";
next_state<=st2;
chanel_data<="0011000001";
when st2=> ad_end<='0';chanel<="10";
next_state<=st3;
chanel_data<="0011000010";
when st3=> ad_end<='1';chanel<="11";
next_state<=st0;
chanel_data<="0011000011";
when st4=> next_state<=st0;
chanel_data<="0011000000";
when others=> ad_end<='1'; next_state<=st0;
chanel_data<="0011000000";
end case;
end if;
end if;
end process;
表一 控制寄存器配置表 |
3 结束语
文中详述了基于TLV1562和EP1K100的多通道高速采集系统的设计及实现方法,将该采集系统应用到雷达数字式对消器中,结果证明精度和速度都能满足要求。实现了在较低的成本下实施多通道数据采集处理。