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