首页>>科技 >>内容

基于AHDL语言和CPLD技术的PCI总线板的设计与开发

发布时间:2023-10-25 17:34:58编辑:温柔的背包来源:

很多朋友对基于AHDL语言和CPLD技术的PCI总线板的设计与开发不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

基于AHDL语言和CPLD技术的PCI总线板的设计与开发

PLD(Programmable Logic Device,可编程逻辑器件)以其操作灵活、使用方便、开发迅速、投资风险低等优点得到了迅速发展,并越来越受到人们的重视。PLD是一种可由用户在工作现场编程的逻辑设备。从简单的PAL和GAL发展到CPLD、EPLD、FPGA和FLEX系列。它们都具有架构和逻辑单元灵活、集成度高、应用范围广的特点。

与过去的PAL和GAL相比,FPGA/CPLD规模更大,适用于时序、组合等逻辑电路。可编程逻辑器件易学易用,简化了系统设计,减小了系统规模,提高了系统可靠性。一个器件有几万个可用门,管脚之间的延迟只有几ns,而且还在向高密度和高速方向快速发展。

计算机总线是计算机部件之间信息传输的公共通道。在当今的微型计算机中,主要使用PCI总线,而ISA和e ISA总线正逐渐被淘汰。因此,硬件设计人员掌握PCI总线板的开发技术非常重要。板卡通常有几种设计方法:一是制作ASIC需要较长的开发周期;另一种是在专用接口芯片下开发的,但使用起来不是很灵活,系统规模较大;目前最新的方法是使用PLD进行开发设计。

在设计CPLD时,使用的软件是Altera的MAX PLUSII。Altera的MAX PLUSII开发系统是一个全集成、易学易用的可编程逻辑设计环境,与结构无关。方便通用系列设计人员进行设计输入、快速处理和器件编程。使用该软件的设计方法非常灵活,可以采用硬件描述语言(PLD)、电路图甚至时序图。

根据不同的情况可以采用不同的方法,在一个设计中也可以采用多种方法。以一个简单的PCI从设备设计为例来说明设计思路和过程。

本例中设计的PCI卡作为从设备,可以实现即插即用功能,卡有1 MB内存可供使用。在PCI即插即用板的设计中,核心设计有两部分:时序控制和配置空间。时序控制保证了板卡能够按照正常的PCI时序工作,配置空间部分保证了板卡的即插即用功能。

在这个例子中,这两部分都是用AHDL语言实现的(AHDL语言是Altera公司专门为其芯片设计开发的硬件描述语言)。在时序控制程序中,采用状态机模型实现不同时序的转换,既节省了资源,又使程序易于理解。

在本例中,状态机使用了七种状态,分别对应空闲、存储器读写、配置读写、读、写、过渡期、总线忙期的时序。接收到复位信号后,板卡复位系统,然后转入空闲状态。对空闲状态下的总线进行采样,并根据总线的变化确定下一个时钟上升沿后状态机的状态。这些序列和程序中使用的信号是基本的和必要的。

在开发过程中,可以根据需要添加必要的状态和信号。程序描述如下:

子设计状态机(时钟、rst、帧、公元[31年.0],cbe[3.0],idsel,irdy,mem_bar[12.0]:输入;devsel,trdy,cfg_rd,cfg_wr,mem_rd,mem _ wr:output;cfg_addr[5.0],mem_addr[16.0]:输出;)//以上定义了状态机模块的输入输出引脚变量PCI _ state:机器状态(idle,cmp_cfg,cmp_addr,read,write,turn_ar,bus _ busy);

//定义状态机变量,包括七个空闲状态,配置空间操作cmp_cfg,比较地址cmp_addr,读状态,写状态,过渡期状态turn_ar,bus_busy状态。时序转换是通过状态机的不同状态来实现的,每个状态下实现不同的时序周期。开始初始化:初始化内部信号和每个输入/输出引脚,并设置它们的连接关系。ifrst==b“0”然后//确定是否复位,实现复位的顺序操作。其他

CASEpci _ stateISWHENidle="//="/Idle状态在这种状态下,每个时钟周期判断frame和idsel信号的变化。一旦发现帧有效,则根据idsel信号判断下一个状态将转移到cmp_cfg进行配置空间操作或CMP _ AddrwenCMP _ CFG="/进行地址与内存比较操作。

在这种状态下,根据地址线的低两位判断是否是对配置空间的操作,如果不是,则转到bus _ busy状态;如果是,根据cbe信号是A还是B判断是读还是写,切换到相应的读和写状态。此状态下CMP _ addr="//地址比较状态时,判断要读写的高位地址是否与配置空间中分配的地址相同,如果不相同,则进入bus_busy状态;如果相同,根据cbe信号是6还是7判断是读还是写,切换到相应的读和写状态。

当read="//Reading state处于此状态时,根据cbe值判断是配置读取还是存储读取,然后控制输出信号mem_rd、cfg_rd、trdy和devsel产生相应的读取时序,同时在此期间判断frame和irdy信号。如果irdy变为低电平,frame变为高电平,读取状态结束,变为turn_ar状态。当write="/。

在这种状态下,根据cbe值判断是配置写入还是存储写入,然后控制输出信号mem_wr、cfg_wr、trdy和devsel产生相应的写入时序,在此期间判断frame和irdy信号。如果irdy变为低电平,frame变为高电平,则写状态结束,变为turn_ar状态。当turn _ ar=//信号时的过渡时期状态

根据PCI的总线规范,在S/T/S信号从有效变为浮动之前,必须保证至少有一个时钟周期的高电平状态。在这种状态下,所有S/T/S信号都被设为高电平。bus _ busy="//Bus busy状态时总线不操作此卡,所以什么时候离开此状态是通过判断帧信号来决定的。WHENOTHERS="如果进入这种状态,应该根据需要立即转向bus_busy或idleENDCASEENDIF结束;

配置空间也用AHDL语言描述。PCI卡的功能、存储空间的分配、产品号和ID号都在配置空间中定义。只有定义配置空间,才能保证板卡的即插即用功能。描述如下:两部分均由软件生成模块实现,两个模块之间的接口部分可以通过电路图的连接轻松实现。这两个模块如图所示。使用CPLD技术开发PCI板卡有以下优点:

1、具有开发周期短、成本低、投资风险小、产品标准无需检测、质量稳定、可实时在线检测等优点。用CPLD技术完成设计后,可以进行实时时序仿真。无需重复硬件测试即可验证改进后的设计结果。设计通过后,写入芯片,测试后即可投入使用。比用一些专用的PCI芯片简单,而且省去了其他的开发设备,所以成本更低。与ASIC开发相比,周期要短得多。

2、使用灵活方便。由于开发的板卡直接基于总线的基本规范,不需要使用一些特殊的芯片,所以开发起来更加灵活自由,限制更少,整个硬件模块的规模也较小,所以自身的很多算法和技术都可以和PCI结合起来,做出技术含量更高的产品。

3、有利于保护知识产权和提高软件性能。利用这种技术,可以把自己的算法、技术和一些软件做成硬件,固化在卡上,既提高了运行速度,又让盗版者难以复制。本文结合实例给出了一种利用CPLD技术设计PCI总线上各种板卡的设计方案,该方案简单实用,具有较高的应用价值。

以上知识分享希望能够帮助到大家!