Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Goran Mahovlic
    @goran-mahovlic
    we need to have few options so people can decide what is best for them
    did not check what display is on hackaday badge?
    Probably LQ035NC111
    Lawrie Griffiths
    @lawrie
    Yes, I believe that was based on Matt Venn's version of Dave's Pmod.
    Goran Mahovlic
    @goran-mahovlic
    So we just need to produce and solder David boards
    That is best option
    with connector and all parts soldered
    emard
    @emard
    David's LCD has to be glued to PCB but it detaches so I made 3D printable holder to hold them together. And maybe PCB size could be reduced to make everything smaller. Apart from that, display works great. At 19 MHz rate byte is delivered so every 3 bytes makes a 24-bit pixel and 60 HZ refresh rate. No initialization. ILI9341 has more timing flexibility but I guess needs small initialization
    Lawrie Griffiths
    @lawrie
    Lawrie Griffiths
    @lawrie
    The cheap Arduino shield TFTLCDs from ebay are ili9320 with an 8080 interface. I currently have an even longer initialization sequence for those - https://github.com/lawrie/slabboy/blob/master/src/main/scala/slabboy/Ili9320.scala#L160-L436
    That is part of a Gameboy emulation in SpinalHDL that I started writing but have not worked on for a while (based on a SpinalHDL Z80 implementation that Craig Bishop started). My version got as far as running a simple Hello World Gameboy rom. I would like to get that going on the Ulx3s sometime.
    emard
    @emard
    similar length of initialization I also have for 96x64 SPI color OLED :( and it's the hardest part to make it compact enough when done in the soft-core. Something what is easy done in C makes LUT programmer big trouble :)
    Lawrie Griffiths
    @lawrie
    I think I was wrong about the interface used by the Hackaday badge. It seems to use an 18-bit data interface - https://github.com/Spritetm/hadbadge2019_fpgasoc/blob/master/soc/lcdiface.v
    I was confusing it with the ice40 based badge that Matt Venn took to the same event, which did Use David Shah's Pmod.
    Goran Mahovlic
    @goran-mahovlic
    Rangel Ivanov
    @ironsteel
    @emard you got the apple 2 running on the ulx3s?
    emard
    @emard
    Yes video and ps2 keyboard work, prompt and basic works but disk_ii.vhd compile starts printing many dots and fails, so if you can take a look or even fix, please help :)
    Rangel Ivanov
    @ironsteel
    Not sure if I'm capable.... right now I'm trying to figure out how to make the NES work on a 640x480 resolution for the ulx3s and then add the GPDI output
    emard
    @emard
    Can you get NES produce pixel rate >=25 MHz? then it's easy. HDMI monitors have to refuse lower clock rates by standard otherwise it would of course work
    I can help you get the picture if you make doublescan or something to reach above 25 MHz
    Rangel Ivanov
    @ironsteel
    I'm trying to get it to produce pixels at 25Mhz but my hardware design skills are not as good as my software ones :D
    I'll ping you when I get to the HDMI part, thanks!
    I've setup a simple testbench simulating the two clocks (21.477 and 25) and modifying little by little until I get the idea right.
    emard
    @emard
    Get any of simple similar projects that does doublescan - basically it is a BRAM that buffers one scanline and outputs it 2x to double the PAL/NTSC pixel rate
    On many projects that have simple video generator, it is possible to directly modify video generation core to work at higher pixel rate and then doublescan buffer is not needed.
    Rangel Ivanov
    @ironsteel
    Yes, I was going to ask if my understanding of the scan doubler is correct. thanks for the heads up. Im having some trouble figuring out how to generate the read addresses for the block ram but I think I'm on the right direction
    Have some home chores to do, will get back to it later
    emard
    @emard
    BRAM can have 2 ports and 2 different clocks so with one clock scanline is filled by NES pixel rate (slow) to bram port A and bram port B and higher clock is used for DVI pixel rate, usually dumping same content twice. Some video generations that use interlace make buffering complicated and you must resort to deliver each half-frame at full rate so screen details may flicker usualy by a pixel or so but generally game is still playable
    Lawrie Griffiths
    @lawrie
    @goran-mahovlic I had to add bash to saxonsoc linux to make those games work.
    Lawrie Griffiths
    @lawrie
    @emard I tried scopeio (hdl4fpga). It displayed a waveform generated by my pocket oscilloscope (3 tiimes is multiple colors), but I am not sure what I can do with it.
    It did not work with my Logitech mouse (B100), so I ordered one that is supposed to work in PS2 mode from ebay.
    emard
    @emard
    @lawrie scopeio supports hotplug mouse USB or PS2 so collect many and try. If all fails over USB-serial or USB-ethernet you can use "hostmouse.py" script so linux mouse will be provided remotely to scopeio
    Lawrie Griffiths
    @lawrie
    It seemed to display is 1920x1080 mode, whatever make file I used.
    emard
    @emard
    different bitstreams are for USB, PS2, USB-serial and USB-eth. 1920x1080 is HARD overclock so you are lucky, not all boards/monitors can do. Normal is 800x600 what everywhere works :)
    Lawrie Griffiths
    @lawrie
    Tried it with another monitor. It was running at 800x600 but my small monitor reported 1920x1200, which was what was confusing me.
    emard
    @emard
    yea default is 800x600 and only top portion of 800x480 is used so some small displays 5" inch size will just fit the picture there
    compile it with
            constant C_mouse_ps2    : boolean := false;  -- PS/2 or USB+PS/2 mouse
            constant C_mouse_usb    : boolean := false; -- USB  or USB+PS/2 mouse
            constant C_mouse_usb_speed: std_logic := '0'; -- '0':Low Speed, '1':Full Speed
            constant C_mouse_host   : boolean := true; -- serial port for host mouse instead of standard RGTR control
    
            constant C_origserial   : boolean := false; -- use Miguel's uart receiver (RXD line)
            constant C_extserial    : boolean := true;  -- use Emard's uart receiver (RXD line)
            constant C_usbserial    : boolean := false; -- USB-CDC Serial (D+/D- lines)
            constant C_usbethernet  : boolean := false; -- USB-CDC Ethernet (D+/D- lines)
            constant C_rmiiethernet : boolean := false; -- RMII (LAN8720) Ethernet GPN9-13
            constant C_istream_bits : natural := 8;     -- default 8, for RMII 2
    and you can use hostmouse.py script to pass linux mouse events to serial port in a format that scopeio will accept - thats before you get supported mouse
    Lawrie Griffiths
    @lawrie
    Tried hostmouse.py. I am running in VirtualBox. It detects button clicks on the mouse and sends them, but is doesn't detect mouse movement.
    emard
    @emard
    hmmmm is it normal mouse or touchpad? Generally we need RELative mouse events while touchpad sends ABSolute stuff and that may not work well or if virtualbox converts them to ABS again same issue
    Lawrie Griffiths
    @lawrie
    It detects button presses on a normal mouse and the touchpad, but movement on neither.
    /dev/input/event4
       bustype : BUS_I8042
       vendor  : 0x2
       product : 0x6
       version : 0
       name    : "ImExPS/2 Generic Explorer Mouse"
       phys    : "isa0060/serio1/input0"
       bits ev : (null) (null) (null)
    
    /dev/input/event5
       bustype : BUS_USB
       vendor  : 0x80ee
       product : 0x21
       version : 272
       name    : "VirtualBox USB Tablet"
       phys    : "usb-0000:00:06.0-1/input0"
       uniq    : ""
       bits ev : (null) (null) (null) (null) (null)
    
    /dev/input/event6
       bustype : BUS_PCI
       vendor  : 0x80ee
       product : 0xcafe
       version : 1536
       name    : "VirtualBox mouse integration"
       bits ev : (null) (null) (null)
    emard
    @emard
    try evtest and move mouse you should get this, or hostmouse has some touchpad untested support so if you cant get REL events try to convince hostmouse.py to detect device as touchpad and handle ABS somehow
    root@ssd:/tmp# evtest /dev/input/event7
    Input driver version is 1.0.1
    Input device ID: bus 0x3 vendor 0x46d product 0xc016 version 0x110
    Input device name: "Logitech Optical USB Mouse"
    Supported events:
      Event type 0 (EV_SYN)
      Event type 1 (EV_KEY)
        Event code 272 (BTN_LEFT)
        Event code 273 (BTN_RIGHT)
        Event code 274 (BTN_MIDDLE)
      Event type 2 (EV_REL)
        Event code 0 (REL_X)
        Event code 1 (REL_Y)
        Event code 8 (REL_WHEEL)
        Event code 11 (REL_WHEEL_HI_RES)
      Event type 4 (EV_MSC)
        Event code 4 (MSC_SCAN)
    Properties:
    Testing ... (interrupt to exit)
    Event: time 1576755391.702276, type 2 (EV_REL), code 0 (REL_X), value 1
    Event: time 1576755391.702276, -------------- SYN_REPORT ------------
    Event: time 1576755391.710274, type 2 (EV_REL), code 0 (REL_X), value 1
    Event: time 1576755391.710274, -------------- SYN_REPORT ------------
    Event: time 1576755391.718275, type 2 (EV_REL), code 0 (REL_X), value 1
    Event: time 1576755391.718275, -------------- SYN_REPORT ------------
    Goran Mahovlic
    @goran-mahovlic
    @lawrie we have also some games here - maybe we will make some of them work :) https://github.com/ligurio/awesome-ttygames
    I did try to compile color tetris but it still missing some dependencies - so we will try to fix those today on meetup!
    Lawrie Griffiths
    @lawrie
    @emard When I try:
        mouse_input_name = 'dont use'
        touchpad_input_name = 'mouse integration'