Xilinx FPGA中PCI IP核如何使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xilinx FPGA中PCI IP核如何使用相关的知识,希望对你有一定的参考价值。

我有一个PCI 的IP核,在SPARTAN3 200AN 上不能直接进行管脚绑定,只能通过logicore ucf工具进行约束绑定,但是无法编译通过,PCI核的管脚在约束文件中有预定义,是否必须按照预定义进行绑定呢?请问如何才能正常使用PCI IP核的约束文件,另外################################################################################# Force IOB Flip Flop Use For Data Path Output Flip Flops#################################################################################INST "PCI_CORE/PCI_LC/PCI-CBE/IO3/OFD" IOB = TRUE ;INST "PCI_CORE/PCI_LC/PCI-CBE/IO2/OFD" IOB = TRUE ;INST "PCI_CORE/PCI_LC/PCI-CBE/IO1/OFD" IOB = TRUE ;INST "PCI_CORE/PCI_LC/PCI-CBE/IO0/OFD" IOB = TRUE ;INST "PCI_CORE/PCI_LC/PAR/OFD" IOB = TRUE ;#################################################################这个层次结构应该怎么修改才能符合我的层次结构:项目顶层:pcim_top,第二层为:pci_core-pcim_lc.xco, cfg_inst-cfg.vhdl, ping32.vhdl, pcim_top.ucf,如下图所示,帮忙解决到底的的还有20分的附加分赠送!!

参考技术A 暑假的机会,为了参加省赛学了段FPGA,写些自己的看法,希望对你有帮助。
国内关于FPGA的书VHDL多,不过,一般工程师都是用VERILOG,其实没必要非要是xilinx的书,xilinx的工具软件会使用后,也就是代码的不同了,ise的使用你可以在 百度文库 去找教程,有很多。
xilinx的sopc教程可能国内的资料少些。
对于你说的要在FPGA里边综合出51的核,个人感觉这样做没什么意义,我试着综合过,占用很多slics,而且端口处理比较啰嗦,有些浪费资源。51核综合的话网上有很多介绍很详细。
最后给你推荐几个网站:
1、OPENCORES.ORG这里提供非常多,非常好的PLD了内核,8051内核就可以在里面找到。

2、 我个人比较喜欢
另外自己也收集了些资料,留个邮箱我传给你
算法方面,最近新出来的片子无论是altera的还是xilinx的, 内部都有集成了DSP核、ARM核的。

FPGA调试光纤模块

FPGA调试光纤模块

利用FPGA调试光纤接口接口:

由于与项目需要,前段时间调试了光纤接口,记录一些设计经验。

设计中采用FPGA控制光纤模块完成光纤数据的收发,FPGA采用Xilinx公司的Spartan6 LX45T,由于其内部自带的2个GTP收发器,能作为多种高速通信协议(千兆以太网、PCI-E,SATA等)的桥梁,且Xilinx提供了免费的IP核,设计比较方便。

首先,建立ISE工程,添加GTP核,(该过程可参考Xilinx提供的文档:LogiCORE IP Spartan-6 FPGA GTP Transceiver Wizard v1.11User Guide)

 

 

选择Spartan6 GTP收发器1.11版本,接下来进行GTP核的设置,

 

 

Spartan6 LX45T系列FPGA内部有2个GTP核,每个核又具有两个独立的通道,因此可根据自己的需要选择,

 

 

接下来配置GTP速率以及数据协议,很多高速传输中都采用的是aurora-8b10b协议(https://en.wikipedia.org/wiki/8b/10b_encoding),速率以及参考时钟都可以根据需要设置(本项目光纤最高速率1.25Gbps),

 

 

 

接下来是协议的一些配置选项,各个选项的含义可以参考RocketIO™ Transceiver User Guide 和 Spartan-6 FPGA GTP Transceivers,里面有这些选项的详细说明,

 

 

这里选择数据传输中的逗号对齐,比较重要,主要是用于数据告诉传输中的数据对齐,后面几页的配置默认就可以。

最后工程生成以后可以直接打开GTP核工程,编译后便可进行modelsim仿真,仿真结果一般都不会出现问题。

最后,可根据自己的需要修改源代码,其中,比较关键的地方需要注意:

1、  TXCHARISK参数,该参数用于指明当前数据是否为对齐字符(K28.5,即0xBC),当发送对齐字符时,必须TXCHARISK=1,当然0xBC也可以作为实际数据,只要TXCHARISK=0,就不会认为该数据为对齐字符;

2、  数据宽度问题,在设置GTP速率及协议的时候,注意数据宽度的选择,若选择16bits或者32bits,则数据在接收端可能会发生错位现象,(发送0x0102,接收到为0x0201),仿真时不会出现问题,因为在Frame_check中进行了判断,若发生错位,会得到纠正,但选择8bits则不会出现该问题,省去了后续的纠错任务;

3、  约束文件问题,打开GTP核工程后,可以看到有两个约束文件,一个是GTP属性,一个是顶层约束,

INST mgt1_0t1r_i/tile0_mgt1_0t1r_i/gtpa1_dual_i CLKINDC_B_0

 

NET "tile0_txusrclk0_i" TNM_NET = "tile0_txusrclk0_i";

TIMESPEC "TS_tile0_txusrclk0_i" = PERIOD "tile0_txusrclk0_i" 8.0;

 

若设计者希望建立自己的顶层文件,并在顶层文件中例化GTP核,则需要在约束语句上加上顶层例化名称:

INST gtp_top_i/mgt1_0t1r_i/tile0_mgt1_0t1r_i/gtpa1_dual_i CLKINDC_B_0

 

NET " gtp_top_i/tile0_txusrclk0_i" TNM_NET = "tile0_txusrclk0_i";

TIMESPEC "TS_tile0_txusrclk0_i" = PERIOD "tile0_txusrclk0_i" 8.0;

 

其中,具体设计细节可参考上面提到的3个参考文档。在硬件实现上,主要需要配置GTP的差分时钟,光纤的RX、TX和GTP的RX、TX连接。

转载:http://www.cnblogs.com/yangjun1219/p/5647479.html

以上是关于Xilinx FPGA中PCI IP核如何使用的主要内容,如果未能解决你的问题,请参考以下文章

Xilinx FPGA平台GTX简易使用教程GTX IP核配置教程

FPGA的以太网ip核具体实现步骤,怎样仿真其功能

FPGA调试光纤模块

怎样调用altera中的ip核

使用xilinx spartan-6 FPGA 制作PCI总线卡高低温运行异常

fpgaip核最多