Hello everyone! I got some news. I managed to get the blaster working! Since my last blog, I wanted to do some research about if I would actually be able use the Waveshare blaster or if I would have a similiar issue, and while doing so, I found this blog https://www.downtowndougbrown.com/2024/06/fixing-a-knockoff-altera-usb-blaster-that-never-worked. Competition anyone? Anyways, with the new code, I was finally able to flash my Blaster propertly (altho shorting it dozens of times was not fun because of the timing, my fingers were all shaky afterwards), and after replacing the dead JTAG ribbon with some jumper cables since it was dead, I finally got to doing some Verilog coding! I didn't find any decent documentation of the syntax, so I had a quick look at the chinese example the aliexpress seller sent me along with my fpga, and the language was quite similiar to what I am used to. While there are some interesting parts of it (such as end/begin instead of {/}), the architecture you're writing it for is so fundamentaly different that it did not bother me like it did with e.g. python. After I figured out the language to what I would consider enough to start, I started my own project. I decided to do a VGA Checkerboard renderer, which I previously failed to do on a Raspberry Pi Pico multiple times. So, first I had to figure out how to generate a proper checkerboard. After taking an inspiration from my receipt maze project where I used the checkerboard to signal the start and end of the maze, I used the same XOR method, and so in my verilog project, it looked as so: wire [9:0] X = (Hcnt - `HPixelArea_pos); wire [9:0] Y = (Vcnt - `VPixelArea_pos); if(Hcnt > `HPixelArea_pos && Hcnt < `HFrontPorch_pos && Vcnt > `VPixelArea_pos && Vcnt < `VFrontPorch_pos) begin Pixel <= { 3{(X[0] ^ (Y[0]))}}; Hcnt and Vcnt being the VGA frame position counters, X and Y being the position on screen, and the 3{...} simply repeats the bit 3 times. Then, I wrote the VGA output itself, and it looked as so: assign VGA_HSYNC = (Hcnt >= `HSync_pos) ? 1'b0 : 1'b1; assign VGA_VSYNC = (Vcnt >= `VSync_pos) ? 1'b0 : 1'b1; always @(posedge Clk) begin if(Hcnt >= `HPixelArea_pos && Vcnt >= `VPixelArea_pos && Hcnt < `HFrontPorch_pos && Vcnt < `VFrontPorch_pos) begin VGA_R <= Pixel[0]; VGA_G <= Pixel[1]; VGA_B <= Pixel[2]; end else begin VGA_R <= 0; VGA_G <= 0; VGA_B <= 0; end end It turns out, that for a VGA signal during front/back porch, you don't actually have to do anything, so instead of like a switch statement which I would do on the Pico, I am doing 2 contigous assigments (the assign you can see there, it directly wires a logic gate from input to output that are NOT affected by a clock of any kind, just a wire and possibly a couple transistors inbetween), and then writing the pixel on every clock cycle if applicable. Then, I had to tune the frequency. VGA's 640x480@60 wants 25.175Hz, and with PLL (Phase Locked Loop), you're able to generate your custom clocks while keeping the global clock the default.. 50MHz in my case. I was able to get it to about 25.17MHz, but that worked very well in my testing. After I got the soft part of the thing done, I had to connect the I/O pins of the FPGA to the VGA connector. Since I didn't have any of those fancy clip on jumper cables, I was limited to those 2.5mm dupont ones. And after deciding not to solder and therefore destroy a VGA cable for this, nor hold 6 jumper cables on the connector since I do not have 3 hands, I decided on trying to find a breakout board. After looking for a bit, I found an ATI video card from 2005 with a conviniently separate screw in VGA connector thats connected via a ribbon to a 2.5mm header, exactly what I needed. I felt bad for the board since I was propably going to take the VGA connector from it forever(because it was so useful), I got some intel that ATI was related to amd, and since I hate amd, I no longer felt bad, and unscrewed the VGA connector from the bracket with pliers, severely bending the entire video card in the process. After investigating which pin was connected to what, and getting confused by a false image of the VGA pinout, I finally got to connecting the R G B pins via a 270ohm ish resistor and the other pins like common ground, HSYNC and VSYNC directly, I got the video! A crisp 640x480 checkerboard. Overall, this was quite the learning experience, and I am quite excited about what I will be capable off with it in the future In the meantime, peace