基于fpga的pci总线控制器及控制方法_2

文档序号:9326839阅读:来源:国知局
0047] 设备2在PCI总线上的配置地址空间是0x00001000~0x000017FF ;
[0048] 设备3在PCI总线上的配置地址空间是0x00002000~0x000027FF ;
[0049] 嵌入式系统Nios II配置PCI总线设备流程
[0050] 软核Nios II对PCI总线设备的配置空间读写方法;
[0051] 确定Avalon总线与PCI总线直接对应关系。
[0052] Avalon 总线=PCI_Bus_Access 基址 +PCI 总线地址
[0053] 若Nios II启用cache,则总线之间的对应关系为:
[0054] Avalon 总线=PCI_Bus_Access 基址 +PCI 总线地址 +0x80000000
[0055] 例如:在 Nios II 中使用函数 I0WR_32DIRECT (0x90100000, OxOC, 0x00008080),且 Nios II中使用cache,则访问的PCI总线地址空间为0x00100000。
[0056] 2、软核Nios II对PCI总线设备的配置流程
[0057] Nios II可以直接访问PCI总线,已明确PCI总线配置空间的地址,可以实现配置 过程。
[0058] 假设PCI总线上一个设备IDSEL信号与AD[12]连接。需要注意,嵌入式系统 Nios II在配置写PCI总线设备的配置地址空间转换Avalon总线转换PCI总线时,用于 IDSEL选择的地址AD [31:11]会左移一位,若进行访问PCI总线上的设备PCI总线配置地址 空间是0x00001000~0x000017FF,则在Avalon总线端访问的地址空间是0x90000800~ 0x90000FFF,而存储器空间和1/0空间的地址映射是正常的映射关系。因此,Nios II配置 该设备的基本指令。
[0059] Nios II配置该设备的流程:
[0060] I0WR_32DIRECT (0x90000800, 0x10, 0x00100000) ;// 配置该 PCI 设备 BarO 基址寄 存器
[0061] I0WR_32DIRECT (0x90000800, OxOC, 0x00008080) ;// 配置该 PCI 设备快取线大小 缓存器BarO基址寄存器
[0062] I0WR_32DIRECT(0x90000000, 0x04, 0x00000006) ;/// 配置该 PCI 设备命令寄存 器FPGA构建PCI总线控制器,并实现挂接在PCI总线上的设备配置后,总线上的挂接的设 备可以根据分配的地址空间相互访问,构建PCI总线控制器的FPGA也可以与总线上的每 一个设备相互访问,图2构建PCI总线控制器的FPGA与其他PCI设备数据传输框图,PCI compiler (桥)就是PCI总线控制器,
[0063] (1)构建PCI总线控制器的FPGA访问PCI总线上设备的存储器和I/O空间的方 法与配置总线上的设备空间的过程一样,只是在静态配置地址转换配置表格时,后面的类 型要选择memory或者I/O类型,通过Control Register Access动态配置Avalon总线至 PCI总线映射也可以,配置的类型根据访问的空间类型进行动态寄存器配置。然后,通过配 置PCI总线上设备的基址寄存器后,并开启memory或I/O访问使能后,构建PCI总线控制 器的FPGA内的Nios II就可以通过PCI Bus Access接口来读写总线上的设备的空间。
[0064] (2)构建的总线上的PCI主设备也可以读写PCI总线控制器FPGA内部存储空间, 不能通过图1中PCI compiler (桥)的barO、barl等空间来访问,此桥设备虽然存在这些 空间,但不能作为总线上其他主设备的访问空间。需要在此FPGA内部构建一个新的PCI compiler (从)设备,处理器通过PCI总线控制器配置好这个FPGA内部PCI设备的空间映 射后,比如映射到与Host Bridge相关联的DDR2地址空间,这样总线上的PCI主设备可以 自由的对构建Host Bridge的FPGA的DDR2空间读写操作。
[0065] 嵌入式FPGA板卡构建PCI总线的母板环境框图如图3所示,构建的是32位PCI 总线。母板环境的构建需要注意以下几点。
[0066] (1)嵌入式板卡上需要提供两条PCI总线的系统信号,一个是PCI总线系统复位 RST#,一个是PCI总线时钟线,此时钟由FPGA内部时钟模块产生,需要注意的是时钟模块提 供给PCI总线控制器的时钟CLK和提供到外部总线的时钟信号PCI_CLK必须一致,为33MHz 或者66MHz,而且这两个时钟需要存在一定的相位差。
[0067] (2)地址数据线AD[31:0]、C/BE[3:0]#直接与每个设备挂接在一起即可。作为母 版,PCI总线的控制信号要求有上拉电阻,这是为了保证它们在没有设备驱动总线的情况下 仍具有稳定的值,在途中可以看出,控制信号FRAME#、TRDY#、IRDY#、STOP#、DEVSEL#、SERR#、 INTA#、PERR#具有330Ω上拉电阻,而控制信号PAR具有330Ω下拉电阻。
[0068] (3)对于设备选择信号IDSEL信号,PCI接口的地址/数据信号线的AD[31:11]来 控制IDSEL信号,因此需要在FPGA内部用逻辑把对应地址线连接到每个PCI设备的IDSEL 信号上。
[0069] (4)PCI总线的仲裁信号是由PCI总线控制器提供的,只有PCI总线主设备才存在 仲裁信号线,从设备不存在,仲裁信号GNT#和REQ#不能复用,一个设备就要有单独的一对 仲裁信号。
【主权项】
1. 基于FPGA的PCI总线控制器,其特征在于,它包括处理器(I)、存储器DDR2 (2)和总 线控制器(3); 处理器(1)用于通过Avalon总线、总线控制器(3)和PCI总线向PCI总线设备发送控 制信号,并接收PCI总线设备发回的响应信号; 存储器DDR2(2)用于对处理器(1)发送的控制信号和PCI总线设备发回的响应信号进 行缓存; 总线控制器(3)用于接收Avalon总线向PCI总线发送的数据,并将接收的Avalon总 线数据转换为PCI总线数据,并将转换后PCI总线数据发送至PCI总线;同时接收PCI总线 向Avalon总线发送的数据,并将接收的PCI总线数据转换为Avalon总线数据,并将转换后 Avalon总线数据发送至Avalon总线。2. 基于FPGA的PCI总线的控制方法,其特征在于,该方法包括: 采用FPGA构建总线控制器(3)的步骤,该步骤中的总线控制器(3)用于接收Avalon总 线向PCI总线发送的数据,并将接收的Avalon总线数据转换为PCI总线数据,并将转换后 PCI总线数据发送至PCI总线;同时接收PCI总线向Avalon总线发送的数据,并将接收的 PCI总线数据转换为Avalon总线数据,并将转换后Avalon总线数据发送至Avalon总线; 用于通过Avalon总线、总线控制器(3)和PCI总线向PCI总线设备发送控制信号,并 接收PCI总线设备发回的响应信号的步骤; 用于对处理器(1)发送的控制信号和PCI总线设备发回的响应信号进行缓存的步骤。3. 根据权利要求2所述的基于FPGA的PCI总线的控制方法,其特征在于,采用FPGA 构建总线控制器(3)的步骤还包括分配Avalon总线至PCI总线的映射是静态转换表格的 子步骤和配置PCI IP核参数的子步骤;所述PCI IP核参数包括系统选项配置、PCI配置和 Avalon配置;所述系统选项配置包括系统选项1和系统选项2,所述系统选项1包括PCI设 备模式、PCI从设备性能、最大从设备突发传输量和PCI主设备性能;系统选项2包括PCI 总线速度、PCI总线数据位宽、PCI时钟设置、是否允许独立Avalon系统复位、PCI总线仲裁 和PCI支持仲裁设备个数; 采用FPGA构建总线控制器(3)建立嵌入式系统控制PCI总线设备的渠道;实现PCI总 线与Avalon总线的数据转换。
【专利摘要】基于FPGA的PCI总线控制器及控制方法,涉及PCI总线控制技术领域。解决了现有基于PCI总线的板卡设备应用场所需要脱离PC机和相关的控制机箱系统才能应用的问题。本发明的处理器用于通过Avalon总线、总线控制器和PCI总线向PCI总线设备发送控制信号,并接收PCI总线设备发回的响应信号;存储器DDR2用于对处理器发送的控制信号和PCI总线设备发回的响应信号进行缓存;总线控制器用于接收Avalon总线向PCI总线发送的数据,并将接收的Avalon总线数据转换为PCI总线数据,并将转换后PCI总线数据发送至PCI总线;同时接收PCI总线向Avalon总线发送的数据,并将接收的PCI总线数据转换为Avalon总线数据,并将转换后Avalon总线数据发送至Avalon总线。本发明适用于PCI总线控制使用。
【IPC分类】G06F13/42, G06F13/40
【公开号】CN105045753
【申请号】CN201510409195
【发明人】马云彤, 梁军, 周学安, 李攀, 潘大为, 彭宇, 彭喜元
【申请人】哈尔滨工业大学
【公开日】2015年11月11日
【申请日】2015年7月13日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1