|
i do computer hardware things but i don't write drivers and i want to learn more about it.
|
# ¿ Nov 25, 2014 20:36 |
|
|
# ¿ Apr 29, 2024 14:18 |
|
i have this thing working now, i re-wrote some of the stuff in the adafruit arduino libraries to use the galileo board, but its quick and dirty, not as nice as the arduino gfx stuff in their libraries. it will show 4096 colors though, and i am working on making it display arbitrary bitmaps, the drawings on it are all just lines i wrote manually. i actually had to slow it down by adding a counter in the bit count modulation logic compared to the arduino libs. the arduino spends enough time drawing framebuffers that it leaves the LED on for a while, the quark was turning the led off so fast that the same programming sequence didn't work, i had to add some time to leave the LEDs on before i started programming the matrix again:
|
# ¿ Nov 26, 2014 05:21 |
|
that union jack looking thing is just a test pattern i made so i could see which rows and columns are in the wrong place while I was fixing the timing. you can now draw an arbitrary graphics plane like from a bitmap or a gif or ppm and feed it into the planes and update the pointers to the plane you want using a counter. right now it has 4 framebuffers each capable of 4096 colors or fewer depending on how you set up color depth at compile time. point a framebuffer at an animated gif frame and you could set a counter to update whatver times per second or whatever beep boop
|
# ¿ Nov 26, 2014 05:52 |
|
Bloody posted:wish/hope im your santee its not you but it is another well known shamefully nerdy yosposter. if you want i can post my source code to be ridiculed, i am a bad c++ programmer and i am sure i write it all as if it were system verilog and everything happens in zero simulation time with no regard for actual resources.
|
# ¿ Nov 26, 2014 05:54 |
|
i will post the full source when i actually have it drawing animated gifs and doing useful things. for now this is how i drew the test pattern:code:
|
# ¿ Nov 26, 2014 06:17 |
|
i am sure there is a better way to do that probably involving making the buffer a pointer to the plane or something so i can just change where in memory the image i want actually lives but hell if i know how to do that! especially when reformatting the plane into a buffer that has two rgb pixels 8 pixel rows apart in each buffer line.
|
# ¿ Nov 26, 2014 06:30 |
|
right now it updates the display in the arduino sketch loop like this:code:
fastGpioDigitalWrite calls happen at about 600kHz. There is also a function fastGpioDigitalRegWriteUnsafe that requires you to keep track of register bits and writes destructively to the gpio registers, but i haven't figured out how to use all of that yet. fastGpioDigitalRegWriteUnsafe will push the clock from about 600 kHz to 2.9MHz, which could allow for something awesome lile RGB565 16-bit color.
|
# ¿ Nov 26, 2014 06:54 |
|
the bcmBit and iter loops are for binary code modulation. for the least significant bit it runs through the display loop (the "iter" or iteration loop) once. for the 2nd least significant bit it runs through the loop twice, and so on for each binary bit position. basically, the more significant the bit in your binary value, the more times it loops through displaying that bit. the LED is on if it is a 1 and the LED is off it is a zero, so it displays the LSB once and the MSB however many times there are bits in the number. So basically your duty cycle depends on the MSB proportionally more than the LSB, so you end up with a duty cycle representative of the actual binary number. if you look at that test pattern image, you can see that the bottom and rightmost pixels rows/columns are dimmer than the left and top rows/columns. that's 4 bits per r/g/b channel, or 12 bits per pixel, or 4096 colors total. beep boop.
|
# ¿ Nov 26, 2014 07:01 |
|
fun fact 16 bit color is 565 because your eyeball is most sensitive to green so you put the most bits there. this is why digital cameras with bayer sensors sample 2 green pixels for each blue and red pixel and interpolate the results. in my real job i make display, graphics and camera hardware so this arduino stuff was disturbingly familiar. also the adafruit people did a good job of figuring out how these panels work. even if its not documented officially the fact that their libraries work show you how it needs to be clocked.
|
# ¿ Nov 26, 2014 07:14 |
|
Bloody posted:dope explain this right now. how do it work? what is a compact muon solenoid?
|
# ¿ Nov 26, 2014 07:19 |
|
Tin Gang posted:this thread has got me itching and now I want to learn ARM microcontrollers you should buy an intel brand galileo board in my extremely biased opinion.
|
# ¿ Nov 27, 2014 01:45 |
|
lol if you dont have a PHY with dynamic impedance compensation.
|
# ¿ Nov 27, 2014 02:22 |
|
Mido posted:I watched highly skilled engineers lose their loving minds over optimizing the gently caress out of things we didn't even really need i read this and i think: faaaaaaart just run x86 on it and be the fastest because that is how the real world works.
|
# ¿ Nov 27, 2014 04:38 |
|
movax posted:the embedded stuff (atom, etc) comes closest, but even then, iirc its just multiple dies inside and the pch has all the peripherals -- x86 cores interface to any/all peripherals over pcie or dmi i haven't really played around with it too much but i think the quark will have the old FSB architecture and the edison board that has silvermont cores will be the faster and lower power option. i know silvermont has the same IDI interface to the system agent that the big cores have now, and most of the stuff that is on-die will be hanging right off the system agent with IOSF or the intel memory requestor busses. i know the galileo board has some of the GPIOs hanging off the north complex and some hanging off the south complex because i see the function for fastGpioDigigalRead that I am using calls two functions with NC or SC in the name depending on which pin I am writing to, and the NC and SC appear to be on-die in the quark because the pins go right from the quark to a level shifter. i dont really know what is going on on-die tho.
|
# ¿ Nov 27, 2014 17:30 |
|
maniacdevnull posted:im a dumb hobbyist but microcontroller poo poo is fun as heck it can definitely be fun and it's very satisfying when you figure out that what you were doing wrong in the programming sequence, yeah. this must be what it feels like to work in post silicon verification except there's no money riding on me figuring out how to make this silly display work.
|
# ¿ Dec 1, 2014 00:39 |
|
sw8, i have this board booting linux off the sd card now, and i can read and write text files in the sketches, so images should be a quick next step. i also have the sketch starting telnetd and i can talk to it over link-local ethernet so i should be able to get it to dhcp too and download things to display or fart noises to make or something.
|
# ¿ Dec 2, 2014 00:02 |
|
Bloody posted:yea that thing seems cool i am sorry but before you can wash this load of laundry you need to update to LaundOS 4.3.7 or later. Update? Y/N:
|
# ¿ Dec 5, 2014 00:49 |
|
Tin Gang posted:I'm pretty much the opposite now because I don't like high level programming but I want to know how to build things out of transistors this isn't as fun as it sounds but if you can do it there are people who will pay you to do it.
|
# ¿ Dec 6, 2014 05:10 |
|
Sagebrush posted:poll: is it pronounced "A T Tiny" or "at tiny"? "A T Mega" or "at mega"? "shameful"
|
# ¿ Dec 8, 2014 02:30 |
|
sund posted:coworker heard i liked jigsaw puzzles and brought me some sweet vendor swag this looks like a real mess this person should probably invest in some simulators.
|
# ¿ Dec 10, 2014 07:27 |
|
movax posted:Iirc they shrink wrapped and protected his desk this is the best version of that, imo. https://www.youtube.com/watch?v=RXJKdh1KZ0w
|
# ¿ Dec 10, 2014 07:37 |
|
Mr Dog posted:lol does it still break out GPIOs onto separate chips interfaced over I2C? i don't think the edison board ever did this. the first galileo board only had low-speed gpio on expanders, but the current galileo board has 12 high speed gpio pins right off of the SoC and more on an i2c expander. i am pretty sure the edison board has at least that many high speed gpios but i haven't worked with it so i'm not sure and i can't be bothered to look it up. i know this because my secret santa gift required all 12 gpios on the galileo board, they can operate at 1.2 or 2.9 MHz, depending on the pin (different pullup resistors and output capacitors).
|
# ¿ Jan 7, 2015 03:29 |
|
eschaton posted:the Edison can be configured for up to 44 GPIO pins, though as always the pins are shared by other interfaces. this sounds pretty rad. here is what i made with 12 full speed gpios:
|
# ¿ Jan 9, 2015 06:16 |
|
eschaton posted:sweet! what kind of LED matrix is that? I assume it's i2c? no its the one they sell at adafruit, it needs more than i2c, i will post the source code in a bit when i upload it. it needs a 3-bit led address, red green and blue values for each LED, and it has to be refreshed many times a screen to display colors.
|
# ¿ Jan 9, 2015 06:24 |
|
i am an idiot forget about this. i broke my internet.
EIDE Van Hagar fucked around with this message at 06:30 on Jan 9, 2015 |
# ¿ Jan 9, 2015 06:25 |
|
hobbesmaster posted:please tell me theres a speaker too you could add a speaker but its just the display right now: https://www.youtube.com/watch?v=Iz_3PlxRLOA 16x32 rgb leds. this video was from testing, it just cycles randomly.
|
# ¿ Jan 9, 2015 19:07 |
|
Sagebrush posted:You can drive 512 ws2811-type rgb leds at 30Hz with a bog standard avr and a single data line fyi, as long as it has about 2k of ram and >16mhz this particular LED panel requires 12 inputs and you have to manually turn every LED on and off, but it's also capable of daisy chaining so you can really drive a lot more LEDs with those 12 pins, you just have to read in the data for the furthest panel, 2nd furthest, and so on until you get to the closest panel. i had two panels hooked up to it at one point and i didn't see any performance problems, i think i am going to do a project eventually with 6-8 panels but this is a fun yosmas gift i thought.
|
# ¿ Jan 10, 2015 00:18 |
|
cell phone socs have a bunch of stuff that would be an ASIC in the past, image processors, video encoders/decoders, display blitters and so on, if you want to do that.
|
# ¿ Mar 17, 2015 22:13 |
|
JawnV6 posted:let it take 2 cycles to look up and see if it still happens yeah this or slow the clock down maybe? i assume there is some signal that determines if its a hit and maybe its just taking longer than a clock. is it a CAM?
|
# ¿ Mar 18, 2015 02:39 |
|
Bloody posted:explaining spi is nice because it's so loosely defined. the poo poo i have seen, man. i have seen some poo poo. lvds spi. ddr spi. spi where chip select actually does nothing and god help you if you have anything but the most pristine clock line from power up until forever. i2c ultra fast mode can do 5Mb/s, oooh yeaaaaaah, i did pre-silicon verification of the i2c and displayport aux channel controller in bay trail and i used to have dreams about i2c i spent so much time fiddling with it in the day for a few weeks there
|
# ¿ Apr 3, 2015 02:19 |
|
movax posted:i have sometimes woken up in bed and laid there unmoving for several minutes before realizing that i do not, in fact, require a clock signal to function properly always @ (posedge sun) begin toilet <= poop: end EIDE Van Hagar fucked around with this message at 02:44 on Apr 4, 2015 |
# ¿ Apr 4, 2015 00:21 |
|
JawnV6 posted:lmao oic design and test everything in systemverilog, god's own language.
|
# ¿ Apr 9, 2015 07:55 |
|
JawnV6 posted:async clock crossing is sweet, one of those concepts that took 1.5 passes for me to understand once long ago i found a bug in a display controller that was causing a pixel to get dropped and i spent a whole day figuring out that it was an issue with a clock crossing fifo and i think that was the first time i really understood it
|
# ¿ Jun 15, 2015 23:55 |
|
generators are nice for making a bunch of config registers from a set of basic definitions about what the bits in each register do and not needing to hand code up a bunch of registers, or for hooking up a bunch of interrupt wires into status registers where you are going through several definitions of what interrupt status goes to each bit as a project evolves and you want to just be able to change a list of bits and what they do and have them automatically make registers. you don't need it, but for certain things where you know you are gonna have the same RTL repeated hundreds or thousands of times it can make the RTL generation and the process of stitching it all together a lot easier.
|
# ¿ Jul 17, 2015 19:21 |
|
Bloody posted:is there a way to parameterize a range in verilog? like i can do: you can do a indexed part select to pick out a range
|
# ¿ Jul 20, 2015 17:45 |
|
http://www.esperan.com/view_tutorial.php?tutorialNumber=21 useful for packing and unpacking bits, like when you are selecting a smaller chunk of a large piece of data one chunk at a time. for serializing parallel data or gathering serial data into a larger parallel data structure or something.
|
# ¿ Jul 20, 2015 17:53 |
|
JawnV6 posted:i have a genuine, burning hatred for tutorials that act like simulation-only constructs are Good and the synthesizable subset is some wacky restriction that a Good Designer wouldn't sully themselves with i work in validation so i don't care about synthesizability at all, generally.
|
# ¿ Aug 5, 2015 02:22 |
|
hey thread. question: i have been wanting to get an fpga and start a github with all the poo poo i make it do but i have been too lazy to fpga shop. what is a good one to get that i can do things on for like $1000? where do you even find that out? are there toolchains i can use on my mac?
|
# ¿ Aug 5, 2015 02:22 |
|
JawnV6 posted:oh wow, look who suddenly cares about synthesizability only for fun
|
# ¿ Aug 5, 2015 16:36 |
|
|
# ¿ Apr 29, 2024 14:18 |
|
JawnV6 posted:he thinks synthesizing is unimportant for validation, imma guess emulation isn't his forte you'd be correct i don't do emulation
|
# ¿ Aug 5, 2015 19:14 |