DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 817|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-21 23:45:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ATAPT设备自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模式)、PID传输以及IDE设备与主机的握手通讯(如数据包、命令、任务、状态等的发送和接收)进行。DMA是IDE的数据总线和主机的存储器数据线SRAM间的直接传输。在IDE设备与主机通讯的基础,ATAPI光盘读写命令及其它相关命令得以实现,在这里设计的光盘复制机(两个ATAPI)正是基于IDE设备的接口。  主机与IDE接口的通讯通过IDE总线的CS0-、CS1-、DA2、DA1、DA0、DIOR-、DIOW-等信号来进行,相关功能见表1。表1 IDE接口功能和选择地址地    址功    能Cs0-NDA2DA1DA0READ(DIOR)WRITE(DIOW)AN000DATADATAAN001ERRORFEATUREAN010RESON AN011RESERVE AN100bYTE-CNT-LOWbYTE-CNT-LOWAN101bYTE-CNT-HIGHbYTE-CNT-HIGHAN110DEVICE-SELDEVICE-SELAN111STATUSCOMMAND  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较为普遍,若写入CUESheet则整个光盘的刻录轨迹位置就固定了。而在实践中发现,对于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_Lmodemov DPtr,#IDE_STATUSmovx @DPtr,a ;DIOR valid……mov p1,#Sram64_Lmodemovx A,@DPtrmov R7,A ;返回状态到r7寄存器retWrite_Cmd_Pkt: nop ;写6字命令包子程序;写6字事先已存入内空间cmd_buffermov R0,#cmd_buffermov R1,#06H ;//6 words to writesend_pkt:mov A,@R0mov pl,#Sram64_Lmodemov DPtr,#IDE_DATA_REGmovx @DPtr,A ;//write low byteinc R0;//类似的写高字节到16位SRAM……;再将16bit从16位SRAM中一次写入IDE设备mov pl,#IDE_WMode ;select IDE devicemov DPtr,#IDE_DATA_REG;//16bit packet command writemovx a,@DPtr ;DIOW valid……inc R0djnz R1,send_pktretvoid send_cue_sh(USI par_len){//ATAPI CD-WO Command,10字节 //命令字节初始化设备……do {status=Read_Status_Reg(drv);}while(status&0x80); //不忙时才可写入nonDMA_xfer_data 1(); //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、CDWO格式以及对ATAPI整个命令的了解。
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-5-12 05:20 , 耗时 0.087874 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表