博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用FPGA实现PCI总线接口及Windows驱动实现
阅读量:6558 次
发布时间:2019-06-24

本文共 1235 字,大约阅读时间需要 4 分钟。

利用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总线读写时序,我还在研究中,这里就不瞎说了。

你可能感兴趣的文章
团队随笔
查看>>
Java内存块说明
查看>>
List集合具体对象的特点
查看>>
网络信息安全之防火墙***检测方法 (五)
查看>>
怎样为用户写“招标书”
查看>>
1.7 文件目录管理及相关的命令使用方法
查看>>
实际案例告诉你大数据在农业中如何应用
查看>>
LAMP优化策略
查看>>
PDF中添加页面/合并 PDF 内容
查看>>
JS仿FLASH特效可跳转回首页的CSS二级联动菜单
查看>>
页面导入样式时,使用link和@import有什么区别?
查看>>
类成员与类的实例成员
查看>>
Spark源码编译并在YARN上运行WordCount实例
查看>>
Spring AOP + AspectJ annotation example
查看>>
Spring VS EJB 3 的若干认识误区(转)
查看>>
React.js初探(一)
查看>>
Neo4j CQL -(17)- NULL值
查看>>
BZOJ4554: [Tjoi2016&Heoi2016]游戏 luoguP2825 loj2057
查看>>
json_encode后的中文不编码成unicode
查看>>
iOS 导航栏title显示右偏移
查看>>