
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于cpld的单片机pci接口设计8位在系统中应用广泛,然而让它挺直与pci设备打交道却有其固有缺陷。8位单片机惟独16位地址线,8位数据端口,而pci总线2.0规范中,除了有32位地址数据复用ad30外,还有frame、irdy、trdy等重要的信号线。让单片机有限的i/o端口来挺直控制如此众多的信号线是不行能的。一种可行的计划就是利用作为交流单片机与pci设备间的桥梁,充分利用cpld中i/o资源丰盛,用户可自定制规律的优势,来协助单片机完成与pci设备间的通相信务。1 pci接口设计原理1.1 pci总线协议简介这里只研究pci总线2.0协议,其它协议仅仅是在2.0的基础上作了一些扩展,
2、仅就单片机与pci设备间的通信来说,意义不大。pci总线是高性能局部总线,工作频率033mhz,可同时支持多组外围设备。在这里,我们只关怀单片机与一个pci设备间通信的状况,而且是以单片机与cpld一方作为主控方,另一方作为pci从设备。这样做的目的是为了简化问题,降低系统造价。pci总线上信号线虽多,但并不是每个信号都要用到。事实上pci设备也并不会支持全部的信号线,比如错误报告信号perr与serr在网卡中就不支持。我们可以针对详细的应用挑选支持其中部分信号线,还有一些信号线可以挺直连电源或接地。下面容易介绍一下常用信号线的功能。ad310:地址数据多路复用信号。在frame有效的第一个周
3、期为地址,在irdy与trdy同时有效的时候为数据。c/be30:总线指令与字节使能控制信号。在地址其中传输的是总线指令;在数据期内是字节使能控制信号,表示ad310中那些字节是有效数据。表1是总线指令编码的解释。pci总线上全部的数据传输基本上都由以下三条信号线控制。frame:帧周期信号。由主设备驱动,表示一次拜访的开头和持续时光,frame有效时(0为有效,下同),表示数据传输举行中,失效后,为数据传输最后一个周期。ird:主设备预备好信号。由主设备驱动,表示主设备已经预备好举行数据传输。trdy:从设备预备好信号。由从主设备驱动,表示从设备已经预备好举行数据传输。当irdy与trdy同
4、时有效时,数据传输才会真正发生。另外,还有idsel信号用来在配置空间读写期间作为片选信号。对于惟独一个pci从设备的状况,它总可以接高电平。idsel信号由从设备驱动,表示该设备已成为当前拜访的从设备,可以不理睬。在pci总线上举行读写操作时,pci总线上的各种信号除了rst、irq、irqc、irq之外,惟独时钟的下降沿信号会发生变幻,而在时钟升高沿信号必需保持稳定。1.2 cpld设计规划出于对单片机和cpld处理能力和系统成本的考虑,下面的规划不支持pci总线的线性突传输等需要延续几个数据周期的读写方式,而仅支持一个址周期加一个数据周期的读写方式。对于大部分应用而言,这种方式已经足够了
5、。图1与图2是经过简化后的pci总线读写操作时序。在cpld内设有13个8位寄存器用来保存举行一次pci总线读写时所需要的数据,其中pci_address0pci_address3是读写时的地址数据;pcidatas0pci_datas3是要往pci设备写的数据;pci_cbe30保存地址周期时的总线指令,pci_cbe74保存数据周期时的字节使能指令;pci_data0pci_data3保存从pci设备返回的数据;pci_request是pci总线读写操作状态寄存器,用于向单片机返回一些信息。当单片机往pci_cbe寄存器写入一个字节的时候,会复位cpld中的状态机,触发cpld举行pci总
6、线的读写操作;单片机则通过查询pci_request寄存器得知读写操作完成,再从pci_data寄存器读出pci设备返回的数据。cpld中状态机的状态转移图3所示。每一个状态对应frame与ird信号的一种输出,而其它输入输出信号线可由这两个信号线和pci_cbe的值及trdy的状态打算。当frame为有效时,ad310由pci_address驱动,而c/be30由pci_cbe低4位驱动;当irdy有效时,c/be30视总线指令,要么由pci_cbe高4位驱动,要么设为高阻态,而ad310在pci_cbe0为“0”时,(pci读指令)设为高阻态,而在pci_cbe0为“1”时(pci读指令)
7、由pci_datas驱动。另外一方面,一旦trdy信号线变为低电平,ad310线上的数据被送入pci_data寄存器,而c/be30线上的数据被送入pci_request寄存器的低4位。考虑到在不正常状况下,pci设备不会对pci总线作出响应,即trdy不会有效,为了不使状态机陷入状态s2的僵持局面,另外增设了一个移位计数器mycounter。当ird信号有效时,计数器开头计数。计数溢出之后,不论pci总线操作是否完成,状态机都会从状态s2转移到状态s3,即结束pci总线操作。当trdy有效时,会立刻置位mycounter.cout。pci总线操作是否正确完成,可查询pci_request的最
8、高位是否为“1”,而irdy与frame的值可分离查询pci_request的第4位和第5位。这两位反映了pci总线操作所处的状态,两位都为“1”时可以认为pci总线操作已经完成。在实践中,假如单片机的速度不是足够快的话,可以认为pci总线操作总是即时完成的。这几位的实现可参考源程序。2 pci设计接口实现2.1 cpld abel hdl程序设计我们针对8位单片机控制pci以太网卡举行了程序设计,cpld器件选用ara的max7000系列。针对以太网卡的特点在规律上举行了再次简化,最张程序将适配进epm7128芯片中,并在实践中检验通过。以太网卡仅支持对配置空间和i/o空间的读写操作,而且这
9、两个空间的地址都可以设置在0xff以内,所以可以只用一个pci_address0寄存器,其它地址都挺直设为“0”;假如再限制,每次只往网卡写入一个字节数据,则可以只用一个pci_datas0寄存器,其它数值在详细操作时设成与pci_datas0寄存器的一样即可。以下是abel hdl主要源码。其中16dmux是416位译码器,用于地址译码,选通cpld内的寄存器;8dffe是8位的dffe;abelcounter是8位移位计数器;mylatch8与mylatch1分离为8位与1位锁存器,而mylatchc是带清零1位锁存器;其它以“my”开头的变量都是三态缓冲器,以“out”开头的变量是三态节
10、点,以“e”开头的变量是一般节点。这此在程序中不再声明。subdesign abelpci(p27.3 : input;read0 : inputwrite0 : input;p07.0 : bidir;clk : input;trdy0 : input;ad31. : bidir;cbe3.0 : bidir;irdy0 : output;frame0 : output;)variabledecoder : 16dmux;mycounter : abelcounter;pci_cbe : 8dffe;pci_address0 : 8dffe;pci_datas0 : 8dffe;pci_re
11、quest6.0 : mylatch1;pci_request7 : mylatchc;pci_data0 : mylatch8;pci_data1 : mylatch8;pci_data2 : mylatch8;pci_data3 : mylatch8;ss : machine of bits (frame0,irdy0)with states(s0 = b"11",s1=b"01");s2=b"10"s3=b"11");begindecoder.(d,c,b,a)=p26.3;enareg=decoder.q;
12、pci_che.ena=enareg0pci_cbe.d=p0;pci_cbe.clk=!write0;pci_address0.ena=enareg&p2lpci_address0.d=p0;pci_datas0.ena=enaregpci_datas0.d=p0;pci_datas0.clk=!write0;pci_data0.gate=!trdy0;pci_data0.data=ad7.0;pci_data1.gate=!trdy0;pci_data1.data=ad15.8;pci_data2.gate=!trdy0;pci_data2.data=ad23.16;pci_dat
13、a3.gate=!trdy0;pci_data3.data=ad31.24;pci_request3.0.gate=!trdy0;pci_request7.gate=!trdy0;pci_request7.aclr=p2&!write0;pci_request3.0.data=cbe;pci_request.data=irdy0;pci_request.data=frame0;pci_request.data=vcc;pci_request7.data=vcc;eread=p2&!read0 & write0;my_p0_data0.in=pci_data0.q;my_
14、p0_data0.oe=enaregmy_p0_data1.in=pci_data1.q;my_p0_data1.oe=enaregmy_p0_data2.in=pci_data2.q;my_p0_data2.oe=enaregmy_p0_data3.in=pci_data3.q;my_p0_data3.oe=enaregmy_p0_request6.0.in=pci_request6.0.q;my_p0_request.in=pci_request7.q;my_p0_request.oe=enareg13out_p0=my_p0_data0;out_p0=my_p0_data1;out_p0
15、=my_p0_data2;out_p0=my_p0_data3;out_p0=my_p0_request;p0=out_p0;enclr=enareg0&p2&!write0;mycounter.clock=clk;t_en=!irdy0;mycounter.aclr=!frame0;mycounter.sset=!trdy0;ss.clk=!clk;ss.reset=enclr;ss.ena=vcc;case ss iswhen s0 = ss="s1"when s1 = ss="s2"when s2 = if mycounter.co
16、ut then ss =s3;else ss="s2"end if;whenf s3 = ss="s3"end case;my_ad_address7.0.in=in=pci_address0;my_ad_address31.8.in=gnd;my_ad_address31.0.oe=!frame0;my_cbe_c.in=pci_cbe.d3.0;my_cbe_c.oe=!frame0;my_ad_data31.0.in=pci_datas0.q8.1;my_ad_data31.0.oe=pci_cbe_0my_cbe_be.in=pci_cbe.d7
17、.4;my_cbe_be.oe=frame0;out_ad=my_ad_address;out_ad=my_ad_data;ad=out_ad;out_cbe=my_cbe_c;out_cbe=my_cbe_be;cbe=out_cbe;end;2.2 单片机pci读写程序设计在cpld在协助下,单片机读写pci设备就变得相当容易。首先,将pci_cbe等寄存器都声明为外部存储器变量,并按照cpld的设计指定地址。然后,传递适当的参数给以下两个读写子函数,即可完成对pci设备配置空间、i/o空间、存储器空间的读写操作。从pci设备的返回数据存放在全局变量savedata中。事实上在写pci设备
18、时,也可以从pci_data中得到返回数据。这个数据必需等于往pci设备写的数据,缘由参见abel hdl设计部分。利用这一点可以举行差错检验和故障推断,视详细应用而定。bdate unigned char request;sbit irdy0=request4;sbit frame0=request5;sbit valid="request"7;void readpci(unsigned char addr,unsigned char cbe)pci_address0=addr;pci_cbe=cbe;request=pci_request;while(!irdy0 & frame0) request="pci"_request;savedata0=pci_data0;savedata1=pci_data1;savedata2=pci_data2;savedata3=pci_data3;if(!valid)printf(&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年企业子公司策划授权合同
- 2025年制冷设备采购与安装合同格式
- 2025年不动产担保合同范本
- 2025年新版货物运输合同模板
- 数字化采集技术评估-深度研究
- 船舶修理工艺优化-深度研究
- 2025年企业担保合同范文性模板
- 工具制造工艺集成-深度研究
- 病历信息抽取与语义理解-深度研究
- 物联网设备融合-深度研究
- 英语人称代词和物主代词练习题(附答案)
- 计算机一级考试WPS试题及答案
- 《Windows server操作系统》Windows Server 2019全套教学课件
- 2024年12月大学英语四级CET-4真题试卷
- 煤矿应急叫应、回应、响应机制
- 护理人力资源配置原则及调配方案
- 2023级武汉大学临床医学毕业考试试卷
- 2024年衡水市安平县小升初数学高频考点检测卷含解析
- 人教版数学二年级下册全册核心素养目标教学设计
- 2024年苏州市职业大学单招职业适应性测试题库完整版
- 铝合金门窗安装施工工艺详解
评论
0/150
提交评论