您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

换体DMA高速数据采集电路的CPLD实现

时间:2007-1-20栏目:电子通信论文

图3LPM_RAM_DP模块中rdaddress、rden、rdclock、rdclken、q分别为读端的地址线、使能端、时钟线、时钟使能和数据线;data、wraddress为写端的数据总线和地址总线。图3的双端口RAM模块并没有BUSY端,当写地址和读地址相同时,数据位冲突,读写不能正常工作。在实际工作中,这种问题是不应该出现的。结合本系统的具体需要,在此引入了存储器分而概念,即把1k字节的双端RAM分为2页,每页512字节,分别为读缓存页和写缓存页,两者相互交换。当采集数据量达到512字节时,系统马上申请DMA传送,把刚转换完

的第一页中的512字节数据送给计算机,传送结束后等待下一次DMA申请;与此同时,A/D继续工作,转换的数据放在第2页0~511地址中。任何时候读写都分别在不同的页工作,从而有效地避免了数据冲突,但又不影响数据传输速度。具体的分页控制主要由地址发生器设计确定。
换体DMA高速数据采集电路的CPLD实现
2.2 分页地址发生器

分页地址发生器不但要产生双端口RAM的读写地址,而且还要为缓存器分页;页写满时,还要提供DMA传输申请信号。为了增强灵活性,读写地址发生器由VHDL语言编程集中在一个模块实现,部分程序如下:

signal wtmp:integer range 0 to 1023;

signal rtmp:integer range 0 to 1023;

signal page:intefer range 0 to 1;

if(wclk'event and wclk='1')then

if(wtmp>1023)then wtmp<=0;

else wtmp<=wtmp+1; --wtpm为写地址值

end if;

if(0=<wtmp<512)then page<=0; --page为存储器分页标志

else page<=1; --"0"代表第0页

end if; --"1"代表第一页

if(twmp=512 and wtmp=1023)then page_full<='1';

else page_full<='0'; --page-full为页写满标志,同时为DMA传送申请信号

end if;

end if;

if(page=0)then rtmp<=0; --不同的页置不同的数据读地址初始值

else if(page=1)then rtmp<=512;

end if;

if(rclk'event and rclk='1')then

if(en='1' and rtmp<1024)then rtmp<=rtmp+1;

end if; --rtmp为读地址值

end if;

代码经过编译生成的原理框图如图3的ADD_CRE-ATE模块。在图形输入编辑环境下,可以把它作为一个标准的原理图与其他模块连接;写地址时钟WCK由AD774B的STS端产生,每一组数据转换结束后,地址发生器加1,读地址时钟RCK由DMA应答信号DACK提供;PAGE_FULL在0页或1页满时变为高电平,经D触发器申请DMA传输,把刚满页的数据送给计算机内存。

2.3 时序逻辑电路的设计

上一页  [1] [2] [3] 下一页

下页更精彩:1 2 3 4 下一页