[ / / / / / / / / / / / / / ] [ dir / b2 / choroy / dempart / hkpol / otter / polru / vichan / zooscat ][Options][ watchlist ]

/tech/ - Technology

You can now write text to your AI-generated image at https://aiproto.com It is currently free to use for Proto members.
Email
Comment *
File
Select/drop/paste files here
Password (Randomized for file and post deletion; you may also set your own.)
* = required field[▶ Show post options & limits]
Confused? See the FAQ.
Expand all images

File (hide): 1a602f54172624d⋯.jpg (36.25 KB, 450x290, 45:29, cpu.jpg) (h) (u)

[–]

 No.1069573>>1069599 >>1069607 [Watch Thread][Show All Posts]

I believe it might be possible to use a regular PC motherboard for GPIO by hooking up an address decoder to the address bus and toggling a data pin while writing to or reading from a certain memory address. Unless there's some trickery I'm not aware of, this would have to work at a less than 100% duty cycle because the CPU would at the very least have to retrieve the program's code (unless it is able to run on the cache), but it would still be quite fast.

My question is how fast are the pins coming out of the CPU compared to the ones coming out of the DRAM controller, and what's the mapping from memory address accessed by the software -> CPU pinout -> DRAM pinout.

This would be useful for hooking up things like ADCs to the computer without using FPGAs, analyzing logic signals, etc.

I know there are PCI-E GPIO boards, but they're expensive because they're a very niche item. This is the main problem of protocols like PCI-E and USB, they're overly complex protocols that require a lot of hardware to interface with and are only beneficial to consumer items like graphic cards, having very little software configurable characteristics and hackability.

 No.1069583>>1069588 >>1069604

Regular PC CPUs are not meant (optimized) to be used for real-time applications. At the very least you would have to disable all caching among other things. USB is not overly complicated to use as most MCUs will have hardware implementation, you just need to configure it. It's not as simple as RS232, but it's doable, certainly more so than trying to use CPU for unintended purposes.


 No.1069588

>>1069583

Oh, right. I hadn't considered that the caching would actually suppress most of the signals I wanted to use.

>USB is not overly complicated to use as most MCUs will have hardware implementation

Yeah, but a microcontroller that would be fast enough to, for instance, interface with a fast ADC or DAC, create PWM signals that the could be passed through a filter to create software-defined radio waves, or record digital signals from other devices to act like a crude logic analyzer, would be an ARM SoC like those used on the Raspberry Pi, so we're back at square one. While those do have GPIO, it's usually far slower than the speed of the memory bus.

That's why everybody uses FPGAs to deal with those applications that require fast GPIO, and even then they're not that fast, only a couple hundred MHz.


 No.1069599>>1069602

>>1069573 (OP)

What sort of speed do you need? Why not just use USB 3.1? If you want to directly connect with a CPU, why not just directly connect with an ARM, PPC or other RISC based processor? You can buy directly from the Chinese manufactures and they are cheap but you'll have to do all the solder work yourself.


 No.1069602

>>1069599

What chip allows you to send arbitrary data through USB at the rates USB 3.1 supports?


 No.1069604

>>1069583

>At the very least you would have to disable all caching among other things.

For bypassing caching I think it would be enough to use addresses that are mapped as part of a DMA range. After all, the CPU can't use a cache for data that another device might be writing or reading from, right?


 No.1069607>>1069610

>>1069573 (OP)

This seems like a shitload of fucking around just to get some GPIO. What are you actually trying to achieve?

Why not just use cheap micro controller and communicate with it over USB?


 No.1069610

>>1069607

Nothing in particular, just thought it would be a cool use of PCs for experiments or even projects that could do useful things that could then be replicated by other people. Mainly software defined radio stuff, but also things like oscilloscopes, logic or spectrum analyzers, etc.

For example, if you could build a repeater for some digital mode or a GSM BTS with an old PC + a couple common ICs and some filtering and amplification, then it could lead to interesting scenarios.

>Why not just use cheap micro controller and communicate with it over USB?

Because those usually can only be toggled at a very low rate, which limits their usefulness.

I'm looking at getting something that can do more than what a Raspberry Pi can do, which is about 50 MHz with luck. Of course a RPi probably can't do any useful processing at those rates because of the CPU being tied up in the switching, so the actual usable rate is probably far lower. Taking the signal directly out of a CPU should be far faster than that.


 No.1070084

Technically there's I2C busses (or in case of RAM sockets it's the tighter smbus), though most commonly found in display connectors.

But you're pretty much forced to use Linux in order to utilize them.




[Return][Go to top][Catalog][Screencap][Nerve Center][Cancer][Update] ( Scroll to new posts) ( Auto) 5
8 replies | 0 images | Page ???
[Post a Reply]
[ / / / / / / / / / / / / / ] [ dir / b2 / choroy / dempart / hkpol / otter / polru / vichan / zooscat ][ watchlist ]