新闻中心

EEPW首页>嵌入式系统>设计应用> 基于CPLD的串并转换和高速USB通信设计

基于CPLD的串并转换和高速USB通信设计

作者: 时间:2014-09-14 来源:网络 收藏

  (5)逻辑阵列输入

本文引用地址://m.amcfsurvey.com/article/262878.htm

  逻辑阵列输入包括全局总线/开关矩阵和返送总线:

  ◇ 全局总线/开关矩阵

  全局总线包括所有的输入和I/O引脚信号以及所有128个宏单元的隐藏反馈信号。每个逻辑块的开关矩阵将全局总线的所有信号作为其输入。在软件的控制下,这些信号中最多可以有40个被选择作为逻辑块的输入。

  ◇ 返送总线

  每一个宏单元可以产生一个返送乘积项。这个信号连接到局部总线上,并且对16个宏单元有效,它是宏单元一个乘积项的反极性。每个局部总线的16个返送项允许产生高扇入求和项(最多21个乘积项),而只有很小的延时。

  3 设计软件支持

公司提供了的设计软件,而且很多第三方的工具软件也支持ATF1508AS的设计,可以用多种高级描述语言和格式进行逻辑描述,如CUPL、ABEL、VHDL等。由于ATF1508AS与ALTERA公司的EPM7000系列是完全引脚兼容的,因此可以使用 ALTERA公司的MAXPLUSII软件。它能进行VHDL语言的编译和综合,使用方便,功能强大。MAXPLUSII综合后产生适合ALTERA的编程的POF文件,使用POF2JED软件(公司提供),就可将POF文件转换为适合ATF1508AS的工业标准JEDEC编程文件,下载到ATF1508AS芯片中。

  4 器件编程

  ATF1508AS器件是利用4脚JTAG协议在系统编程(ISP)的。提供了ISP硬件(下载电缆)和软件,以允许从PC对ATF1508AS进行编程。若要允许ISP编程支持"自动测试装置(ATE)"向量,必须通过ATMEL的ISP软件生成串行向量格式(SVF)文件,也可转换为除SVF外的其它ATE测试格式。ATF1508AS器件也可以用标准的第三方编程器来编程,这时JTAG ISP口可以被禁止从而允许这四个额外的I/O引脚用于逻辑功能。

  ATF1508AS还有一个特性就是如果由于任何原因编程过程被中断,则器件将被锁定以防止输入和I/O引脚被驱动。在这种状态下,输入和I/O引脚缺省下为高阻状态。在编程器件时,输入和I/O引脚也将为高阻状态。此外,引脚保持电路设置在器件编程期间将保持以前的状态。 ATF1508AS器件出厂时被初始化为已擦除状态,可以直接用来ISP编程。

  5 应用实例

  (1)应用ATF1508AS进行串并转换

  本系统应用ATMEL公司的ATF1508AS进行串行数据到并行数据的转换,在进行数据采集中,用到Crystal半导体公司生产的24位高精度Σ-△模/数转换器CS5321/CS5322组件。该组件最终输出字长为24位的2的补码格式的串行数字信号,将其转换为并行数据可以方便与单片机的接口。串并转换可采用移位寄存器来实现。对实现6通道24位采样,若采用移位寄存器,则需要8位移位寄存器,共3×6=18片,另外还要用几片译码器。这样,会使芯片数量大增,占用大片电路板面积,使系统的体积增大。本系统使用ATF1508AS来实现6通道24位数据的串并转换,可将大部分数字逻辑设计(包括组合逻辑和时序逻辑)集成在一个芯片内,大幅减少芯片数量,减小系统体积。

  由于ATF1508AS内部有128个宏单元,而且24位串并转换需要24个移位寄存器,因此不能同时进行6通道的串并转换,只能分时复用。本系统分3次进行串并转换,每次转换2个通道,等待单片机读取2个通道的并行数据后再进行剩下的转换。部分串并转换VHDL程序如下(硬件描述语言是VHDL,软件是ALTERA公司的MAXPLUSⅡ软件和ATMEL公司的POF2JED软件,下载软件是ATMEL公司的ATMISP,下载电缆是ATMEL公司的专用电缆):

  s2p : process(SCLK1M,DRDYIN,WORKING,RESET)

  begin

  if WORKING='1' or RESET='1' then

  shift_enable <= '0';

  state <= s0;

  elsif SCLK1M'event and SCLK1M='0' then

  count1 <= count1+1;

  case state is

  when s0 =>if DRDYIN='0' then

  shift_enable <= '1';

  count1 <= (others=>'0');

  int_reg <= '1';

  state <= s1;

  elsif READOK='1' then

  int_reg <= '1';

  end if;

  when s1=>shift_reg0<=shift_reg0(22 downto 0)& SOD(0);

  shift_reg1<=shift_reg1(22 downto 0)& SOD(1);

  if count1=23 then

  shift_enable <= '0';

  int_reg <= '0';

  state <= s2;

  else

  int_reg <= '1'; end if;

  when s2 => if shift_enable='1' then

  shift_reg0<=shift_reg0(22 downto 0)& SOD(2);

  shift_reg1<=shift_reg1(22 downto 0)& SOD(3);

  if count1=23 then

  shift_enable <= '0';

  int_reg <= '0';

  state <= s3;

  else

  int_reg <= '1'; end if;

  elsif READOK='1' then

  shift_enable <= '1';

  count1 <= (others=>'0');

  end if;

  when s3 =>if shift_enable='1' then

  shift_reg0<=shift_reg0(22 downto 0)& SOD(4);

  shift_reg1<=shift_reg1(22 downto 0)& SOD(5);

  if count1=23 then

  shift_enable <= '0';

  int_reg <= '0';

  state <= s0;

  else

  int_reg <= '1'; end if;

  elsif READOK='1' then

  shift_enable <= '1';

  count1 <= (others=>'0');

  end if;

  end case;

  end if;

  end process;

  (2)应用ATF1508AS进行高速通信

是近年来应用在PC领域的新型接口技术,具有使用方便、速度快、连接灵活、支持热插拔等特点。1.1协议定义在高速下12 Mb/s、低速下1.5 Mb/s的传输速度。若要达到高速12 Mb/s(相当于近1 MB/s)的速度,就要大约1μs传输1个字节。但由于USB的控制传输、错误检测以及单片机本身速度的限制,很难达到这么高的速度,因此,必须采用 DMA方式才能达到真正的高速传输,使用就可以实现类似DMA方式。单片机负责解释USB的控制传输,当要进行从外存取数送到USB接口芯片时,单片机让出总线,由CPLD完成该工作。CPLD产生外存的读取时序和地址、片选信号,同时产生USB接口芯片的写时序和地址、片选信号,这样就可以自动实现外存数据到USB接口芯片的工作,而且速度很快,不需要单片机干预。以下给出RAM的读取时序、地址信号和USB接口芯片写时序的VHDL程序片断:

上拉电阻相关文章:上拉电阻原理


关键词:ATMELCPLDUSB

评论


相关推荐

技术专区

关闭