基于FPGA的PCIE接口设计
// BarNum BAR空间编号 // OffSet 偏移地址 // Data 32位数据 //返回值:
// (0) 成功 // (1) 失败
UINT PCIEDriver::AddWrite32(DWORD BarNum, DWORD OffSet, UINT32 Data) {
DWORD dwStatus;
dwStatus=WDC_WriteAddr32(DHandle, BarNum, OffSet, Data); if (WD_STATUS_SUCCESS != dwStatus) } return 0; }
//功能:32位存储器读操作 //参数:
// BarNum BAR空间编号 // OffSet 偏移地址
// Data 32位数据存储地址指针 //返回值:
// (0) 成功 // (1) 失败
UINT PCIEDriver::AddRead32(DWORD BarNum, DWORD OffSet, UINT32* Data) {
DWORD dwStatus; }
12
{
return 1;
dwStatus=WDC_ReadAddr32(DHandle, BarNum, OffSet, Data); if (WD_STATUS_SUCCESS != dwStatus) { } return 0;
return 1;
基于FPGA的PCIE接口设计
//功能:打开DMA //参数:
// ppBuf PC端接收数据缓存地址 // BytesCount 字节数 //返回值:
// (0) 成功
// (1) DMA句柄打开失败 // (2) 锁定DMA内存失败 // (3) DMA已打开
UINT16 PCIEDriver::DmaOpen(PVOID *ppBuf,DWORDBytesCount) { DWORD dwStatus; if (DmaFlag==TRUE) { return 3;
}
dwStatus=WDC_DMAContigBufLock(this->DHandle, DMA_TO_FROM_DEVICE|DMA_KERNEL_BUFFER_ALLOC, BytesCount,
&pDma);
if (WD_STATUS_SUCCESS != dwStatus)
{ return 2; }
DmaFlag=TRUE; return 0;
}
//功能:关闭DMA //返回值:
// (0) 成功 // (1) 释放DMA失败 // (2) DMA没有被打开 // (3) DMA没有被打开 UINT16 PCIEDriver::DmaClose(void) {
DWORD dwStatus;
if (DmaFlag==FALSE)
13
ppBuf,
基于FPGA的PCIE接口设计
{ } if (pDma) { dwStatus = WDC_DMABufUnlock(pDma); if (WD_STATUS_SUCCESS != dwStatus) return 3;
{ return 1; }
} else {
return 2; }
pDma=NULL; DmaFlag=FALSE; return 0;
}
14
基于FPGA的PCIE接口设计
第四章FPGA的流程
4.1 PCIE部分与外围接口定义
4.1.1概述
本设计使用的芯片是Virtex6的LX130T。 PCIE接口协议基于x8模式,使用的Integrated Block for PCI Express。
PCIE模块主要完成信号处理计算机与FPGA信号处理板之间的通信,主要包括三种的工作模式:
(1)参数下发模式:由信号处理计算机向FPGA下发雷达工作所需要的各项参数,包括波控模块参数、频率跟踪模块参数,时序控制模块参数,DDC模块参数,脉压模块参数等
(2)参数上传模式:由FPGA板向信号处理计算机上传的参数,主要用于计算机回读雷达此时的工作状态以及安排下一次下发的参数
(3)数据传输模式:主要是FPGA将处理完成的数据传给信号处理计算机,以完成目标的检测和显示等雷达的功能 4.1.2模块结构
Pciepcie_rx_doutpcie_rx_rdcmdpcie_int_okpcie_int_modepcie_dma_wrapperpcie_endpointBAR0控制寄存器双端口RAMPC机datadataBAR1数据寄存器data_vld
4.1.3接口信号与数据格式
15
基于FPGA的PCIE接口设计
PCIE_RST_NENBPCIE_EXP_TXPPCIE_EXP_RXPPCIE_EXP_RXNPCIE_EXP_TXNPCIE_USR_CLKPCIE_EXP_TXPPCIE_FIFO_RSTPCIE_EXP_TXNPCIE_RX_RDPCIE_SYS_CLK_PInst_pciePCIE_RX_DATA_OK_NUMPCIE_SYS_CLK_NCMDPCIE_RX_DOUTCMD_VLDPCIE_RX_AEMPDATAPCIE_RX_EMPDATA_VLDCONFIG_DONEPCIE_INT_OKPCIE_INT_MODEDATA_ADDR
4.1.4接口信号定义与说明
(1) 信号名称、方向和数据位宽
? PCIE_RST_N 模块输入 1位 ? PCIE_EXP_RXP 模块输入 8位 ? PCIE_EXP_RXN 模块输入 8位 ? PCIE_EXP_TXP 模块输出 8位 ? PCIE_EXP_TXN 模块输出 8位 ? PCIE_SYS_CLK_P 模块输入 1位 ? PCIE_SYS_CLK_N 模块输入 1位 ? PCIE_USR_CLK 模块输出 1位 ? PCIE_FIFO_RST 模块输出 1位 ? PCIE_RX_DOUT 模块输入 64位 ? PCIE_RX_RD 模块输出 1位 ? DATA 模块输出 36位 ? DATA_VLD 模块输出 1位 ? DATA_ADDR 模块输出 6位 ? ENB 模块输出 4位 ? PCIE_INT_OK 模块输入 1位 ? PCIE_INT_MODE 模块输入 3位 ? DATA_IN 模块输入 36位 ? DATA_INVLD 模块输入 1位
16
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于FPGA的PCIE接口设计(4)在线全文阅读。
相关推荐: