#milkymist IRC log for Wednesday, 2011-11-23

wpwraklekernel: just confirmed clock compression / glitches00:16
wpwraknow trying the deglitcher00:18
Action: wpwrak hates it when X11 and Flash plot against him :-(00:41
kristianpaullekernel: about composite inputs03:39
kristianpaulif i undertood u correcly, i cant mix then because a hardware (ADC)  limitation?03:40
kristianpaulwhat force me just to swtich inputs, but not even consider multiplex?03:40
kristianpaultoo slow response for that perhaps?03:40
kristianpaulcause my first impresion was, "oh,milkymist is too advance to just mix video wich is so silly"03:42
kristianpaulbut i want to clarify,not for me just because i was asked again that03:43
kristianpaul"can i mix video with that M1 thing"03:44
wpwrakgrmbl. unearthing something like dpll_ce is outright vicious. system -> usb -> sie -> phy -> rx03:47
whitequarkhuh. press left button to upgrade?03:48
whitequarkare there only two? :D03:48
wpwrakthree, which led to major complaints from the binary people :)03:49
lekernelwpwrak: btw, dpll_ce is a synchronous clock enable, which means that the data is actually sampled at the rising edge of the 48MHz clock where it is high10:04
lekerneland that rising edge also brings dpll_ce low, so the data is approximately sampled on the *falling* edge of dpll_ce10:05
lekernelalso, the data is delayed 2 cycles by the synchronizer in _filter.v, so be careful when examining dpll_ce and the USB signals directly10:07
wpwrak(delay) also with the original filter ?11:06
wpwrak(dpll_ce) yes, i saw that it doesn't act as a clock. the double period is for real, though. i see two of them each time rx_pending is two bits fast, one for one, zero for zero11:08
wpwrakway too consistent to be coincidence :)11:08
lekernelyes... with the glitch filter it's 4 cycles11:16
lekernelhmm... maybe my DPLL design is too simplistic11:21
wolfspraulgood morning!11:27
wpwrakthe DPLL is indeed a bit simple .. it's more a pacemaker than a real PLL12:03
lekernelnew DPLL synthesizing ...12:25
GitHub173[milkymist] sbourdeauducq pushed 1 new commit to master: http://git.io/C5tibA12:27
GitHub173[milkymist/master] Fix assignment to bus_errors_en - Sebastien Bourdeauducq12:27
lekernelstill obstinately refuses to work. grmbl.12:58
wpwrakit's happy when it can get your attention :)13:09
lekernelin simulation, the new DPLL tolerates a 5% discrepancy, both ways, between TX and RX clocks13:24
lekernelUSB specifies 0.25%, but no no no no no no no! still won't work!13:25
lekernel(on the 0xd2 character, that is. of course, longer periods without transitions can cause more problems)13:26
GitHub180[milkymist] sbourdeauducq pushed 1 new commit to master: http://git.io/p3e4fw13:34
GitHub180[milkymist/master] softusb: new DPLL - Sebastien Bourdeauducq13:34
lekernelwpwrak: can you check if you still have the "double pulse" problem? it should have been fixed now, even if the rest is still being ultrapesky13:34
lekernelit didn't seem to cause regressions with my low speed devices (including the M1 keyboard) so I committed it13:34
lars_mwalle: maybe its just a bug in my bitstream13:39
Alarm_I just turn on the m1 kit. I have a problem with my optical mouse, the resolution is not good13:55
wpwrakAlarm_: does it move normally, just slowly ?14:07
wpwraklekernel: lemme try to merge that with my instrumentation ...14:07
Alarm_wpwrak: it's hard to point to the buttons. The mouse makes small jumps14:10
wpwrakAlarm_: do you have a Linux PC at hand ? if yes, does this procedure look scary to you ? http://lists.en.qi-hardware.com/pipermail/discussion/2011-November/009206.html14:16
wpwrakAlarm_: this would tell us a bit more about your mouse14:16
wpwrakAlarm_: in any case, the quickest work-around should be to try another mouse. most of them work fine14:17
qi-botThe Firmware build was successfull, see images here: http://fidelio.qi-hardware.com/~xiangfu/build-milkymist/milkymist-firmware-11232011-1328/14:21
Alarm_wpwrak: Mouse HP Vk921AA14:26
wpwrakah, no wheel. maybe upgrading your M1 firmware could help then14:31
wpwrakhmm. but looks as if it had a wheel. is that white thing a sheel ?14:32
wpwraklekernel: works great !14:34
stekernoh, fedex brought an early christmas present today15:02
wpwrakthere go the nights and weekends :)15:08
stekernit was smaller than I'd imagined15:40
Alarm_About the soft keyboard, caps lock LED-are you it?15:41
wpwrakstekern: everybody says that :)15:48
wpwrakAlarm_: i don't know the keyboard15:54
Alarm_wpwrak: Ok. The Caps Lock LED does not light up when the   flexible keyboard is connected to the M1. It works on the PC.15:57
Artyomhi kristianpaul :)15:58
wpwrakdoes M1 even support caps lock ? :)15:59
Alarm_This is the flexible keyboard with the kit M1. :p15:59
wpwrakyeah. but the software seems to ignore caps lock anyway. so it's appropriate that the led wouldn't be lit ;-)16:01
wpwrak(software) at least in the BIOS16:02
Alarm_wpwrak: ok16:05
lekernelAlarm_: capslock doesn't work. if you implement support, let us know :-)16:07
lekernelthe problem is that controlling a LED can take several days with the universally shitty bus16:09
lekernelif keyboards were still PS/2, this would have been implemented in no time16:10
kristianpaulArtyom: hey16:12
wpwrakcaps lock seems kinda useless anyway. i mean, how often do you need to write ANSI COBOL ?16:13
wpwrakthe bad thing about long synthesis is that you start doing something else and then are quite confused about what you've been synthesizing and why :-(16:18
kristianpaulhe yes16:18
kristianpaulactually i record a log, most when i have to try 4 different setups and have to wait like on morning..16:19
kristianpaulafaik stuff cant be simulated because need scope measurement etc..16:19
ArtyomKristianpaul: today I'm fighting with flash. I try to use xilinx example program to program flash. And I've noticed strange behavior. The bytes in a word are swept. Have you heard about it? And I can't write to flash from BIOS only read...16:22
kristianpauloh yes, i think you require some procedure to write flash from bios16:23
kristianpaullet me find right doc16:24
kristianpaulactually i never havent tried that from bios :-)16:24
kristianpauli use urjtag instead,but let me see16:24
lekernelwpwrak: why do you need to test rx_active before testing rx_pending?16:26
kristianpaulah lekernel is here may be he can tell us how to write NOR from bios :-)16:26
lekernelthe intended purpose of rx_active is to check whether we are at the last byte of the packet or not (i.e. after some rx_pending has been seen)16:27
lekernelkristianpaul: there's no support for it16:27
lekerneluse the M1 JTAG cable. if you do not have a M1, buy one.16:28
Artyomok... Now I now that I can't just write data in flash like in sram :)16:28
lekernelno, you can't... see the flash chip's datasheet16:29
wpwraklekernel: hmm, but then we still have a race: what if the Navre is fast enough to detect rx_pending, read the byte, then check rx_active ?16:30
kristianpaulArtyom: why you need flash? or just learning ?16:31
lekernelwpwrak: then it would have correctly read a one-byte packet, no?16:31
kristianpaulin my early steps i used to store sampling from the SiGE, but 32Mb are not really that BIG..16:31
kristianpaulmay be you have more :)16:31
wpwrakyes, ... the scenario above was missing the last step: , ... and then EOP is seen16:32
wpwrakso it would find rx_active still on after reading the byte, and thus wait for another one (and eventually time out)16:32
ArtyomKristianpaul: Experimenting with every core. And in flash I can write bigger BIOS (not only 16 kB or a little more). You are reading my ideas. I have some plans for far future to use multibit ADC. And the easiest way to store data is to use SDRAM.16:34
lekernelbut it keeps testing for rx_active while waiting for the next byte, no?16:34
lekernelso what would happen is that rx_pending doesn't get asserted again, but rx_active deasserts and signals the end of the packet16:34
wpwrakwait, you can't have it both ways :) either you only test rx_active after clearing rx_pending, then you don't get the race from my mail but the one described above16:36
wpwrakor you test both in the loop, and then you get the race from the mail16:36
lekernelwell, the correct way to do it is:16:37
lekernel1. wait for rx_pending (with timeout)16:37
lekernel2. read one byte16:37
lekernel3. wait for either another rx_pending (and read remaining bytes) or deassertion of rx_active (end of packet)16:38
wpwrakArtyom: you should indeed try to get a M1 :) maybe wolfspraul has some discounted unit he could offer you ?16:39
lekernelI think my original code did that, unless I made some stupid mistake16:39
wpwrakbut step 3 has the race from the mail16:39
wpwrakwhat should work, though, would be:16:40
lekernelI don't get it16:40
wpwrak1) wait for rx_pending or timeout16:40
wpwrak2) if rx_pending, read one byte16:40
wpwrak3) in both cases, check rx_active and exit if clear16:41
wpwrak4) if it was a timeout, fail too16:41
kristianpaulmay be yafs2 from lekernel can be inked to bios ?16:41
wpwrak5) else, loop back for more16:41
wpwraklekernel: (race) the problem is that you're testing in the same loop for rx_pending to rise and rx_active to drop, expecting to catch them in sequence16:42
lekernelah, i see16:43
wpwrakbut if they do this faster than you can poll AND you're in the wrong spot in the cycle, this doesn't work16:43
lekernelbut your proposed code always takes the time of the full timeout to complete, no?16:43
lekernelon the last byte... when rx_pending never gets asserted16:43
wpwrakit could, if you're fast16:44
wpwrakright now, you're always too slow. by about 100 ns16:44
wpwrakerr no, 200 ns even16:44
kristianpaulbut but is rtems specifc..16:44
kristianpauloh well16:44
lekernelwpwrak: hmm... would an atomic read of {rx_pending, rx_active} help?16:46
wpwrakprobably, yes16:47
wpwrak(200 ns) actually, it's about 150 ns. i don't see rx_pending drop less than 150 ns after rx_active dropping16:47
wpwrakbut i guess code changes could bring us into the critical region16:48
lekernelwell you can remove register 6'h0b16:48
lekerneland have 6'h0a: io_do <= {rx_pending, rx_active};16:48
lekernelthen rx_active is 0x01 and rx_pending 0x02 in the bitmask16:48
77CAA2ALNHello . . .16:49
lekernelnote that 6'h0a reads also clear rx_pending16:50
lekernelhi Technicus16:50
TechnicusWhat is going on here?16:50
Technicuslekernel: :)16:51
lekernelTechnicus: this is the milkymist channel, see www.milkymist.org16:51
lekernelcurrently it's pretty heavy USB debugging16:51
wpwrakdoes 6'h0a really clear pending ? i think it just reads it, no ?16:58
wpwrakmaybe you mean 0916:58
lekernelah yes, 09 sorry16:59
lekerneland you can have 6'h0b: io_do <= 8'hxx;17:00
wpwrakcan i also just stop the clock of navre until something happens ? :)17:01
wpwrakor, rather, block the read17:02
lekernelwell, in fact yes, but not easily17:02
lekerneland how would you handle the timeout?17:02
wpwrakin verilog :)17:02
wpwrakmove work to the hardware, where it wants to be anyway17:03
lekernelnever do anything in hardware that can be done in software17:03
wpwrakyeah, but these things aren't so nice in software, as we can see. it worked well for low-speed because you have plenty of time. but full-speed is hard.17:04
lekernelit isn't so nice in verilog either17:05
wpwrakif it was too easy, that would be bad, too :)17:05
lekernelwith this atomic read change applied, I don't see how blocking in hardware would improve things17:05
wpwrakblocking in hw would still give you better timing17:06
wpwrakbut anyway, i think we can drag this to the point where it works properly without crc17:07
lekerneland then the timeout would be inflexible, and the whole thing would use resources and potentially cause timing closure problems (ok, maybe not at 48MHz, but reduces the possibility of running at 72)17:07
wpwraki suspect that the time budget is to tight for squeezing in a software-based crc as well17:07
lekernelthen hardware CRC is justified17:08
wpwrakaye. still need to provide the evidence, though. now that i can see rx_pending, that shouldn't be too hard :)17:08
wpwrakbut first i want to kill as many of the little problems that happen even without crc17:09
wpwrakit's already much better. now the main trouble seems to be RX timeout.17:12
wpwrakwithout rx_active | rx_pending, it happens at about 0.16 Hz. with that tentative change, it happens at about 0.46 Hz. but that may be purely collateral17:13
Alarm_With the command jtag I''ve an error:jtag bathfile17:13
Alarm_jtag: error while loading shared libraries: liburjtag.so.0: cannot open shared object file: No such file or directory17:13
wpwrakwe'll see. now i have to prepare my trip to customs, to liberate my LV3 :)17:13
lekernelgood luck!17:13
lekernelAlarm_: add /usr/local/lib to /etc/ld.so.conf and run ldconfig17:14
lekernelassuming you installed urjtag in /usr/local, which is the default ...17:14
TechnicusWhat hardware is optimum to operate the software designed for Milkymist on other platforms?17:15
lekernelTechnicus: the M117:15
kristianpaulTechnicus: you meant milkdrop right?17:15
Technicuskristianpaul: I am not completely educated about what software is controling the Milkymist . . .17:16
TechnicusI already have a descent computer, and I would like to get a Milkymist box but it stretches the limits of my budget, however if there is any hardware that I can put in my machine for less of an expense I would prefer that.17:19
TechnicusBasically need a quality video card, video capture card, and midi interface . . . that is about it right?17:20
TechnicusMost of the magic is all in the software isn't it?17:21
kristianpauli think current laptops can run projectm17:21
Technicus* not all17:21
kristianpaulwich implement milkdrop17:21
kristianpaulyeah i afaik i dont know wich..17:21
kristianpaulTechnicus: nt all17:21
kristianpaulwell it depends of the poitn of view for this magic17:22
TechnicusWell, I am considering add in cards for a desktop.17:22
TechnicusIt is obvious that the Milkymist hardware is excellant equipment.17:23
Technicus. . . and honestly not too expensive, but beyond the limits of my budget.17:23
TechnicusIf possible to do the same for less with my desktop, then I must go that route.17:24
kristianpaulthe problem is make ir work, of course you are *free* to get alternatives17:24
kristianpaulbut consider the turkey solution a bit17:24
TechnicusYeah that is freaking sweet, and worth the price.17:25
TechnicusI am familiar with ProjectM, but what is implemented to mix in live video?17:26
kristianpauldont think so :-)17:26
kristianpaulok time to lunch, read you later17:26
kristianpaulafaik M1 dont mixvideo17:27
kristianpaulmay lekernel want to qoute more why not? iftenically not posible never or justmissing feature?17:27
Action: kristianpaul away17:27
lekernelTechnicus: nothing, that's what the M1 is good at. :-) as in "mix video into the patch/preset", not "mix two external video sources together"17:27
Technicuslekernel: Is that what Flickernoise does?17:28
Technicuslekernel: It sort of reminds me of JACK.17:29
TechnicusIs only designed to run on the Milkymist hardware?17:31
kristianpaulTechnicus: milkymist is not a PC, so yes it is17:31
kristianpaulcould be ported surelly but you need more work17:31
TechnicusI am starting to get the picture, thanks.17:32
kristianpaulmilkymist hardware is specialiced to get those effects run smoth and almost out of the box17:33
mwallelars_: mh?20:37
wpwrakback from customs. only 1.5 hours wait there. not bad. and because it was at the end of the day, they just wanted people to leave and didn't even ask for money ;-)20:39
Fallenouis rtems-milkymist git repo gone ?20:41
Fallenouis it all upstream now ? :o20:41
Fallenouno more repo on github ?20:41
Fallenouhum ok got it https://github.com/milkymist/scripts/commit/bb03f0d2dc9fbdb3fda5c9c8777b064701bd6b4420:46
Fallenouwhy not keeping at least a staging repository ?20:46
lars_mwalle: maybe xst messed up or something. i was using 12.3 at that time20:49
mwallelars_: regarding what?20:49
mwallei said i fixed the uart bug, and there is still the NULL pointer after scheduling bug20:50
mwalledunno what you mean ;)20:50
wpwrakvery interesting. LV3 speaks a kind of MIDI M1 understands only partially20:55
kristianpaulwhat is LV3?21:06
mwallekristianpaul: http://www.faderfox.de/mark/21:11
kristianpauloh cool21:14
kristianpaulM1 next step to interactivity ;-)21:15
lars_mwalle: i meant the repeated receive21:21
lekernelFallenou: because git-cvs is either buggy or difficult to use. in both cases, it was wasting my time.21:22
lekernelthe zlib compilation problem, for example, originated from git-cvs not importing some cvs commits for some reason21:24
Fallenouoh ok21:24
Fallenouso maybe just put in place a http/ftp place to put patches like a staging area21:24
lekernelwpwrak did it21:25
Fallenouoh nice ok :)21:25
lekernelusing quilt21:25
Fallenouoh don't know quilt21:25
mwallebtw there is guilt, too ;)21:42
GitHub26[flickernoise] sbourdeauducq pushed 1 new commit to master: http://git.io/nlJ2tA21:43
GitHub26[flickernoise/master] Image support - Sebastien Bourdeauducq21:43
wpwrakmwalle: sounds interesting :) maybe that also gets rid of the need to add files before changing them, which is an endless source of nuisance in quilt21:46
mwallewpwrak: you have to get used to quilt edit :)21:50
wpwraki sometimes remember, yes ...21:51
wpwrak.. and at other times, i just conclude that throwing it all away and starting over is quicker and safer than trying to unravel the mess i've created22:00
GitHub186[flickernoise] sbourdeauducq pushed 1 new commit to master: http://git.io/3j5D8Q22:31
GitHub186[flickernoise/master] Images working - Sebastien Bourdeauducq22:31
wpwrakhow are images used in a patch ?22:34
GitHub136[flickernoise] sbourdeauducq pushed 1 new commit to master: http://git.io/Hqrj0w23:24
GitHub136[flickernoise/master] images: fix aspect ratio - Sebastien Bourdeauducq23:24
--- Thu Nov 24 201100:00
