LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Advertise
  • Mirrors
  • Logos
  • Contact us
  • Job Opportunity
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Pci > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    From: Otger Ballester<otger@i...>
    Date: Wed Feb 9 12:07:39 CET 2005
    Subject: [pci] BAR0 and P_BA0
    Top
    Hi Miha,
    First of all thanks for your time and help. Let me explain my
    testbench, maybe you find something wrong:
    -Guest only exist, it do nothing (Sometimes I read Configuration
    Space reg's from GUEST cpu to check if what Host cpu shows about Guest
    is the same). In a next stage of my testbench I'll write to HOST.
    -Both HOST and GUEST have a 128 KB memory (one for each) only
    available from Avalon Master with Avalon @ 0x0 (2 pci images and 2 WB
    images for both HOST and GUEST)
    -In Avalon-WB wrapper, Avalon Slaves pass to WB slave only 20 LS
    address lines, 12 MS lines are set to 0.
    -I've put a Nios II for Host (cpu_HOST) and one for Guest (cpu_GUEST)

    cpu_HOST tasks(notation: write_XX(address,offset,data)
    read_XX(address,offset)
    XX:#of bits to write/read
    )
    -Set PCI Master operation to HOST ( write_16(0x04,0x0,0x04))
    -Scan PCI bus (Clear CNF_ADDR. I do a bucle of 20 repeats which
    write to CNF_ADDR and read CNF_DATA (if CNF_DATA content differs from
    0xFFFF_FFFF a device is present) increment device field of CNF_ADDR. I
    store device field of CNF_ADDR for detected devices) (I've changed
    pci_AD line connected to IDSEL to check if it works, and it does)
    -Device address requirements(I do next for each detected device,
    as I have only one device it does one time only.I've connected
    pci_AD[12] to GUEST IDSEL):
    clear CNF_ADDR (write_32(0x01E0,0x0,0x0)
    write CNF_ADDR (write_32(0x01E0,0x0,0x840) (Device field 0x01,
    Offset field 0x10(Guest BAR0))
    write CNF_DATA (write_32(0x01E4,0x0,0xFFFFFFFF)
    read CNF_DATA (read_32(0x01E4,0x0)) (I get 0x00000000)
    write CNF_ADDR (write_32(0x01E0,0x0,0x860) (Device field 0x01,
    Offset field 0x10(Guest BAR1))
    write CNF_DATA (write_32(0x01E4,0x0,0xFFFFFFFF)
    read CNF_DATA (read_32(0x01E4,0x0)) (I get 0x00000000)

    Regards,
    Otger Ballester

    Miha Dolenc wrote:

    >OK, thats not it then.
    >Can you send me the sequence of operations you perform
    >to write/read guest BARs? (write offset data, read offset data, ....).
    >Maybe I can determine something.
    >I also need to know which PCI AD line you connected to GUEST IDSEL input.
    >If this won't help, we'll have to exchange some waveforms ;)
    >
    >Regards,
    >Miha Dolenc
    >
    >----- Original Message -----
    >From: "Otger Ballester" <otger@i...>
    >To: "Discussion list about free, open source PCI IP core"
    ><pci@o...>
    >Sent: Wednesday, February 09, 2005 10:14 AM
    >Subject: Re: [pci] BAR0 and P_BA0
    >
    >
    >
    >
    >>Hi!
    >>
    >>To do my testbench I've done some things:
    >> -Have a copy of design files for my Host and a copy for my Guest
    >> -Rename all GUEST modules from XXX to XXX_guest
    >> -Rename all GUEST files to XXX.v to XXX_guest.v (and change `include
    >>... of all files)
    >>
    >>Simulating with Modelsim I read GUEST class code from GUEST cpu and get
    >>0x068000 which stands for Other Bridge device, and HOST class code from
    >>HOST cpu getting 0x060000 (Host Bridge), so I think my Testbench works
    >>fine in this aspect.
    >>
    >>Regards,
    >>Otger Ballester
    >>
    >>Miha Dolenc wrote:
    >>
    >>
    >>
    >>>Hi!
    >>>
    >>>As this basic operations work in numerous applications already,
    >>>there must be something wrong with the testbench.
    >>>I wonder how you compile both pci bridge instances into the same
    >>>
    >>>
    >testbench
    >
    >
    >>>environment with different defines.
    >>>Can it be that both of the instances come up as HOST when you start
    >>>the simulation (HOST instance overwrites GUEST when compiled)?
    >>>That could explain that you cannot write to registers from the PCI Bus.
    >>>You can easily determine if the instance is host, if you read the device
    >>>class register.
    >>>(should be "host bridge" for host and "other bridge" for guest - I don't
    >>>remember the numbers from the top of my head - they are in
    >>>the PCI spec.).
    >>> >>>Regards, >>>Miha Dolenc >>> >>>----- Original Message ----- >>>From: "Otger Ballester" <otger@i...> >>>To: <pci@o...> >>>Sent: Tuesday, February 08, 2005 6:45 PM >>>Subject: [pci] BAR0 and P_BA0 >>> >>> >>> >>> >>> >>> >>>>Hi all, >>>> >>>> In my final career project I'm integrating Opencores PCI IP Core >>>>into an Altera Nios system. To simulate it I've done a testbench with >>>>both a guest and a host with a Nios II for each one and a pci arbiter >>>>(I want to implement a Host, but I need a Guest for testbench >>>>purpouses). At the moment I can access (from Host) Guest Configuration >>>>space with type0 configuration cycles (read and write), and of course I >>>>can access Guest and HOST Configuration Space from themselves. >>>> >>>> I've made a wrapper avalon wishbone so I can instantiate the core with >>>>a Nios II. Now I'm developing boot software for Host bridge. I'm >>>>following instructions of chapter "Initialization for HOST >>>>implementation" (3.1.2, page 12). I've successfully followed the first >>>>two steps but I'm stuck at step 3. I have to determine all connected PCI >>>>device's address space requirements following instructions from PCI >>>>Local bus spec's rev 2.2 (page 204): >>>> -write 0xFFFF_FFFF to GUEST BARx >>>> -read GUEST BARx (I allways get 0x0000_0000) >>>> -clear codification bits (3:0 bits for memory mapping, bits 1:0 for >>>>I/O space) >>>> -invert all 32 bits (logical NOT) >>>> -increment by 1 >>>>As I get 0x0 when I read GUEST BARx, I allways get 0 for address space >>>>requirements. >>>> >>>>My configuration define's for GUEST bus bridge are: >>>>//`define NO_CNF_IMAGE >>>>`define PCI_NUM_OF_DEC_ADDR_LINES 20 >>>>`define PCI_AM0 24'hffff_f0 >>>>`define PCI_AM1 24'hfff0_00 >>>>`define PCI_BA0_MEM_IO 1'b0 >>>>`define PCI_BA1_MEM_IO 1'b0 >>>>`define PCI_TA0 24'h0000_0 >>>>`define PCI_TA1 24'h0000_0 >>>>`define PCI_AT_EN0 1'b0 >>>>`define PCI_AT_EN1 1'b1 >>>>`define ADDR_TRAN_IMPL >>>> >>>>Both Guest and Host WB Master are connected to a 128KB memory, so I need >>>>an address space of 128KB at least. >>>> >>>>Can somebody help me? I don't know what I'm doing wrong. >>>>Thanks in advance >>>>_______________________________________________ >>>>attachment.htm >>>> >>>> >>>> >>>> >>>_______________________________________________ >>>attachment.htm >>> >>> >>> >>> > > >---------------------------------------------------------------------------- >---- > > > > >>_______________________________________________ >>attachment.htm >> >> > >_______________________________________________ >attachment.htm > > -------------- next part -------------- An HTML attachment was scrubbed... URL: attachment.htm

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.