cinera_handmade.network/miotatsu/riscy/riscy/riscy040.hmml

97 lines
6.1 KiB
Plaintext

[video member=miotatsu stream_platform=twitch project=riscy title="PRCI" vod_platform=youtube id=lCDsMmd5Jtw annotator=Miblo]
[0:07][Recap and set the stage for the day]
[0:45][Read about E300 Power, Reset, Clock, Interrupt (PRCI) Control and Status Registers[ref
site="SiFive Developers"
page="E3 Coreplex Manual"
url=https://static.dev.sifive.com/pdfjs/web/viewer.html?file=https://static.dev.sifive.com/SiFive-E3-Coreplex-v1.2.pdf]][:hardware :research]
[2:57][Marry up the PRCI_REG macro and the PRCI register offsets from the code with the documentation[ref
site="SiFive Developers"
page="E3 Coreplex Manual"
url=https://static.dev.sifive.com/pdfjs/web/viewer.html?file=https://static.dev.sifive.com/SiFive-E3-Coreplex-v1.2.pdf]][:hardware :research]
[5:22][Hunt for further documentation on the PRCI]
[9:01][Read about E300 Clock Generation[ref
site="SiFive Developers"
page="Platform Reference Manual"
url=https://www.sifive.com/documentation/freedom-soc/freedom-e300-platform-reference-manual/]][:hardware :research]
[14:04][A few thoughts on ring oscillator and trim][:hardware]
[15:36][@riskyfive][Just a chain of not gates]
[15:40][Continued thoughts on how the trim value works][:hardware]
[16:35][Continue reading about the Internal Trimmable Programmable 72 MHz Oscillator (HFROSC)[ref
site="SiFive Developers"
page="Platform Reference Manual"
url=https://www.sifive.com/documentation/freedom-soc/freedom-e300-platform-reference-manual/]][:hardware :research]
[20:29][Read about External 16 MHz Crystal Oscilllator (HFXOSC)[ref
site="SiFive Developers"
page="Platform Reference Manual"
url=https://www.sifive.com/documentation/freedom-soc/freedom-e300-platform-reference-manual/]][:hardware :research]
[22:35][@riskyfive][ESR: equivalent series resistance]
[22:47][Continue reading about the HFXOSC[ref
site="SiFive Developers"
page="Platform Reference Manual"
url=https://www.sifive.com/documentation/freedom-soc/freedom-e300-platform-reference-manual/]][:hardware :research]
[23:31][@riskyfive][Voltage-controlled oscillator]
[23:40][Continue reading about HFXOSC[ref
site="SiFive Developers"
page="Platform Reference Manual"
url=https://www.sifive.com/documentation/freedom-soc/freedom-e300-platform-reference-manual/]][:hardware :research]
[24:47][Read about Internal High-Frequency PLL (HFPLL)[ref
site="SiFive Developers"
page="Platform Reference Manual"
url=https://www.sifive.com/documentation/freedom-soc/freedom-e300-platform-reference-manual/] and Phase-locked loop[ref
site=Wikipedia
page="Phase-locked loop"
url=https://en.wikipedia.org/wiki/Phase-locked_loop]][:hardware :research]
[27:59][Determine to add to the plan][:blackboard]
[30:17][@riskyfive][i.e. an assembler ;)]
[30:31][Add "compare a demo's asm to expected", "study the hardware implementation" and "write software" to the plan][:blackboard]
[31:52][Continue reading about HFPLL[ref
site="SiFive Developers"
page="Platform Reference Manual"
url=https://www.sifive.com/documentation/freedom-soc/freedom-e300-platform-reference-manual/]][:hardware :research]
[35:18][A few thoughts on how the PLL relates to the marketed clock rate of the HiFive1][:blackboard]
[37:04][@riskyfive][The PPL generates the higher clock rates from the crystal]
[37:59][@riskyfive][Probably not within spec]
[38:25][Consider overclocking a HiFive1 (not our main one, though!)]
[39:20][Continue reading about HFPLL[ref
site="SiFive Developers"
page="Platform Reference Manual"
url=https://www.sifive.com/documentation/freedom-soc/freedom-e300-platform-reference-manual/]][:hardware :research]
[42:23][@riskyfive][When they say 0 is not supported I'm imagining it's because the core doesn't run that quickly, not because that divider wouldn't work]
[43:18][Continue reading about HFPLL[ref
site="SiFive Developers"
page="Platform Reference Manual"
url=https://www.sifive.com/documentation/freedom-soc/freedom-e300-platform-reference-manual/]][:hardware :research]
[49:49][Read about PLL]
[49:54][@riskyfive][VDD and VSS are power pins]
[50:00][Read about PLL Output Divider[ref
site="SiFive Developers"
page="Platform Reference Manual"
url=https://www.sifive.com/documentation/freedom-soc/freedom-e300-platform-reference-manual/]][:hardware :research]
[51:15][Read about Internal Low-Frequency Oscillator (LFRCOSC)[ref
site="SiFive Developers"
page="Platform Reference Manual"
url=https://www.sifive.com/documentation/freedom-soc/freedom-e300-platform-reference-manual/]][:hardware :research]
[51:55][Read about External 32.768 kHz Low-Frequency Crystal Oscillator (LFXOSC)[ref
site="SiFive Developers"
page="Platform Reference Manual"
url=https://www.sifive.com/documentation/freedom-soc/freedom-e300-platform-reference-manual/]][:hardware :research]
[52:39][Determine that we fully understand the opening code of led_fade.c and consult the PLL_* macros]
[55:19][Cross off "PRCI" and move on to "Other Demos"][:blackboard]
[56:34][Embark on studying performance_counters.c][:performance :research]
[1:00:34][Read 3.1.15 :Hardware :Performance Monitor[ref
site="RISC-V"
page="Draft Privileged ISA Specification v1.9.1"
url=https://riscv.org/specifications/privileged-isa/]]
[1:03:34][Continue reading the rdmcycle() macro][:asm :performance :research]
[1:04:29][Read about BNE in 2.5 Control Transfer Instructions and CSRRS in 2.8 Control and Status Register Instructions[ref
site=RISC-V
page="User-Level ISA Specification v2.1"
url=https://riscv.org/specifications]][:performance :research]
[1:09:50][Summarise how rdmcycle() is checking for rollover into the high half of the register][:asm :performance]
[1:10:53][@riskyfive][Not rollover completely, only increment in the part of mcycleh]
[1:11:32][Wonder if the 1b in rdmcycle() means 1 in binary][:asm]
[1:12:26][We are out of time for today]
[1:12:39][@riskyfive][Skip over what?]
[1:13:39][Determine to investigate deeper in the next episode]
[/video]