PCI slot as an output

Thread Starter

boby4u

Joined Jun 1, 2007
26
hello
Im working on a project to run a grafical lcd with camputer.
I WANT TO USE A DRIVER to produce RGB colors for this lcd.
it has 19 digital inputs.
now the question is this:
I wanted to use the PCI slot of my mainboard as an output and write a program in assembly to send the instruction to my grafical driver through this slot first of all is it possible from your Idea if so what program should I use to write my instructions in and send to pci?

beenthere

Joined Apr 20, 2004
15,819
This is a big project. In order to use an I/O card slot to run a display, you will have to design an interface circuit to go between the card slot and that display. It will have to recognize data sent to a specific address in the range of I/O adresses. And it will need to be able to convert the data to electrical signals compatible with the LCD display.

The driver is the program in the computer that will be able to send the data to the I/O card. It would be most easily written in assembler and done such that it can be accessed by the operating system in a standard fashion. This is pretty complex, but if the code has to be a driver, then that is the way to do it (and there are many details about this I have not gone into).

Writing an executable to send the data to the interface is a lot less complex, although sending data to an I/O port is not possible with many high level languages (they use drivers for this function). Even with VB, it is possible to use inline assembler code to send the data. This would be the simplest approach.

n9352527

Joined Oct 14, 2005
1,198
As beenthere said above, this is a complex project. It is not easy to interface to PCI slot. The easiest way on the hardware side is probably to get an FPGA and obtain a suitable PCI core to go with it.

Developing the necessary PCI driver is another big undertaking. If you've never done hardware driver before (what OS are you thinking of? Windows, Linux, DOS?), then the chance of success within a reasonable time frame is pretty slim.

I'm not trying to discourage you, just informing you of the obstacles ahead on this route. If you are not particularly bothered with PCI and the bandwidth of the display is not too high, then I suggest you look at other interfaces, such as USB, which would be easier to develop.

a_kent

Joined Jun 12, 2007
30
As has been said, in the modern day PC, this is very difficult.

I designed a PCI co-processor for a laser plotter many moons ago (Windows 98 days, which was much easier, so they say), and while the hardware (Altera FPGA PCI I/F) was rather easy, the BIOS enumeration and driver was NOT.

Once the driver was written, then we had to be able to talk to the driver. This was another PITA.

The overhead (read latency) was hard to reduce for our application..Such is the life of dealing with Windoze...

Best,
Kent

Thread Starter

boby4u

Joined Jun 1, 2007
26
thanks for your guidance.
I have a still background & poniter that circles
all the time and I want the image be continues.
first of all I thought of an lpt port for this project
and because of being parallel the lpt port goes directly to the driver
but I doubt if it can handle a 9 inch lcd.
I have seen befor that connecting 240x128 LCD(graphical) via lpt
is possible.it would be great if I could connect my 9"
to it.

usb speeds are as follows
• High Speed - 480Mbits/s
• Full Speed - 12Mbits/s
• Low Speed - 1.5Mbits/s
if I use usb then I am sure that usb2 will work but the output
is serial and I should change it to parallel with a microcontroller.
I dont still know what low language program should I use
to enter my assemble code with the output of exe file to launch
whenever I want.
now I am going to interface usb or lpt instead of PCI.

THANKS
BOBY4U

n9352527

Joined Oct 14, 2005
1,198
Give us more info. 9" LCD, resolution? colour depth? refresh rate?

Most low level programming on the PC side is nowadays done with C. What OS are you using?

Thread Starter

boby4u

Joined Jun 1, 2007
26
hello
resolution=800*600
biitrate=16 bit

n9352527

Joined Oct 14, 2005
1,198
That'll give 7.68Mb for one frame. If you're working with standard 60 frames a second, that is going to be more than USB could handle.

a_kent

Joined Jun 12, 2007
30
All PC parallel ports these days have huge series resistors, or the equivalent in the design, so high speed is difficult to impossible, IF you can get around the OS control of them.

Back in the early days of PC's, I wrote a direct to port driver, called PRPRL, which would HOSE data over the parallel port. This was back in the days of printer ports using real drivers, where you could talk directly to the port from the processor.

I could max get 1mbytes/sec over this port.

Good luck with newer hardware, and having it be consistent between hardware.
Kent

Similar threads