阅读:17308回复:62
PCI9054+fpga从零开始(持续更新一个月)本部分内容设定了隐藏,需要回复后才能看到 |
|
|
沙发#
发布于:2013-07-01 16:39
thank有
|
|
板凳#
发布于:2013-07-02 12:57
转载请注明出处:http://bbs3.driverdevelop.com/read.php?tid-125690-page-e.html#a
PCI9054有三种工作模式:M,J,C M模式,直接为Motorola公司的MPC850和MPC860准备的非复用接口; C模式,地址,数据线不复用;(主意区分和PCI信号线,不要搞混了) J模式,地址数据线复用。 PCI9054的本地端支持可编程的特点,通过两个模式选择管脚MODE[1:0]来设置LocalBus端分别工作在C模式、J模式、M模式。这样可以使得PCI9054的Local Bus可以挂载不同类型的其他设备。 再详解: M模式是专门为motorola公司的mcu设计的工作模式。这种模式专门为motorola公司的mpc850和mpc860提供直接的非复用的接口。 C模式是一种类似于单片机的工作方式 。在这种工作模式下,9054芯片通过片间逻辑控制,将pci的地址线和数据线分开,很方便地为本地工作时序提供各种高难工作方式 ,一般较为广泛的应用于系统设计中。对于这种工作方式 ,设计者只要严格的把握时序的控制,把local端和pci端的各种时序控制线的时序过程严格控制,就可以很好的应用9054芯片。 J模式是一种没有local master的工作模式,它的好处 是地址数据线没有分开,严格仿效pci总线的时序。只是为了时序的控制,增加了很多的控制信号,这样为设计者了解pci协议和更好的控制pci通信提供了更好的空间。 本课题选用plx9054的c模式工作方式 。plx9054的工作方式可利用模式选择引脚加以选择。对于176pin-PQFP封装的plx9054芯片。模式选择引脚为pin156(mode1),pin157(mode0) 由于M模式使用范围比较小,J模式使用起来控制比较复杂,一般使用C模式。 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 华丽的分界线,说完了9054再说一下PCI规范中的信号线 PCI信号线 1.系统信号 CLK IN:系统时钟信号,为所有PCI传输提供时序,对于所有的PCI设备都是输入信号。其频率最高可达33MHz/66MHz,这一频率也称为PCI的工作频率。 RST# IN:复位信号。用来迫使所有PCI专用的寄存器、定序器和信号转为初始状态。 2.地址和数据信号 AD[31::00]T/S:地址、数据复用的信号。PCI总线上地址和数据的传输,必需在FRAME#有效期间进行。当FRAME#有效时的第1个时钟,AD[31::00]上的信号为地址信号,称地址期;当IRDY#和TRDY#同时有效时,AD[31::00]上的信号为数据信号,称数据期。一个PCI总线传输周期包含一个地址期和接着的一个或多个数据期。 C/BE[3::0]# T/S:总线命令和字节允许复用信号。在地址期,这4条线上传输的时总线命令;在数据期,它们传输的时字节允许信号,用来指定在数据期,AD[31::00]线上4个数据字节中哪些字节为有效数据,以进行传输。 PAR T/S:奇偶校验信号。它通过AD[31::00]和C/BE[3::0]进行奇偶校验。主设备为地址周期和写数据周期驱动PAR,从设备为读数据周期驱动PAR。 3.接口控制信号 FRAME# S/T/S:帧周期信号,由主设备驱动。表示一次总线传输的开始和持续时间。当FRAME#有效时,预示总线传输的开始;在其有效期间,先传地址,后传数据;当FRAME#撤消时,预示总线传输结束,并在IRDY#有效时进行最后一个数据期的数据传送。 IRDY# S/T/S:主设备准备好信号。IRDY#要与TRDY#联合使用,当二者同时有效时,数据方能传输,否则,即为未准备好二进入等待周期。在写周期,该信号有效时,表示数据已由主设备提交到AD[31::00]线上;在读周期,该信号有效时,表示主设备已做好接收数据的准备。 TRDY# S/T/S:从设备(被选中的设备)准备好信号。同样TRDY#要与IRDY#联合使用,只有二者同时有效,数据才能传输。 STOP# S/T/S:从设备要求主设备停止当前的数据传送的信号。显然,该信号应由从设备发出。 LOCK# S/T/S:锁定信号。当对一个设备进行可能需要多个总线传输周期才能完成的操作时,使用锁定信号LOCK#,进行独占性访问。例如,某一设备带有自己的存储器,那么它必需能进行锁定,以便实现对该存储器的完全独占性访问。也就是说,对此设备的操作是排它性的。 IDSEL IN:初始化设备选择信号。在参数配置读/写传输期间,用作片选信号。 DEVSEL# S/T/S:设备选择信号。该信号由从设备在识别处地址时发出,当它有效时,说明总线上有某处的某一设备已被选中,并作为当前访问的从设备。 4.仲裁信号(只用于总线主控器) REQ# T/S:总线占用请求信号。该信号有效表明驱动它的设备要求使用总线。它是一个点到点的信号线,任何主设备都有它自己的REQ#信号。 GNT# T/S:总线占用允许信号。该信号有效,表示申请占用总线的设备的请求已获得比准。 5.错误报告信号 PERR# S/T/S:数据奇偶校验错误报告信号。一个设备只有在响应设备选择信号(DEVSEL#)和完成数据期之后,才能报告一个PERR#。 SERR# O/D:系统错误报告信号。用做报告地址奇偶错、特殊命令序列中的数据奇偶错,以及其他可能引起灾难性后果的系统错误。它可由任何设备发出。 6.中断信号 在PCI总线中,中断是可选项,不一定必须具有。 INTA# O/D:用于请求中断。 INTB# O/D、INTC# O/D、INTD# O/D:用于请求中断,仅对多功能设备有意义。所谓的多功能设备是指:将几个相互独立的功能集中在一个设备中。各功能与中断线之间的连接是任意的,没有任何附加限制。 7.其他可选信号 (1)高速缓存支持信号:SBO# IN/OUT、SDONE IN/OUT (2)64位总线扩展信号:REQ64# S/T/S、ACK65# S/T/S、AD[63::32]T/S、C/BE[7::4]#T/S、PAR64 T/S。 (3)测试访问端口/边界扫描信号:TCK IN、TDI IN、TDO OUT、TMS IN、TRST# IN。 其他的版本的引脚说明,下面说的不是很清楚,建议看上面的,不过可以参考下面的: 所有模式 AD[31:0](Address and Data)地址和数据复用,首先是一个地址段,后面跟着一个或多个数据段,支持突发模式的读写; C/BE[3:0]#(Bus Command and Byte Enables)总线命令和数据使能复用管脚,在AD为地址线的时候作为总线命令,在AD为数据线的时候作为数据使能; DEVSEL#(Device Select)有效的时候表示当前设备被选中,作为输入端口; FRAME#(Cyclone Frame)由主设备驱动,用来表示当前设备已经开始接入,总线开始传输数据。有效:传输数据。无效:完成最后一个数据的传输; GNT#(Grant)用来表示当前接入的设备已经被接受; IDSL(Initialization Device Select)在配置寄存器读写的时候用做片选信号; INTA#(Interrupt A)PCI中断请求; IRDY#(Initiator Ready)说明当前数据有效,可以并要完成传输; LOCK#(Lock)提示有自动操作,需要消耗若干个时钟来完成操作; PAR(Parity)作为AD和C/BE两部分总线的基偶校验,在传输地址的时候PAR要在地址传输完毕后一个时钟周期保持稳定。对于数据段,PAR要在IRDY#或者TRDY#有效以后一个时钟周期保持稳定。一旦PAR数据有效,将保持有效到当前数据或地址段传输结束; PCLK(Clock)系统时钟,9054工作在33MHz; PERR#(Parity Error)用来报告奇偶校验错误,不包括特殊周期; PME#(Power Management Event)唤醒中断; REQ#(Request)请求信号,通知总线判决器,当前设备必须使用总线; RST#(Reset)系统复位; SERR#(System Error)用来报告特殊周期的奇偶校验错误和其他系统错误; STOP#(Stop)要求主系统,停止当前设备的数据传输; TRAY#(Target Ready)目标设备准备完毕,可以传输当前数据; BIGEND#(Big Endian Select) CCS#(Configuration Register Select)低有效的片选信号; EECS(Serial EEPROM Chip Select)选择串行EEPROM; EEDI/DDEO(Serial EEPROM Data In/ Serial EEPROM Data Out)控制串行EEPROM读写数据; EESK(Serial Data Clock)EEPROM读写时钟; ENUM#(Enumeration)突发输出,用来表示一个使用PCI9054芯片的适配器刚刚从一个CPI总线通道里面加入或者移出; LCLK(Local Processor Clock)本地时钟输入; LEDon/LEDin LED控制; LFRAME#(PCI Buffered FRAME# Signal)指示PCI总线的状态; LINT#(Local Interrupt)本地总线中断。输入到9054,低有效,触发一个PCI中断。作为输出,等待到一个触发发生; LRESETo#(Local Bus Reset Out)当PCI9054芯片被复位以后,该管脚可以用来驱动其他芯片的RESET#信号; MDREQ#/MDPAF/EOT# MODE[1:0](Bus Mode)11:M模式;10:J模式;01:保留;00:C模式; TEST(Test Pin)芯片检测管脚,高为检测,低为工作,平时置低; USERi/BACK0#/LLOCKi# 复用管脚 USERo/DREQ0#/LLOCKo# 复用管脚 VDD 电源 VSS 地 C模式: ADS#(Address Strobe)说明地址有效,总线有新设备接入; BLAST#(Burst Last)该信号由本地总线控制,表示最后一个字符的传输; BREQi(Bus Request In)本地总线控制,数据从本地总线输入; BREQo(Bus Request Out)PCI总线控制,数据从PCI总线输出; BTERM#(Burst Terminate)作为输入,表示当前突发操作结束,开始下一个突发地址的读写,和PCI9054内部的可编程等待状态生成器一起使用。作为输出,和READY#一起使用,中断当前突发操作,开始下一个突发操作地址周期; DP[3:0](Data Parity)奇偶校验数据; LA[31:2](Address Bus)地址总线; LBE[3:0]#(Byte Enable)控制数据有效,不同的模式有不同的控制方法; LD[31:0](Data Bus)数据总线; LHOLD(Hold Request)发送要求使用本地总线,本地总线决定分配给当前装置以后,判决器发送LHOLDA信号反馈; LHOLDA(Hold Request)反馈信号; LSERR#(System Error Interrupt Output)系统错误中断; LW/R#(Write/?Read)低电平读,高电平写; READY#(Ready Input/Output)无论主还是从模式,表示数据准备好,有效; WAIT#(Wait Input/Output)作为输入,控制PCI9054插入等待状态。作为输出,PCI9054处于Ready状态。 J模式: ADS#(Address Strobe)说明地址有效,总线有新设备接入; ALE(Address Latch Enable)地址传输时有效,数据传输时无效; BLAST#(Burst Last)该信号由本地总线控制,表示最后一个字符的传输; BREQi(Bus Request In)本地总线控制,数据从本地总线输入; BREQo(Bus Request Out)PCI总线控制,数据从PCI总线输出; BTERM#(Burst Terminate)作为输入,表示当前突发操作结束,开始下一个突发地址的读写,和PCI9054内部的可编程等待状态生成器一起使用。作为输出,和READY#一起使用,中断当前突发操作,开始下一个突发操作地址周期; DEN#(Data Enable)和DT/R#连接在一起使用,用来控制和本地总线连接的数据收发器; DP[3:0](Data Parity)奇偶校验数据; DT/R#(Data Transmit/Receive)与DEN#连接在一起使用,有效的时候PCI9054接收数据; LA[28:2](Local Address Bus)本地总线地址; LAD[31:0](Address/Data Bus)地址周期:该总线包括了物理地址总线的上30位。数据周期:该总线传输32位数据; LBE[3:0]#(Byte Enable)控制数据有效,不同的模式有不同的控制方法; LHOLD(Hold Request)发送要求使用本地总线,本地总线决定分配给当前装置以后,判决器发送LHOLDA信号反馈; LHOLDA(Hold Request)反馈信号; LSERR#(System Error Interrupt Output)系统错误中断; LW/R#(Write/Read)低电平读,高电平写; READY#(Ready Input/Output)无论主还是从模式,表示数据准备好,有效; WAIT#(Wait Input/Output)作为输入,控制PCI9054插入等待状态。作为输出,PCI9054处于Ready状态。 |
|
|
地板#
发布于:2013-07-02 17:38
转载请注明出处:http://bbs3.driverdevelop.com/read.php?tid-125690-page-e.html#a
PCI9054内部状态机给用户提供了三种传输方式:PCI Initiator传输方式(主模式)、PCI Target(从模式)传输方式以及PCI DMA传输方式。 图片:pci9054.jpg PCI Initiator(主模式)传输方式下,PCI9054成为PCI Bus端的主机,同时是Local Bus端的从机,由Local Bus端主动发起数据传输,PCI9054被动后再主动向PCI Bus发起传输。 主模式操作就是允许本地的cpu访问pci总线的内存和I/O接口。模式选择必须在pci命令寄存器中使能给出。如pci主设备存储器和i/o范围寄存器,pci基址寄存器,主设备配置和命令寄存器等。主模式操作包括pci主设备存储器和i/o译码,pci主设备存储器和i/o配置访问,pci双地址周期访问,pci主设备存储器写并无效等操作。 PCI Target(从模式)传输方式下PCI9054的角色刚好与PCI Initiator方式相反,成为PCI Bus端的从机以及Local Bus端的主机。而在PCI DMA方式下PCI9054同时是PCI Bus端和Local Bus端的主机。 从模式就是允许pci总线上的主控设备访问局部总线上的plx9054的配置寄存器和内存,支持突发和单周期动模式传输。Plx9054通过16字长的pci从设备度FIFO和32字长的pci从设备写FIFO,来支持从pci总线到局部总线上的突发和单周期存储器映射访问和i/o映射访问。Pci基址寄存器用来设定pci存储器和i/o地址空间。从模式操作包括延时读操作,提前读操作等。这种模式有非复用的地址和数据总线,电路设计,时序和控制相对简单。 DMA模式 Plx9054 有一个强大的双通道分散/收集dma控制器,支持pci主机和适配器内存的高效突发传输。两个独立的dma通道能从局部总线到pci总线和从pci总线到局部总线传输数据。每个通道包括一个dma控制器和一个专用双向FIFO。两个通道都支持块传输,分散/收集传输,应用或者不用EOT传输等。模式选择在plx9054 成为一个pci总线主设备之前由主设备使能位(pcicr[2])使能。另外,两个dma通道都能编程实现8,16,32bit局部总线带宽,使能/使无效内部等待周期,使能/使无效局部总线突发传输;执行pci存储器写并无效操作;设置pci中断(inta)或看是否本地中断(i.int)等 对于数据传输模式的选择,主要是根据硬件制作者对硬件设计的需求而定的。当硬件制作者选择有pci发起控制的时候,则9054应该为pci的工作目标,这时候应选择9054的pci target方式。当硬件制作者选择由本地端发起控制的时候 ,9054 成为主控设备,而pci则成为9054的工作目标,这种情况应选择婆4的pci master方式。而在数据进行dma传输的时候,9054 对pci端和local端都是主控设备,本身就具有dma控制器,完全可以脱离pc机进行dma控制,这时候,9054就工作在dma传输方式。本课题就是由pc机发起控制请求向外部sram读写数据的,所以选择plx9054从模式(pci target)传输方式。在这种模式下,plx9054对pci端是目标设备,对local端则是主控设备, PCI9054提供了两个独立的可编程DMA(Direct Memory Access,直接存储器存取)控制器;每个通道均支持块和分散/集中的DMA方式;在PCI总线端支持32位的数据位宽,时钟速率达到33MHz;本地端可以编程实现8、16或32位的数据宽度;传输速率最高可达132MB/s;本地总线端时钟最高可达50MHz支持复用/非复用的32位地址数据。 在PCI9054内部分别提供了这三种传输方式下的内部寄存器,方便设计者来对每一种传输方式进行配置。 |
|
|
地下室#
发布于:2013-07-02 17:44
预留
|
|
|
5楼#
发布于:2013-07-02 17:46
[sell=1,money][/sell]PCI9054笔记.pdf
方便交流,建立了FPGA+PCI群,以后技术要点还是要发到论坛上来。 注明:FPGA+PCI 搞活驱网才是王道。天天扯淡的就别进来了。 群:187471817 资料已经更新到PCI PCIEX4 资料出售地址: http://weixinstrong.taobao.com/ |
|
|
6楼#
发布于:2013-07-04 14:15
拜读看看
|
|
7楼#
发布于:2013-07-05 17:50
接下来我们应该了解PCI配置空间。
PCI空间包含了我们我们必须的访问信息。比如mem base addr ,IO base addr .如果你是做黑客的话你可以用到扩展ROM base addr,自己写个PCI板卡BIOS,在BIOS运行完后接管,这个时候你就可以胡作非为了,比如拦截硬盘访问,植入带有操作系统的驱动,这就是很多人说的360都杀不掉的木马,国外有开源项目。扯太远了。还有INT中断啥的,对了还有关键的一个PID VID,系统根据INF加载驱动就是通过这个,还有就是驱动的编写。 我们一展美图 DW | Byte3 | Byte2 | Byte1 | Byte0 | Addr ---+---------------------------------------------------------+----- 0 | Device ID | Vendor ID | 00 ---+---------------------------------------------------------+----- 1 | Status | Command | 04 ---+---------------------------------------------------------+----- 2 | Class Code | Revision ID | 08 ---+---------------------------------------------------------+----- 3 | BIST | Header Type | Latency Timer | Cache Line | 0C ---+---------------------------------------------------------+----- 4 | Base Address 0 | 10 ---+---------------------------------------------------------+----- 5 | Base Address 1 | 14 ---+---------------------------------------------------------+----- 6 | Base Address 2 | 18 ---+---------------------------------------------------------+----- 7 | Base Address 3 | 1C ---+---------------------------------------------------------+----- 8 | Base Address 4 | 20 ---+---------------------------------------------------------+----- 9 | Base Address 5 | 24 ---+---------------------------------------------------------+----- 10 | CardBus CIS pointer | 28 ---+---------------------------------------------------------+----- 11 | Subsystem Device ID | Subsystem Vendor ID | 2C ---+---------------------------------------------------------+----- 12 | Expansion ROM Base Address | 30 ---+---------------------------------------------------------+----- 13 | Reserved(Capability List) | 34 ---+---------------------------------------------------------+----- 14 | Reserved | 38 ---+---------------------------------------------------------+----- 15 | Max_Lat | Min_Gnt | IRQ Pin | IRQ Line | 3C ------------------------------------------------------------------- 这个只是PCI空间256的前64字节。4*16 PCI有三个相互独立的物理地址空间:设备存储器地址空间、I/O地址空间和配置空间。配置空间是PCI所特有的一个物理空间。由于PCI支持设备即插即用,所以PCI设备不占用固定的内存地址空间或I/O地址空间,而是由操作系统决定其映射的基址。 系统加电时,BIOS检测PCI总线,确定所有连接在PCI总线上的设备以及它们的配置要求,并进行系统配置。所以,所有的PCI设备必须实现配置空间,从而能够实现参数的自动配置,实现真正的即插即用。 PCI总线规范定义的配置空间总长度为256个字节,配置信息按一定的顺序和大小依次存放。前64个字节的配置空间称为配置头,对于所有的设备都一样,配置头的主要功能是用来识别设备、定义主机访问PCI卡的方式(I/O访问或者存储器访问,还有中断信息)。其余的192个字节称为本地配置空间,主要定义卡上局部总线的特性、本地空间基地址及范围等。 PCI设备有三个空间——内存地址空间、IO地址空间和配置空间。由于PCI支持即插即用,所以PCI设备不是占用固定的内存地址空间或I/O地址空间,而是可以由操作系统决定其映射的基址。 那我们顺便看一下PLX9054对应的PCI和本地配置空间 图片:9054_EEPROM.png 忘了说了,PLX9054的配置信息是存到EEPROM中的。我们通过PLXMon工具来配置。 从图上看以出来主要分2部分,第一部分是PCI配置空间,第二部分是本地的配置空间。 是不是怀疑PCI配置空间如此至少,谁让人家是即插即用那。我们来一个对号入座。比如PCI配置空间的0X3C出有INT中断,呵呵 果真如此吧。PCI配置空间和PLXMon配置空间的偏移都是这个。 |
|
|
8楼#
发布于:2013-07-05 18:14
PCI9054有SPACE0 SPACE1连个地址空间,都可以配置成IO和存储器空间。这两个类似但是还是有
差别的。 1 存储空间支持0-4G空间映射, IO只支持0-256字节映射 2 存储空间可以8/16/32位总线位宽操作,IO只支持32位 3 存储空间支持单一周期和突发模式读写。 IO只支持单一周期读写。 根据自己的需求选择上面两种方式进行操作。如果是数据流最好是存储器空间,采用DMA方式, 进行参数配置和寄存器读取采用IO空间。 对于上位机驱动IO和存储器空间自动分配,不会重叠,但是对于FPGA我们要避免地址重叠。 我们接下来介绍IO空间操作和存储器空间操作(DMA) 一 先说IO空间操作吧 这个操作中,PLX5054对于PCI总线来说是从设备,对于FPGA来说是主设备。可以这样记住,左边:PCI是主设备----plx9054是从,右边 PLX9054是主--FPGA是从设备。 即PCI局部总线端 或者其他设备作为主设备发起PCI9054的IO操作,此时PCI9054的局部总线端是目标设备。同事PCI9054的本地总线又作为本地总线端 向FPGA发起IO操作,FPGA作为目标设备接收总线控制。 图片:PCI Target Read.png Read过程 图片:PCI Target Write.png Write过程 图片:PCI9054目标设备Local总线存取过程.png PCI9054目标设备Local总线存储过程。 上图可以看出存储过程主要是进行地址映射的过程,首先进行Local端和PCI端的寄存器映射,再通过PCI9054内部的两个目标设备FIFO进行存取 ,主机根据寄存器的值既可以得到映射位置上面的数据。 上面的过程主要对应如下时序: 1 主设备发起Local总线占用请求LHOLD信号,FPGA应答产生LHOLDA信号运行该请求。 2 主设备获得运行后,发起起始信号ADS#,并提供Local总线读写方向信号LW/R#以及地址信号LA[31:2] 3 fpga获得其实信号后,发出总线准备好信号READY#,并执行相应操作。 4 主设备完成操作后,发起结束信号BLAST#,FPGA捕获后改变READY#状态。 5 主设备捕获READY#状态后,释放Local总线占用信号LHOLD。 FPGA应答线释放,结束操作。 |
|
|
9楼#
发布于:2013-07-06 09:10
IO模式的FPGA代码分析:
// la[13:0] == 14'b1 ,实现定义好的地址协议,用于判断操作类似类似,联合以下信号 // ADS#、LW/R、LBE#和LA(控制模块将对以上信号锁存和译码来确定操作目标和操作类型)本程序未使用LBE module WITH_PCI_LED_RUN( clkin,//时钟 lrst,//RST ld, //本地总线的数据信号 ads,//开始信号 lwr,//低电平读,高电平写 ready,//总线准备好信号 blast,//操作结束信号 lhold, //Local总线占用请求信号 lholda,//Local总线占用允许信号 la, //本地总线的地址信号 ccs,//低有效的片选信号 bterm,//当前突发操作结束 led //OUTPUT控制LED的 ); input clkin; input lrst,ads,lwr,blast,lhold; input [13:0] la; output ready,lholda,ccs,bterm; input [31:0] ld; output [3:0] led; reg [3:0] led; reg [24:0] count; reg [1:0] state; wire clk; reg lholda; wire ready,ccs,bterm; reg readyflag; reg [7:0] LEDByControl; //--计数分频------------------------------------- always @ (posedge clkin) count <= count+1; assign clk = count[24]; //--LED控制-------------------------------- always @ (posedge clk) begin case(LEDByControl) 8'd1: led <= 4'b0001; 8'd2: led <= 4'b0010; 8'd3: led <= 4'b0100; 8'd4: led <= 4'b1000; 8'd5: case(state) 2'b00: led <= 4'b0001; 2'b01: led <= 4'b0010; 2'b10: led <= 4'b0100; 2'b11: led <= 4'b1000; endcase default:led <= 4'b0000; endcase end always @ (posedge clk) state <= state+1; //--PCI本地控制器------------------------------- always @(posedge clkin) lholda <= lhold; always @(posedge clkin or negedge lrst) begin if(!lrst) begin readyflag <= 1'b0; LEDByControl[7:0] <= 8'b0; end else if(!ads & lwr & blast & la[13:0] == 14'b1)//ads为低,blast 为高代表是一个起始信号。(低电平有效) begin readyflag <= 1'b1; end else if(ads & lwr & blast & readyflag == 1'b1 & la[13:0] == 14'b1)// 开始阶段到取数据阶段的一个中间状态,可以进行相应操作 begin readyflag <= 1'b1; end else if(ads & lwr & !blast & readyflag == 1'b1 & la[13:0] == 14'b1) //取数据。 begin LEDByControl[7:0] <= ld[31:24]; readyflag <= 1'b0; end else begin LEDByControl[7:0] <= LEDByControl[7:0]; readyflag <= 1'b0; end end //----------------------------------------------------- assign ccs = 1'b1; assign bterm = 1'b1; assign ready = 1'b0; endmodule 再详细的说明等拿到板卡在调试。 下图是片上逻辑分析仪的时序图 图片:时序图.png |
|
|
10楼#
发布于:2013-07-06 09:18
下一个就是DMA模式
|
|
|
11楼#
发布于:2013-07-11 11:03
拜读啦,谢谢分享!
|
|
12楼#
发布于:2013-07-12 19:54
谢谢楼主分享经验,学习了!
|
|
13楼#
发布于:2013-07-13 23:15
谢谢,不错。
|
|
14楼#
发布于:2013-07-15 11:18
thanks a lot
|
|
15楼#
发布于:2013-07-18 16:25
图片:IMG_20130718_133351.jpg 图片:IMG_20130718_133356.jpg 图片:IMG_20130718_133404.jpg 图片:IMG_20130718_133445.jpg 淘宝地址: 驱动会员成本价:60元一片,邮费自付。 http://item.taobao.com/item.htm?spm=686.1000925.1000774.11.dP7Byo&id=26501560516 四层板,15*11cm 斜边+金手指。 |
|
|
16楼#
发布于:2013-07-18 16:37
近期比较忙,过几天,成本价出售 成品PCI卡
在这里插入一个硬件调试的步骤。 因为做的新板卡EEPROM是空白的所以在进入系统时候会进不去,也就是在BIOS启动后,就卡在那里了,屏幕左上角会有一个光标不停的闪烁。 恭喜你,这是成功的最后一步了。至少我的系统是这样的。 方法有两个 1 使用编程器烧写EEPROM,记得是16bit的。(我用编程器正常烧写了还是不行,没有天理) 2 采用一般的路子, 把TEST管脚拉高并且把EEDIO管脚拉低时能进入系统的,原因是TEST拉高进入测试模式,PCI9054相当于不工作,在出现进度条时候 把TEST拉低。这样进入之后系统提示新硬件,然后就是安装官方驱动(要求重启,上面的步骤再来一次),再就是启动PLXMON烧写eeprom。 正常烧写了EEPROM后,设置TEST管脚一直为低,,就可以使用正常启动系统了。以后 以后的以后都可以正常启动。 |
|
|
17楼#
发布于:2013-07-26 14:06
受益良多 希望大大可以持續更新此文...
|
|
18楼#
发布于:2013-07-30 16:36
用户被禁言,该主题自动屏蔽! |
|
19楼#
发布于:2013-07-30 19:02
正在学9054的开发呢,看看。
|
|
上一页
下一页