找回密码
 注册
关于网站域名变更的通知
查看: 224|回复: 2
打印 上一主题 下一主题

基于FPGA的PCI接口设计

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-4-15 14:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

摘 要: 介绍一种使用PCI宏核逻辑进行的更加简单高效的PCI口设计方法。该方法将PCI接口和PCI用户逻辑集成在一片FPGA里,可以对整个逻辑进行仿真调试,大大缩短了开发周期、提高了系统集成度和性能。重点叙述了ALTERA公司提供的32位TAGET接口宏核pci_t32的原理和结构,分析了时序设计要点,给出了典型应用的逻辑设计框图和注意事项。
/ z4 m$ P0 S+ M$ f* }- c$ m# Y关键词:PCI总线 接口 现场可编程逻辑阵列 仿真

1 PCI总线及其接口概述
% ?4 K$ m& l3 M* m+ Z+ z' M1 k8 P/ d- T9 P% q6 S1 z' ?) \/ a" `
PCI总线是高速同步总线,具有32bit总线宽度,工作频率是33MHz,最大传输率为132Mbyte/s,远远大于ISA总线5Mbyte/s的速率。PICMG(PCI工业计算机制造商联盟)制定的更加坚固耐用的Compact PCI总线规范,支持64位总线宽度,66MHz作频率,最大传输率为528Mbye/s。基于PC机的高速数据采集系统和各种虚拟仪器,几乎都选择了PCI总线。在现代高速通讯、测试等领域的嵌入式应用中,Compact PCI总线大有超过VME和VXI总线的趋势。PCI的高性能、高效率以及与现有标准的兼容性和充裕的发展潜力,是其它总线所不能及的,被计算机界公认为最具高瞻远瞩的局部总线标准。& ^: Q9 G2 q; J, M0 k

, `% t8 y# Z, f# X# O3 sPCI总线接口相对其它总线接口来说是比较复杂的,它不但有着严格的同步时序要求,而且为了实现即插即用和自动配置,PCI接口还必须有许多配置寄存器。根据用户设备的性质不同,PCI设备分为MASTER(主设备)和TARGET(从设备),因此PCI接口类型也就分为MASTER和TARGET两种接口。概括地说,PCI接口主要包括PCI标准配置寄存器(64字节)、PCI 总线逻辑接口、用户设备逻辑接口、数据缓冲区等。
0 ^( x+ Y* |' d+ k3 v( W" m" g+ f* c7 p. ~
作为一般应用设计工程师,为缩短开发周期,没有必要自己去设计全部的复杂的接口逻辑,甚至可以不必完全理解PCI规范的细节,就能进行PCI用户设备的设计。目前,市场上有一些专用PCI接口芯片,如AMCC公司的S5920(TARGET接口)、S5933(MASTER接口)等。使用这些专用PCI接口芯片,设计者只需要使用地址线、数据线以及少数几个读写控制信号,就能实现PCI总线与PCI用户设备之间的连接,类似ISA总线接口那么简单方便。
+ M# x0 W5 `  v. G* q2 s
9 H9 t  l$ R' V& k+ C5 [随着FPGA (现场可编程逻辑阵列请介绍一下Flash的全面管理问题。) 技术的快速发展,万门以上乃至几十万门逻辑阵列的使用越来越普遍,FPGA的单片价格也大幅度下降。与专用PCI接口芯片相似,很多FPGA制造商都提供了PCI接口宏核逻辑(PCI MegaCore)。设计者可以将PCI用户逻辑与PCI MegaCore集成在一片FPGA里,并且可以在顶层通过仿真来验证PCI接口以及用户逻辑设计的正确与否,这样可以大幅度提高调试速度,缩短开发周期,提高电路板的集成度和系统的性能。3 T, J6 e6 R6 f; j' n+ O+ [0 S* ?. _
. r0 Z$ ^% u% O/ _: G! i$ ?
ALTERA公司提供了多种不同功能的PCI MegaCore,例如:pci _a(带有DMA的32位MASTER/TARGET接口),pci_mt64(支持64位的MASTER/TARGET接口),pci_mt32(32位的MASTER/TARGET接口),pci_t64(支持64位的TARGET接口),pci_t32(32位的TARGET接口)等。不同的PCI MegaCore占用的资源是不同的,设计者可以根据PCI用户设备的需求来选择。5 k6 a& F% A5 h/ D: a) f

& q* e2 l6 h4 A' o  p. ^) K本文将介绍ALTERA公司提供的最简单的32位PCI TARGET接口宏核逻辑pci_t32。重点介绍利用pci_t32进行PCI接口设计的方法及应用注意事项,并给出具体设计实例。其它PCI MegaCore的设计方法与此相类似。本文不介绍有关PCI规范的细节内容。

2 Pci_t32 MegaCore的内部结构及外围信号
9 e+ F5 n$ d# j5 w, l
" M1 i9 T& I! V; ~Pci_t32是ALTERA公司提供的最简单的32位PCI TARGET接口宏核逻辑,支持33MHz和66MHz的PCI时钟。
) s7 h+ q  V# j: e" W8 l/ I% ~Pci_t32内部结构包含如下几个模块:; K# ~0 w3 ?- |/ {. v% R3 x7 j# J
PCI总线配置寄存器,是符合PCI规范2.2版规定的所有配置寄存器。配置寄存器用于识别设备、控制PCI总线功能、提供PCI总线状态等。+ v9 Y& T- I  o- a, }
奇偶校验模块,用于对数据、地址、命令等进行奇偶校验。
# s9 f1 f2 v5 w: H& {PCI侧TARGET控制模块(PCI target control block),用于控制pci_t32(作为TARGET)与PCI总线的各种操作。* [5 K+ r+ @( Q# C7 m# e
用户设备侧TARGET控制模块(local target control block),用于控制pci_t32(作为TARGET)与用户逻辑的各种操作。

用户设备侧地址/数据/命令/字节使能模块,接收和输出用户侧的所有地址/数据/命令/字节使能等信号。. o8 w) P+ y* \: R
Pci_t32内部功能模块及周边信号如图1所示。

左侧PCI信号是符合PCI规范的标准信号,在这里不多加解释。下面重点介绍右侧用户逻辑接口local信号:: B) A( l, _2 {, w
L_aci 31 0 ,local侧地址、数据输入信号。* D* b# P, m# }' U; v
L_cbeni 3 0 ,local侧命令、字节使能输入信号,位定义及时序符合PCI规范。
- o# Z2 U5 W! o4 Z4 [4 \L_dato 31 0 ,local侧数据输出信号。
6 J/ c/ F0 `* V) eL_adro 31 0 ,local侧地址输出信号。
6 }* O6 q) J& q, e! BL_beno 30 ,local侧字节使能输出信号,位定义及时序符合PCI规范。" H6 z- |! ~+ d4 o3 Y
L_cmdo30,local侧命令输出信号,位定义及时序符合PCI规范。
- A9 O- [* J2 eLt_rdyn,local侧目标设备准备好信号(target ready),对pci_t32是输入信号。
5 z; |: X1 o. d+ i# d$ fLt_discn,local侧目标设备通过置低该信号请求pci_t32向PCI 侧主设备发出断开连接信号(disconnect request),对pci_t32是输入信号。( U. v$ G' Z& ]+ W) j, O; ^
Lt_abortn,local侧目标设备通过置低该信号来请求pci_t32向PCI 侧主设备发出放弃操作信号,对pci_t32是输入信号。. C2 G. |5 z$ a' h6 d" M2 O
Lt_irqn,local侧目标设备中断请求信号,对pci_t32是输入信号。
1 l  b# ?8 u/ h/ f7 x- b2 @Lt_framen,PCI主设备通过pci_t32读写local侧目标设备时,pci_t32置低该信号(输出信号).8 M/ R7 C. R- d# _
Lt_ackn,当为目标写操作时,PCI_t32置低该信号(输出信号),表示数据有效;当为目标读操作时,PCI_t32置低该信号(输出信号),表示已准备好读数。
  T- F: W; X" yLt_dxfrn,输出信号,表示local 目标设备数据传输成功。+ I) f  ?4 S6 z3 o1 j! H5 S
Lt_tsr 11 0,输出信号,控制local目标设备状态寄存器。
0 R/ [6 O6 X2 S" g6 W) C! j9 cCmd_reg 5 0,配置命令寄存器输出信号。Bit0,I/O操作使能;bit1,Memory操作使能;bit2,保留;bit3,memory写无效使能;bit4,奇偶校验出错响应使能;bit5,系统出错响应使能。) r3 w$ V9 |6 G& d; i+ ]/ r( T
Stat_reg 5 0 ,配置状态寄存器输出信号。

3 读写操作时序分析与设计要点
2 |* a  G; ~5 d' Q
; a3 m9 ?! Z" C7 |pci规范中定义了两种读写操作,即Memory和I/O的读写。Pci_t32的读写操作包括:32位的Memory单周期读写、Memory猝发读写、I/O单周期读写以及配置读写。Pci_t32 的Memory读写分为单周期和猝发两种模式,而I/O的读写只有单周期模式。所谓猝发模式,即在给出首地址后,主设备连续读写多个数据,用户设备应能对首地址自动加1。配置读写是指pci主设备对pci_t32的配置空间寄存器进行读写操作,pci主设备与pci_t32之间的接口是无缝连接。本文只分析32位Memory单周期读写时序,其它模式的读写时序大同小异,此略。: K3 A" H! d& c
' q4 S/ P  k6 j. u. W( ~  a3 n
3.1 Memory 读操作
% V+ L; R2 {: Tpci_t32的单周期memory read操作时序如图2所示。
时序分析及用户逻辑设计要点:pci主设备在第2个clk给出要读的目标地址ad 31 0 和Memory读命令cben 3 0 =6,pci_t32在第3个clk向用户设备给出读目标地址1_adro 31 0和Memory读命令l_cmdo 3 0 =6。用户设备要对l_cmdo 3 0 译码来判断是何种操作,对l_adro 31 0 译码来选择目标地址。在lt_framen输出为低的下个时钟周期,若用户设备逻辑准备好要输出的数据,可以置低lt_rdyn。若用户逻辑没有准备好,可以延迟置低lt_rdyn来产生延时等待周期。当lt_dxfrn输出为低电平时(第6个clk),pci用户设备必须将目标地址的数据D0放到l_adi 31 0 ,用户逻辑可以用lt_dxfrn来作为存储单元的输出使能信号(/Output Enable)。这样,在第7个clk的上升沿pci_t32可以采样到数据D0。在第8个clk的上升沿pci主设备可以得到数据D0。
0 A- X1 f1 q/ M  O$ N* n
9 w$ }4 R; h0 V7 O% |2 N3.2 Memory写操作
6 u$ `# M9 ^' l3 }pci_t32的单周期memory 写操作时序如图3所示。

时序分析及用户逻辑设计要点:pci主设备在第2个clk给出要写的目标地址ad 31 0 和Memory写命令cben 3 0 =7,pci_t32在第3个clk向用户设备给出写目标地址l_adro 31 0 和Memory写命令l_cmdo 3 0 =7。用户设备要对l_cmdo 3 0 译码来判断是何种操作,对l_adro 31 0 译码来选择目标地址。在lt_framen输出为低的下个时钟周期,若用户设备逻辑准备好接收pci_32t写的数据,可以置低lt_rdyn。若用户逻辑没有准备好,可以延迟置低lt_rdyn来产生延时等待周期。当lt_dxfrn输出为低电平时(第7个clk),pci_t32已经将输出的有效数据放在l_dato 31 0 上,pci用户设备必须在第8个clk的上升沿将l_dato 31 0 输出的数据D0锁存至目标地址l_adro 31 0 ,用户设备逻辑可以用第8个clk的上升沿来作为锁存器的锁存时钟,用lt_dxfrn作为锁存器的锁存使能信号(/Latch Enable)或存储单元的写使能信号(/Write Enable)。

4 应用设计实例及注意事项
- z1 P: Z- c7 W$ n8 F' @; w* H6 x- k
笔者已经成功地将pci_t32用于一个compact PCI的TARGET控制模块中。在这个模块中,主设备Master通过pci_t32来读写64个32bit控制寄存器,再由这些寄存器组去控制外部设备。在本系统的FPGA里,还有仲裁器等其它逻辑,PCI时钟是33MHz,芯片选用的是EPF10K100EQC240-2。系统逻辑设计的框架如图4所示。

在寄存器组里还有一些简单的选通、三态控制等逻辑,此略。L_adro 6 0 译码选择寄存器组里的目标寄存器。当/WE有效时,l_dato 31 0 上是pci_t32输出的有效数据;当/OE有效时,寄存器组必须将要输出的数据放到l_adi 31 0 总线上。
! Y, k- n/ _% l( s1 P, l- H在使用pci_t32时,还有一些值得注意的地方,如下所述:9 y3 M7 `% u* ^# e) Z) V
1 用户逻辑的时钟(本系统的寄存器组的时钟clk)与进入pci_t32的时钟必须是同一个时钟,并且在定义管脚时应选用全局时钟线(global clock)。这样,可以保证时钟的同步,提高系统的性能。
( y2 @6 l4 p; z: P* l2 B1 |2 从库中调出pci_t32.gdf的symbol,在其右上角,可以看到一些默认设置,双击这些参数,可以改变设置。包括:DEVICE_ID、REVISION_ID、CLASS_CODE、VENDOR_ID、基地址等PCI标准配置寄存器。- r6 @; v7 H9 Z
3 选择芯片主要考虑两个因素:
' b' t6 }) r7 y  y2 w, h0 b容量和速度。芯片容量包括片内的逻辑单元和可用I/O管脚数。芯片速度主要由PCI系统工作的时钟频率以及用户逻辑的大小和优化程度两方面决定。
6 Y9 h4 l4 ]# k) A! n$ J+ C$ A% q3 r: }4 T
Pci_t32的资源占用较小,在用EPF10K100EFC484-1芯片编译时,占用621个LC(Logic Cell)。而PCI宏核pci_a,在用EPF10K100EFC484-1芯片编译时,占用923个LC。EPF10K100共有约5000个LC。" ^7 M* ^& E5 D
Altera的FPGA有多种容量和速度级,一般来说,-1速度级的芯片可以满足66MHz时钟的PCI时序要求,-2速度级的芯片只能满足33MHz时钟的PCI时序要求。1 B9 N% K! n  `9 N+ A7 }* ?1 y

5 s- o( o8 m& ~+ b3 a速度和容量是否能满足用户的要求,必须要进行仿真才能最终确定。
2 }/ W' X# Q, \现在FPGA的价格日渐下降,大容量的FPGA使用越来越普遍。各家芯片供应商都提供了各种 PCI宏核逻辑。设计者可以将PCI用户逻辑与PCI接口宏核逻辑集成在一片FPGA里,在顶层通过仿真来验证PCI接口以及用户逻辑设计的正确与否。这样,可以大幅度提高调试速度,缩短开发周期,提高电路板的集成度和系统性能。可以肯定地预言,使用PCI接口宏核逻辑来进行PCI接口设计是今后设计PCI接口的主要方法。PCI接口宏核逻辑将会受到越来越多的设计工程师的青睐。

参考文献( C1 y! J* g% x, L  i: X9 d
1 ALTERA Device Data book 1999.ALTERA,1999
+ B) y& j& k, a( J9 ?9 e, A" G2 PCI MegaCore Function User Guider,Version 1.0.ALTERA,1999年12月
% K  u/ A3 L- P" _% P" i3 金 革.可编程逻辑阵列FPGA和EPLD.合肥:中国科技大学出版社,1996

4 PCI datasheet http://www.dzsc.com/datasheet/PCI_1201469.html.
9 A0 k+ n& Y6 r5 Memory datasheet http://www.dzsc.com/datasheet/Memory_1082507.html.. {& |. }. L% ]+ r0 g4 m
6 EPF10K100EFC484-1 datasheet http://www.dzsc.com/datasheet/EPF10K100EFC484-1_2527956.html." J% x, Z; S( Z$ i8 _# C. R' [  ^& ?0 }
7 EPF10K100 datasheet http://www.dzsc.com/datasheet/EPF10K100_300894.html.
- }6 [5 j) N! x9 r/ l0 X

+ ~' d$ R' K: C* q- z* a. N
& E/ |! N% G+ R$ `1 J5 i0 [+ @
9 h. a4 v+ t5 Y: H3 n1 ^

该用户从未签到

2#
发表于 2020-4-15 16:10 | 只看该作者
在现代高速通讯、测试等领域的嵌入式应用中,Compact PCI总线大有超过VME和VXI总线的趋势。

该用户从未签到

3#
发表于 2022-3-29 15:21 | 只看该作者
基于FPGA的PCI接口设计
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-29 05:25 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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