当前位置:网站首页>3. pcie.v 文件
3. pcie.v 文件
2022-08-05 00:41:00 【jjinl】
lattice的clarity生成的pcie核名字和当初建立IP有关系。之前我们打开clarity输入的design name叫pcie生成的verilog文件就叫pcie.v,如果输入文件叫pcie_interface则生成文件就叫pcie_interface.v。我们看一下这个文件内容
/* synthesis translate_off*/
`define SBP_SIMULATION
/* synthesis translate_on*/
`ifndef SBP_SIMULATION
`define SBP_SYNTHESIS
`endif
//
// Verific Verilog Description of module pcie
//
module pcie (pcie_x1_bus_num, pcie_x1_class_code, pcie_x1_cmd_reg_out,
pcie_x1_dev_cntl_2_out, pcie_x1_dev_cntl_out, pcie_x1_dev_num,
pcie_x1_device_id, pcie_x1_func_num, pcie_x1_hl_gto_lbk, pcie_x1_lnk_cntl_out,
pcie_x1_mm_enable, pcie_x1_msi, pcie_x1_npd_num_vc0, pcie_x1_pd_num_vc0,
pcie_x1_phy_cfgln, pcie_x1_phy_cfgln_sum, pcie_x1_phy_ltssm_state,
pcie_x1_pm_power_state, pcie_x1_rev_id, pcie_x1_rx_bar_hit,
pcie_x1_rx_data_vc0, pcie_x1_rx_lbk_data, pcie_x1_rx_lbk_kcntl,
pcie_x1_rxdp_dllp_val, pcie_x1_rxdp_pmd_type, pcie_x1_rxdp_vsd_data,
pcie_x1_subsys_id, pcie_x1_subsys_ven_id, pcie_x1_tx_ca_cpld_vc0,
pcie_x1_tx_ca_cplh_vc0, pcie_x1_tx_ca_npd_vc0, pcie_x1_tx_ca_nph_vc0,
pcie_x1_tx_ca_pd_vc0, pcie_x1_tx_ca_ph_vc0, pcie_x1_tx_data_vc0,
pcie_x1_tx_dllp_val, pcie_x1_tx_lbk_data, pcie_x1_tx_lbk_kcntl,
pcie_x1_tx_pmtype, pcie_x1_tx_vsd_data, pcie_x1_vendor_id,
pcie_x1_cmpln_tout, pcie_x1_cmpltr_abort_np, pcie_x1_cmpltr_abort_p,
pcie_x1_dl_active, pcie_x1_dl_inactive, pcie_x1_dl_init, pcie_x1_dl_up,
pcie_x1_flip_lanes, pcie_x1_flr_rdy_in, pcie_x1_force_disable_scr,
pcie_x1_force_lsm_active, pcie_x1_force_phy_status, pcie_x1_force_rec_ei,
pcie_x1_hdinn0, pcie_x1_hdinp0, pcie_x1_hdoutn0, pcie_x1_hdoutp0,
pcie_x1_hl_disable_scr, pcie_x1_hl_gto_cfg, pcie_x1_hl_gto_det,
pcie_x1_hl_gto_dis, pcie_x1_hl_gto_hrst, pcie_x1_hl_gto_l0stx,
pcie_x1_hl_gto_l0stxfts, pcie_x1_hl_gto_l1, pcie_x1_hl_gto_l2,
pcie_x1_hl_gto_rcvry, pcie_x1_hl_snd_beacon, pcie_x1_initiate_flr,
pcie_x1_inta_n, pcie_x1_load_id, pcie_x1_msi_enable, pcie_x1_no_pcie_train,
pcie_x1_np_req_pend, pcie_x1_npd_buf_status_vc0, pcie_x1_npd_processed_vc0,
pcie_x1_nph_buf_status_vc0, pcie_x1_nph_processed_vc0, pcie_x1_pd_buf_status_vc0,
pcie_x1_pd_processed_vc0, pcie_x1_ph_buf_status_vc0, pcie_x1_ph_processed_vc0,
pcie_x1_phy_pol_compliance, pcie_x1_pme_en, pcie_x1_pme_status,
pcie_x1_rst_n, pcie_x1_rx_dwen_vc0, pcie_x1_rx_end_vc0, pcie_x1_rx_malf_tlp_vc0,
pcie_x1_rx_st_vc0, pcie_x1_rx_us_req_vc0, pcie_x1_sys_clk_125,
pcie_x1_tx_ca_cpl_recheck_vc0, pcie_x1_tx_ca_p_recheck_vc0,
pcie_x1_tx_dllp_sent, pcie_x1_tx_dwen_vc0, pcie_x1_tx_end_vc0,
pcie_x1_tx_lbk_rdy, pcie_x1_tx_nlfy_vc0, pcie_x1_tx_rdy_vc0,
pcie_x1_tx_req_vc0, pcie_x1_tx_st_vc0, pcie_x1_tx_val, pcie_x1_unexp_cmpln,
pcie_x1_ur_np_ext, pcie_x1_ur_p_ext, refclk_refclkn, refclk_refclkp) /* synthesis sbp_module=true */ ;
....端口声明
pcie_x1 pcie_x1_inst (...);
refclk refclk_inst (...);
PCSCLKDIV pcs_clkdiv0 (..);
not (n1, pcie_x1_rst_n) ;
endmodule
省略部分内容。这个模块pcie端口信号有 109个。模块内部包含pcie_x1这个模块,refclk这个模块以及PCSCLKDIV和not模块。
| 信号名 | 方向 | 同步时钟 | 功能描述 |
|---|---|---|---|
| 时钟和复位接口 | |||
| refclk_refclkn/refclk_refclkp | 输入 | 参考时钟输入。2.5G速率为100MHz,5G速率为200MHz | |
| pcie_x1_sys_clk_125 | 输出 | 125MHz时钟,用于驱动用户逻辑 | |
| pcie_x1_rst_n | 输入 | 低电平有效, | |
| PCIe 收发通道 | |||
| pcie_x1_hdinn0/pcie_x1_hdinp0 | 输入 | PCIe x1 输入通道 | |
| pcie_x1_hdoutn0/pcie_x1_hdoutp0 | 输出 | PCIe x1输出通道 | |
| TLP传输接口 | |||
| pcie_x1_tx_data_vc0 | 64位输入 | 125M | TLP数据传输线 |
| pcie_x1_tx_req_vc0 | 输入 | 125 | 高电平代表传输请求,当你需要传输一个TLP包的时候,把此信号拉高。当有多个TLP包连续传输的时候,也就是burst模式,此信号要保持到最后一个包开始发送时刻 |
| pcie_x1_tx_rdy_vc0 | 输出 | 125 | 高电平表示可以开始传输。这个和上面请求信号成对。req--> rdy.请求应答 |
| pcie_x1_tx_st_vc0 | 输入 | 125 | 开始传输标志,代表数据线上数据开始有效 |
| pcie_x1_tx_end_vc0 | 输入 | 125 | 指示当前数据为TLP最后一个数据,之后必须变低 |
| pcie_x1_tx_nlfy_vc0 | 输入 | 125 | 高电平有效,指示当前TLP包作废,它可以在传输TLP包的任何时刻有效,当有效后pcie核会终止TLP发送,所以不需要上面end信号指示包结束。 |
| pcie_x1_tx_dwen_vc0 | 输入 | 125 | 高电平有效。指示64bit数据中63:32有效。在发送数据时,上面tx_data为64位,TLP以32bit为单位,如果最后一个数据不够64bit,则放到63:32这里,并拉高dwen信号。dwen=double word enable |
| pcie_x1_tx_val | 输出 | 125 | 时钟发送使能。就是调节发送速度。我们使用是5G速度的IPcore,有x1和x2选项,也就是1通道发送还是2通道发送,我们当前配置的x1,就是1通道发送,从上面我们可以看出只配了1对hdoutp/n.当配置x2的时候,发送速率就是5Gbps+5Gbps=10Gbps,PCIe信号采用8/10编码,所以有效数据为8Gbps。我们时钟125M,我们数据线宽度64位,则用户接口发送速率 125M×64=8Gbps,此时PCIe发送速率和用户发送速率匹配。当我们使用x1的时候PCIe发送速率降低1半,此时用户的接口时钟和数据线宽度未变,发送速率还是8G,这就需要使用此信号来指示当前时钟是否有效,降低发送速率,此信号间隔有效就可以达到调节发送速率 |
| pcie_x1_tx_ca_ph_vc0 | 9位输出 | 125 | posted-header信用值,最高位为1表示无限大的信用值,此时低8位忽略。高位为0时,低8位代表信用值。信用值表示对方接收端口还有多少缓冲区,用于数据流量控制,下面一样 |
| pcie_x1_tx_ca_nph_vc0 | 9位输出 | 125 | non-posted-header信用值 |
| pcie_x1_tx_ca_cplh_vc0 | 9位输出 | 125 | completion header信用值 |
| pcie_x1_tx_ca_pd_vc0 | 13位输出 | 125 | posted data 信用值 |
| pcie_x1_tx_ca_npd_vc0 | 13位输出 | 125 | non-posted data 信用值 |
| pcie_x1_tx_ca_cpld_vc0 | 13位输出 | 125 | completion data 信用值 |
| pcie_x1_tx_ca_p_recheck_vc0 | 输出 | 125 | 高电平指示发送一个 posted tlp,信用值发生变换 |
| pcie_x1_tx_ca_cpl_recheck_vc0 | 输出 | 125 | 高电平指示发送一个completion tlp,信用值发生变化 |
| pcie_x1_rx_data_vc0 | 64位输出 | 125 | 接收数据总线 |
| pcie_x1_rx_st_vc0 | 输出 | 125 | 高电平指示数据线上 是TLP开始数据 |
| pcie_x1_rx_end_vc0 | 输出 | 125 | 高电平指示数据线是TLP结束数据 |
| pcie_x1_rx_dwen_vc0 | 输出 | 125 | 指示数据线上63:32数据有效 |
| pcie_x1_rx_us_req_vc0 | 输出 | 125 | 高电平表示不支持的TLP请求 |
| pcie_x1_rx_malf_tlp_vc0 | 输出 | 125 | 高电平表示当前TLP包有问题,长度或者格式不对 |
| pcie_x1_rx_bar_hit | 7位输出 | 125 | PCIe BAR空间指示。bit0--> BAR0, bit1-->BAR1...bit5-->BAR5, bit6-->扩展ROM区域。使用64bit空间时候,只有最小BAR编号有效。这个信号会和rx_st信号同时有效 |
| pcie_x1_ur_np_ext | 输入 | 125 | 高电平指示不支持的non-posted 请求 |
| pcie_x1_ur_p_ext | 输入 | 125 | 高电平指示不支持的posted请求 |
| pcie_x1_ph_buf_status_vc0 | 输入 | 125 | 指示用户buffer满,posted header buffer |
| pcie_x1_pd_buf_status_vc0 | 输入 | 125 | 指示用户buffer满,posted data buffer |
| pcie_x1_nph_buf_status_vc0 | 输入 | 125 | 指示用户buffer满,non-posted header buffer |
| pcie_x1_npd_buf_status_vc0 | 输入 | 125 | 指示用户buffer满,non-posted data buffer |
| pcie_x1_ph_processed_vc0 | 输入 | 125 | |
| pcie_x1_nph_processed_vc0 | 输入 | 125 | |
| pcie_x1_pd_processed_vc0 | 输入 | 125 | 高电平使能 pd_num值 |
| pcie_x1_npd_processed_vc0 | 输入 | 125 | 高电平使能 npd_num值 |
| pcie_x1_pd_num_vc0 | 8位输入 | 125 | posted data 信用值处理 |
| pcie_x1_npd_num_vc0 | 8位输入 | 125 | non-posted data 信用值处理 |
| 物理层 | |||
| pcie_x1_no_pcie_train | 输入 | 异步信号 | 高电平禁止LTSSM训练,并让LTSSM进入L0状态 |
| pcie_x1_force_lsm_active | 输入 | 异步信号 | 让所有通道进入链接状态 |
| pcie_x1_force_rec_ei | 输入 | 异步 | |
| pcie_x1_force_phy_status | 输入 | 异步 | |
| pcie_x1_force_disable_scr | 输入 | 异步 | 禁止PCIe TLP干扰器 |
| pcie_x1_hl_snd_beacon | 输入 | 125 | 高电平请求发送标记 |
| pcie_x1_hl_disable_scr | 输入 | 异步 | 高电平发送禁止干扰位在TS1/TS2序列 |
| pcie_x1_hl_gto_dis | 输入 | 异步 | 高电平请求进入disable 状态当LTSSM进入config或者recovery状态 |
| pcie_x1_hl_gto_det | 输入 | 125 | 高电平请求进入Detect状态当LTSSM在L2或者disable状态 |
| pcie_x1_hl_gto_hrst | 输入 | 高电平请求进入Hot Reset状态当LTSSM在recovery状态 | |
| pcie_x1_hl_gto_l0stx | 输入 | 125 | 高电平请求进入L0s状态当LTSSM在L0状态 |
| pcie_x1_hl_gto_l0stxfts | 输入 | 125 | 高电平请求进入L0s状态并传输FTS当LTSSM在L0s状态 |
| pcie_x1_hl_gto_l1 | 输入 | 125 | 高电平请求进入L1状态当LTSSM在L0状态 |
| pcie_x1_hl_gto_l2 | 输入 | 125 | 高电平请求进入L2状态当LTSSM在L0状态 |
| pcie_x1_hl_gto_lbk | 4位输入 | 125 | 高电平请求进入loopback状态当LTSSM在config或者recovery状态 |
| pcie_x1_hl_gto_rcvry | 输入 | 125 | 高电平请求进入recovery状态当LTSSM在L0,L0s或者L1状态 |
| pcie_x1_hl_gto_cfg | 输入 | 125 | 高电平请求进入config模式当LTSSM在recovery状态 |
| pcie_x1_phy_ltssm_state | 4位输出 | 125 | 物理层LTSSM当前状态。0000:dectect状态;0001:polling;0010:config ; 0011:L0; 0100:L0s; 0101:L1; 0110:L2; 0111:recovery; 1000: loopback; 1001: hot reset; 1010:diable |
| pcie_x1_phy_cfgln | 2位输出 | 125 | 指示连接通道 |
| pcie_x1_phy_cfgln_sum | 3位输出 | 125 | 连接宽度000:无连接定义;001:x1 ; 010:x2 ; 100: x4 |
| pcie_x1_phy_pol_compliance | 输出 | 125 | 高电平指示LTSSM在polling compliance状态 |
| pcie_x1_tx_lbk_rdy | 输出 | 250 | 使能主机的loopback功能 |
| pcie_x1_tx_lbk_kcntl | 8位输入 | 250 | loopback功能,后续禁用loopback |
| pcie_x1_tx_lbk_data | 250 | 后续禁用loopback | |
| pcie_x1_rx_lbk_kcntl | 后续禁用loopback | ||
| pcie_x1_rx_lbk_data | 后续禁用loopback | ||
| 数据链路层 | |||
| pcie_x1_dl_active | 输出 | 125 | |
| pcie_x1_dl_inactive | 输出 | 125 | |
| pcie_x1_dl_init | 输出 | 125 | |
| pcie_x1_dl_up | 输出 | 125 | |
| pcie_x1_tx_dllp_val | 2位输入 | 125 | 电源消息发送命令。00:无消息, 01:发送DLLP使用tx_pmtype, 10:发送DLLP使用tx_vsd_data, 11:不使用 |
| pcie_x1_tx_pmtype | 3位输入 | 125 | 电源消息类型。000:PM L1 , 001:PM L2, ... |
| pcie_x1_tx_vsd_data | 24位输入 | 125 | 厂商自定义数据发送DLLP |
| pcie_x1_tx_dllp_sent | 输出 | 125 | 请求DLLP发送 |
| pcie_x1_rxdp_pmd_type | 3位输出 | 125 | 接收电源消息类型 000: PM L1 , 001: PM L2.... |
| pcie_x1_rxdp_vsd_data | 24位输出 | 125 | 厂商自定义DLLP数据接收 |
| pcie_x1_rxdp_dllp_val | 2位输出 | 125 | 电源消息接收 |
| 传输层 | |||
| pcie_x1_cmpln_tout | |||
| pcie_x1_cmpltr_abort_np | |||
| pcie_x1_cmpltr_abort_p | |||
| pcie_x1_np_req_pend | |||
| 配置寄存器 | |||
| pcie_x1_bus_num | 8位输出 | 125 | 配置的bus num |
| pcie_x1_dev_num | 5位输出 | 125 | |
| pcie_x1_func_num | 3位输出 | 125 | |
| pcie_x1_cmd_reg_out | 6位输出 | 125 | PCI Type0命令寄存器。bit0:IO Space bit1:mem space bit2:bus master bit3:parity error response bit4:serr enable bit5:interrupt disable |
| pcie_x1_dev_cntl_out | 15位输出 | 125 | |
| pcie_x1_lnk_cntl_out | 8位输出 | 125 | |
| pcie_x1_inta_n | 输入 | 125 | 传统的中断请求 |
| pcie_x1_msi | 8位输入 | 125 | MSI中断,上升沿发送 |
| pcie_x1_flr_rdy_in | 输入 | 125 | |
| pcie_x1_initiate_flr | 输出 | 125 | |
| pcie_x1_dev_cntl_2_out | 输出 | 125 | |
| pcie_x1_mm_enable | 3位输出 | 125 | |
| pcie_x1_msi_enable | 输出 | 125 | MSI中断使能 |
| pcie_x1_pme_status | 输入 | 125 | |
| pcie_x1_pme_en | 输出 | 125 | |
| pcie_x1_pm_power_state | 2位输出 | 125 | 电源状态 |
| pcie_x1_load_id | 输入 | 125 | |
| pcie_x1_device_id | 16位输入 | 125 | 设备ID号 |
| pcie_x1_vendor_id | 16位输入 | 125 | 厂商ID号 |
| pcie_x1_rev_id | 8位输入 | 125 | 版本 |
| pcie_x1_class_code | 24位输入 | 125 | 类代码 |
| pcie_x1_subsys_ven_id | 16位输入 | 125 | 厂商子ID |
| pcie_x1_subsys_id | 16位输入 | 125 | 系统子ID |
| pcie_x1_flip_lanes | |||
| pcie_x1_unexp_cmpln |
边栏推荐
- 创意代码表白
- Software Testing Interview Questions: What do you think about software process improvement? Is there something that needs improvement in the enterprise you have worked for? What do you expect the idea
- CNI(Container Network Plugin)
- NMS原理及其代码实现
- The method of freely controlling concurrency in the sync package in GO
- MBps与Mbps区别
- Mysql_13 事务
- 倒计时1天!8月2日—4日与你聊聊开源与就业那些事!
- 软件测试面试题:LoadRunner 分为哪三个模块?
- canvas 高斯模糊效果
猜你喜欢

could not build server_names_hash, you should increase server_names_hash_bucket_size: 32

JUC线程池(一): FutureTask使用

could not build server_names_hash, you should increase server_names_hash_bucket_size: 32

《WEB安全渗透测试》(28)Burp Collaborator-dnslog外带技术

ora-01105 ora-03175

仅3w报价B站up主竟带来1200w播放!品牌高性价比B站投放标杆!

【FreeRTOS】FreeRTOS与stm32内置堆栈的占用情况

Matlab uses plotting method for data simulation and simulation
](/img/4d/2d81dc75433c23c5ba6b31453396f0.png)
二叉树[全解](C语言)

Will domestic websites use Hong Kong servers be blocked?
随机推荐
matlab 采用描点法进行数据模拟和仿真
ARC129E Yet Another Minimization 题解 【网络流笔记】
Pytorch使用和技巧
2022牛客多校第三场 A Ancestor
Software testing interview questions: Have you used some tools for software defect (Bug) management in your past software testing work? If so, please describe the process of software defect (Bug) trac
【FreeRTOS】FreeRTOS与stm32内置堆栈的占用情况
Software testing interview questions: How many types of software are there?
Matlab uses plotting method for data simulation and simulation
数据类型-整型(C语言)
gorm联表查询-实战
SV 类的虚方法 多态
典型相关分析CCA计算过程
Software Testing Interview Questions: What's the Difference Between Manual Testing and Automated Testing?
翁恺C语言程序设计网课笔记合集
tiup status
2022 Hangzhou Electric Power Multi-School Session 3 Question L Two Permutations
[FreeRTOS] FreeRTOS and stm32 built-in stack occupancy
软件测试面试题:什么是软件测试?软件测试的目的与原则?
tiup uninstall
软件测试面试题:测试用例通常包括那些内容?