利用FPGA实现PCI总线接口及Windows驱动实现

news/2025/2/7 1:13:04/

利用FPGA实现PCI总线接口及Windows驱动实现

关于PCI总线协议,资料网上、书本都是。这里我们仅仅对重点对利用FPGA实现PCI总线接口问题进行简单分析。下图是PCI总线接口信号:


配置空间寄存器操作时序如下图:


配置寄存器空间写时序如下图:


依照状态机的编程思路。

部分Verilog代码如下:

      ST_CFGREAD: begin

           enable <= EN_RD;

           if (~irdy || trdy) begin

                case (address)

                    0: data <= { DEVICE_ID,VENDOR_ID };

                    1: data <= { 5'b0,DEVSEL_TIMING, 9'b0,  14'b0, memen,1'b0};

                    2: data <= {DEVICE_CLASS, DEVICE_REV };

                    4: data <= { 12'b0,baseaddr, 8'b0, 4'b0010 }; // baseaddr + request mem < 1Mbyte

                    11: data <={SUBSYSTEM_ID, SUBSYSTEM_VENDOR_ID };

                    16: data <= { 24'b0,baseaddr };

                    default: data <='h00000000;

               endcase

                address <= address + 1'b1;

           end

           if (frame && ~irdy && ~trdy) begin

                devsel <= 1;

                state <= ST_IDLE;

                enable <= EN_TR;

           end

       end

 

       ST_CFGWRITE: begin

           enable <= EN_WR;

           if (~irdy) begin

                case (address)

                    4: baseaddr <=ad[19:12];  // XXX examine cbe

                    1: memen <= ad[1];

                    default: ;

                endcase

                address <= address + 1'b1;

                if (frame) begin

                    devsel <= 1;

                    state <= ST_IDLE;

                    enable <= EN_TR;

                end

           end

       end

完整代码地址(QuartusII 9.0 (32-Bit)):http://download.csdn.net/detail/li171049/6784589

针对以上部分的windows驱动开发,就像我一篇文章(http://blog.csdn.net/li171049/article/details/17612283)中提到的windows对I/O读写的原理是一样的。这部分驱动vc6.0+DDK2600我也实现了。----

--参见:http://download.csdn.net/detail/li171049/6784595

对于PCI总线读写时序,我还在研究中,这里就不瞎说了。


http://www.ppmy.cn/news/265707.html

相关文章

基于TMS320C6205的内嵌PCI设备WDM驱动程序开发

摘 要: 采用内嵌PCI的DSP主芯片可以简化设备PCI接口的软硬件复杂度&#xff0c;缩短系统开发的周期&#xff0c;降低开发成本。本文以工程项目为背景&#xff0c;详细讨论了以TMS320C6205 为核心的内嵌PCI设备WDM驱动程序开发方法。该方法在实际中得到了很好的应用&#xff0c…

PCI驱动程序框架

PCI驱动程序框架 文章目录 PCI驱动程序框架参考资料&#xff1a;一、 PCI驱动框架二、 RK3399驱动 致谢 参考资料&#xff1a; 《PCI Express Technology 3.0》&#xff0c;Mike Jackson, Ravi Budruk; MindShare, Inc.《PCIe扫盲系列博文》&#xff0c;作者Felix&#xff0c;…

PCI/PCIe接口卡Windows驱动程序(4)- 驱动程序代码(源文件)

PCI/PCIe接口卡Windows驱动程序&#xff08;4&#xff09;- 驱动程序代码&#xff08;源文件&#xff09; http://www.cnblogs.com/jacklu/p/4687325.html 本篇文章将对PCIe驱动程序的源文件代码作详细解释与说明。整个WDF驱动程序工程共包含4个头文件&#xff08;已经在上篇文…

Linux下PCI设备驱动程序开发 --- PCI驱动程序实现(三)

<script type"text/javascript"> </script><script type"text/javascript" src"http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 三、 PCI驱动程序实现 1. 关键数据结构 PCI 设备上有三种地址空…

PCI设备简介和PCI驱动使用函数

一&#xff0c;PCI设备简介 PCI总线的特点&#xff1a;&#xff08;1&#xff09;速度上快&#xff0c;时钟频率提高到33M&#xff0c;而且还为进一步把时钟频率提高到66MHZ、总线带宽提高到64位留下了余地。&#xff08;2&#xff09;对于地址的分配和设置&#xff0c;系统软件…

Java程序判断是否是回文

1 问题 利用java程序判断是否是回文。 2 方法 利用函数库&#xff0c;将输入的字符串倒置&#xff0c;看倒置后的字符串和原来的字符串是否一样&#xff0c;然后得出结论。 package practice; import java.util.Scanner; public class Huiwen { public static void main(St…

gpu显卡dos测试软件,GpuTest显卡测试软件 For Win

说到显卡测试&#xff0c;我们一定会想到3D Mark&#xff0c;可是看着3D Mark那几百兆的大小和小水管的网速&#xff0c;有没有轻量级的测试软件呢&#xff1f; GpuTest就是一款十分小巧的软件&#xff0c;这是一款基于OpenGL的显卡压力测试软件&#xff0c;GpuTest还是一款跨平…

r23中文测试软件,Cinebench R23测试程序发布 跑分优势会强大

Cinebench本来是Cinema 4D中的一个3D性能测试工具&#xff0c;然而这几年已经成为AMD钦定最权威的CPU跑分软件了&#xff0c;Zen3之后更是成为单核性能的黄金标准&#xff0c;不服就来跑跑看。 Cinebench之前的R11.5、R15及R20版大家都很熟悉了&#xff0c;其中R20也发布了一年…