当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]CPLD为设计任务从最简单的PAL综合设计到先进的实时硬件现场升级提供了全套的解决方法。本文讨论如何使用Xilinx公司的CPLD器件XC9500LV实现PLX9054的局部总线 (local bus)和DSP的HPI口之间的实时通信。采用这种设计可以以单字或DMA方式完成主机与DSP之间的高速数据传输,传输速率达到16Mb/s。可以应用于实时的图形、图像及动画处理场合。



设计需求

local bus接口要求

PLX9054是PCI接口专用主从器件,包括通信、网络、磁盘控制、多媒体等高性能接口功能。PLX9054可以以多种方式实现从pci总线端到局部总线端的数据转移,如直接传输,DMA控制传输等。pci总线和局部总线之间以6个可编程FIFO连接,可实现突发并行传输。通过串行EEPROM或PCI主控设备对PLX9054内部的配置寄存器进行设置。通过配置EEPROM,设置PLX9054作为PCI总线的从设备,工作在C模式下(数据、地址总线非复用),局部总线数据宽度为16bit,并使能外部设备就绪信号READY,禁止无限爆发操作(屏蔽BTERM bit)。

局部总线端的读、写时序基本相同。以写周期为例说明。首先,PLX9054通过置LHOLD信号有效来申请局部总线的主控权,在收到局部总线仲裁的响应信号LHOLDA之后,PLX9054成为局部总线的主控。随后置ADS#信号为低,使得地址总线信号LA[31:2]、字节使能信号LBE[3:0]和读写选择信号LW/R#进入有效状态。一个LCLK周期之后,PLX9054停止驱动ADS#。这时,地址总线LA[31:2]上的地址信号将保持有效,直至数据线上的数据有效,并保持一个LCLK周期。数据线LD[15:0]上的数据信号由READY#驱动,在读、写操作周期,READY#分别表示局部总线设备已经准备好发送或者接收数据。BLAST#信号由PLX9054提供,BLAST#信号为低,表示一次传输的最后一个字节,BLAST#的上升沿标志一次数据传输完成。一个LCLK周期之后,PLX9054拉低LHOLD,放弃对局部总线的主控权。局部总线仲裁响应PLX9054的LHOLD信号,拉低LHOLDA,收回局部总线主控权,这时的局部总线置于闲置状态。这里,PLX9054作为局部总线主控权的唯一申请者,只要提出总线申请,局部总线仲裁就立即响应该申请。

HPI设计要求

HPI是一种数据宽度为16bit的并行端口,通过HPI,主机可以直接对CPU的存储器空间进行操作。HPI内部加入了两个8级深度的读写缓冲,可以执行地址自增的读写操作,提高了读写操作的吞吐量。HPI为内部CPU提供了标准32bit的数据接口,而它为外部主机提供了一个经济的16bit接口,所以对外部主机而言,每次读写必须执行成对的16bit操作。

HPI内部有3个寄存器,分别是控制寄存器(HPIC),地址寄存器(HPIA)和数据寄存器(HPID)。这3个寄存器可以直接被主机访问,主机每执行一次对CPU内部存储空间的访问,都必须先对控制寄存器和地址寄存器写入相应的值,然后才能对数据寄存器进行读写操作。HPI的外部接口由数据总线HD[15:0]以及一部分用于描述和控制HPI的控制信号组成,这些控制信号包括:

HCNTL[1:0]:控制HPI的操作类型。
HHWIL:半字确认输入,“0”,“1”分别表示一次字传输的第一个半字和第二个半字。
HR/W#:读/写选择。
HRDY#:就绪状态标志。
HINT#:中断标志,DSP向主机提中断。
HAS#:区别地址/数据复用总线的数据与地址。
HDS1#,HDS2#,HCS#:数据选通输入,共同作用产生一个HPI内部选通信号HSTROBE#:
HSTROBE# = [NOT(HDS1# XOR HDS2#)] OR HCS#。

对于一个写HPI的操作,首先使能HCS#,变化HDS1#或HDS2#,使得HSTROBE#信号产生一个下降沿。HPI这个下降沿采样控制信号HCNTL[1:0]、HHWIL和HR/W#,使能HCS#的同时,扇出HRDY#。主机进入等待状态,直到HRDY#产生下降沿,表明HPID已清空,可以接收新的数据。这时HSTROBE#产生一个上升沿,采样HD[15:0]上的数据送入HPID,完成第一个半字的写入。对于第二个半字的写入,由于32bit的HPID已经清空,可以直接写入数据,不会出现未准备好的情况,所以HRDY#一直保持为低。与第一个字节的写入相同,在HSTROBE#的下降沿采样控制信号,HSTROBE#的上升沿采样数据总线HD[15:0]的数据送入HPID,完成一个32bit的写入操作。

对于读HPI的操作,当HCS#变成有效,在主机不采用地址自增方式从HPID执行读操作时(case1),HPI会向内部地址产生硬件送一个读请求。HCS#的下降沿使得HRDY#变为高电平,直到内部地址产生硬件将请求的数据装载进HPID,HRDY#变为有效状态。数据线上的数据为读出的数据,该数据保持有效,直到HSTROBE#上升沿采样数据后的10ns左右。在第二次读操作开始时,数据已经出现在HPID上了,因此,第二个半字的读操作将不会遇到未准备好的情况。在HPID以地址自增的方式进行读操作时,HCS#在整个多个字节的传输过程中始终保持有效,一旦完成现在的读操作,下一地址的数据马上被取出。因此,完成现在读操作的第二个半字的传输之后(在HSTROBE#的第二个上升沿),由HSTROBE#的下降沿(通过变化HDS1#或者HDS2#来产生)扇出HRDY#信号,用于指示HPI正忙于数据的预读取。

设计实现

CPLD的功能是要完成局部总线端和HPI端口之间控制信号和数据总线的连接,并保证数据传输的可靠性。通过以上对局部总线和HPI的读写时序的分析得知,一些关键信号,例如HCS#、READY#和HRDY#的时序设计很重要,整个CPLD设计的主要任务也是围绕这几个信号的设计展开的。

由HCS#、HDS1#和HDS2#共同作用产生的HPI口内部信号HSTROBE#的上升沿和下降沿直接控制着送入HPI端口的数据信号和控制信号,并且HSTROBE#变化的速率决定了数据传输的速率,因此它是一个非常关键的信号。这里,HCS#信号作为字节传输标志信号,在一次数据传输的过程中始终保持有效。数据传输结束之后,将HCS#拉高,从而控制HRDY#信号恢复到初始状态,为下一次读写操作做好准备。HDS1#或者HDS2#中的一个固定接高电平,变化另外一个来控制HSTROBE#产生上升沿和下降沿。这里将HDS1#固定接高电平,由ADS#和HRDY#信号产生逻辑来控制HDS2#信号。当HRDY#处于无效状态,即HPI端口未准备就绪时,HDS2#信号不变,不采样任何信号;当HRDY#有效时,HCS2#信号同ADS#信号保持一致,在ADS#的下降沿采样控制信号,上升沿采样数据信号。另外,在一次传输开始之前和结束之后,HDS2#都要保持为高电平。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

数字信号处理器(DSP)在通信、控制、图像处理等多个领域扮演着越来越重要的角色。TMS320F2808PZA作为德州仪器(Texas Instruments)推出的一款高性能DSP控制器,其独特的架构和强大的功能使其在众...

关键字: tms320f2808pza 数字信号处理器 DSP

从世界上第一颗DSP诞生至今30年来,国际一线老牌芯片厂商长期占据领先技术和市场地位,国内芯片厂商在DSP上的声量很小。然而经过了6年的沉心打磨之后,湖南进芯电子开始在这一领域崭露头角。凭借着更贴近中国本土特色的差异化产...

关键字: DSP MCU 电机控制 进芯电子

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

与谷歌的合作使 Nordic 能够在 nRF Connect SDK 中嵌入开发人员软件,以构建与安卓移动设备兼容的谷歌Find My Device和未知跟踪器警报服务

关键字: 谷歌 SoC 嵌入式开发

嵌入式开发作为当今电子工程和信息技术领域的核心分支,涵盖了广泛的软硬件技术和系统集成方法,用于构建高性能、低成本、低功耗、体积小巧且功能专一的嵌入式系统。这些系统无处不在,从微型传感器节点到复杂的工业控制设备,从日常使用...

关键字: 嵌入式开发 Python

嵌入式开发是当今信息技术领域不可或缺的一部分,它融合了硬件设计、软件开发和系统集成等多个学科,专门用于创建那些被嵌入到特定设备或系统中的专用计算机系统。嵌入式开发的主要过程包括利用分立元件或集成器件进行电路设计、结构设计...

关键字: 嵌入式开发 硬件设计 软件开发

嵌入式开发作为一种专业且技术密集型的领域,涵盖了从硬件底层驱动、中间件到应用层软件开发等多个层面的工作,其所需的工具种类繁多,各有针对性,旨在提升开发效率、保证代码质量以及简化调试过程。

关键字: 嵌入式开发 keil

嵌入式开发作为信息技术领域的重要分支,其涉及的语言种类繁多,各具特色。这些语言的选择取决于目标平台的特性、性能需求、开发者的熟练程度以及项目的具体要求。本文将详细介绍几种常见的嵌入式开发语言,包括C语言、C++、汇编语言...

关键字: 嵌入式开发 C语言

嵌入式开发是一项综合了硬件设计、软件编程以及系统整合的技术活动,其目的是为了创造出能够在特定环境中高效、稳定运行的嵌入式系统。这一流程涵盖了多个紧密关联且不可或缺的阶段,从最初的客户需求分析到最终的产品测试和交付,每个环...

关键字: 嵌入式开发 硬件设计

嵌入式开发作为一个融合了计算机软硬件和系统工程的综合性领域,其成功与否往往取决于三个核心要素的有效整合与协调。这三个要素分别是:硬件平台的选择与设计、软件开发及其优化、以及系统级的设计与集成。深入理解并熟练掌握这三个方面...

关键字: 嵌入式开发 ARM
关闭
关闭