基于FPGA的PCI接口控制器的设计与实现

发布者:未来架构师最新更新时间:2012-04-11 来源: dzsc关键字:FPGA  PCI接口  xc2v6000 手机看文章 扫描二维码
随时随地手机看文章

pci总线是高速同步总线,采用高度综合优化的总线结构,目前广泛应用于各种计算机系统中,总线以32位(或64位)数据总线、33mhz(或66mhz)的时钟频率操作,具有很高的数据传输速率。

目前开发pci接口大体有两种方案,一种是采用专用的pci接口芯片,实现完整的pci主控模块和目标模块接口功能,将复杂的pci总线接口转换为相对简单的用户接口。采用这种方案,用户只要设计转换后的总线接口即可,其优点是缩短了开发周期,缺点是用户可能只用到pci接口的部分功能,因此而造成逻辑资源浪费,缺乏灵活性。一种是使用可编程器件,采用fpga进行pci接口设计,这样可以依据插卡功能进行最优化。这种方案设计灵活,不必实现所有pci功能,节约系统的逻辑资源。

本文所述设计方案是采用xilinx公司的virtex2系列xc2v6000芯片来实现pci主/从设备接口控制器。通过pci总线使得计算机上的视频码流传送到解码器中。对fpga的设计全部采用verilog hdl语言作为设计输入,并且为解码部分功能的实现预留了足够的空间。

系统结构设计

为了对视频流进行解码,需要快速而大量的数据传输。本设计简述了一种通过pci总线通信的解决方案。通过host主机对目标设备的控制,实验板即可以做目标设备,也可以做主设备。图1是本设计的系统框图。

在默认情况下,实验板目标设备处于工作状态为主设备为空闲状态,主控host通过i/o方式进行寄存器的读写控制操作。当需要传输大量数据时,host通过写i/o方式通过实验板申请pci总线的使用权,pci总线申请成功后,实验板主设备开始工作,通过dma方式与主控host进行通信。

pci总线配置空间的实现

当实验板的目标设备工作时,需要对其配置空间进行配置。pci总线定义了3种物理地址空间:存储器地址空间、i/o地址空间和配置地址空间。前两者是普通的计算机系统地址空间,而配置空间是pci所特有的。根据pci总线规范[1],所有的pci设备都必须提供配置空间。pci总线仲裁器首先访问一个目标设备的配置空间,以确定总线上存在的设备,主机host才能继续对这个目标设备进行其他类型的访问,如内存访问、i/o访问。配置空间是长度为256字节并且有特定记录结构或模型的地址空间,可以在系统自举时访问,也可在其他时间访问。配置空间访问时,对配置空间读令名为“1010”;对配置空间写命令为“1011”。依据pci规范[1],可设定配置空间中的各寄存器值如下:

供应商id:9918h;设备id:2003h;修订id:01h,分类代码:078000h。这是一个非标准pci设备,所以任意使用了一个保留值。 [page]

命令字:0001h。表示只支持i/o读写控制。

基地址寄存器:目标设备只用到一个基地址寄存器,在此基础上实现多个寄存器,定义控制寄存器地址为:基地址+2ch;数据传输寄存器地址为:基地址+18h。

其他没有用到的配置寄存器在读时全返回0。

主设备工作机制

主控host首先分配两个内存空间,一个用于存放地址信息,一个用于存放真正的数据。当实验板做主设备时,数据传输使用dma方式对存储器空间直接进行读写操作,数据传输结构如图2所示。

主设备先进行存储器读操作,以从内存空间1中读取主控host分配的pageaddr和pagecnt。主设备得知内存空间2的地址后,即可在传输数据时,读取或者写入到这些真正的数据存储区。实验板做主设备时,为了不和主控host上的其他主设备冲突,设定突发长度为8,传输8个32位数据后释放pci总线,然后开始申请总线使用权,以便继续传输数据。上述操作均由时序状态机进行控制。

主设备时序状态机

时序状态机是pci接口控制器的核心,各种令名、数据交换、控制均在状态机的管理下进行工作。图3是实验板做主设备时,pci总线接口控制器时序状态机。实验板做目标设备的状态机就不在这里介绍了。

这一状态机共有8个状态,分别是:mstate_idle、mstate_req、mstate_addr、mstate_data、mstate_last、mstate_addr_p、mstate_data_p、mstate_last_p。他们代表总线作业时的不同阶段,意义如下:

mstate_idle:主设备空闲状态。实验板目标设备工作,当host通过写i/o方式通知目标设备需要开始以dma方式传输大量数据时,start信号有效,主设备开始申请总线使用权,状态跳转到mstate_req。 [page]

mstate_req:主设备开始申请总线使用权状态。主设备开始申请总线使用权,使连接到仲裁器上的req_o_信号有效,通知仲裁器实验板的主设备需要使用pci总线,等待仲裁器的裁决。实验板主设备得到可以使用总线的通知时,必须等到前一个正在占用总线的主设备完成其传输,并且释放总线后,才能真正使用pci总线,即实验板主设备需要采集到frame_i_无效并且irdy_i无效。当pagecnt=0表示一页数据已经传输完毕,于是开始读取下一页数据的存放地址,状态跳转到mstate_addr。当pagecnt!=0表示一页数据还未传完,状态跳转到mstate_addr_p,继续这一页数据的传输。

mstate_addr:主设备页地址状态。这个状态frame_o_信号有效,开始地址周期,ad上出现的是32位页地址信息,cbe_o_上出现的是存储器读命令,这个状态是准备做存储器读操作,在总线上送出地址后,跳转到mstate_data。

mstate_addr_p:主设备数据地址状态。这个状态同mstate_addr状态一样的是,开始地址周期。所不同的是ad上出现的是在mstate_data状态下读到的32位数据地址信息。根据需要,可以进行读/写存储器操作。

mstate_data:主设备读页信息状态。这个状态是读存储器,irdy_o_信号有效。数据真正的传输是在trdy_i_信号和irdy_o_信号同时有效时,可以读取到数据是页信息,代表存放数据的地址信息和存放数据的长度。数据传输的突发长度是2,所以一次pci访问读取两个32位数据,读完一个数据后状态立即跳转到mstate_last去读取最后一个数据。当host主机要求停止数据传输时,通过使stop_i_信息有效告诉主设备,主设备必须放弃这次数据的传输,状态跳转到mstate_last。

mstate_data_p:主设备读/写数据状态。这个状态是数据的传输,突发长度是8,一次pci访问可以读取8个32位数据,当cnt=2时,表示读完7个数据,状态跳转到mstate_last_p。与状态mstate_data一样,如果host主机要求停止数据传输时,主设备必须放弃这次数据的传输,状态马上跳转到mstate_last_p。

mstate_last:主设备读取最后一个页信息状态。该状态下frame_o_信号无效,irdy_o_信号有效,表示这是最后一个读取数据周期,数据传输和mstate_data状态一样,是在trdy_i_信号和irdy_o_信号同时有效时。当host主机要停止数据传输时,stop_i_有效,主设备释放总线并回到mstate_idle状态,准备开始申请下一次总线使用权,以进行数据传输。

mstate_last_p:主设备读取最后一个数据状态。这个状态同mstate_last一样,读取的是这次pci访问的最后一个数据。

下面是用verilog hdl描述的状态机的核心代码:

结束语

本文介绍了在fpga上实现pci接口控制器的设计方案,通过实验板做主设备进行大量数据的高速传输。采用对主控host内存的直接读/写进行数据传输,用突发方式使用背靠背单数据传送,在时钟频率33mhz下,数据流量接近每秒33百万次传送,实验中数据传输效果很好,完全符合pci总线的要求,这种设计提供了灵活的接口控制,为后续的视频解码ip核提供了良好的接口。

关键字:FPGA  PCI接口  xc2v6000 引用地址:基于FPGA的PCI接口控制器的设计与实现

上一篇:PC机并口与现场总线CAN通讯的实现
下一篇:FPGA器件的开发平台与MATLAB接口仿真

推荐阅读最新更新时间:2024-05-02 22:00

Efinix推出全新一代Trion Titanium系列FPGA
Efinix日前宣布推出Trion Titanium系列FPGA,受Efinix第一代Trion FPGA基础量子结构的启发,量子(Quantum)计算结构在其可交换逻辑和路由(XLR)单元中增加了额外的计算和路由能力。 Trion Titanium FPGA的特点是增强的计算能力,16nm工艺可提供多达3倍时钟频率提升。据该公司称,这使得Efinix的FPGA成为计算加速应用的理想选择,同时路由灵活性提高了产品计算效率。 随着16nm工艺节点和量子计算结构,达到2倍效率的提高,Titanium系列FPGA可将封装尺寸缩小至四分之一。据该公司称,16nm节点的低功耗意味着Titanium系列功耗相当于Trion器件的三分之
[嵌入式]
SEP3203处理器的FPGA数据通信接口设计
SEP3203处理器是由东南大学国家专用集成电路系统工程技术研究中心设计的16/32位RISC微控制器,面向低成本手持设备和其他通用嵌入式设备。该处理器内嵌ARM7TDMI处理器内核,为用户提供了面向移动终端应用的丰富外设、低功耗管理和低成本的外存配置,整个芯片可以运行在75 MHz。数据通信系统使用的主要功能模块如下:20 KB片上零等待静态存储器(eSRAM);外部存储器接口控制器(EMI);中断控制器(INTC);DMA控制器(DMAC)。 系统中使用的FPGA为Altera公司的Cyclone系列中的EP1C6Q240C8,拥有丰富的I/O资源和逻辑资源,外部接口遵循SRAM时序。它主要负责提供信号的A/D采样频率,并将A
[工业控制]
基于FPGA+DSP的多串口数据通信的实现
通用异步接收/发送器(UART)是一种通用串行数据总线,用于异步通信,可以实现全双工通信。UART IP核是用在外部设备和Atera FPGA芯片上的SOPC间进行串行通信的一种实现方式。它可以替代RS-232实现芯片与外设的输入/输出(I/O)操作。   GPS RTK(Real Time Kinematic)可以即时提供厘米级的定位解。在进行动态定位时,基准站将精确已知的GPS坐标和观测数据实时用微波链路传给流动站,在流动站实时进行差分处理,得到基准站和流动站坐标差;坐标差加上基准站坐标得到流动站每个点坐标。基准站向终端用户接收机提供的信息包括对GPS卫星钟、星历数据、用户测量伪距和载波相位等参数的修正。   本文所用的信
[嵌入式]
基于<font color='red'>FPGA</font>+DSP的多串口数据通信的实现
利用FPGA技术实现数字通信中的交织器和解交织器
    摘要: 介绍用FPGA实现数字通信中的交、解交织器的一种比较通用的方案,详细说明了设计中的一些问题及解决办法。还介绍了一种实现FPGA中信号延时的方法。     关键词: 交织器与解交织器  FPGA技术  地址序列  最小时延  信号延时     在现代数字通信系统中,FPGA的应用相当广泛。尤其是在对基带信号的处理和整个系统的控制中,FPGA不但能大大缩减电路的体积,提高电路的稳定性,而且先进的开发工具使整个系统的设计调试周期大大缩短。 1 交织器与解交织器的原理     数字通信中经常用信道编码来提高数据传输的可靠性,其中一些信道编码加入了交织模块,以进一步提高抗干扰性
[应用]
一种新型数字温度测量电路的设计及实现
用传统的水银或酒精温度计来测量温度,不仅测量时间长、读数不方便、而且功能单一,已经不能满足人们在数字化时代的要求。本文提出了一种新型的数字式温度测量电路的设计方案,该方案集成了温度测量电路和实时日历时钟电路。   温度测量电路的测温范围在-20℃~50℃之间,分辨率为1℃,测温时间小于1秒。电路中采用凌特公司的电阻可编程振荡器LT1799来实现电阻值到频率的转换,然后根据预先存储在ROM中的参数值进行比较映射得到待测温度值。实时日历时钟电路能显示年、月、日、星期、时、分、秒七种时钟信号,用户可以对时间进行设定或修改。整个电路用Altera 公司的ACEX1K系列的FPGA进行了硬件仿真实现,电路设计灵活,便于修改。   
[模拟电子]
耀宇视芯科技有限公司选择莱迪思FPGA实现其AR/VR参考设计
中国上海——2023年4月27日—— 莱迪思半导体公司,低功耗可编程器件的领先供应商,今日宣布莱迪思CrossLink-NX™ FPGA将为南京耀宇视芯科技有限公司(Metasolution)最新的增强现实(AR)和虚拟现实(VR)参考设计提供支持 。耀宇视芯是一家领先的同步定位和地图构建(SLAM)算法和芯片的供应商,专注于AR/VR硬件和软件解决方案,为AR/VR头显应用提供一整套六自由度(6DoF)模型。 耀宇视芯总监姜爱鹏先生 表示:“随着AR/VR的新应用不断涌现,灵活性是实现其最新技术和提供沉浸式用户体验的关键。我们很高兴能够采用莱迪思FPGA解决方案,通过其摄像头传感器桥接和SLAM算法预处理功能来加速和简化我们
[嵌入式]
英特尔收购Altera后的第一轮影响:Lattice和Xilinx业绩的增长
英特尔以167亿美元收购全球排名第二的可编程逻辑器件公司Altera,对于Altera的竞争对手来说并不是一件坏事。 事实上,分析师指出:另外两家主要的FPGA厂商 Xilinx和Lattice将从中受益。 在Altera成为英特尔的一部分之后,这家公司将专注于x86微处理器,而不是由ARM核。但是,基于ARM核的SoC才是目前主流的高端计算用的器件,也是Altera与Xilinx新产品角逐的主战场。 新的Altera未来将以x86为中心,而忽略大的、增长迅速的基于ARM核应用。 Xilinx负责策略的高级副总裁Steve Glaser先生表示。 这就给Xilinx和Lattice分别在
[嵌入式]
网络边缘充满无限可能-低功耗FPGA和AI解决方案集合助力AI智能玩具发展
网络边缘充满无限可能-低功耗FPGA和AI解决方案集合助力AI智能玩具发展 根据市场研究公司Transparency Market Research的报告,截至2026年,全球智能玩具市场规模预计将增长到近700亿美元。智能玩具形态多样,如电子宠物、机器人、智能火车套件等。听到玩具一词,你可能立刻想到儿童玩具,但有些玩具是专门针对成年人开发的。当前的高级玩具市场包含的产品用途广泛,包括提供陪伴、提高认知能力以及促进交流等。 智能玩具为人们提供了一种技术增强环境,便于交互完成各种任务,不断顺应用户的行为模式。这些玩具的传感器通常嵌入了图像识别芯片,利用人工智能来识别各种图像。为了提供优质全面的用户服务,这些AI解决方案需要低
[嵌入式]
网络边缘充满无限可能-低功耗<font color='red'>FPGA</font>和AI解决方案集合助力AI智能玩具发展
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved