azonenberg changed the topic of ##openfpga to: Open source tools for FPGAs, CPLDs, etc. Silicon RE, bitfile RE, synthesis, place-and-route, and JTAG are all on topic. Channel logs: https://libera.irclog.whitequark.org/~h~openfpga
Degi_ has joined ##openfpga
Degi has quit [Ping timeout: 258 seconds]
Degi_ is now known as Degi
uovo has quit [Ping timeout: 258 seconds]
oeuf has quit [Ping timeout: 240 seconds]
uovo has joined ##openfpga
oeuf has joined ##openfpga
uovo has quit [Ping timeout: 272 seconds]
uovo has joined ##openfpga
uovo has quit [Ping timeout: 265 seconds]
oeuf has quit [Ping timeout: 272 seconds]
uovo has joined ##openfpga
promach[m] has quit [Write error: Connection reset by peer]
whitequark has quit [Read error: Connection reset by peer]
jevinskie[m] has quit [Read error: Connection reset by peer]
emilazy has quit [Read error: Connection reset by peer]
oeuf has joined ##openfpga
promach[m] has joined ##openfpga
emilazy has joined ##openfpga
whitequark has joined ##openfpga
jevinskie[m] has joined ##openfpga
promach[m] has quit [Quit: node-irc says goodbye]
whitequark has quit [Quit: node-irc says goodbye]
emilazy has quit [Quit: node-irc says goodbye]
jevinskie[m] has quit [Quit: node-irc says goodbye]
oeuf has quit [Ping timeout: 252 seconds]
oeuf has joined ##openfpga
emeb_mac has quit [Quit: Leaving.]
promach[m] has joined ##openfpga
whitequark has joined ##openfpga
jevinskie[m] has joined ##openfpga
emilazy has joined ##openfpga
promach[m] has quit [Quit: Client limit exceeded: 20000]
whitequark has quit [Quit: Client limit exceeded: 20000]
emilazy has quit [Quit: Client limit exceeded: 20000]
jevinskie[m] has quit [Quit: Client limit exceeded: 20000]
promach[m] has joined ##openfpga
emilazy has joined ##openfpga
whitequark has joined ##openfpga
jevinskie[m] has joined ##openfpga
emilazy has quit [Quit: Client limit exceeded: 20000]
whitequark has quit [Quit: Client limit exceeded: 20000]
promach[m] has quit [Quit: Client limit exceeded: 20000]
jevinskie[m] has quit [Quit: Client limit exceeded: 20000]
tokomak has joined ##openfpga
promach[m] has joined ##openfpga
emilazy has joined ##openfpga
whitequark has joined ##openfpga
jevinskie[m] has joined ##openfpga
whitequark has quit [Remote host closed the connection]
emilazy has quit [Remote host closed the connection]
jevinskie[m] has quit [Remote host closed the connection]
promach[m] has quit [Remote host closed the connection]
promach[m] has joined ##openfpga
emilazy has joined ##openfpga
whitequark has joined ##openfpga
jevinskie[m] has joined ##openfpga
specing_ has joined ##openfpga
specing has quit [Ping timeout: 258 seconds]
specing_ is now known as specing
<pie_bnc>
heh
<pie_bnc>
> common plastics _are_ polymerized oil so separating the two is nontrivial.
* pie_bnc
facepalms
<pie_bnc>
true
<pie_bnc>
otoh I imagine there are differences between crude oil and vegetable oil
<sorear>
definitely, but also I don't know the details of the type of plastic, the type of oil, or how it was polymerized
uovo has quit [Ping timeout: 252 seconds]
pie_bnc is now known as pie_
uovo has joined ##openfpga
unkraut has joined ##openfpga
<pie_>
On an unrelated note, my university handed out some kinda nice glass water bottles, says made in china on the bottom (surprise) - the cap smells moderately like plastic (probably not glue?)
<pie_>
should I drink from it? xD
<pie_>
My reasoning is that if you can smell something it's obviously releasing _something_
<pie_>
the question is whether that's relevant
<pie_>
(* the cap is plastic and some stainless steel as far as I can tell)
<qu1j0t3>
pie_: probably fine ;-)
<qu1j0t3>
pie_: glass is nice
<pie_>
Id say hooray for glass being easy to clean (and presumably, generally chemically inert), but its opening is pretty small so cleaning is gonna be eh...
<pie_>
more on-topic, I was giving some friends a lecture the other day when one of them asked "but ...how do you make `if`?" (as in the C programming language construct), which is a reasonable question and mysterious when youre new
<pie_>
we were at it for an hour or two because they had never seen an assembly program IIUC, but I basically reduced it to "it gets translated to `ifs` you have availible as assembly instructions"
<qu1j0t3>
yeah
<qu1j0t3>
it's been a while but i remember how baffling such questions were to me
<qu1j0t3>
for many years compilers just seemed like black magic
<qu1j0t3>
i even remember in my first few months exposure to BASIC i didn't know you could even loop
<pie_>
yeah definitely. still seems like black magic to me but some progress is being made :D
<pie_>
hehe
<qu1j0t3>
man, i would love to teach this stuff
<pie_>
so anyway then I was going to explain how a CPU implements a conditional jump instruction, because until you do that its all tautological right?
<qu1j0t3>
teaching assembler would be fun for me
<qu1j0t3>
especially embedded
<pie_>
and then I realized I cant give a coherent explanation on it
<qu1j0t3>
yeah you end up having to just explain it's "the computer is going down this list of things and carrying it out"
<qu1j0t3>
imperative model
<pie_>
i did some fumbling explaining whaat an instruction pointer is
<qu1j0t3>
yes, that's a necessary concept really
<pie_>
and that (conceptually) there are units in the processor for each instruction
<qu1j0t3>
i would teach all this TOGETHER with assembly language
<qu1j0t3>
e.g. MIPS
<qu1j0t3>
"How would you add two numbers?"
<qu1j0t3>
"How would you do something ten times?"
<qu1j0t3>
etc
<qu1j0t3>
"How would you print out a string [given some mild context about I/O]?"
<qu1j0t3>
"What if... we could write in a simpler way..."
<sorear>
"block IF is implemented in terms of logical IF/GOTO"
<pie_>
i did that in basically some order of "whats assembly language, instruciton pointer, whats a jump instruction, programs as data, whats a decoder, what are registers"
<pie_>
(having to loop back and forth a few times to bootstrap)
<qu1j0t3>
yes
<qu1j0t3>
that's a lot of new concepts at once lol
<sorear>
question of course of how much comp arch people need to know
<qu1j0t3>
right
<pie_>
well one of the guys was a food engineer, so none? :D the other was a physicist who was /mildly/ interested, the third was the compsci guy that asked
<pie_>
(students)
<pie_>
but anyway the "how does even `if`" still basically applies to asm, and modulo the above, i dont know how to answer that (well)
<pie_>
obviously theres some comparator gateware that does your check of the status register or whatever, and then something that loads new data into the instruciton pointer
<pie_>
but thats all I can come up with
<sorear>
if you're executing instructions one at a time, you have PC register, and the input to that is determined by (is_a_branch && taken) ? destination : pc + "4"
<qu1j0t3>
pie_: i think your terminology can be simplified
<qu1j0t3>
pie_: also maybe i'm visually biased, but walking through a short assembler program on a whiteboard would seem to be helpful
<pie_>
qu1j0t3: that would have certainly been warranted as opposed to doing everything verbally but i *think* they got the ideas
<qu1j0t3>
pie_: but i honestly think you can't start with "how does IF work", it should be part of a general understanding of assembler
<qu1j0t3>
"how does ANYTHING work, lol"
<pie_>
yeah, but I think it's possible to get a rough idea of how one thing works?
<sorear>
duct tape and prayers
<qu1j0t3>
pie_: e.g. i don't think you need to mention "decoders" or "comparators" at first
<qu1j0t3>
sorear: :D
<pie_>
to be fair I didnt ask any comprehension check questoins :P
<pie_>
qu1j0t3: well the decoder thing was me trying to explain the code as data thing
<qu1j0t3>
i am not even sure that matters at first either
<qu1j0t3>
"Here's a program at the level the CPU understands directly"
<pie_>
but jumping to an arbitrary memory address doesnt make sense otherwise
<pie_>
to be fair, they probably wouldnt have noticed
<qu1j0t3>
it does if you're looking at a list of instructions
<qu1j0t3>
i.e. you don't teach the generality first, you teach in a sandbox first
<pie_>
mm
<sorear>
if you have a harvard arch you don't need a decoder, just pretend that there's an array of opaque instructions somewhere
<qu1j0t3>
^^ that
<pie_>
thats the one with separate memory and data?
<pie_>
yeah I probably could have done that but didnt, basically accidentally
<qu1j0t3>
it's okay you did great anyway
<qu1j0t3>
these are just suggestions
<pie_>
I dont have experience with harvard arch so it was probably a familiarity thing
GenTooMan has quit [Remote host closed the connection]
GenTooMan has joined ##openfpga
<pie_>
the harvard arch has its own complexity where you have to explicitly differentiate between code and data? either way you have to take a small detour through some manner of memory addressing semantics
<pie_>
(to the extent of a couple sentences)
<pie_>
mind you i have like zero didactic experence
<pie_>
I did think of grabbing my laptop but that would probably not have worked well so I stuck to the verbal stuff
<sorear>
you can pretend instructions don't have addresses until you're doing control flow
<pie_>
whiteboard may have worked but Im no good at the whiteboard (yet?) - or at least I don't think I could have done any manner of good job YOLOing diagrams
<sorear>
wonder if it helps to be explicit that the simplified model is basically just the 1947 EDSAC
<pie_>
sorear: right, but thats basically what we were doing discussing something like jnz
<pie_>
(i used some made up jnz)
<pie_>
bbiab
<qu1j0t3>
BBIAB #100, R4
<pie_>
xD
unkraut has quit [Remote host closed the connection]
emeb has joined ##openfpga
Miyu has joined ##openfpga
hackkitten has quit [Ping timeout: 256 seconds]
Miyu is now known as hackkitten
unkraut has joined ##openfpga
tokomak has quit [Read error: Connection reset by peer]
emeb_mac has joined ##openfpga
specing_ has joined ##openfpga
specing has quit [Ping timeout: 272 seconds]
specing_ is now known as specing
esden has quit [Read error: Connection reset by peer]
esden has joined ##openfpga
rektide_ has quit [Remote host closed the connection]