PCI slot as an output

Discussion in 'Embedded Systems and Microcontrollers' started by boby4u, Jul 24, 2007.

  1. boby4u

    Thread Starter Member

    Jun 1, 2007
    26
    0
    hello
    I`m 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?
     
  2. beenthere

    Retired Moderator

    Apr 20, 2004
    15,815
    282
    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.
     
  3. n9352527

    AAC Fanatic!

    Oct 14, 2005
    1,198
    4
    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.
     
  4. a_kent

    Active Member

    Jun 12, 2007
    30
    0
    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
     
  5. boby4u

    Thread Starter Member

    Jun 1, 2007
    26
    0
    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 don`t 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
     
  6. n9352527

    AAC Fanatic!

    Oct 14, 2005
    1,198
    4
    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?
     
  7. boby4u

    Thread Starter Member

    Jun 1, 2007
    26
    0
    hello
    resolution=800*600
    biitrate=16 bit
     
  8. n9352527

    AAC Fanatic!

    Oct 14, 2005
    1,198
    4
    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.
     
  9. a_kent

    Active Member

    Jun 12, 2007
    30
    0
    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
     
Loading...