《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > 基于非IDE专用接口芯片的自主型光盘复制机的系统设计

基于非IDE专用接口芯片的自主型光盘复制机的系统设计

2009-03-03
作者:林永宏

  摘  要: 基于非IDE专用接口芯片(MCU、DMA、SRAM、CPLD等组成)的光盘复制机的系统设计;着重对系统功能、整体设计原理、硬件结构和软件实现等问题进行了描述;对光盘的存储和读写技术作了相应的介绍。 

  关键词: 光盘复制机  IDE接口  ATAPI设备 

 

  自1980年Philips和 Sony公司推出数字声音标准的CD(Compact Disc)以来,CD就以其信息存储量大、存储时间长和容易携带等优点,受到人们的青睐,并被广泛应用于娱乐、发行、信息存储和备份等方面。随着近年来可擦写光盘驱动器CD-R(CD-Record-able)的出现和廉价可写光盘CD-WO(CD-Write Once)的渐渐普及,光盘的复制、刻录变得容易起来。除了使用相当专业的光盘复制设备外,更多的办法是借助于个人计算机或只有VIDEO的光盘录像机进行复制,但其成本相对较高,复制过程也比较麻烦。所以自主型(独立完成复制,不需计算机)光盘复制机应运而生,采用专门SCSI接口芯片的1对1复制机出现了。但由于SCSI接口的光盘驱动器额外成本较IDE接口的高,并且市场上大量使用的是IDE接口的光驱,因此,设计低成本的基于IDE接口的自主型光盘复制机是对光盘复制市场的极大补充。 

1 自主型光盘复制机系统的主要功能指标和应用 

  主要功能指标为: 

  (1)一对一复制,按一键完成4倍速的仿真或刻录功能; 

  (2)空间、时间和硬件资源最节省; 

  (3)系统增加IDE与PARALLEL口的转换后,可作为PC机的外置式光盘驱动器; 

  (4)具有状态显示和自动完成、退出提示等; 

  (5)支持大多数工业标准的CD格式,如红皮书、黄皮书、白皮书和绿皮书标准(AUDIO CD、VIDEO CD、DADA CD、MIXED MODE CD、PHOTO CD、GAME CD)等。 

  本系统可应用于学校、企事业机关和个人的光盘制作、多媒体演示、小量的分发、信息存储和备份等。 

2 系统组成 

  系统组成如图1所示。整个系统由1块控制板、一条IDE电缆、一台CD-R驱动器、一台CD-ROM驱动器、开关电源以及系统界面构成。其中,控制板是整个光盘复制系统的核心,它控制着从CD-ROM内读取原始数据,然后写入到CD-R中的空白光盘上。界面上只有状态灯和一个选择按钮,按钮经控制板读取后,决定了写入的模式。 

 

 

3 核心硬件设计 

  (1)整个设计围绕着对光驱的读与写操作、数据传输(分为PIO模式和DMA模式)、PIO传输以及IDE设备与主机的握手通讯(如数据包、命令、任务、状态等的发送和接收)进行。DMA是IDE的数据总线和主机的存储器数据线SRAM间的直接传输。在IDE设备与主机通讯的基础上,ATAPI光盘读写命令及其它相关命令得以实现,在这里设计的光盘复制机(两个ATAPI)正是基于IDE设备的接口。 

  主机与IDE接口的通讯通过IDE总线的CS0-、CS1-、DA2、DA1、DA0、DIOR-、DIOW-等信号来进行,相关功能见表1。

 

 

  ATAPI的命令如TEST UNIT READY、MODE SENSE、READ TRACK INFORMATION、READ、WRITE等都是通过以上接口进行发送的,接收可以是PIO模式或DMA模式。  

  (2)光盘的读写速率是按75block(frame)/s来计算的。一个block等于2352个字节,但用户数据随着CD格式的不同而不同,1倍速按每秒75个block读写,2倍速按每秒150个block读写。然而,4倍速复制并不是要求主机一次读取300(4×75)个block大小的数据量,而是通过对目标光盘刻录速度的设置来完成的。通常有20~30个block(大约70~80K的数据量)读写速度就够了,太少容易死机,太多则加大了对主机存储空间SRAM的要求。在这里我们选择了64K×16bit的SRAM。 

  (3)支持Enhance IDE的设备都具有快速DMA功能。在光盘复制时,实现大量数据的快速读写DMA是必需的。在DMA外部工作频率为12.5MHz时,一般能达到1.5M/s的传输能力,例如INTEL 82C37A。 

  (4)主机UP(CPU)选择性价比较好的8032系列单片机,可支持40MHz的外部工作频率。为了加强对知识的保护,也为了实现8位微机与16位SRAM以及大量外围芯片的译码,选用了CPLD来增加其集成度,其设计采用原理图+VHDL方式。 

  硬件设计简图如图2所示。 

 

 

4 软件实现 

  参考CD-WO规范,CD-WO的写入方式主要有两种:Track at once(轨道)和Disc/Session at once(分区)。这和光盘的信息存放格式分类有极大的关系。在国内,多分区的光盘MULT-SESSION CD如MIXED CD、 CD-I等较为少见,它们是数据区和音频区的结合,一般第一个分区与其它分区不同。某些光盘用Track at once 能够成功地刻录,而用Disc at once方式则失败;反之亦然。 

  通常,Disc at once 较为普遍,若写入CUE-Sheet则整个光盘的刻录轨迹位置就固定了。而在实践中发现,对于MIXED-CD用Track at once 更容易成功。图3、图4是两种写入方式的简单过程。 

 

 

 

  实际的软件编程要比这些复杂。对于经常调用的过程,通常都用汇编语言编写,例如:从IDE接口寄存器中的读写(Read-Data-Reg,Write-Data-Reg,Read-Status-Reg,Write-CMD-pkt,Write-Task-Ide)等。而针对ATAPI的大多命令,都用C51编写,例如:mode-select(),read-10(ad),write-10(ad),tray-out(),send-cue-sheet()等。 

    部分执行程序的示例如下。 

IDE接口地址定义部分     ;;IDE Interface Address 

例如:IDE_STATUS         EQU  81F7H 

…… 

_Read_Status_Reg:       ;;读IDE驱动器设备状态子程序 

                lcall   _Drive_Select;选择光驱 

                …… 

                mov     p1,#IDE_LMode 

                mov     DPTR,#IDE_STATUS 

                movx    @DPTR,a    ;DIOR valid 

                …… 

                mov     p1,#Sram64_LMode 

                movx    A,@DPTR 

                mov     R7,A   ;返回状态到r7寄存器 

                ret 

Write_Cmd_Pkt:  nop     ;写6字命令包子程序 

                        ;写6字事先已存入内空间 

                         cmd_buffer 

                mov     R0,#cmd_buffer 

                mov     R1,#06H ;//6 words to write 

send_pkt: 

                mov     A,@R0 

                mov     p1,#Sram64_LMode 

                mov     DPTR,#IDE_DATA_REG 

                movx    @DPTR,A  ;//write low byte 

                inc     R0 

                ;//类似的写高字节到16位SRAM  

                …… 

                ;再将16bit从16位SRAM中一次写入 

                IDE设备 

                mov     p1,#IDE_WMode ;select IDE device 

                mov     DPTR,#IDE_DATA_REG 

                                     ;//16bit packet  

                                       command write 

                movx    a,@DPTR     ;DIOW valid 

                …… 

                inc     R0 

                djnz    R1,send_pkt 

                ret 

void send_cue_sh(USI par_len)      

{//ATAPI CD-WO Command,10字节 

    //命令字节初始化设置 

        ……     

        do { 

        status=Read_Status_Reg(drv); 

}while(status&0x80);        //不忙时才可写入 

nonDMA_xfer_data1();        //non DMA (PIO 模式) 

P1=SRAM32; 

status=Read_Status_Reg(drv);    //读取返回的状态 

if(status&0x01) { 

        rqsense();          //ATAPI Command 

    } 

} /* End of send_cue_sh */ 

  基于非IDE专用接口芯片的自主型光盘复制机是对目前光盘复制市场的有益补充。其设计要求有较高的单片机、DMA传输以及CPLD等硬件知识和对CD、CD-WO格式以及对ATAPI整个命令的了解。 

参考文献 

1 Cmos High Performance Programmable DMA Controller.Harris Semiconducator,1994 

2 ATAPI Interface Manual for Sony ATAPI Cd-R/RW Drive.Sony Corporation,1998 

3 Recordable Compact Disc System(Part 2:CD-WO,version2.0).Sony and Philips,1994
本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。