sb0 changed the topic of #m-labs to: ARTIQ, Migen, MiSoC, Mixxeo & other M-Labs projects :: fka #milkymist :: Logs http://irclog.whitequark.org/m-labs
key2 has quit [Ping timeout: 250 seconds]
<cr1901_modern>
mumptai: NextValue is the function you're looking for
fengling has joined #m-labs
fengling has quit [Ping timeout: 240 seconds]
fengling has joined #m-labs
<sb0>
whitequark, can you develop a i2c core?
sb0 has quit [Quit: Leaving]
hozer has quit [Quit: Leaving.]
hozer has joined #m-labs
<cr1901_modern>
sb0: I'd be willing to do that. Is it for misoc?
rohitksingh_work has joined #m-labs
sb0 has joined #m-labs
<sb0>
cr1901_modern, yes; more precisely for programming the si5324
<sb0>
on the transceiver demo.
<sb0>
and it has to work next week.
flaviusb has joined #m-labs
hozer has quit [Ping timeout: 244 seconds]
hozer has joined #m-labs
flaviusb has quit [Ping timeout: 258 seconds]
FabM has joined #m-labs
<sb0>
"1010101010101010101" seems to be the GTX output "fault" pattern when the input is stuck at zero
<sb0>
the brute-force comma alignment method appears to work fine
rohitksingh_work has quit [Ping timeout: 276 seconds]
<sb0>
another advantage of this technique is it keeps resetting the GTX if the input data is not valid, which due to another Xilinx fuckup (RXCDRLOCK is not reliable and "reserved") is the only way of dealing with powering up a RX when the input data is not valid yet
rohitksingh_work has joined #m-labs
<sb0>
so it's 2-in-1
<whitequark>
sb0: hmm
<whitequark>
I've never really used migen before now, not sure how shallow the learning curve is
<whitequark>
I could probably write it pretty quickly in Verilog
<sb0>
ok, so it should be pretty quick in migen, too
<sb0>
the only really new thing will be the CSR stuff
<whitequark>
okay, I'll start looking at it around sunday or so
<whitequark>
do you want me to bother with clock extension, or make it dumb and just drive SCK blindly?
<sb0>
I don't think any chip we use right now requires clock extension
<sb0>
nor do we care about performance, so we can just use the slowest clock that works
<sb0>
*slower
<whitequark>
ok, that should be quite easy indeed
cr1901_modern1 has joined #m-labs
early has quit [Ping timeout: 244 seconds]
early has joined #m-labs
tmbinc__ has quit [Ping timeout: 244 seconds]
tmbinc__ has joined #m-labs
cr1901_modern has quit [Ping timeout: 244 seconds]
rohitksingh_work has quit [Quit: Leaving.]
rohitksingh_work has joined #m-labs
<sb0>
"The main contribution of 64b/66b is the observation that the deterministic runlength and transition density of 8b/10b are not always worth a 25% code overhead, and that solid robust systems could be designed using statistically bounded methods. At some point, the real risk of a nuclear war, meteoric impact, or power supply failure dominate the reliability of both 8b/10b and 64b/66b systems."
<sb0>
whitequark, yes, i2c is easy, but frustrating when the chip at the other end acts up.
<sb0>
also the easiest clock turns out to be 62.5MHz instead of 125MHz, as the transceiver have a minimum ratio of 20 - is that easy to input and output 62.5 MHz in the Si5324?
<whitequark>
sure, just need to run the dspll tool
<whitequark>
actually, probably can just adjust the divisor.
<sb0>
the input will be 62.5 as well
<sb0>
rjo, what do you think of TMDS?
<sb0>
it's more elegant than IBM 8b10b, it has fewer commas but we really need only one. trying to understand the details of its running disparity control; since we'll typically encode multiple bytes per cycle, it's important that it is simple enough
<rjo>
i have no experience with tmds. there are a bunch of things that we could use the other comma chars for, no?
<sb0>
we can just use the same comma as synchronizer and packet delimiter. then the next byte can be the packet type
<rjo>
the disparity (dc-coupled usually afaict) could be a bit worrying but i don't know really
<sb0>
I don't actually understand how they came up with the equations for 5b/6b and 3b/4b, which are convoluted and look pretty random. did you find a good explanation for this?
<sb0>
(talking about 8b/10b(
<rjo>
yes. if we elevate everything to the packet layer then we only need one comma.
<sb0>
TMDS is fundamentally a bunch or XORs to reduce the amount of transitions in non-comma characters
<sb0>
that's easy enough to understand. but 8b10b...
<rjo>
the original paper has a lot on that 5/6b 3/4b design. those two parts are similar and seemed to be somewhat fundamental in the sense that they already give you most of thee features and may be the smalles entities that achieve that. but it does seem a bit random.
<rjo>
you don't need to understand it. but you said you already had implemented 8b10b in migen?
<rjo>
logic-wise 8b10b is extremely small afaict.
<rjo>
*the features ... *the smallest entities
<sb0>
I had implemented TMDS. I thought that 8b10b was roughly the same, but there's this somewhat important difference between the strange equations and XORs
<rjo>
yes. if you want i can give you my 8b10b in migen which felt like 90% done. equation based.
<sb0>
let me fully understand the TMDS running disparity control. if it sounds plausible that a FPGA implementation can deal with the running disparity of multiple chars in one cycle at a reasonable clock rate (it is the case for 8b10b), I prefer TMDS
<sb0>
do you prefer remembering trigonometric identities, or computing with complex exponentials?
<sb0>
bbl
sb0 has quit [Quit: Leaving]
<rjo>
;) you don't have to remember the 8b10b equations.
<rjo>
anyway. 64b66b might actually be more aesthetic and albeit a bit more complicated.
key2 has joined #m-labs
fengling has quit [Quit: WeeChat 1.4]
sb0 has joined #m-labs
<sb0>
64b66b doesn't have guaranteed disparity and requires many bits to be buffered
<rjo>
the guaranteed disparity does not seem to matter in that case. but buffering does. i didn't know that.
<sb0>
it doesn't matter from a practical standpoint, but it does from an aesthetic one
<sb0>
from a practical standpoint, the 8b10b equations are also fine: the 5b6b encoder and decoder requires at most one LUT per bit in a modern FPGA
<sb0>
and the LUT output is directly the value you want - it's one level of logic
<sb0>
TMDS, well, you need to chain 7 XORs. that will take two levels of LUTs.
<sb0>
plus the XOR/XNOR selection logic
fengling has joined #m-labs
<sb0>
okay, TMDS has more complicated running disparity control, and it sounds more difficult to do many character per cycles using it
<sb0>
because of the different running disparity control, its spectrum may reach into lower frequencies too
<sb0>
(the maximum absolute value of the running disparity for TMDS is rather high)
<sb0>
it's 1 for 8b/10b
<sb0>
and 8 for TMDS
<sb0>
at symbol boundaries
<sb0>
I'm not even sure all SFP transceivers will handle that nicely
<sb0>
so 8b10b it is then
<sb0>
I'll probably not bother with the equations and just put a look-up table in the code
<sb0>
that's what the FPGA hardware will end up doing anyway
<cr1901_modern1>
sb0: "do you prefer remembering trigonometric identities, or computing with complex exponentials?" Do these ever go away once you get past first year of EE :P?
cr1901_modern1 is now known as cr1901_modern
fengling has quit [Ping timeout: 240 seconds]
rohitksingh_work has quit [Read error: Connection reset by peer]
rohitksingh has joined #m-labs
<GitHub163>
[artiq] jordens created phaser (+1 new commit): https://git.io/vKM1t
<GitHub163>
artiq/phaser d83046d Robert Jordens: gateware: copy phaser (df3825a)
rohitksingh1 has joined #m-labs
rohitksingh has quit [Ping timeout: 252 seconds]
fengling has joined #m-labs
<rjo>
_florent_: i have moved my dsp code for the ad9154 into artiq/phaser i am using dummy data outputs currently. if you write your code, i would just put it in there as well.
<rjo>
_florent_: how is the jesd204b stuff?
<rjo>
cr1901_modern: is that misoc branch of yours "done" from your perspective?
<cr1901_modern>
rjo: Need to push a few more commits/run the test suite one last time. Then yes it will be :). Please give me an hour
fengling has quit [Quit: WeeChat 1.4]
<cr1901_modern>
rjo: Did you see the most recent commit? I was able to work your original test suite into something usable
rohitksingh has joined #m-labs
rohitksingh1 has quit [Ping timeout: 252 seconds]
<rjo>
cr1901_modern: yes. it was also usable before.
<cr1901_modern>
rjo: It was? As I imported it from artiq, it didn't run. And I recall that you said it "was an idea that didn't pan out"
<cr1901_modern>
This wasn't a slight at your coding ability :P
<rjo>
the stuff after the return was a sketch. the test suite before worked fine.
<cr1901_modern>
Oh. Well I turned the sketch into a test suite successfully then :)*.
<rjo>
cr1901_modern: you just need to be aware how much use that additional test suite will bring and how much bitrot it will see.
<rjo>
ok. bbl
<cr1901_modern>
rjo: Then I can get rid of it after I've verified the CSR core runs if you wish
<cr1901_modern>
alright
<cr1901_modern>
It just exercised all the features of the core
mumptai has joined #m-labs
tmbinc__ has quit [Ping timeout: 272 seconds]
tmbinc__ has joined #m-labs
_MiW has joined #m-labs
cr1901_modern has quit [*.net *.split]
whitequark has quit [*.net *.split]
shuffle2 has quit [*.net *.split]
MiW has quit [*.net *.split]
stekern has quit [*.net *.split]
_MiW is now known as MiW
stekern has joined #m-labs
cr1901_modern has joined #m-labs
shuffle2 has joined #m-labs
whitequark has joined #m-labs
rohitksingh has quit [Ping timeout: 260 seconds]
rohitksingh has joined #m-labs
FabM has quit [Quit: ChatZilla 0.9.92 [Firefox 47.0/20160604131506]]