Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

conventional PCI transaction during start-up. How it works ?

Status
Not open for further replies.

ccchang

Junior Member level 2
Joined
Nov 14, 2007
Messages
21
Helped
1
Reputation
2
Reaction score
1
Trophy points
1,283
Location
Penang Island, Malaysia
Activity points
1,481
Hi

I had read some part of the Mindshare book about PCI system architecture. But I do not really understand what happen during PC start-up. In order to read the Vendor ID and Device ID, the data transaction also need to follow the timing diagram as shown in below ?

I do not have the device driver yet, but i want the PC able to detects the attached PCI device. Is by detecting the Vendor ID and Device ID are well enough for PC to know there is a PCI device plugged in and assign some memory space for the device ? (I will do scanning to obtain the assigned memory space later.)

Thanks and best wishes,
--ccchang
 

Re: conventional PCI transaction during start-up. How it wor

Yes. Vendor ID and Device ID are enough.

Copied from wikipedia
"All PCI devices are in an inactive state upon system reset, they will not have any addresses assigned to them by which the operating system or device drivers can communicate with them. Either the BIOS or the operating system geographically addresses the PCI slots (e.g. the first PCI slot, the second PCI slot, or the third PCI slot, etc., on the motherboard) through the PCI controller using the per slot IDSEL signals."

"there is no direct method for the BIOS or OS to determine which PCI slots have devices installed (nor the functions the device implements) the PCI bus(es) must be enumerated. Bus enumeration is performed by attempting to read the Vendor- and Device ID register for each combination of bus number and device number, at the device's function #0."

"If there is no device that implements the function zero (ie. vendor and device ID registers), the bus master performs an abort and returns all 1's in binary (F's in hexadecimal). All 1's is an invalid VID/DID value, thus a device driver can tell that the specified combination bus/device/function (B/D/F) does not exist."
 

Hi MicroKernel,

Thanks for the reply.
Are the device ID and Vendor ID stored in memory location 0000H? Mean that during address phase, Bios will send 0000H to the device and read the VID and DID stored at this location.
I doing the hardware implementation at this moment, but still unable to read the vendor ID and Device ID. Do not know what have I make wrong, can please give me some guideline ?

Thanks in advance.

Best wishes,
--ccchang
 

Re: conventional PCI transaction during start-up. How it wor

yes, device ID and vendor ID are located at offset 0 in the configuration space for that device. Don't confuse that with absolute 0 address.

Your question is not clear. You should provide more details about what are you trying to do.

Are you doing hardware implementation in Verilog/VHDL etc. for some FPGA?
or
Do you have standard PCI chip (say from PLX) and are interfacing your device with that?
or
you have a full PCI slave device and am building a system using that standard device?
or
you have a full system board and am trying to bring that up?

More the details you provide better support you may get.
 

conventional PCI transaction during start-up. How it wor

Hi MicroKernel,

Thanks for the reply. Sorry for the late reply. I take some time to understand more about the PCI protocol before posting question here.

Firstly, I using Lattice CPLD to implement the PCI interface from using schematic entry. I have implement the logic for the timing diagram shown below.
1.) Can I assume that the PC BIOS will sends AD[31:0]=0000H, C/BE#[3:0]=1010H (configuration read) and other signals follow the the timing diagram to read the device ID and Vendor ID ?

2.) What I have to do with the IDSEL signal? The IDSEL signal in not included in the timing diagram. From my understanding, the PCI slot on the motherboard already tie the IDSEL signal to one of the AD[31:11]. Therefore during PC start-up, the PC BIOS will set IDSEL =HIGH and read back the AD[31:11] for slot identification. Am I right ?

Thanks in advance.
Best Wishes,
--ccchang
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top