Current Server Time: 18:49 (Central Europe)

#apertus IRC Channel Logs

2019/05/28

Timezone: UTC


01:08
RexOrCine
changed nick to: RexOrCine|away
02:03
lexano
left the channel
02:31
lexano
joined the channel
05:24
BAndiT1983|away
changed nick to: BAndiT1983
07:59
Bertl_zZ
changed nick to: Bertl
07:59
Bertl
morning folks!
07:59
apurvanandan[m]
Good morning!
08:14
BAndiT1983
changed nick to: BAndiT1983|away
08:15
Nira|away
changed nick to: Nira
08:19
sebix
joined the channel
08:31
se6astian|away
changed nick to: se6astian
08:41
se6astian
good day
09:50
futarisIRCcloud
joined the channel
10:23
Dev_
joined the channel
10:26
Dev_
Hello Bandit1983 , sorry I wasn't able to attend the yesterday's meeting , could u able to check my email . Any feedback ??
10:27
Dev_
left the channel
10:28
Bertl
off for now ... bbl
10:28
Bertl
changed nick to: Bertl_oO
11:51
Nira
changed nick to: Nira|away
11:59
futarisIRCcloud
left the channel
14:58
se6astian
changed nick to: se6astian|away
15:24
Y_G
joined the channel
16:45
BAndiT1983|away
changed nick to: BAndiT1983
16:47
BAndiT1983
hi Dev_, i've replied to your email yesterday already, please check your spam folder, as Supragya retrieved it from his
16:49
sebix
left the channel
18:03
Bertl_oO
changed nick to: Bertl
18:03
Bertl
evening folks!
18:03
apurvanandan[m]
Meeting Time?
18:03
Bertl
yup, in 5 minutes :)
18:03
niemand
joined the channel
18:03
niemand
left the channel
18:03
niemand
joined the channel
18:04
aSobhy
evening
18:09
Bertl
okay, sorry for being late ...
18:09
se6astian|away
changed nick to: se6astian
18:09
apurvanandan[m]
no problem
18:09
Bertl
so, today I'd like to focus on how to program the FPGAs and how to do some testing on the hardware (remote and local)
18:11
Bertl
in both tasks, there is a need to program a MachXO2 which is not directly accessible
18:11
Bertl
i.e. you cannot just connect a JTAG programmer and program it
18:13
Bertl
the plugin modules (USB 3.x) have to be programmed through the low speed GPIO pins of the plugin interface
18:14
Bertl
a breakout board can help here and allow access to the JTAG interface, but for the final setup, the MachXO2 needs to be programmed via the Beta
18:15
Bertl
and for the routing fabrics, it's even worse, there we do not even have a way to 'connect' to the JTAG port from outside, except for a tiny header which can be connected to wires on dedicated hardware
18:16
Bertl
so, how can we do that? any suggestions, ideas, etc?
18:18
apurvanandan[m]
Aren't the RFs programed by PIC microcontroller?
18:18
Bertl
correct, there we have two PIC16 connected to the MachXO2s
18:18
Bertl
any idea how the programming works there?
18:19
Y_G
left the channel
18:19
Bertl
or to rephrase the question, do you have an idea how you could use PIC16s to program a MachXO2 via JTAG?
18:21
apurvanandan[m]
First we program the PIC which in turn makes RFs programmable by python script running on Zynq?
18:21
apurvanandan[m]
Maybe I am wrong here
18:22
Bertl
no, that's actually how it works
18:22
Bertl
the details are a little trickier, but that's what I'm going to explain
18:23
Bertl
so the PIC16 are connected via three wires, one is a reset called #MCLR
18:23
Bertl
the other two are 'programming' pins called PCLK (clock) and PDAT (data)
18:24
Bertl
the two programming pins can be used as general purpose pins when the PIC is up and running
18:25
Bertl
so we could for example program the PIC16 and then use an UART protocol to 'talk' to the PIC16
18:26
Bertl
but back when this was first implemented, I opted for I2C and the pins are properly terminated to make high speed I2C possible
18:26
Bertl
so there are two protocols spoken on those two wires (PDAT, PCLK)
18:27
Bertl
first the ICSP protocol (in curcuit serial programming) used to program the PIC16
18:28
Bertl
and once the PIC16 is running, the second protocol, I2C, is active
18:28
Bertl
the PIC16 is programmed in such way that it acts as I2C slave
18:29
Bertl
showing up at a range of addresses, which all have specific functions
18:29
Bertl
we'll come to that when we need it
18:29
Bertl
so, any idea how we can do JTAG over I2C?
18:32
apurvanandan[m]
Nope ^^'
18:32
apurvanandan[m]
aSobhy: you around?
18:32
aSobhy
yes
18:33
Bertl
any idea how JTAG works?
18:35
aSobhy
we can use the SCL to be TCK
18:36
aSobhy
and SDA to be TDI ?
18:36
Bertl
hehe, no, we don't want to use an I2C bus as JTAG
18:37
Bertl
we have the situation that a full JTAG port (TMS, TDI, TDO, TCK) is connected to the PIC16 at one side
18:37
Bertl
and the I2C bus (SCL, SDA) is connected to the Zynq on the other end
18:38
Bertl
the problem now is to 'control' the JTAG, via the PIC, but do this over I2C :)
18:40
aSobhy
ah okay
18:41
Bertl
so any idea how JTAG works?
18:42
aSobhy
so we need to convert from I2C to JTAG (that's the python script apurvanandan[m] was talking about )
18:44
aSobhy
TMS & TCK are shared
18:44
aSobhy
TDI & TDO Chained
18:45
Bertl
okay, so there is a clock (TCK) and there is data
18:45
Bertl
there are two inputs to a JTAG device (TDI and TMS)
18:45
Bertl
and there is one output called TDO
18:46
Bertl
both TDI and TMS are shifted into a (shift) register at the TCK clock rate
18:47
Bertl
at the same time the data from the TDI shift register is shifted out via TDO
18:48
Bertl
the other shift register (the one TMS is shifted in) is called the tap controller
18:49
Bertl
it controls a state engine which basically tells the device what kind of data it will receive or transmit
18:50
Bertl
the JTAG state engine is quite complex but kind of symmetrical so once you get the idea, it is not too hard to understand
18:50
Bertl
you should definitely take a closer look in the next few days :)
18:51
Bertl
the simplified 'version' is we need to send bit sequences of (kind of) arbitrary length via TMS and TDI
18:52
Bertl
and while TMS and TDI are basically operating in parallel, thanks to the state engine, we can either send TMS data or TDI data (and keep the other line constant)
18:52
Bertl
(a little simplified here, but that's not a problem)
18:52
Bertl
as I2C is basically 8 bit data
18:53
Bertl
it makes sense to break down the strings of arbitrary length into 8bit chunks plus whatever remains at the end
18:54
Bertl
this is also implemented in the I2C slave in the PIC, so certain addresses result in either a full byte or less than eight bit being sent (or retrieved) via JTAG
18:55
Bertl
as mentioned several times, there are scripts which do certain JTAG operations, including programming the MachXO2s via those I2C registers
18:56
Bertl
we will test this via a remote session in the next few days once the remote Betas are hooked up
18:57
Bertl
now there are two 'ways' to load the bitstream into the MachXO2 ... anybody knows what they are and how they differ?
19:03
apurvanandan[m]
Background mode and off mode
19:03
apurvanandan[m]
?
19:04
Bertl
well, yeah, that's not exactly what I meant but it is related
19:04
Bertl
basically there is a flash memory in the MachXO2 and an SRAM
19:05
Bertl
and as most FPGA, the active configuration is always based on the SRAM
19:05
Bertl
so when the device is reset, the content from the flash is copied (or unpacked) into the SRAM
19:06
Bertl
so programming can be done in two ways, by programming the flash and by directly loading the bitstream into SRAM
19:08
Bertl
now while the PICs can be reprogrammed over and over again
19:09
Bertl
the MachXO2 have a somewhat limited amount of program cycles for the flash
19:09
Bertl
so for development, if possible, you want to use the direct upload to SRAM instead of flashing the bitstream
19:10
Bertl
now while the scripts and PIC code are sufficient for aSobhy's task (programming the routing fabrics)
19:11
Bertl
things become a little more complicated for the MachXO2s on the plugin boards
19:11
Bertl
any idea why?
19:12
apurvanandan[m]
I need to use a programmer?
19:12
Bertl
well, you can do that when you have the plugin in the breakout board (that's what it is for)
19:13
Bertl
but once the plugin gets installed in a Beta (and we will have two of them for testing) it's a little trickier
19:13
Bertl
what would be the process/path there?
19:13
aSobhy
because I have 2 MachX02
19:13
apurvanandan[m]
We will use a special pass through code on RFs
19:14
Bertl
yep, precisely
19:14
apurvanandan[m]
<Bertl "what would be the process/path t"> Till aSobhy doesn't completes the bidirectional protocol
19:14
Bertl
once aSobhy finishes some kind of JTAG interface via the RFs, we can hopefully use that
19:15
Bertl
apurvanandan[m]: do you also remember how the pass through works?
19:16
apurvanandan[m]
What's in the pass through code or how to use it?
19:16
Bertl
why not both :)
19:18
apurvanandan[m]
It is uploaded on RFE the same way as discussed, then after that all signals we send to RFE are forwarded to plugin module's single io pins, some switching on PIC is required maybe
19:19
Bertl
that is basically correct except for a small detail
19:19
apurvanandan[m]
I have gone through the codes somewhere on github repo but I don't remember at the moment
19:20
Bertl
can you check the schematics which pins of RFE are connected to the plugin slots?
19:20
aSobhy
sorry i'm confused, are we talking in two different topics ?
19:21
apurvanandan[m]
Haven't opened schematics of main board yet. It will take time.
19:21
Bertl
aSobhy: no, what's the confusion?
19:23
aSobhy
what is programmer apurvanandan[m] talking about ?!
19:24
aSobhy
I don't understand from then
19:24
Bertl
about programming the MachXO2 on the USB 3.0 plugin module
19:25
Bertl
https://apertus.org/sites/default/files/images/AXIOM-Beta-PCB-Stack-Trans-04.png
19:26
Bertl
the plugin modules each also contain a MachXO2 (the USB3 ones) which work as gearwork for the FTDI used to connect via USB
19:26
Bertl
they are plugged into the plugin slots of the Beta (on the Mainboard) which connects them to the Zynq and the RF (MachXO2 on the Mainboard)
19:27
aSobhy
ah okay
19:27
Bertl
so basically it is a two-hop from the Zynq to the MachXO2 programming interface on the plugin modules
19:28
Bertl
(and a three hop via the PIC16)
19:29
aSobhy
so the JTAG I'll write will make it 2 hops only
19:29
Bertl
yep, the Zynq then can send (and receive) JTAG data via the MachXO2 interface on the main board
19:30
aSobhy
okay sorry of that misunderstand :)
19:31
Bertl
no problem, it's always good to get an idea what the other students are doing :)
19:34
Bertl
so, aSobhy, maybe you got an idea which pins of RFE are connected to the plugin slots?
19:34
aSobhy
so I'll change the JTAG to be implemented first
19:34
Bertl
(while apurvanandan[m] is searching)
19:35
aSobhy
yes
19:36
Bertl
well, you may prioritize JTAG if you like
19:37
Bertl
but it is definitely more complex than I2C to get started with
19:39
aSobhy
yeah I designed it from easy to hard but I'll do all at the end so no problem!
19:41
Bertl
okay, I guess apurvanandan[m] might appreciate it :)
19:43
Bertl
so back to the RFE pins connected to the plugin slots
19:44
apurvanandan[m]
They are connected to Jtag programming pins directly
19:46
Bertl
sure about that?
19:46
apurvanandan[m]
Of usb plugin module, on RFE I am searching what are those pins of MachXO2
19:53
apurvanandan[m]
I think they are general purpose pins of RFE
19:53
apurvanandan[m]
Yeah, they are GPIOs
19:53
Bertl
and how are the connections labeled?
19:54
apurvanandan[m]
PCIE_N_IO* on RFE
19:57
apurvanandan[m]
Jtag type pins on usb module
19:58
Bertl
okay, except for a small detail, the plugin slots are on the 'West' side not the 'East', so it is RFW not RFE :)
19:59
aSobhy
yes I'll just say that
19:59
apurvanandan[m]
So JTAG protocol is similar to SPI, hence RFE simply forwards it
20:00
apurvanandan[m]
What needs to be sent is changed little
20:00
apurvanandan[m]
To the spi
20:00
Bertl
RFW not RFE :)
20:01
Bertl
and the pass through is actually slighly different in the plugin programming case
20:01
apurvanandan[m]
> RFW not RFE :)
20:01
apurvanandan[m]
Yes , that's confusing
20:01
Bertl
there are a number of PIC16 GPIOs connected to the RFs
20:01
Bertl
(besides the JTAG pins)
20:02
Bertl
and those can be used to send JTAG data _through_ the RFW directly to the plugin slots
20:04
Bertl
okay, so that's been a lot for today, but we have to increase the pace now that we entered the coding phase
20:05
Bertl
if all goes well, the remote Beta should be available tomorrow, so let's plan for Thursday or Friday to have a remote session with programming PICs and MachXO2s
20:06
Bertl
please read up on JTAG and I2C for this purpose and check the schematics again
20:07
apurvanandan[m]
Bertl, won't you see our this week's finds? :)
20:07
Bertl
of course, please share
20:09
aSobhy
in case it will be along meeting I'd prefer Thursday ?!
20:10
Bertl
okay, apurvanandan[m], any preferences?
20:11
apurvanandan[m]
Firstly I found this book that briefs you with all concepts of high speed serial links
20:11
apurvanandan[m]
http://xilinx.eetrend.com/files-eetrend-xilinx/forum/201407/7408-13218-xilinx_serial_io_101_gao_su_chuan_xing_ru_men_.pdf
20:11
apurvanandan[m]
This presentation that explains some topics like training pattern , word alignment etc: https://www.so-logic.net/documents/trainings/01_so_hssio_basics.pdf
20:12
apurvanandan[m]
This paper compares two methods of word recombination ie using delay component and using fifo: http://sci-hub.tw/https://doi.org/10.1109/TCSII.2015.2468992
20:16
Bertl
okay, nice
20:17
apurvan
joined the channel
20:18
apurvan
Sorry Riot.im is not working properly
20:19
apurvan
I would prefer Friday actually :)
20:20
Bertl
okay, so let's see when the Beta is up and running, and we decide then, be prepared for Thursday or Friday evening
20:20
apurvan
Okay fine
20:21
apurvan
But till then please guide us so that we can atleast start coding
20:21
Bertl
of course, you can already start with a bunch of things you learned
20:21
apurvan
I wrote in my proposal to start coding from May 20, and haven't yet
20:21
Bertl
like for example the PRNG and BER calculations
20:22
Bertl
(they are independent from any protocol and/or physical setup)
20:22
apurvan
PRNG is already implemented by you though
20:23
Bertl
well, you need to integrate it properly
20:23
Bertl
best combine it with a testbench
20:24
Bertl
check with 'local' sender and receiver pairs (in the same FPGA)
20:24
apurvan
Also do we need to follow our timeline exactly, like do every thing in same order?
20:24
Bertl
then introduce some bit error generator
20:24
apurvan
I mentioned to start with ft601q controller
20:25
Bertl
no, we have some flexibility there but we need to match the GSoC deadlines
20:25
apurvan
And also mentioned to show that for the phase 1 evaluation ^^'
20:25
Bertl
(but we have some wiggle room there as well)
20:26
Bertl
I presume you already know the FT60x inside out
20:26
apurvan
Actually no I don't
20:26
Bertl
(at least theoretically)
20:26
aSobhy
actually its hard for me to start coding till Sunday(2-6) 4 days remaining :(
20:27
Bertl
how's that?
20:27
Bertl
(I mean, why is it hard?)
20:28
aSobhy
still 2 exams (Thursday and Sunday)
20:29
Bertl
well, that's something you knew when you applied
20:30
Bertl
anyway, GSoC is not simple, so try your best there as well as with any other exams or tasks
20:31
apurvan
This week I read properly about ft601q.
20:31
Bertl
but as you both will need the test framework, it might make things a lot simpler to work together
20:32
Bertl
i.e. make sure that the code is useable by both parties, this way you can half your efforts
20:32
Bertl
*halve
20:32
apurvan
Yes i agree fully
20:33
apurvan
Ok will chat with aSobhy and start coding from tomorrow.
20:33
Bertl
apurvan: if you like, you can prepare a small presentation about the FT60x for next week?
20:34
apurvan
What type and for what( for some official reason?)
20:34
aSobhy
OK, what tools we will use for the remote meeting ? (and we will use linux )
20:35
Bertl
kind of overview/summary of the datasheet, how the thing works and what it does ... how the interface looks like
20:35
apurvan
changed nick to: apurvanandan
20:35
Bertl
for the remote meeting we will use ssh/screen
20:36
Bertl
(and IRC of course, but a separate channel)
20:36
Bertl
so if you haven't done so already, send me your public ssh keys
20:36
Bertl
and check (with me in private) that they actually work
20:37
apurvanandan
And how will I present that?
20:38
aSobhy
I have tried before and it works I'm asking because i didn't free some space on Ubuntu (needs to formate) so no vivado or lattice on linux
20:38
Bertl
however you like ... IRC chat, conversional style or if you prefer with (PDF) slides or whatever you like
20:38
Bertl
aSobhy: we won't need the tools for this
20:39
aSobhy
OK, thanks :)
20:39
Bertl
but it won't hurt to start cleaning up :)
20:40
aSobhy
hhhhhhhh yeah I know
20:41
Bertl
okay, any unanswered questions left?
20:42
apurvanandan[m]
`I have sent my ssh key
20:42
aSobhy
It's all about the disk is full and I'll give Ubuntu some space so I'll re-partition the disk
20:46
apurvanandan[m]
<Bertl "okay, any unanswered questions l"> Nope, Thanks for your time!
20:49
Bertl
you're welcome!
20:49
aSobhy
Bertl: how can we save the meeting chat
20:50
Bertl
as we are on the public channel, it is automatically logged
20:50
Bertl
so you can look it up on irc.apertus.org
20:50
aSobhy
by the logs on the server I think se6astian said we are saving it and post it in the meeting group
20:51
aSobhy
google groups
20:51
Bertl
yes, that might happen again, i.e. some reference to the irc logs or a short summary
20:52
aSobhy
I think you don't have time to do so I can help :)
20:53
Bertl
no problem, just check with se6astian
20:54
aSobhy
OK,
20:54
aSobhy
Thanks Bertl for your time :)
20:55
Bertl
my pleasure!
20:59
apurvanandan
left the channel
21:38
apurvan
joined the channel
21:39
apurvan
left the channel
21:39
apurvan
joined the channel
21:43
apurvan
left the channel
21:47
niemand
left the channel
22:03
se6astian
changed nick to: se6astian|away
22:04
BAndiT1983
changed nick to: BAndiT1983|away
22:05
apu
joined the channel
22:07
johnathan
joined the channel
22:13
apu
left the channel
22:17
apurvanandan
joined the channel
22:17
apurvanandan
left the channel
22:29
johnathan
left the channel
22:34
johnathan
joined the channel
22:39
johnathan
left the channel
22:39
johnathan
joined the channel
00:08
johnathan
left the channel
00:28
Bertl
off to bed now ... have a good one everyone!
00:29
Bertl
changed nick to: Bertl_zZ