数字拷贝机的FPGA设计
1.2.2 数据拷贝期的DMA数据传输模块
本文引用地址:https://www.eepw.com.cn/article/85404.htm在这个模块中,主要由FPGA构成的一个DMA控制器控制IDE/ATA设备与拷贝机内存之间的数据交换。选用的FPGA为SpartanTM-3E 系列器件,它是开创性的低成本Spartan系列的第7类器件,也是采用先进的90nm工艺技术生产的第三类Xilinx器件系列。 Spartan-3E FPGA有高达160万的系统门、376个I/O、1.8MB的块RAM,并且具有业界单位逻辑成本最低的通用平台FPGA架构。FPGA所实现DMAC 控制器的内部逻辑结构如图3所示。
DMA控制器提供地址码以指明I/O设备变换数据的存储器起始地址;提供读/写脉冲,以规定数据在存储器与I/O设备之间的传输方向;修改内存地址指针并计算传送的字节数,以判断何时传送结束。具体信号时序如下:
(1)I/O设备向DMAC发出请求信号DRQ;
(2)DMAC向CPU发出总线请求信号HRQ;
(3)CPU向DMAC发出总线响应信号HLDA,此时,DMAC获得总线控制权;
(4)DMAC向I/O设备发出DMA响应信号DACK,表示DMAC已控制了总线,允许I/O设备与存储器交换数据;
(5)DMAC按地址寄存器的内容发出16位地址信号作为存储地址的选择,同时地址寄存器的内容加1(或减1,由编程定);
(6)DMAC发出IORC信号到I/O设备,将I/O设备数据读入总线,同时发出MEMW信号,将数据总线的数据写入由地址总线选中的内存单元;
(7)字节计数器减1;
(8)重复(5)、(6)、(7)步骤,直至字节计数器为0,数据块的DMA方式传送工作完成。这时,DMAC的HRQ降为低电平(HRO=0),总线控制权交给CPU。
数据拷贝期的DMA数据传输模块原理如图4所示。
2 数字拷贝机系统软件流程
非数据拷贝期系统主程序流程如图5所示。数据拷贝期FPGA内部DMA控制器的程序流程如图6所示。拷贝机数据输入输出IDE端口的程序流程如图7所示。
检查CDROM是否就绪程序:
void TestUnitReady(void)
{
unsigned char TempCyc;
unsigned char TempS;
for(TempCyc=0;TempCyc<12;TempCyc++)
PacketTemp[TempCyc]=0x00;
do
{
SendPacket(1);//若CD-ROM不在就绪状态则跳过DRQ检测
TempS=CDStatusREG& 0x89;//通过CDStatusREG & 0x89判断ERR、DRQ、BSY中是否有1?
}
while(TempS);
//PacketCommand失败时认为CD-ROM未就绪,再次发送Test Unit Ready
Command
}
系统经过了ISE开发环境的设计、仿真、定时分析,其目的是测试设计的逻辑功能和延时特性,仿真包括功能仿真和时序仿真,ISE6.1中能够提供和完成这些功能。仿真结果符合实际需要。
(1)系统能实现拷贝、测试、对比校对。
(2)在拷贝之前的菜单可以选择烧录速率(CD to CD、DVD to DVD)等。
(3)系统可进行人性化设定,包括语言设定、CD写模式设定、拷贝模式设定、蜂鸣器及空闲状态屏幕保护设定等。
(4)常用工具设定,包括光盘信息、预扫描、系统信息、设备信息和更新固件等。
本系统符合当前技术的主流,有着广阔的技术前景。
参考文献
1 何 宁,熊剑平,蒋昌龙等.基于FPGA的实时持续数据记录系统设计[J].微电子学与计算机,2003;(1)
2 黄志伟,王 彦,陈 琼等.FPGA系统设计与实践[M].北京:电子工业出版社,2005
3 EDA先锋工作室.FPGA/CPLD设计工具——Xilinx ISE使用详解[M].北京:人民邮电出版社,2005
4 任晓东,文 博.CPLD/FPGA高级应用开发指南[M].北京:电子工业出版社,2003
fpga相关文章:fpga是什么
评论