论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
如上所述,在CPLD中设计双端口RAM,可以有两种方式:原理图输入和HDL语言输入。本设计采用的是MAXPLUS II库中的LPM_RAM_DP宏,原理图如图3所示。
在LPM_RAM_DP宏中总共有10个可配置参数。通常情况下,只配置LPM_WIDTH(数据宽度)、LPM_WIDTHAD(地址总线宽度)、USE_EAB(是否使用嵌入式阵列块EAB)三个参数。在本设计中,AD774B的数据宽度是12位,转换速度为8微秒,所以配置了LPM_WIDTH=12,LPM_WIDTHAD=10(缓存容量为1K),USE_EAB=ON。对于缓存的大小,可以在调试过程中根据具体采集速度和缓存要求进行在线调整,而不影响其他逻辑电路。
图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地址中。任何时候读写都分别在不同的页工作,从而有效地避免了数据冲突,但又不影响数据传输速度。具体的分页控制主要由地址发生器设计确定。
2.2 分页地址发生器
分页地址发生器不但要产生双端口RAM的读写地址,而且还要为缓存器分页;页写满时,还要提供DMA传输申请信号。为了增强灵活性,读写地址发生器由VHDL语言编程集中在一个模块实现,部分程