00:15 | mumptai | left the channel | |
01:06 | illwieckz | left the channel | |
01:06 | Umori | left the channel | |
01:06 | vup | left the channel | |
01:09 | illwieckz | joined the channel | |
01:09 | Umori | joined the channel | |
01:09 | vup | joined the channel | |
01:32 | aombk2 | joined the channel | |
01:33 | aombk | left the channel | |
02:06 | comradekingu | left the channel | |
02:33 | comradekingu | joined the channel | |
02:37 | vup2 | joined the channel | |
02:38 | Umori_ | joined the channel | |
02:39 | kbeckmann1 | joined the channel | |
02:43 | danieel | left the channel | |
02:43 | kbeckmann | left the channel | |
02:43 | madonius | left the channel | |
02:43 | illwieckz | left the channel | |
02:43 | Umori | left the channel | |
02:43 | vup | left the channel | |
02:44 | illwieckz_ | joined the channel | |
02:50 | madonius | joined the channel | |
02:55 | danieel | joined the channel | |
04:29 | illwieckz_ | changed nick to: illwieckz
| |
05:45 | eppisai | joined the channel | |
07:01 | Bertl_oO | off to bed now ... have a good one everyone!
| |
07:01 | Bertl_oO | changed nick to: Bertl_zZ
| |
08:00 | eppisai | left the channel | |
08:00 | eppisai | joined the channel | |
08:15 | BAndiT1983|away | changed nick to: BAndiT1983
| |
09:07 | eppisai_ | joined the channel | |
09:08 | eppisai | left the channel | |
09:08 | eppisai_ | changed nick to: eppisai
| |
09:32 | LordVan | joined the channel | |
11:55 | mumptai | joined the channel | |
12:52 | RexOrCine | left the channel | |
14:39 | RexOrCine | joined the channel | |
16:04 | Bertl_zZ | changed nick to: Bertl
| |
16:04 | Bertl | morning folks!
| |
16:04 | se6ast1an | good day!
| |
17:09 | eppisai | left the channel | |
17:10 | eppisai | joined the channel | |
17:19 | eppisai | left the channel | |
17:28 | eppisai | joined the channel | |
17:49 | BAndiT1983 | changed nick to: BAndiT1983|away
| |
17:49 | BAndiT1983|away | changed nick to: BAndiT1983
| |
18:01 | LordVan | left the channel | |
18:34 | eppisai | left the channel | |
18:34 | eppisai | joined the channel | |
19:06 | korken89 | joined the channel | |
19:06 | korken89 | anuejn: o/
| |
19:07 | anuejn | so I guess what you are seeing is the ft600 sending less than 2048 bytes in a buffer
| |
19:08 | anuejn | If I remember correctly the fix for me was to have a fifo in front of the ft600 and start a transaction only if I am certain that I can finish it without pulling valid low
| |
19:09 | anuejn | which is what our ft601 driver core does
| |
19:09 | se6ast1an | sounds reasonable
| |
19:09 | anuejn | but if you have a link to your gateware I can have another look
| |
19:09 | anuejn | (this is the continuation of a discussion in #nmigen)
| |
19:10 | korken89 | I pushed it here: https://github.com/korken89/ovio_core_firmware/blob/master/gateware/apps/ft600_test.py
| |
19:10 | korken89 | Ah, so that is why you had the signal to start a transaction
| |
19:10 | korken89 | I just send right now if there is something in the FIFO, no matter how full it is
| |
19:11 | korken89 | So the FT60x has limits on packets?
| |
19:11 | korken89 | From the datasheet it only says it will use smaller frames if not sending full 1024 byte packets
| |
19:11 | korken89 | But I can also have misunderstood something :)
| |
19:12 | anuejn | yup it can do that but our rust driver does not support that atm ;)
| |
19:12 | korken89 | Aaahh
| |
19:12 | anuejn | also the time the ft60x seems to need seems to be independent of the packet length so it is beneficial for performance anyways to always do full packets
| |
19:13 | korken89 | Makes sense
| |
19:13 | anuejn | (smaller packets would be implementable but most likely not with our current zero coppy aproach so it would give us a performance hit on the pc side too)
| |
19:13 | anuejn | so you need something like https://github.com/apertus-open-source-cinema/nmigen-gateware/blob/master/src/lib/io/ft601/ft601_stream_sink.py#L29
| |
19:13 | anuejn | the whole save_to_begin_new_transaction logic from that file
| |
19:14 | korken89 | In my case I'll have varying length data coming out, some packets are images of ~300 kB and some are IMU data reports of 40 bytes
| |
19:15 | korken89 | I'll give it a try to see how the ft60x-rs interacts :)
| |
19:15 | anuejn | do you have any realtime requirement for your data stream?
| |
19:15 | korken89 | Indeed
| |
19:15 | anuejn | if so: you can still read a smaller buffer with ft60x rs if you know the size beforehand
| |
19:15 | korken89 | It's for VIO which expects sub 20 ms latency
| |
19:16 | korken89 | Hmm, I need to figure out my data packets
| |
19:16 | korken89 | As I was sort of just planning to packet each data type and ship it
| |
19:16 | korken89 | Not really care about the USB FIFO part
| |
19:16 | anuejn | 20ms doesnt sound like padding all data packets would hurt ;)
| |
19:16 | korken89 | Haha, you have a point there
| |
19:17 | korken89 | You run with fixed length frames?
| |
19:17 | anuejn | hm... no
| |
19:17 | anuejn | our setup is a bit more funky
| |
19:17 | korken89 | Oh? Sounds interesting!
| |
19:18 | anuejn | as the usb3 plugin module has its own fpga (a machxo2) we have to run some interface between that fpga and the main fpga
| |
19:18 | anuejn | currently in this interface there is no "ready" signal planed
| |
19:19 | korken89 | Hmm, it just pumps the data?
| |
19:19 | korken89 | And the machxo2 just needs to keep up?
| |
19:19 | anuejn | so basically if the pc side (or the usb bus or whatever) cant keep up receiving the data we loose data in random places
| |
19:19 | korken89 | Ah I see
| |
19:19 | anuejn | so we need an automatically alignig protocol
| |
19:19 | korken89 | I wonder if COBS is hard to implement in HW
| |
19:19 | anuejn | therfore we did that framing hack with a blanking area to which we syncronize
| |
19:20 | korken89 | Might be to heavy to decode on the PC side though
| |
19:20 | anuejn | ah but I guess I missunterstood your question
| |
19:20 | anuejn | yup our frames are expected to have always the same length
| |
19:20 | korken89 | Haha no problem
| |
19:20 | korken89 | I mean
| |
19:21 | korken89 | I could have fixed frame sizes
| |
19:21 | korken89 | I see no problem there
| |
19:21 | korken89 | I'm just wondering what happens then if the FT60x reader looses sync, does this happen?
| |
19:21 | korken89 | So I get 0.2 of one frame and 0.8 of the next
| |
19:21 | anuejn | it just resyncs again ;)
| |
19:21 | anuejn | and it does happen
| |
19:22 | anuejn | probably the current desing will not stay for long
| |
19:22 | korken89 | Wait, you loose data?
| |
19:22 | korken89 | Is this due to the "ready"-less design?
| |
19:22 | korken89 | I was hoping to use the FT600 as a lossless pipe
| |
19:22 | anuejn | we will need a better plan anyways once we have wavelet compression
| |
19:22 | korken89 | I won't be close to the max rate of it as well, I'll only use like 30-50 MB/s
| |
19:23 | anuejn | I think this is part of the ready-less design
| |
19:23 | korken89 | I need to look deeper into apertus, get a feel for the architecture you use
| |
19:24 | anuejn | when i send a counter that is generated in the machxo2 I dont get any data loss
| |
19:24 | korken89 | At least an overview
| |
19:24 | korken89 | I feel there is a lot to learn from you all there :D
| |
19:24 | korken89 | Nice!
| |
19:24 | anuejn | so your hope for a lossless pipe is probably fulfilled :)
| |
19:24 | korken89 | I have been using the FT232H a lot in FIFO mode, so I just wanted a faster one :)
| |
19:24 | anuejn | If you have questions just ask :)
| |
19:25 | korken89 | As I'll be like at max of what the FT232H can deliver
| |
19:25 | anuejn | Ah I see that
| |
19:25 | korken89 | But I guess, if I pump the raw video I'll need like 55 MB/s
| |
19:25 | korken89 | (not really what my board is supposed to do though)
| |
19:26 | korken89 | But I'm sure some want to use it as "just" a stereo camera as well
| |
19:26 | korken89 | + debugging purposes
| |
19:26 | anuejn | I would really like to have something faster than the ft601, because 4k24p 12bit is already pushing the ft601 pretty hard ;)
| |
19:26 | korken89 | > f you have questions just ask :)
| |
19:26 | korken89 | Thanks, I'll keep you to that ;)
| |
19:26 | korken89 | Haha
| |
19:26 | korken89 | Actually I sort of wanted to directly connect to PCIe
| |
19:27 | anuejn | Oh I didnt notice that the MT9V034 was just vga
| |
19:27 | korken89 | Yeah, good ol' tech
| |
19:27 | anuejn | is there any specific reason you went for that sensor?
| |
19:28 | korken89 | It's very classical in the machine vision community
| |
19:28 | korken89 | Had quite good HDR as well
| |
19:28 | korken89 | I'm not planning to stick with it though
| |
19:28 | anuejn | I was kind of thinking if the ovio could be used as a better webcam with background removal
| |
19:29 | anuejn | ah I see hdr sounds like a strong argument
| |
19:29 | korken89 | I just have used that camera a lot, and the first time I tried Lattice FPGAs I wanted something I was used to :)
| |
19:29 | anuejn | I see
| |
19:29 | korken89 | Global shutter, HDR, and very short shutter times as well
| |
19:29 | korken89 | Even in darker settings
| |
19:29 | anuejn | also vga seems a lot more chill to process
| |
19:29 | korken89 | Perfect for fast moving drones :)
| |
19:29 | korken89 | Yeah
| |
19:29 | korken89 | VGA is actually more than enough for VIO
| |
19:30 | anuejn | is the ovio intendet to go on a drone?
| |
19:30 | korken89 | Yeah
| |
19:30 | korken89 | That was my research area :)
| |
19:30 | anuejn | ah nice now things start to make more sense to me
| |
19:31 | korken89 | Hehe
| |
19:31 | korken89 | On page 5 here you can see the platform I still use: https://arxiv.org/pdf/1812.04755.pdf
| |
19:32 | korken89 | Sorry, I sort of assumed you knew what I was up to
| |
19:32 | korken89 | I want an visual intertial odometry accelerator board is the final aim :)
| |
19:33 | korken89 | And to run as much of the VIO algorithms in the FPGA as I can
| |
19:33 | anuejn | huh that seems like a power hungry platform
| |
19:33 | anuejn | now I understand your process
| |
19:34 | anuejn | is your aim to eliminate the computer on that copter altogether?
| |
19:34 | korken89 | Not really, the high level algorithms still need it
| |
19:34 | anuejn | okay
| |
19:34 | anuejn | sounds like a fun project
| |
19:34 | korken89 | But right now about 70% of all CPU power on the drone only goes into image convolutions, feature extraction etc
| |
19:34 | korken89 | Things that an FPGA is perfect for
| |
19:35 | korken89 | I love this area :D
| |
19:35 | anuejn | is that a university project?
| |
19:35 | anuejn | ah i see
| |
19:35 | korken89 | It was before
| |
19:36 | korken89 | A few colleagues from the lab and I are running a company now, that has nothing to do with drones nor cameras anymore
| |
19:36 | korken89 | But I find the area so interesting that I sort of can't stop :)
| |
19:36 | korken89 | So now it's a hobby instead
| |
19:36 | anuejn | ah I see
| |
19:36 | anuejn | nice :)
| |
19:36 | anuejn | btw: did you read https://github.com/nmigen/nmigen/issues/213
| |
19:37 | anuejn | (and the rigel paper)
| |
19:37 | korken89 | Oh that looks interesting
| |
19:37 | anuejn | huh linked the wrong issue
| |
19:38 | korken89 | Haha, was still interesting :D
| |
19:38 | korken89 | Sounds great for processing pipelines
| |
19:38 | anuejn | ah no it was the right one
| |
19:38 | anuejn | was just confused by the issue importer
| |
19:39 | korken89 | Would be a nice feature
| |
19:39 | anuejn | the cores in https://github.com/apertus-open-source-cinema/nmigen-gateware/tree/master/src/lib/video implement something in that direction but are not nearly as cool as the rigel stuff
| |
19:39 | korken89 | How we used to implement the pipelines were like small modules with know delay and data width
| |
19:39 | anuejn | (e.g. no static scheduling, ...)
| |
19:40 | korken89 | I'm so amazed by the nMigen area
| |
19:40 | korken89 | We did all with raw VHDL and Jinja templates, and it was a true pain
| |
19:41 | anuejn | sounds... fun? :p
| |
19:41 | anuejn | I only started to do bigger fpga stuff when nmigen came up
| |
19:41 | korken89 | Now in a few days I have learned enough nMigen to get the FT600 running, which was horrible before, and its really amazing!
| |
19:41 | korken89 | Yeah same here
| |
19:41 | anuejn | so I am probably lacking most of the basics
| |
19:42 | korken89 | I have 0 formal education in FPGAs :)
| |
19:42 | anuejn | yup me too
| |
19:42 | korken89 | Or, I had one digital electonics course
| |
19:42 | korken89 | But it was a VHDL + simulation, not even mentioning FPGAs
| |
19:43 | anuejn | I have basically 0 formal education on nothnig (just finished school)
| |
19:43 | korken89 | With tools like nMigen it gets actually quite enjoyable :)
| |
19:43 | anuejn | jup
| |
19:43 | korken89 | Oh
| |
19:43 | anuejn | (actually all the in depth math stuff / complex stuff comes from vup2)
| |
19:43 | anuejn | ;)
| |
19:44 | korken89 | Hehe
| |
19:44 | korken89 | You picked up FPGAs just for fun?
| |
19:44 | anuejn | mainly because we wanted to get our camera working
| |
19:45 | korken89 | Oh, you started with cameras?
| |
19:45 | anuejn | so yes, for fun
| |
19:45 | anuejn | yup somehow I stumbled into the apertus project a couple of years ago and since then I am quite into cameras ;)
| |
19:46 | korken89 | Cool!
| |
19:47 | korken89 | Is there like an arhc overview of the camera in the apertus project?
| |
19:48 | anuejn | hm... not really?
| |
19:48 | anuejn | se6ast1an: do you know one
| |
19:48 | korken89 | No problem, I'm surfing around the repos :)
| |
19:49 | anuejn | sounds like a good plan :)
| |
19:49 | korken89 | Nice camera IC
| |
19:49 | anuejn | actually there is one more thing I want to point you to (for gateware development)
| |
19:49 | korken89 | Doit!
| |
19:49 | korken89 | I'm very new to nMigen so all tips are welcome :)
| |
19:50 | anuejn | (disclaimer: it is a big hack and very unholy but hacky)
| |
19:50 | anuejn | the SocPlatform infrastructure in our nmigen-gateware
| |
19:51 | anuejn | it allows you to mark signals as "i want to be able to read / change this value at runtime"
| |
19:51 | korken89 | Oh
| |
19:52 | korken89 | Like a register to access via the FT600?
| |
19:52 | anuejn | then it generates some glue-logic to be able to access that register via jtag (currently used for the machxo; probably works for the ecp5 with some changes) or via axi (for the zynq)
| |
19:52 | se6ast1an | arhc?
| |
19:52 | korken89 | Ohh
| |
19:53 | korken89 | se6ast1an: arch *
| |
19:53 | anuejn | then it generates a python library which exposes those registers as fake python variables
| |
19:53 | anuejn | it is a bit like a crude form of what litex does
| |
19:55 | se6ast1an | ah, no sorry, not that I am aware of
| |
19:55 | korken89 | So you get register access via the FPGA's JTAG?
| |
19:56 | anuejn | you can even define methods on your driver in your gareware codebase (example: https://github.com/apertus-open-source-cinema/nmigen-gateware/blob/master/src/lib/io/plugin_module_streamer/rx.py#L63)
| |
19:56 | anuejn | korken89: yup
| |
19:59 | korken89 | Very cool
| |
19:59 | korken89 | I have no idea how all that works, but sounds very nice for developments
| |
20:00 | anuejn | I can walk you trough the process of getting that up and running if you are interested
| |
20:01 | korken89 | I'd like to give it a try :) Not today though, soon bedtime, but I'll take you up on that offer!
| |
20:02 | anuejn | okay, cool :)
| |
20:04 | korken89 | Thanks for the help today! Quite fun to get the FT600 talking :D
| |
20:05 | anuejn | good luck and keep me posted :)
| |
20:07 | korken89 | Will do!
| |
20:39 | eppisai | left the channel | |
20:41 | Bertl | off for now ... bbl
| |
20:41 | Bertl | changed nick to: Bertl_oO
| |
22:08 | se6ast1an | off to bed
| |
22:08 | se6ast1an | good night
| |
22:51 | BAndiT1983 | changed nick to: BAndiT1983|away
| |
22:56 | korken89 | left the channel | |
23:41 | mumptai | left the channel |