great teacher, thank you, im french sorry my english
@davehohacks26 күн бұрын
Glad you enjoyed the video!
@tarka38tara3426 күн бұрын
super tuto merci beaucoup
@2thinkcritically29 күн бұрын
I've built a few concept design boards for VGA output over the years, mostly just on Breadboard but a couple on Veroboard. In all situations I've used TI 74HC components and never had issues with timing or bounce. I'd imagine I wouldn't be so lucky if I was using old chips (or fakes) rather than brand new, but I thought I'd just put that out there.
@davehohacks28 күн бұрын
Thanks, that's good to know! I think the main difficulty with using 74HC/74HCT is that counters (like the '163 ones I used) can't meet the setup time requirement when clocked at 25+ MHz. I could almost certainly use slower parts for some of the other chips in the design. I actually tried out a 74LS153 as the pixel color selection mux, and it worked fine.
@rogerramjet839529 күн бұрын
This is _fabulous,_ Dave. I was so pleased for you when it worked! Wonderful! 👏 (And thanks _again_ for doing this without the music! 👍🙏)
@davehohacks29 күн бұрын
Thanks! I was definitely surprised that resolving the glitches was as simple as using 74ALS counters rather than 74ACT. For good measure I'm also going to replace the 74ACT157 mux with a 74ALS157 and the 74ACT273 chips in the row begin address register with 74ALS273. I think 74ALS is my new second-favorite logic family (after 74HCT, if course.)
@rogerramjet839529 күн бұрын
Yeah, @@davehohacks, it was beautiful to see it working so well. By the way, I remember during your first attempt with the FPGA you concluded that you didn't know enough. I don't know whether you've come across him yet (and you may already be ahead of this), but John's Basement has a great series on FPGAs, using the ICE40's: kzbin.info/www/bejne/invFemCEgq-Ui7s&pp=iAQB … I was going to go straight to FPGA, but you've inspired me to try the TTL route first. 👍
@davehohacks28 күн бұрын
@@rogerramjet8395 I'm actually excited to pick up FPGAs again after doing this project with GALs and discrete logic. Thanks for the video recommendation, I think it will help a lot to absorb some proper background knowledge.
@joshc-devАй бұрын
i love you sir
@joshc-devАй бұрын
keep going!
@davehohacks29 күн бұрын
@@joshc-dev Thanks! I'm working on a PCB, although routing is turning out to be...interesting.
@hwmlandАй бұрын
Nice work. Thnak you for this build with clear explanation what/how/why! BTW: what wire do you use for your prototyping? Your results are so neat...
@davehohacksАй бұрын
If you search AliExpress for the term "UL1423", there's a listing from a vendor called "FreeBoom". I'm using the 26 AWG version. It's like 30 AWG wire wrap wire, but a little bit thicker.
@firesnake6311Ай бұрын
bro i need more of it, I truly enjoy learning this stuff, I love learning about computers hardware, thanks,
@rogerramjet8395Ай бұрын
Fantastic! Thank you so much for uploading this version. There's a lot to process, and you run through it quickly. Needed this to be able to focus. Thank you! 🙏🙇
@davehohacksАй бұрын
No problem!
@mbewareАй бұрын
It would be interesting to have a video explaining the logic of the pixel generator and what discrete chips and IC it would have required. The convertion to GAL logic would also be interesting, but there are a lot of video on that subject.
@davehohacksАй бұрын
I uploaded an alternate version of this video without any background music during the narration: kzbin.info/www/bejne/g2e7mpqfnN9khdk
@davehohacksАй бұрын
Based on viewer feedback, I've uploaded an alternate version of this video without any background music during the narration: kzbin.info/www/bejne/qGe2g56ElpWCf9E
@Walterhartwellwhite412Ай бұрын
Music is bad. Remove it please.
@molepistolАй бұрын
zelda dlc over vga is crazy
@davehohacks22 күн бұрын
Tears of the Kingdom is an incredible game. I regret nothing :-)
@colonelbarkerАй бұрын
Fantastic work. Amazingly stable video. Another request for less music please!
@davehohacksАй бұрын
Noted. I'm planning to post alternate versions of Episode 03 and 04 without the background music (I hadn't realized that so many people felt strongly about this.)
@colonelbarkerАй бұрын
@@davehohacks I figured it was probably best worth saying. I don't tend to like commenting negative things on videos, because boy it can hurt on the other end. But your content is so good otherwise I thought it was worth pointing out. I'm really enjoying this project!
@TroySchrapelАй бұрын
Awesome progress, Dave. Very impressive!
@davehohacksАй бұрын
Thanks, Troy! I've started working on the PCB. I think it's going to be pretty challenging to make everything fit. (BTW, I'd love to see a video about your Pi Pico TMS9918A replacement project.)
@TroySchrapelАй бұрын
@davehohacks it's coming... I'm a big-time procrastinator. 🤣 The project itself is going great though. I finally have the single board version with the RP2040 onboard working.I have a few short, unedited, unlisted videos linked in the GitHub repo.
@davehohacksАй бұрын
@@TroySchrapel I procrastinated on my display controller for 2 years, so I think you're making rapid progress. Looking forward to seeing it!
@keyvanmehrbakhsh4069Ай бұрын
just after the shooting the cat got a mild punishment ,
@davehohacksАй бұрын
He was just doing some robustness testing 🙂
@keyvanmehrbakhsh4069Ай бұрын
@@davehohacks :))
@TMITLTАй бұрын
Great work! Congrats on the successful design! Good luck with the PCB design! Question: why jump to FPGA and not go through a 5v CPLD design phase using something like an Altera MAX7000 series device? A 10ns EPM7128 may be large enough and fast enough to incorporate most if not all your VGA hardware logic.
@davehohacksАй бұрын
Thanks! Using a CPLD is an appealing idea. My main motivation for using an FPGA is the availability of an open-source toolchain for the Lattice ICE40 series. I think you're right that the current design wouldn't require a large device.
@TMITLTАй бұрын
@@davehohacks the old Altera MAX7000 series is supported by older tools that are now free but not open-source, such as Quartus. however, they do offer a lot of design and simulation facilities that you may find useful.
@davehohacksАй бұрын
@@TMITLT I'll keep that in mind!
@rogerramjet8395Ай бұрын
Hey Dave, meant to ask last time, but please can you consider not including the "elevator music" in the background? 🙏 I realise I'm just one, but being _very_ hard of hearing (essentially deaf) and on the spectrum, I find it almost impossible to process what you're saying. I love your videos and have been subscribed for years (since covid, iirc), but I haven't been able to watch episodes 3 or 4 because of it … 😊🙏 (Edit: just read further comments and see I'm not alone. 👍)
@The65c02Ай бұрын
That music is simply killing me thankfully it stops after 5 minutes
@davehohacksАй бұрын
Maybe I'll post a combined video for episodes 3 and 4 without the background music.
@rogerramjet8395Ай бұрын
Hey@@davehohacks … no worries for this one. (When I get some time, I'll mute it and read the subtitles …) But, I and clearly a few others would appreciate leaving it out next time. 👍🙏
@davehohacksАй бұрын
@@rogerramjet8395 I think I will release alternate Episode 03 and 04 videos without the background music. Also, if you look at the "Episode03/Materials" and "Episode04/Materials" directories in the Github repo, there are scripts with the narration.
@sergatmel8242Ай бұрын
Thanks, very interesting !
@ocukor1Ай бұрын
idk if it's just me, but the background music makes it hard to listen.
@davehohacksАй бұрын
Good point.
@magnustveten492Ай бұрын
Not hard to listen to, but not needed at all.
@clearcutlegalvideo1532Ай бұрын
I just successfully executed this repair using the linked Alibaba replacement drivers. Since I only use these headphones for monitoring and not mixing I felt comfortable only replacing the single driver (right side) that was broken. I cannot tell the difference between the original and replacement driver, but my bar is set very low.
@davehohacksАй бұрын
Yeah, I can't tell any difference between the MDR-V6s with the Aliexpress drivers and my MDR-7506s with the original Sony drivers.
@PhilR0gersАй бұрын
This video is gold as I'm looking at adding VGA to a 6502 computer that I'm building. If you look back at computers by Commodore etc., they all had custom video chips. The FPGA is the easiest way for us to make our own custom chips, so there's no real argument against using them for retro computers.
@davehohacksАй бұрын
One piece of advice that I should have heeded before working on an FPGA display controller: learn the simulation tool in whatever FPGA toolchain you're using. You'll see what I mean in subsequent videos 🙂. I'm actually working on a non-FPGA display controller right now, and it's going much better, but I'm planning to return to FPGAs soon, and I'm 100% certain that I will be simulating the design extensively.
@pvc988Ай бұрын
My combo for simulating FPGA designs (Verilog and SystemVerilog) is Icarus + GTKwave. At first it may seem weird to write simulations in Verilog but since I got used to it I prefer it over any interactive/schematic based solution.
@davehohacksАй бұрын
Icarus Verilog is definitely on my radar! This current project has definitely convinced me that simulation is essential.
@pvc988Ай бұрын
James Sharman has built beautiful 8 bit computer with logic chips with pipelined CPU, multichannel audio, serial port and awesome display controller. Check out his channel.
@RayBellisАй бұрын
Have you considered storing the character data and the attribute data in physically separate RAMs? This would allow both to be accessed simultaneously by the read out module, requiring only 12 bits of counting. I _think_ it should still be possible to arrange the RAMs so that the CPU interface to them still appears as contiguous pairs of bytes instead of separate blocks, e.g. by using A1-A12 from the CPU as A0-A11 to the RAMs, with the CPU's A0 line instead of A12 as the CS/~CS line. Alternatively, maybe having them as separate blocks might be better anyway from a programmer's PoV?
@davehohacksАй бұрын
I did think about putting character and attribute data in separate RAM chips. I didn't realize that you could play tricks with A0 to make characters and attributes appear to be contiguous: that's a very clever idea. Allowing parallel loading of character and attributes would potentially double the throughput, which would be nice, although there's plenty of time to load characters and attributes sequentially, even with the relatively slow 70 ns RAM chips I'm using.
@RayBellisАй бұрын
@@davehohacks a further idea relating to the need to start the RAM accesses in advance of the start of the visual area (and during the "previous" scan line) - I'd be tempted to drop an 8-bit shift register ('595 ?) as a configurable delay on the HSYNC line near the final output stage (such that it only affects the monitor's version of that signal). Alternatively some timing diagrams depict the 48 clocks of the horizontal back-porch being the start of the current line, and not the very end of the previous one, such that the line actually starts at the rising edge of HSYNC. This perhaps complicates the clock counters compared to starting the visual area at clock zero, but IMHO it sure beats having to think about doing stuff while the previous line is still going.
@davehohacksАй бұрын
@@RayBellis Good ideas! I did consider starting scanlines with the back porch rather than the visible area, but eventually decided it was easier to just increment the vertical count early. (Although, now that I'm thinking about it, these are more or less equivalent ideas.) That ended up being a fairly easy change. I didn't think about delaying hsync with a shift register. Thinking about this right now, you could put all of the signals in a FIFO memory pretty easily and avoid the issue entirely.
@thorpejsfАй бұрын
Take a look to see if the part you need is available in 74AHC ... nearly as fast as 74ACT, but doesn't switch quite as hard so no ground bounce. (Though, those are all CMOS-level parts so might be an issue with the low output drive of the GAL... not very many 74AHCT...)
@davehohacksАй бұрын
I think I did look for 74AHCT parts and didn't see the ones I needed. It really is annoying that GALs don't guarantee more than 2.4V as the output high.
@asmi06Ай бұрын
I also like building things, which is why I now design and assemble PCBs with FPGAs 😁 The difference of course is those boards are much more complex, have 6, 8 or even 10 layers, contain big and small BGAs, so instead of messing with a ton of logic chips, I have to deal with high-speed signals like HDMI or 10G Ethernet, DDRx memory interfaces, delay matching, controlled impedance and all that fun stuff. I did learn all of it myself over time without any formal education, so it's absolutely possible to figure all of this out if willingness and persistence is there. As for your arguments against FPGAs, of course none of them (except for "(not) having fun" - this one is subjective) hold any water as FPGA design is simulation, simulation, simulation, and only after than testing it on a real hardware - and of course you have full access to every single signal during simulation. Because of extensive use of simulation, testing/debugging designs on the actual real hardware usually doesn't take much time, and some vendors provide IPs which allow you to "see" any internal signal - just like having a logic analyzer with physical circuits - over JTAG connection. To me the best part about FPGAs is their flexibility, when the same physical board with the same FPGA can be a video-card on one day, a CPU on another, a network switch on yet another, or an entire computer system with CPU, RAM, video card and a bunch of peripherals on yet some other day. Sometimes I get bored of a project in-progress, so I set in aside and work on another one, and then return back to the first one when inspiration strikes again.
@davehohacksАй бұрын
I'm definitely planning to return to FPGAs in the future, and I am confident that simulation will help tremendously.
@RelayComputerАй бұрын
You still have to present the circuit that generates pixels based on character and character font, so maybe that will answer my question. However, based on this video alone, I wonder if you really need to go down to single pixel counters for the HSync signal. If the character width is always 8, I wonder if it would make sense to work in chunks of 8 bits (or 1 byte) at 1/8 the frequency for all the internal circuitry including the horizontal counters. Then use a shift register or other appropriate means to split the individual bits at the full pixel frequency just before applying color data to the VGA signal.
@davehohacksАй бұрын
It's very possible that parts of the design could be clocked at a lower frequency than the dot clock, although I haven't really considered doing that. If it allowed more of the hardware to work with 74HC/HCT parts rather than AC/ACT, that would be a significant advantage.
@RelayComputerАй бұрын
@@davehohacks I was mostly thinking about possibly less components, but that's just an intuition. That would need to be assessed...
@davehohacksАй бұрын
@@RelayComputer That makes sense. Having to use fewer counter bits would be nice.
@ChipperClipper1Ай бұрын
You're really smart and this is a well put together video. I wonder if you could create a dumbed down version of this video to appeal to a wider audience.
@davehohacksАй бұрын
If you go way back on my channel to the early videos in the 8-bit computer series, there are some videos that go into more of the basics of address and data busses, bus control signals, etc. The nice thing about dual port static RAM is that it works exactly the same way as "normal" single-port static RAM, you just get two independent interfaces. Static RAM is very easy to interface. Also, definitely check out Ben Eater's videos on building a 6502 system if you haven't already. He does an amazing job of explaining things.
@thorpejsfАй бұрын
Dave, this is pretty cool! I've designed something similar for my 6809-based home-brew machine. Mine has 16 inputs, and uses some logic in a GAL to select between the two priority encoders and some other other handshaking because I also implemented auto-vectoring in mine, whereby the interrupt controller places the address of the IRQ table slot that holds the highest-priority handler address directly on the address bus when the CPU fetches the IRQ vector (sort of like Interrupt Mode 2 on the Z80).
@davehohacksАй бұрын
Wow, that's hard core! It wouldn't have occurred to me that auto-vectoring is possible on the 6809.
@thorpejsfАй бұрын
@@davehohacks Yah, you can determine when the CPU is fetching the IRQ vector by decoding BA, BS, and A1-A3. My ABUSSEL GAL uses that plus an additional signal from my interrupt controller to decide if the CPU or the interrupt controller gets to drive the address bus. (Eventually, ABUSSEL might also let a DMA controller drive the address bus, but that's pretty far off in the future.)
@RayBellisАй бұрын
I'm glad to see my suggestion for sending the VIS signal into the multiplexor's E line worked! :D
@davehohacksАй бұрын
Thank you for pointing it out! Always nice to reduce the part count.
@cbmeeksАй бұрын
I need some of that wire. Do you remember what gauge it was? I have wire-wrap wire but it's way too thin for soldering (at least a lot of soldering).
@davehohacksАй бұрын
If you search for "UL1423" on AliExpress, there's a listing from a vendor "FreeBoom". I ordered the 26 AWG variant. I'm not sure if it's really 26 AWG, but it's definitely thicker than normal 30 AWG wire wrap wire. I've found it to be excellent for point-to-point wiring on protoboards.
@cbmeeksАй бұрын
@@davehohacks Thanks!
@thorpejsfАй бұрын
This is good stuff, Dave! Following this one with interest!
@davehohacksАй бұрын
Thank you!
@sergatmel8242Ай бұрын
I'm watching this project with interest. Thank you.
@davehohacksАй бұрын
Glad you're enjoying it!
@AppliedCryogenicsАй бұрын
I haven't checked yet of course, but have been wondering if the 6309 bus cycle in my project leaves enough idle time to externally access the fast system SRAM without having to slow the bus clock down from 3.57MHz..
@davehohacksАй бұрын
I guess when E is high the 6309 isn't accessing memory, so maybe your external device could sneak in then?
@DirkJMartensАй бұрын
Very interested in the VGA card. Especially how you will interface the software with the hardware.
@davehohacksАй бұрын
I think the software should be fairly straightforward. The only real complexity will be the bank switching, so the software routines will need to set the bank depending on which character or attribute they need to access.
@DirkJMartensАй бұрын
I dont think this was wire wrapped. If i understood Dave well, he used wirewrap-style wire and did P2P soldering. Real wirewrapping would be actually be faster. I wirewrap a 100mmx160mm eurocard-sized pcb with 20 or so ICs in 6 to 8 hrs.
@davehohacksАй бұрын
Yes, this is just point-to-point soldering. I have done some wire-wrapping in the past. My only real objection is that wire wrap sockets are expensive.
@AjinkyaMahajanАй бұрын
You Seriously did wire-wrap those ICs. Hats off to your patience
@davehohacksАй бұрын
I find point-to-point soldering to be therapeutic somehow.
@cbmeeks2 ай бұрын
I really loved this video! Do you know if the galasm will work with the ATF15XX CPLD's? I assume not since CPLD's area much higher level than "simple" GAL's.
@davehohacks2 ай бұрын
Thanks! I think GALAsm only supports the Lattice GAL devices (16V8, 22V10, 20RA10) and compatible devices (like the ATF22V10.)
@TomaTLAB2 ай бұрын
With this simple DAC you get the "light" colors instead of "bright" ones. See, if intensity bit is set it mixes to all three chanels independent of it's states. You get i.e. 0x3FFF3F (light green) instead of 0x00FF00 (bright green). For CGA colors you need to use all 6 bit of DAC inputs with some "palette" logic, or open-collector/tristate outputs with some diode-logic :) And don't foget the IBM's brown :)
@davehohacks2 ай бұрын
Right, the intensity bit gets added to all of the color component values, so it de-saturates the color. I believe that this is how the CGA text-mode colors worked, aside from brown being a special case. I might revisit the DAC at some point if I'm not satisfied with how the colors look (e.g., if there isn't enough contrast between the non-intense and intense colors.)
@TomaTLAB2 ай бұрын
@@davehohacks In fact, this simple palette looks quite attractive. Especially if you adjust DAC network alittle, if necessary.
@davehohacks2 ай бұрын
@@TomaTLAB We'll see how it looks once I (hopefully) get some characters displayed.
@jonathan125892 ай бұрын
Great work me and your son are friends, your a smart man