赞
踩
其他版本大同小异,就连ISE其建立原理也是一样
7Series Integrated Block for PCI Express → 对应的用户接口为 AXI4-Stream
AXI Memory Mapped To PCI Express → 对应的用户接口为AXI4
DMA/Bridge Subsystem for PCI Express(PCIe) → 对应用户接口为AXI4或者AXI4-stream
Device port Type : 选择终端模式还是Root Port 模式 。
PCle Block Location : 选择PCIe所在quad,该选择会生成特定的引脚和区域约束文件和引脚分配.
Xilinx Development Board: 选择Xilinx开发板来生成开发板专用的约束文件.
Silicon Revision : 选择Silicon版本,有Initial_ES或者GES_and_Porduction.
Number of Lanes : 通道数.
Maximum Link Speed : 最大的链路速率.
AXI Interface Frequency:AXI接口速率,也是用户的时钟速率,推荐使用默认的速率,参考图
PCle Block Location 选项的底层含义 : 在FPGA内部分了多个GTP,而X轴和Y轴就是找到并且使用哪个GTP的关键,GTP内部又分Channe1,Channe0(通道)
这样也可以选择使用那个通道进行读写.
Vendor ID : 供应商ID,Xilinx默认的Vendor ID 为 10EEH.
Device ID : 设备ID,
该属性可以实际的应用被设置为任意值.
Revision ID: 设备或应用的版本号,默认为00h.
Subsystem Vendor ID: 字系统供应商号,默认10EE,默认与Vendor LD相同
Subsystem ID : 字系统号,默认与Device ID 相同
Class Code : 标签页有如下的选项
Base Class : 设备的基本类型
Sub-Class : 类型的进一步的细分类型
Interface : 定义了专用的寄存器级的编程接口,
允许不依赖于设备的软软件,与该设备通讯
Class Code Look-up Assistant: 提供了辅助设置Class Code的工具,可以通过设备通用的功能,自动设置Class Code中的参数.(建议选择)
Cardbus Cls Pointer : 用于cardbus系统,并指向cardbus卡的卡片信息结构,如果该字段非零,则必须在正确的位置存在适当的卡片信息结构,默认值是0000_0000h,值范围是0000_0000H-FFFF_FFFFH.
对于学习PCIE操作的来说这页是跳过的,全部默认即可. 这三个值的定义会出现在IP核的利化中来.
BARX Enabled : 使能该BAR
Type : 该BAR为存储还是IO类型
Size : BAR大小
BAR 的大小的设置参考下图 :
prefetchable : 存储空间是否具有预读取的能力
Value : BARx基地址
Expansion ROM Base Address Register : 扩展的ROM基地址寄存器,按照PCI3.0的总线规范,该BAR的大小不能超过16MB
Capability Version : 定义了PCI-SIG定义的PCIe capability structure的版本号,该值不能更改.
Device Port Type : 定义了PCI Express 逻辑设备的类型.
Slot Implemented : 指定与该端口链路连接的槽,只在Root Port模式下使用
Capabilities : 寄存器:表示Capabilities寄存器的值,不可修改
Max Payload Size : 最大数据负载,(数据会存放在PCIE内部一段时间,这端时间存放的数据多大就在这里设置)
Deivce Capabilities Register : 设备功能寄存器的值,不可修改
Buffering Optimized For Bus Mastering Applications : 该选将会告诉远端设备其授权机制专门为总线管理应用而优化过
Performance Level : 选择性能的级别,该选项将会决定接收器和发送器的大小尺寸
Device Capabilities2 Register : 显示Device Capabilities2寄存器的值,不可修改
Max Payload Size : 相当于PCIE里面的RAM可以暂存多少数据,然后进行打包,通过金手指发出去
Enable INTX : 使能INTX(PCI兼容中断信号)
Interrupt PIN : 只支持INTA的中断信号
EnableMSI Capability Structure : 使能MSI功能结构
64 bit Address Capable : 该选项可以发送64-bit的消息地址
Multiple Message Capable : 选择中断矢量的数据.
Per Vector Masking Capable : 该选项可以指定为每个中断矢量启用掩码功能
代码如下
- //----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG
- pcie_7x_0 your_instance_name (
- .pci_exp_txp(pci_exp_txp), // 一对传输端的差分 发送
- .pci_exp_txn(pci_exp_txn), // 一对传输端的差分 发送
- .pci_exp_rxp(pci_exp_rxp), // 一对传输端的差分 接收
- .pci_exp_rxn(pci_exp_rxn), // 一对传输端的差分 接收
-
- .pipe_pclk_in(pipe_pclk_in), // 共享逻辑端口,共享时钟
- .pipe_rxusrclk_in(pipe_rxusrclk_in), // 共享逻辑端口,共享时钟
- .pipe_rxoutclk_in(pipe_rxoutclk_in), // 共享逻辑端口,共享时钟
- .pipe_dclk_in(pipe_dclk_in), // 共享逻辑端口,共享时钟
- .pipe_userclk1_in(pipe_userclk1_in), // 共享逻辑端口,共享时钟
- .pipe_userclk2_in(pipe_userclk2_in), // 共享逻辑端口,共享时钟
- .pipe_oobclk_in(pipe_oobclk_in), // 共享逻辑端口,共享时钟
- .pipe_mmcm_lock_in(pipe_mmcm_lock_in), // 共享逻辑端口,共享时钟
- .pipe_txoutclk_out(pipe_txoutclk_out), // 共享逻辑端口,共享时钟
- .pipe_rxoutclk_out(pipe_rxoutclk_out), // 共享逻辑端口,共享时钟
- .pipe_pclk_sel_out(pipe_pclk_sel_out), // 共享逻辑端口,共享时钟
- .pipe_gen3_out(pipe_gen3_out), // 共享逻辑端口,共享时钟
-
- .user_clk_out(user_clk_out), //事务、配置、物理层控制和状态接口的操作都参照该时钟,并与上升沿同步
- .user_reset_out(user_reset_out), //事务层重置信号,用户逻辑必须使用该信号重置用户逻辑程序
- .user_lnk_up(user_lnk_up), //当IP核与之相连的端口准备好 ,并可相互发送数据包时,该信号变为有效位
- .user_app_rdy(user_app_rdy), //当user_app_rdy信号为非有效位时,将输入信号转换为3态信号输出;当user_app_rdy信号为有效位时,恢复输出信号为输入信号
- .tx_buf_av(tx_buf_av), //通过监控tx_buf_av信号,用户可以直到Buffer中是否有剩余的空间,从而在NP包阻塞时接收Posted包和Cpl包[5:0]
- .tx_cfg_req(tx_cfg_req), //传输配置请求,表示IP核准备好传输一个完整的配置包或者其它的内部产生的TLP(事务层的包)
- .tx_err_drop(tx_err_drop), //表示IP核抛弃了包数据,通常是因为长度不符,或者在连续的时钟周期内没有提供数据
-
- .s_axis_tx_tready(s_axis_tx_tready), //表示IP核准备好接收传输数据
- .s_axis_tx_tdata(s_axis_tx_tdata), //被传递的包数据[63:0]
- .s_axis_tx_tkeep(s_axis_tx_tkeep), //[7 : 0] 传输数据选通
- .s_axis_tx_tlast(s_axis_tx_tlast), // 表示传输的最后一帧
- .s_axis_tx_tvalid(s_axis_tx_tvalid), //表示用户程序已经在s_axis_tx_tdata上准备好了有效的传输数据
- .s_axis_tx_tuser(s_axis_tx_tuser), // input wire [3 : 0] 传输资源中止
-
- .tx_cfg_gnt(tx_cfg_gnt), //由用户响应tx_cfg_req信号,表示授权允许IP核传输一个内部产生的TLP包
-
- .m_axis_rx_tdata(m_axis_rx_tdata), //接受报的数据,同样只有在m_axis_rx_tvalid信号有效时才有效【63:0】
- .m_axis_rx_tkeep(m_axis_rx_tkeep), //接收数据选通,当m_axis_rx_tvalid和m_axis_rx_tready同时为有效位时,该信号决定了数据的有效bytes[7:0]
- .m_axis_rx_tlast(m_axis_rx_tlast), //接收包的最后一帧
- .m_axis_rx_tvalid(m_axis_rx_tvalid), //表示IP核已经将有效数据传输过来,并希望用户接收
- .m_axis_rx_tready(m_axis_rx_tready), //表示接收端准备就绪,由用户进行设置,当用户程序希望接收数据时,置有效位。m_axis_rx_tvalid和m_axis_rx_tready同时为有效位时,代表一帧数据接收成功。
- .m_axis_rx_tuser(m_axis_rx_tuser), // output wire [21 : 0] m_axis_rx_tuser
-
- .rx_np_ok(rx_np_ok), //当用户准备好接收Non_Posted请求的TLPs包的时候,置有效位
- .rx_np_req(rx_np_req), //请求IP核发送Non-Posted TLPs包
-
- .fc_cpld(fc_cpld), //[11:0]信号有效得使用和管理接收端Buffer
- .fc_cplh(fc_cplh), //[7:0]信号有效得使用和管理接收端Buffer
- .fc_npd(fc_npd), //[11:0]信号有效得使用和管理接收端Buffer
- .fc_nph(fc_nph), //[7:0]信号有效得使用和管理接收端Buffer
- .fc_pd(fc_pd), //[7:0]信号有效得使用和管理接收端Buffer
- .fc_ph(fc_ph), //[7:0]信号有效得使用和管理接收端Buffer
- .fc_sel(fc_sel), //[2:0]信号有效得使用和管理接收端Buffer
-
- .cfg_mgmt_do(cfg_mgmt_do), //[31:0]32-bit的配置寄存器的状态输出数据
- .cfg_mgmt_rd_wr_done(cfg_mgmt_rd_wr_done), //表示配置读写完成的信号。该信号为有效位时
- .cfg_status(cfg_status), //[15:0]配置空间的头寄存器中的状态寄存器的数据,表示配置的状态
- .cfg_command(cfg_command), //[15:0]配置命令,配置空间的头寄存器中的命令寄存器的数据
- .cfg_dstatus(cfg_dstatus), //[15:0]表示PCI Express Capability Structure中的设备状态寄存器的值,表示配置设备的状态
- .cfg_dcommand(cfg_dcommand), //[15:0]表示PCI Express Capability Structure中的设备命令寄存器的值,表示配置设备的命令
- .cfg_lstatus(cfg_lstatus), //[15:0]表示配置连接的状态,PCI Express Capability Structure中的连接状态寄存器的值
- .cfg_lcommand(cfg_lcommand), //[15:0]表示配置连接的命令,PCI Express Capability Structure中的连接控制寄存器的值
- .cfg_dcommand2(cfg_dcommand2), //[15:0]表示PCI Express Capability Structure中的设备命令寄存器2的值,表示配置设备的命令2
- .cfg_pcie_link_state(cfg_pcie_link_state), //[2:0]表示PCI Express连接状态000: L0001: PPM L1010: PPM L2/L3 Ready011: PM_PME100: in or transitioning to/from ASPM L0s 101: transitioning to/from PPM L1 110: transition to PPM L2/L3 Ready111: Reserved
-
- .cfg_pmcsr_pme_en(cfg_pmcsr_pme_en), //使能电源管理,置位电源控制/状态寄存器
- .cfg_pmcsr_powerstate(cfg_pmcsr_powerstate), //[1:0]PMCSR(电源控制状态寄存器)bits (bits 1:0) ,表示电源的状态
- .cfg_pmcsr_pme_status(cfg_pmcsr_pme_status), //表示电源管理单元的状态。电源控制/状态寄存器的电源状态位
- .cfg_received_func_lvl_rst(cfg_received_func_lvl_rst), //该信号在该IP核中不会使用
- .cfg_mgmt_di(cfg_mgmt_di), //[31:0]配置数据输入
- .cfg_mgmt_byte_en(cfg_mgmt_byte_en), //[3:0]配置数据的Byte使能
- .cfg_mgmt_dwaddr(cfg_mgmt_dwaddr), //[9:0]配置寄存器的地址
- .cfg_mgmt_wr_en(cfg_mgmt_wr_en), //配置数据的写使能
- .cfg_mgmt_rd_en(cfg_mgmt_rd_en), //配置数据的读使能
- .cfg_mgmt_wr_readonly(cfg_mgmt_wr_readonly), //管理读写的ReadOnly模式(只读)
- //err 的全是错误标志位
- .cfg_err_ecrc(cfg_err_ecrc), //如果ECRC机制没有启动,用户应用可以通过将cfg_err_ecrc信号置有效位来标记一个ECRC错误
- .cfg_err_ur(cfg_err_ur), //数据错误标志
- .cfg_err_cpl_timeout(cfg_err_cpl_timeout), //果一个请求超时了,用户应用必须将cfg_err_cpl_timeout信号置有效位,这样IP核将会发出一个错误消息到Root模式
- .cfg_err_cpl_unexpect(cfg_err_cpl_unexpect), // input wire cfg_err_cpl_unexpect
- .cfg_err_cpl_abort(cfg_err_cpl_abort), // input wire cfg_err_cpl_abort
- .cfg_err_posted(cfg_err_posted), // input wire cfg_err_posted
- .cfg_err_cor(cfg_err_cor), // input wire cfg_err_cor
- .cfg_err_atomic_egress_blocked(cfg_err_atomic_egress_blocked), // input wire cfg_err_atomic_egress_blocked
- .cfg_err_internal_cor(cfg_err_internal_cor), // input wire cfg_err_internal_cor
- .cfg_err_malformed(cfg_err_malformed), // input wire cfg_err_malformed
- .cfg_err_mc_blocked(cfg_err_mc_blocked), // input wire cfg_err_mc_blocked
- .cfg_err_poisoned(cfg_err_poisoned), // input wire cfg_err_poisoned
- .cfg_err_norecovery(cfg_err_norecovery), // input wire cfg_err_norecovery
- .cfg_err_tlp_cpl_header(cfg_err_tlp_cpl_header), // input wire [47 : 0] cfg_err_tlp_cpl_header
- .cfg_err_cpl_rdy(cfg_err_cpl_rdy), // output wire cfg_err_cpl_rdy
- .cfg_err_locked(cfg_err_locked), // input wire cfg_err_locked
- .cfg_err_acs(cfg_err_acs), // input wire cfg_err_acs
- .cfg_err_internal_uncor(cfg_err_internal_uncor), // input wire cfg_err_internal_uncor
-
- .cfg_trn_pending(cfg_trn_pending), //表示用户事务挂起,置位时,设备的状态寄存器的事务挂起bit位也同时置位
- .cfg_pm_halt_aspm_l0s(cfg_pm_halt_aspm_l0s ), //置位时,阻止IP核进入ASPM L0s(活动电源管理的L0状态
- .cfg_pm_halt_aspm_l1(cfg_pm_halt_aspm_l1), //置位时,阻止IP核进入ASPM L1s(活动电源管理的L1状态)
- .cfg_pm_force_state_en(cfg_pm_force_state_en), //强制电源状态转化使能,电源转化为cfg_pm_force_state制定的状态
- .cfg_pm_force_state(cfg_pm_force_state), //[1:0]强制电源进行如下的状态00: Move to or stay in L0 01: Move to or stay in PPM L110: Move to or stay in ASPM L0s 11: Move to or stay in ASPM L1(1) (7系列不支持ASPM L1模式)
- .cfg_dsn(cfg_dsn), //[63:0]配置设备的串行端口号
- //中断
- .cfg_interrupt(cfg_interrupt), //中断请求信号,用户程序声明该信号来产生一个中断消息
- .cfg_interrupt_rdy(cfg_interrupt_rdy), //中断授权(Grant)信号,该信号和之前的cfg_interrupt信号同时为有效位时,表示IP核成功发送一个中断消息
- .cfg_interrupt_assert(cfg_interrupt_assert), //是否配置老版本的中断机制(PCI总线遗留下来的中断信号)。1:配置;0:不配置
- .cfg_interrupt_di(cfg_interrupt_di), //[7:0]配置中断的输入矢量的数量,对于MSI类型的中断,消息数据部分的数据,终端必须给出MSI的中断矢量号
- .cfg_interrupt_do(cfg_interrupt_do), //[7:0]MSI capability structure 的Message Data属性最低8bits的值
- .cfg_interrupt_mmenable(cfg_interrupt_mmenable), //[2:0]配置MSI可以接受的中断矢量数
- .cfg_interrupt_msienable(cfg_interrupt_msienable), //配置是否启用MSI中断。0:只使用老版本的PCI中断(INTX)或MSI-X;1:只使用MSI中断。
- .cfg_interrupt_msixenable(cfg_interrupt_msixenable), //配置启用MSI-X中断。0:只使用INTX中断或者MSI中断;1:只使用MSI-X中断。
- .cfg_interrupt_msixfm(cfg_interrupt_msixfm), //配置MSI-X的功能掩码,0:位于掩码位的矢量被掩码;1:所有矢量被掩码
- .cfg_interrupt_stat(cfg_interrupt_stat), //配置中断的状态
- .cfg_pciecap_interrupt_msgnum(cfg_pciecap_interrupt_msgnum), //[4:0]配置PCI Express Capabilities 中的中断消息数量属性。该信号只有当MSI中断启用时需要
- .cfg_to_turnoff(cfg_to_turnoff), //配置关闭电源管理通知,表示接收到了PME_TURN_Off 消息,随后CMM启动轮询,当cfg_turnoff_ok信号为有效位时, CMM发送一个PME_To_Ack的消息给链路另一端的设备
- .cfg_turnoff_ok(cfg_turnoff_ok), //配置关闭电源管理完成,用户程序通过置位该信号,来告诉终端已经关闭电源
- .cfg_bus_number(cfg_bus_number), //[7:0]配置Bus号,用户必须使用该Bus号来设置TLP请求的Bus Number field。默认为00h. 每当接收到Type 0类型的写配置包时刷新
- .cfg_device_number(cfg_device_number), //[4:0]配置设备号,用户必须使用该设备号来设置TLP请求的Device Number field
- .cfg_function_number(cfg_function_number), //[2:0]配置的Function号: 用户必须使用该Function号来设置TLP请求的Function Number field
- .cfg_pm_wake(cfg_pm_wake), //配置唤醒电源,置位一个时钟周期,发送PowerManagement Wake Event (PM_PME) Message TLP到链路另一端的设备
- .cfg_pm_send_pme_to(cfg_pm_send_pme_to), //置有效位时,Root Port发送一个Turn Off的消息,而链路的另一端设备如果回复了Turn Off Ack消息, 则cfg_msg_received_pme_to_ack信号置有效位,而cfg_pcie_link_state信号则会指示设备进入L3模式终端将会一直拉低为0
-
- .cfg_ds_bus_number(cfg_ds_bus_number), //总线编号
- .cfg_ds_device_number(cfg_ds_device_number), //设备编号
- .cfg_ds_function_number(cfg_ds_function_number), // 功能编号
-
- .cfg_mgmt_wr_rw1c_as_rw(cfg_mgmt_wr_rw1c_as_rw), // input wire cfg_mgmt_wr_rw1c_as_rw
- .cfg_msg_received(cfg_msg_received), //表示接收到了一个ERR_COR消息
- .cfg_msg_data(cfg_msg_data), //[15:0]消息请求ID,当cfg_msg_received为有效位时有效
- .cfg_bridge_serr_en(cfg_bridge_serr_en), // output wire cfg_bridge_serr_en
- .cfg_slot_control_electromech_il_ctl_pulse(cfg_slot_control_electromech_il_ctl_pulse), // output wire cfg_slot_control_electromech_il_ctl_pulse
- .cfg_root_control_syserr_corr_err_en(cfg_root_control_syserr_corr_err_en), // output wire cfg_root_control_syserr_corr_err_en
- .cfg_root_control_syserr_non_fatal_err_en(cfg_root_control_syserr_non_fatal_err_en), // output wire cfg_root_control_syserr_non_fatal_err_en
- .cfg_root_control_syserr_fatal_err_en(cfg_root_control_syserr_fatal_err_en), // output wire cfg_root_control_syserr_fatal_err_en
- .cfg_root_control_pme_int_en(cfg_root_control_pme_int_en), // output wire cfg_root_control_pme_int_en
- .cfg_aer_rooterr_corr_err_reporting_en(cfg_aer_rooterr_corr_err_reporting_en), // output wire cfg_aer_rooterr_corr_err_reporting_en
- .cfg_aer_rooterr_non_fatal_err_reporting_en(cfg_aer_rooterr_non_fatal_err_reporting_en), // output wire cfg_aer_rooterr_non_fatal_err_reporting_en
- .cfg_aer_rooterr_fatal_err_reporting_en(cfg_aer_rooterr_fatal_err_reporting_en), // output wire cfg_aer_rooterr_fatal_err_reporting_en
- .cfg_aer_rooterr_corr_err_received(cfg_aer_rooterr_corr_err_received), // output wire cfg_aer_rooterr_corr_err_received
- .cfg_aer_rooterr_non_fatal_err_received(cfg_aer_rooterr_non_fatal_err_received), // output wire cfg_aer_rooterr_non_fatal_err_received
- .cfg_aer_rooterr_fatal_err_received(cfg_aer_rooterr_fatal_err_received), // output wire cfg_aer_rooterr_fatal_err_received
- .cfg_msg_received_err_cor(cfg_msg_received_err_cor), // 表示接收到了一个ERR_COR消息
- .cfg_msg_received_err_non_fatal(cfg_msg_received_err_non_fatal), // 表示接收到了一个ERR_NONFATAL 消息
- .cfg_msg_received_err_fatal(cfg_msg_received_err_fatal), //接收到了ERR_FATAL消息
- .cfg_msg_received_pm_as_nak(cfg_msg_received_pm_as_nak), //表示接收到了电源管理的PM_AS_NAK消息
- .cfg_msg_received_pm_pme(cfg_msg_received_pm_pme), //表示接收到了一个PME信号,表示链路接收到了一个PME事务消息
- .cfg_msg_received_pme_to_ack(cfg_msg_received_pme_to_ack), // output wire cfg_msg_received_pme_to_ack
- .cfg_msg_received_assert_int_a(cfg_msg_received_assert_int_a), // output wire cfg_msg_received_assert_int_a
- .cfg_msg_received_assert_int_b(cfg_msg_received_assert_int_b), // output wire cfg_msg_received_assert_int_b
- .cfg_msg_received_assert_int_c(cfg_msg_received_assert_int_c), // output wire cfg_msg_received_assert_int_c
- .cfg_msg_received_assert_int_d(cfg_msg_received_assert_int_d), // output wire cfg_msg_received_assert_int_d
- .cfg_msg_received_deassert_int_a(cfg_msg_received_deassert_int_a), // output wire cfg_msg_received_deassert_int_a
- .cfg_msg_received_deassert_int_b(cfg_msg_received_deassert_int_b), // output wire cfg_msg_received_deassert_int_b
- .cfg_msg_received_deassert_int_c(cfg_msg_received_deassert_int_c), // output wire cfg_msg_received_deassert_int_c
- .cfg_msg_received_deassert_int_d(cfg_msg_received_deassert_int_d), // output wire cfg_msg_received_deassert_int_d
- .cfg_msg_received_setslotpowerlimit(cfg_msg_received_setslotpowerlimit), //表示接收到了设置Slot PowerLimit的消息
- .pl_directed_link_change(pl_directed_link_change), //[1:0]用来表示端口初始化连接宽度(通道数)或速度的改变00: No change01: Link width10: Link speed11: Link width and speed (level-triggered)
- .pl_directed_link_width(pl_directed_link_width), //[1:0]表示连接通道模式的变更 00: 1-Lane link01: 2-Lane link 10: 4-Lane link11: 8-Lane link
- .pl_directed_link_speed(pl_directed_link_speed), //表示连接速度模式的改变。0:表示2.5Gb/s;1:5.0Gb/s
- .pl_directed_link_auton(pl_directed_link_auton), //表示直接的自主的连接变更
- .pl_upstream_prefer_deemph(pl_upstream_prefer_deemph), //端口传输的非-预加重电路(De-emphasis),通常用于链路工作在5.0Gb/s时。0:6 dB的短时的预加重电路;1:3 dB长时的预加重电路
- .pl_sel_lnk_rate(pl_sel_lnk_rate), //当前链路的带宽,0:2.5Gb/s;1:5.0Gb/s
- .pl_sel_lnk_width(pl_sel_lnk_width), //[1:0]当前链路的宽度 。00:1通道;01:2通道;10:4通道;11:8通道
- .pl_ltssm_state(pl_ltssm_state), //[5:0]表示当前的LTSSM(Link Training Status State Machine)的状态(太多了就不介绍了)
- .pl_lane_reversal_mode(pl_lane_reversal_mode), //[1:0]表示预留的通道。00:没有预留;01:Lanes 1:0预留;10:Lanes 3:0预留;11:Lanes 7:0预留
- .pl_phy_lnk_up(pl_phy_lnk_up), //表示物理层的连接状态
- .pl_tx_pm_state(pl_tx_pm_state), //[2:0]Tx的电源管理状态000: TX not in L0s001: TX L0s Entry0010: TX L0s Entry1 011: TX L0s Entry2100: TX L0s Idle101: TX L0s FTS0110: TX L0s FTS1111: TX L0s FTS2
- .pl_rx_pm_state(pl_rx_pm_state), //[1:0]Rx的电源管理状态00: RX Not in L0s01: RX L0s Entry10: RX L0s Idle11: RX L0s FTS
- .pl_link_upcfg_cap(pl_link_upcfg_cap), //表示链路可以在上游配置的能力。只有当user_lnk_up为有效位时该信号才有效
- .pl_link_gen2_cap(pl_link_gen2_cap), //表示链路是否具有二代(Gen2 5.0Gb/s)的能力
- .pl_link_partner_gen2_supported(pl_link_partner_gen2_supported), //表示链路另一端是否有Gen2的能力,只有当F为有效位时该信号才有效
- .pl_initial_link_width(pl_initial_link_width), //[2:0]表示PCI Express端口已经成功连接的通道数。000:没有通道连接;001:1个通道连接;010:2个通道连接;011:4个通道连接;100:8个通道连接
- .pl_directed_change_done(pl_directed_change_done), //表示连接模式变更完成
- .pl_received_hot_rst(pl_received_hot_rst), //表示接收端收到热重启信号
- .pl_transmit_hot_rst(pl_transmit_hot_rst), //表示传输端希望PCI Express端口传送一个带内的热重启信号
- .pl_downstream_deemph_source(pl_downstream_deemph_source), //使能Root Port模式端口传输的非-预加重
- .cfg_err_aer_headerlog(cfg_err_aer_headerlog), //[127:0]信号给出包头的日志信息
- .cfg_aer_interrupt_msgnum(cfg_aer_interrupt_msgnum), // input wire [4 : 0] cfg_aer_interrupt_msgnum
- .cfg_err_aer_headerlog_set(cfg_err_aer_headerlog_set), //信号会一直保持有效位直到Uncorrectable Error Status寄存器对应的first error pointer位被清除
- .cfg_aer_ecrc_check_en(cfg_aer_ecrc_check_en), //表示配置修复(AER)和循环冗余校验(ECRC)的使能
- .cfg_aer_ecrc_gen_en(cfg_aer_ecrc_gen_en), //表示配置修复(AER)和循环冗余(ECRC)校验码的产生。AER使能寄存器和控制寄存器的bit6
- .cfg_vc_tcvc_map(cfg_vc_tcvc_map), //[6:0]配置VC资源的TC/VC映射,表示TCs1-7对于VC0是否是有效的
-
- .sys_clk(sys_clk), //参考时钟,可选择的时钟频率为:100、125、250MHz
- .sys_rst_n(sys_rst_n), //复位
- .pipe_mmcm_rst_n(pipe_mmcm_rst_n), // input wire pipe_mmcm_rst_n
- .pcie_drp_clk(pcie_drp_clk), // input wire pcie_drp_clk
- .pcie_drp_en(pcie_drp_en), // input wire pcie_drp_en
- .pcie_drp_we(pcie_drp_we), // input wire pcie_drp_we
- .pcie_drp_addr(pcie_drp_addr), // input wire [8 : 0] pcie_drp_addr
- .pcie_drp_di(pcie_drp_di), // input wire [15 : 0] pcie_drp_di
- .pcie_drp_do(pcie_drp_do), // output wire [15 : 0] pcie_drp_do
- .pcie_drp_rdy(pcie_drp_rdy) // output wire pcie_drp_rdy
- );
- // INST_TAG_END ------ End INSTANTIATION Template ---------
BYTE0 : +0最前面的字节表示指令(内存读),TC表示实时性(因为PC端发数据下来肯定很多,这个时候就由TC来控制),TD表示单调性表示它含不含有校验,EP表示这个数据是否发出故障,Attr灵活性的问题表示有没有使用一些pci工具.(TC,TD,EP,Attr这些在APP端是用不到的)Length表示要读的数据的个数.
BYTE2 : Requester ID 发起者是谁,Tag序列号发起了很多报文每个报文都有一个独立的序列号,Last BE 和 First BE 表示最后面的四个字节是有效的还是无效的.
BYTE8 : 地址位,读和写地址[31:2] , 后面跟俩00
接收引擎在第一个TLP包完成接收后,马上将m_axis_rx_tready信号置非有效,在compl_done_o被输出引擎置有效位后(表示第一个TLP包成功完成传输),在接收下一个读事务包.
只有在wr_busy_o信号被置非有效后(表示上一个写事务成功写入存储空间),下一个写事务才被存储访问单元接收
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。