原创 2-Configuration Write

2010-5-31 10:59 1831 6 6 分类: 通信

Configuration Write


(0)       第一个时钟周期前:idle状态


在第一个时钟周期来临之前,总线处于idle状态。在statemachine module中,当pci_frame_l变为低电平有效时,不依赖于时钟驱动,pci_ad_en使能有效。


(1)       第一个时钟周期:从idle状态转入conwait状态


紧跟第一个时钟周期上升沿后,在glue module中,由于pci_ad_en有效,pci_addr锁存pci_adcbe_reg_l锁存pci_cbe_lidsel_reg锁存pci_idsel。实际上,此时,pci_addr锁存了所要读取的配置空间的寄存器地址,cbe_reg_l锁存了读配置空间命令,而idsel_reg则锁存了pci_idsel信号。


config_mux module中,由于cbe_reg_l锁存了写配置空间命令,idsel_reg变为高电平有效,不依赖于时钟驱动,cfg_en使能有效。同样不依赖于时钟驱动,cfg_en使能有效,且当pci_irdy_l也变为低电平有效时,根据pci_addr[7:0]锁存的寄存器地址置相应地寄存器写使能有效。因此,当pci_irdy_l在第一个时钟周期变为有效时,即完成了使所要写入的寄存器写使能有效。


statemachine module中,由于总线状态已为conwait状态,因此不论pci_frame_l是否撤销,pci_ad_en使能变为无效。同时,置dts_oe有效。又因为是写寄存器,因此置pci_ad_oe使能无效。


(2)       第二个时钟周期:从conwait状态转入conwait2状态


statemachine module中,置devsel_l有效。


config_mux module中,若此时主设备在pci_ad上放上要写入的数据,pci_cbe_l上放上字节使能信号,因为要写入的寄存器使能信号已经有效,因此在时钟驱动下完成写寄存器操作。若此时主设备依然保持pci_ad上是要写入的寄存器地址,pci_cbe_l上是写配置空间命令,则继续重复上一个时钟周期的操作,使相关的寄存器写使能信号有效。但是我估计按照PCI协议的要求,该时钟周期主设备应该在总线上驱动数据和字节使能信号。(貌似应该在pci_irdy_l有效时即开始驱动数据和字节使能)


  glue module中,由于pci_ad_en使能无效,则pci_addrcbe_reg_lidsel_reg锁存值保持不变。仍然为第一个时钟周期锁存的值,不论pci_frame_l如何变化。


(3)       第三个时钟周期:从conwait2状态转入con状态


紧跟第三个时钟周期上升沿之后,在statemachine module中置trdy_l低电平有效,以期在下一个时钟周期完成数据传输操作。因为不支持猝发写模式,因此必须检测pci_frame_l信号是否撤销。若pci_frame_l已经撤销无效,则在下一个时钟周期完成数据传输后即完成操作;若pci_frame_l仍然保持低电平有效,则置stop_l低电平有效,以期主设备在下一个时钟周期完成传输操作时撤销pci_frame_l无效。


config_mux module中同上个时钟周期一样继续进行写寄存器操作。


(4)       第四个时钟周期:从con状态转入backoff状态


紧跟第四个时钟周期上升沿之后,若pci_irdy_l低电平有效,则此时pci_irdy_l, pci_trdy_l在上升沿处同时有效,完成了数据传输操作,紧接着置devsel_ltrdy_lstop_l信号无效;若pci_irdy_l高电平无效,则需插入等待周期,置devsel_ltrdy_l低电平有效,原地等待,以期在下个时钟周期pci_irdy_l低电平有效完成数据传输。同样,因为期望在下一时钟周期完成数据传输,因此也要检测pci_frame_l是否撤销无效,并相应地置stop_l信号有效或无效。


(5)       第五个时钟周期:从backoff状态转入idle状态


在本时钟周期,写配置空间寄存器数据传输操作已经完成,再次置devsel_l, trdy_l, stop_l无效。同时,置dts_oe无效。


 


(待补充奇偶校验的相关信号与操作。。。)

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /3 下一条