QsysLabPCIeFINALCN.docx

上传人:b****5 文档编号:29457589 上传时间:2023-07-23 格式:DOCX 页数:17 大小:388.05KB
下载 相关 举报
QsysLabPCIeFINALCN.docx_第1页
第1页 / 共17页
QsysLabPCIeFINALCN.docx_第2页
第2页 / 共17页
QsysLabPCIeFINALCN.docx_第3页
第3页 / 共17页
QsysLabPCIeFINALCN.docx_第4页
第4页 / 共17页
QsysLabPCIeFINALCN.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

QsysLabPCIeFINALCN.docx

《QsysLabPCIeFINALCN.docx》由会员分享,可在线阅读,更多相关《QsysLabPCIeFINALCN.docx(17页珍藏版)》请在冰豆网上搜索。

QsysLabPCIeFINALCN.docx

QsysLabPCIeFINALCN

PCIeQsys研讨

 

这一设计实例深入浅出,介绍怎样产生一个Qsys子系统。

您将产生一个含有以下组成的Qsys系统:

∙在CycloneIVGX收发器入门套件上,设计带嵌入式收发器的Gen1×1硬核IP的PCIExpressIP编译器。

∙片内RAM存储器

∙模块化散射收集DMA控制器(MSGDMA)(位于lib路径中)

图1显示了Qsys怎样集成PCIExpress的IP编译器、片内SRAM,以及定制组件MSGDMA。

这一设计实例使用了一个DMA,这个DMA在片内存储器SRAM,和位于根复合模块(主机)侧的系统缓冲之间进行数据传送。

图1.Qsys生成的端点

此次研讨对以下步骤进行了讲解:

1.对设计进行准备,以进行编译

2.建立一个QuartusII工程

3.建立一个Qsys系统

4.对PCIExpress的IP编译器进行参数赋值

5.将其他组件加入Qsys系统中

6.完成Qsys中的链接

7.设定导出接口

8.设定地址分配

9.生成Qsys系统

10.编译设计

11.对器件编程

对设计进行准备,以进行编译

设计准备进行编译时,请按照以下步骤进行:

1.如果您没有看到C:

\\Qsys_workshop\PCIe_Lab路径含有表1中列出的以下文件夹和文件,请联系您的指导人员。

表1:

位于PCIe_Lab路径中的文件

名称

说明

ip文件夹

含有模块化散射收集DMA文件(msgdma)

msgdma_ctl.qsys文件

定制MSGDMA子系统。

该系统包括一个调度器、一个DMA读控制器以及一个DMA写控制器。

top.v文件

顶层打包器例化以下模块:

∙Alteraaltgx_reconfig宏功能,配置收发器。

∙Alterareconfig_pll宏功能,支持收发器的动态重新配置。

∙散射收集DMA子系统

top.sdc文件

时序约束文件

top.tcl文件

Tcl脚本,设置编译参数和引脚分配。

altgx_reconfig.v文件

重新配置控制器,用于收发器。

reconfig_pll.v文件

通用PLL,生成fixedclk。

 

建立一个QuartusII工程

1.在QuartusII软件中,在File菜单上,点击NewProjectWizard。

2.在Introduction页面的NewProjectWizard窗口中,点击Next。

3.在Directory,Name,TopLevelEntity页面中,输入以下信息(参见图2),点击Next。

图2.新工程向导

4.在AddFiles页面中,点击Next。

5.在Family&DeviceSettings页面中,对于器件系列,选择CycloneIVGX,点击Next。

6.在EDAToolSettings页面中,使用默认设置,点击Next。

7.在Summary页面中,点击Finish。

NewProjectWizard建立一个基本工程,top。

这一基本工程仍然没有引脚分配、综合约束、器件类型以及其他必须的设置。

这些参数设置在Tcl脚本中进行设定,您可以在编译设计一节将其应用到工程中。

建立Qsys系统

在这一节中,您构建一个Qsys系统,它包括PCIExpress的Gen1x1硬核IP编译器、msgdma_ctl子系统、以及片内SRAM。

打包器文件top.v例化剩余所需的模块,包括,altgxb_reconfig和GPLL模块,它们支持器件收发器中的失调抵消功能。

打包器文件要求您命名Qsys系统c4gx_qsys。

如果您以不同的名称命名它,那么,您的设计无法成功编译。

请按照这些步骤来建立您的Qsys系统:

1.在QuartusII软件中,在Tools菜单上,点击Qsys。

出现Qsys,显示一个Open窗口。

2.在Open窗口中,点击Cancel。

您希望建立一个新的Qsys系统,而不是打开一个已有窗口。

3.在左侧的ComponentLibrary面板(参见图3)中,在Project下面,确定您看到了Modular_DMA和System。

图3.Qsys组件库

 

注释:

已经为您提供了定制模块化散射收集DMA子系统。

这一SGDMA子系统名为msgdma_ctl,是含有其他三个组件的Qsys系统,包括,调度器、读主机和写主机。

4.建立全局设置时,点击ProjectSettings标签,输入表2中列出的数值。

表2.工程设置

参数

数值

DeviceFamily

CycloneIVGX

ClockCrossingAdapterType

Handshake

Limitinterconnectpipelinestagesto

4

GenerationID

0

 

4.在File菜单中,点击SaveAs,在Filename中,输入c4gx_qsys。

5.点击Save。

6.点击SystemContents标签,高亮显示clk_0组件,点击SystemContents标签左侧的红色X(

)按钮,从Qsys系统中去掉默认时钟clk_0。

您同步设计中的所有模块使用PCIExpress内核时钟。

7.在您的系统中加入PCIExpress的IP编译器时,在左侧的ComponentLibrary面板中,在InterfaceProtocols文件夹的PCI下面,双击IP_CompilerforPCIExpress组件。

(或者,您可以在搜索框中输入PCI,找到组件)

对PCIExpress的IP编译器进行参数赋值

PCIExpress的IP编译器参数编辑器中的粗体标题将参数列表分成几部分。

您可以使用右侧的滚动条,查看一开始没有显示出来的参数。

对PCIExpress的IP编译器进行参数赋值时,请按照这些步骤进行:

1.在SystemSettings标题下,请参照图4输入设置。

图4.系统设置

2.在PCIBaseAddressRegisters(Type0ConfigurationSpace)标题下,设定图5中的设置。

图5.PCI基本地址寄存器(0类配置空间)

您不能在PCIExpress的IP编译器参数编辑器中输入BarSize或者AvalonBaseAddress(Avalon基地址)。

您在系统中加入了所有组件后,可以在SystemContents标签中进行基本地址分配。

在这一步,您完全可以忽略PCIExpress的IP编译器参数编辑器中出现的错误消息。

3.在DeviceIdentificationRegisters标题下,设定图6中的数值。

配置好器件后,软件可以从这些只读寄存器中读取您在参数编辑器中设定的数值。

这些数值必须设置为下面的数值,该设计才能与PCIe演示驱动匹配。

图6.器件标识寄存器

4.在LinkCapabilities标题下,保留Linkportnumber的默认值1。

5.在ErrorReporting标题下,所有类型的错误报告均为off。

6.在BufferConfiguration标题下,设定图7中的设置。

图7.缓冲配置设置

Postedheadercredit、Posteddatacredit、Non-postedheadercredit、Completionheadercredit和Completiondatacredit显示的数值是只读的。

基于Maximumpayloadsize和RXbuffercreditallocation–performanceforreceivedrequests的数值来计算这些数值。

7.在Avalon-MMSettings标题下,默认设置应如图8所示。

图8.Avalon-MM设置

8.在AddressTranslation标题下,设定图9中的设置。

图9.地址翻译设置

9.忽略AddressTranslationTableContents。

10.点击Finish,在您的Qsys系统中加入PCIExpress的IP编译器组件pcie_hard_ip_0。

在这一阶段,您可以忽略Qsys产生的所有错误消息,这是因为您的系统还没有最终完成。

这些错误是由于基地址重叠和未连接时钟造成的。

将其他组件加入Qsys系统中

这一节介绍在您的Qsys系统中加入MSGDMA控制器和片内存储器。

1.在您的系统中加入MSGDMA控制器组件。

在Componentlibrary面板中,在System文件夹下面,双击msgdma_ctl组件。

2.点击Finish,在您的Qsys系统中加入MSGDMA控制器模块ctl_0。

在SystemContent标签中,右键点击例化ctl_0,并将其重新命名为dma_0。

3.在您的系统中增加片内存储器时,在组件库标签中,在On-Chip文件夹的MemoriesandMemoryControllers下,双击On-ChipMemory(RAMorROM)组件。

4.在On-ChipMemory参数编辑器中,设定图10中列出的参数。

图10.片内存储器参数

6.点击Finish,在您的Qsys系统中加入片内存储器组件。

7.对片内存储器组件重新命名时,在SystemContents中右键点击组件,选择Rename。

输入新名称onchip_memory_0。

在Qsys中进行连接(参考)

在Qsys中进行连接时,鼠标右键点击相应的接口,从界面中Connections下拉列表选中相应连接,如图11所示。

这是最快的方法,也是推荐的方法。

注释:

您可以在SystemContents标签中选择点击白点,进行连接,如图12高亮所示。

以黑点显示连接。

 

图11.使用鼠标右键点击菜单的连接接口实例

 

图12.在Connections面板中点击白点连接接口实例

完成Qsys中的链接

请按照这些步骤完成您的Qsys系统:

1.在export列中,点击clk和reset,点击键盘上的delete按键,去掉dma_0(msgdma_ctl)的默认导出时钟和复位接口。

2.通过以下过程,连接pcie_hard_ip_0bar1_0的Avalon-MM主机端口和onchip_memory_0s1的Avalon-MM从机端口:

a.右键点击bar1_0端口,然后,悬停在pcie_hard_ip_0.bar1_0Connections上,显示可能的链接。

b.点击onchip_memory_0.s1,建立一个链接。

3.重复第2步,完成表3中列出的剩余链接。

表3.Qsys连接的完整列表

链接来自:

至:

pcie_hard_ip_0pcie_core_clk

onchip_memory_0.clk1

pcie_hard_ip_0pcie_core_clk

dma_0.clk

pcie_hard_ip_0pcie_core_reset

onchip_memory_0.reset1

pcie_hard_ip_0pcie_core_reset

dma_0.reset

pcie_hard_ip_0bar1_0

onchip_memory_0.s1

pcie_hard_ip_0bar2

dma_0.modular_sgdma_dispatcher_0_csr

pcie_hard_ip_0bar2

dma_0.modular_sgdma_dispatcher_0_descriptor_Slave

pcie_hard_ip_0bar2

pcie_hard_ip_0.cra

dma_0dma_read_master_0_data_read_master

onchip_memory_0.s1

dma_0dma_read_master_0_data_read_master

pcie_hard_ip_0.txs

dma_0dma_write_master_0_data_write_master

onchip_memory_0.s1

dma_0dma_write_master_0_data_write_master

pcie_hard_ip_0.txs

 

4.在SystemContent标签右侧的IRQ列(您可能需要滚动到右侧)中,点击连接从dma_0的IRQ(modular_sgdma_dispatcher_0_csr)到pcie_hard_ip_0的IRQ,并输入0,如图13中所示。

在这一例子中,DMA控制器的中断发送信号连接至PCIExpress的IP编译器的比特0。

图13.在Connections标签中设置IRQ

 

设定导出接口

您需要导出剩余的I/O信号,在Qsys系统之外也可以见到这些信号。

每一个导出的接口都可以连接至Qsys系统之外的模块。

请按照这些步骤来导出一个接口:

1.在您希望导出的接口行中,在Export列中点击cell。

2.点击Enter,接受Export列中出现的默认名称(或者点击单元格的外部,不修改文本)。

导出表4中列出的pcie_hard_ip_0接口。

表4.pcie_hard_ip_0导出接口

接口名称

导出名称

cal_blk_clk

pcie_hard_ip_0_cal_blk_clk

Refclk

pcie_hard_ip_0_refclk

test_in

pcie_hard_ip_0_test_in

pcie_rstn

pcie_hard_ip_0_pcie_rstn

clocks_sim

pcie_hard_ip_0_clocks_sim

reconfig_busy

pcie_hard_ip_0_reconfig_busy

pipe_ext

pcie_hard_ip_0_pipe_ext

test_out

pcie_hard_ip_0_test_out

rx_in

pcie_hard_ip_0_rx_in

tx_out

pcie_hard_ip_0_tx_out

reconfig_togxb

pcie_hard_ip_0_reconfig_togxb

reconfig_gxbclk

pcie_hard_ip_0_reconfig_gxbclk

reconfig_fromgxb_0

pcie_hard_ip_0_reconfig_fromgxb_0

fixedclk

pcie_hard_ip_0_fixedclk

设定地址分配

Qsys需要您设定Qsys系统中所有Avalon-MM从机接口的基地址。

为确保设计实例能够成功对接于演示驱动器,您应该手动分配合适的基地址,如表5所示。

1.双击Base列中的基地址,输入所需的基本数值。

 

表5.Avalon-MM从机接口的基地址分配

模块名称

基地址

pcie_hard_ip_0txs

0x00000000

pcie_hard_ip_0cra

0x00000000

dma_0modular_sgdma_dispatcher_0_csr

dma_0modular_sgdma_dispatcher_0_descriptor_slave

0x06000000

0x06000020

onchip_memory_0s1

0x07000000

在Messages标签中,重叠地址范围的Qsys错误消息将会消失。

图14显示您分配了基地址后Qsys系统的AddressMap标签。

图14.Qsys系统地址映射

注释:

这一步之后,Qsys消息窗口中不应再出现错误消息。

图15显示了完整的Qsys系统。

图15.完整的PCIExpressQsys系统

生成Qsys系统

请按照这些步骤生成Qsys系统:

1.点击Generation标签。

2.保持默认设置。

它们应如下显示。

图16.Generation标签

3.点击标签底部的Generate按钮,当Savechanges对话框出现时,点击Save。

4.生成完成后,在GenerateCompleted对话框中,点击Close。

编译设计

请按照这些步骤来编译您的设计:

1.在QuartusII软件中,在Tools菜单上,点击TclScripts…

2.在TCLScripts窗口中,浏览并高亮显示top.tcl。

3.高亮显示top.tcl后,点击Run,执行脚本。

注释:

tcl文件含有目标CIVGX器件、引脚分配以及其他设置。

4.在Processing菜单中,点击StartCompilation来编译项目。

5.完成编译后,在QuartusII对话框中,点击OK。

 

祝贺,您已经在Qsys完成了PCIe设计。

附录A:

PCIe接口名称和说明

 

简称

说明

PCIeCRA

PCIExpress中的控制寄存器访问模块。

PCIeTXS

发送从机接口,应用层可以向主机发送存储器读或者写申请。

PCIeBar0_1/bar2

PCIe基地址寄存器,主机利用它来访问内核内部寄存器或者存储器。

PCIeRXM

PCIe主机接口,接收主机申请或者向主机返回读数据。

DMACSR

DMA控制状态寄存器

DMADescriptor

DMA输入包括控制、源和目的地址寄存器。

DMADispatcher

DMA主控制器,发出DMA读和DMA写申请。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1