CPLD技术在PCI总线开发中的应用
发布时间:2007/9/11 0:00:00 访问次数:502
摘要:根据CPLD可编程技术具有功能集成度高、设计灵活,开发周期短、成本低的特点,本文给出了一种使用Altera公司的芯片以及开发软件,设计开发PCI总线上的各种即插即用板卡的具体设计方法。
关键词:CPLD PCI总线 即插即用
PLD与PCI简介
PLD(可编程逻辑器件)以其操作灵活、使用方便、开发迅速、投资风险低的特点,很快发展起来,并越来越受人们的瞩目。PLD是可以由用户在工作现场编程的逻辑器件,它从简单的PAL、GAL,已发展到CPLD、EPLD、FPGA和FLEX系列。他们都具有体系结构和逻辑单元灵活、集成度高以及适用范围广等特点。
同以往的PAL、GAL等相比较,FPGA/CPLD的规模比较大,适合于时序、组合等逻辑电路等场合应用。可编程逻辑器件易学、易用,简化了系统设计,缩小了系统规模,提高了系统的可靠性。一个器件的可用门已达数万门,引脚间延时仅几ns,而且仍在朝着高密度、高速度的方向迅速发展。
计算机总线是计算机各部件之间进行信息传输的公共通道。在当今的微型机中主要采用的是PCI总线,ISA、EISA总线正逐步被淘汰。所以对硬件设计人员来说,掌握PCI总线板卡的开发技术是非常重要的。板卡的设计方法通常有这么几种:一是做ASIC,开发周期长;另一种是在专用接口芯片下开发,使使用不是很灵活,系统规模大;目前最新的方法是用PLD来开发设计。
设计实例
在进行CPLD设计时,笔者使用的软件是Altera的MAX+PLUS Ⅱ开发系统是一个完全集成化、易学易用的、与结构无关的可编程逻辑设计环境,它使通用系统设计和者能方便的进行设计输入、快速处理和器件编程,使用此软件的设计方法是很灵活的,可以采用硬件描述语言(PLD)、电路图,甚至是时序图。根据不同的情况可以采用不同的方法,在一个设计中也可以采用多种方法。下面以一个简单的PCI从设备设计为例,说明设计思想与过程。
在本例中,设计的PCI卡作为从设备使用,可以实现即插即用功能,卡上有1MB的存储器可供使用。在PCI即插即用板卡的设计中,核心设计有两部分:时序控制和配置空间。时序控制保证了板卡能按正常的PCC时序工作,配置空间部分保证了板卡的即插即用功能。
在本例中,这两部分都由AHDL语言来实现的(AHDL语言是Altera公司专门为其芯片设计开发的一种硬件描述语言)。在时序控制程序中采用状态机模型来实现不同时序的转换,采用这种方式既节省资源,程序也简单易懂。
本例中的状态机共使用了七种状态,分别对应空闲、存储器读写的判断、配置读写的判断、读、写、过渡周期、总线忙周期的时序。板卡接到复位信号后,对系统进行复位,然后转入空闲状态。在空闲状态中采用总线,并根据总线的变化来决定下一个时钟上升沿后,状态机转入何种状态。这些时序和程序中用到的信号都是基本且必须的。在进行开发时可以根据需要增添必要的状态和信号。程序描述如下:
subdesign statesmachine
(clk,rst,frame,ad[31..0],cbe[3..0],idsel,irdy,mem_bar[12..0] :input;
devsel,trdy,cfg_rd,cfg_wr,mem_rd,mem_wr :output;
cfg_addr[5..0],mem_addr[16..0] :output;)
//以上定义了状态机模块的输入输出引脚
VARIABLE
pxg ci_state :MACHINE
WITHSTATES(idle,cmp_cfg,cmp_addr,read,write,turn_ar,bus_busy);
/
摘要:根据CPLD可编程技术具有功能集成度高、设计灵活,开发周期短、成本低的特点,本文给出了一种使用Altera公司的芯片以及开发软件,设计开发PCI总线上的各种即插即用板卡的具体设计方法。
关键词:CPLD PCI总线 即插即用
PLD与PCI简介
PLD(可编程逻辑器件)以其操作灵活、使用方便、开发迅速、投资风险低的特点,很快发展起来,并越来越受人们的瞩目。PLD是可以由用户在工作现场编程的逻辑器件,它从简单的PAL、GAL,已发展到CPLD、EPLD、FPGA和FLEX系列。他们都具有体系结构和逻辑单元灵活、集成度高以及适用范围广等特点。
同以往的PAL、GAL等相比较,FPGA/CPLD的规模比较大,适合于时序、组合等逻辑电路等场合应用。可编程逻辑器件易学、易用,简化了系统设计,缩小了系统规模,提高了系统的可靠性。一个器件的可用门已达数万门,引脚间延时仅几ns,而且仍在朝着高密度、高速度的方向迅速发展。
计算机总线是计算机各部件之间进行信息传输的公共通道。在当今的微型机中主要采用的是PCI总线,ISA、EISA总线正逐步被淘汰。所以对硬件设计人员来说,掌握PCI总线板卡的开发技术是非常重要的。板卡的设计方法通常有这么几种:一是做ASIC,开发周期长;另一种是在专用接口芯片下开发,使使用不是很灵活,系统规模大;目前最新的方法是用PLD来开发设计。
设计实例
在进行CPLD设计时,笔者使用的软件是Altera的MAX+PLUS Ⅱ开发系统是一个完全集成化、易学易用的、与结构无关的可编程逻辑设计环境,它使通用系统设计和者能方便的进行设计输入、快速处理和器件编程,使用此软件的设计方法是很灵活的,可以采用硬件描述语言(PLD)、电路图,甚至是时序图。根据不同的情况可以采用不同的方法,在一个设计中也可以采用多种方法。下面以一个简单的PCI从设备设计为例,说明设计思想与过程。
在本例中,设计的PCI卡作为从设备使用,可以实现即插即用功能,卡上有1MB的存储器可供使用。在PCI即插即用板卡的设计中,核心设计有两部分:时序控制和配置空间。时序控制保证了板卡能按正常的PCC时序工作,配置空间部分保证了板卡的即插即用功能。
在本例中,这两部分都由AHDL语言来实现的(AHDL语言是Altera公司专门为其芯片设计开发的一种硬件描述语言)。在时序控制程序中采用状态机模型来实现不同时序的转换,采用这种方式既节省资源,程序也简单易懂。
本例中的状态机共使用了七种状态,分别对应空闲、存储器读写的判断、配置读写的判断、读、写、过渡周期、总线忙周期的时序。板卡接到复位信号后,对系统进行复位,然后转入空闲状态。在空闲状态中采用总线,并根据总线的变化来决定下一个时钟上升沿后,状态机转入何种状态。这些时序和程序中用到的信号都是基本且必须的。在进行开发时可以根据需要增添必要的状态和信号。程序描述如下:
subdesign statesmachine
(clk,rst,frame,ad[31..0],cbe[3..0],idsel,irdy,mem_bar[12..0] :input;
devsel,trdy,cfg_rd,cfg_wr,mem_rd,mem_wr :output;
cfg_addr[5..0],mem_addr[16..0] :output;)
//以上定义了状态机模块的输入输出引脚
VARIABLE
g ci_state :MACHINE
WITHSTATES(idle,cmp_cfg,cmp_addr,read,write,turn_ar,bus_busy);
/