whitequark[cis] changed the topic of #amaranth-lang to: Amaranth hardware definition language · weekly meetings: Amaranth each Mon 1700 UTC, Amaranth SoC each Fri 1700 UTC · play https://amaranth-lang.org/play/ · code https://github.com/amaranth-lang · logs https://libera.irclog.whitequark.org/amaranth-lang · Matrix #amaranth-lang:matrix.org
Degi has quit [Ping timeout: 252 seconds]
Degi has joined #amaranth-lang
Degi has quit [Ping timeout: 248 seconds]
Degi has joined #amaranth-lang
Stas[m]1 has joined #amaranth-lang
<Stas[m]1> hello! just a shout in the dark, but you never know! :)
<Stas[m]1> Does anyone know of or have done a video line scaler? I am doing one for PC Engine with separate input and otput clock domains and it is blowing my mind :D
<Stas[m]1> i built the PCE digital input part with palette ram and so on. It outputs a super crisp picture over RGB in standard PCE console timings.
<Stas[m]1> After that success, I fed the pixel output to a packetizer denoting ends of lines, and start of frame. This goes into a async FIFO as a CDC into VGA 640x480 clock domain. The clocks are unrelated to each other, but timings in the end go to the same 60Hz vertical refresh
<Stas[m]1> to make the picture fit, I repeat the same pixel twice, and the same line twice
<Stas[m]1> pixel repetition is done using valid/ready twiddling, and vertical repetition with a sync FIFO containing a full line. It is fed by the FSM at the same time the first line is output, then FSM switches the output from line fifo
<Stas[m]1> I am having doubts if even the concept would work. How close the vertical refresh clocks can be away from each other for the CDC FIFO to keep up?
zyp[m] has joined #amaranth-lang
<zyp[m]> I haven't, but I have a friend who wanted to make one, so we did some talking and thinking about the problem a few years ago
<Stas[m]1> AFAIK, something like OSSC plays with dynamic PLL settings to lock on that way
<Stas[m]1> and dereive the output clock
<zyp[m]> why do you have separate clock domains?
<Stas[m]1> i wanted to generate a clean video timing mode to be compatible with more displays
<Stas[m]1> and PCE can change the pixel clock divider, so I would have to change PLL dividers on the fly to keep the same pixel clock
<zyp[m]> can you simply double the amount of lines during the vblank interval too? if not you'll have to buffer more than a single line
<zyp[m]> I think the way you're doubling lines sounds reasonable, the challenge lies in synchronizing the output to the input so that any fifos neither underrun nor overrun
<Stas[m]1> I sync by looking at start of frame mark and resetting the output timing generator to the value for that first pixel of frame
<Stas[m]1> You are right for sure, there is some fifo sync issue going on
<whitequark[cis]> oh hey, cool project! good luck with it :3
<Stas[m]1> Made a board and everything. I will look more into why my fifos underrun
<Stas[m]1> Maybe something will clear up
<whitequark[cis]> really nice!
<zyp[m]> I'm working on reinventing litescope in amaranth, and since I need a way to access it, I'm also reinventing litex' uartbone and friends: https://gist.github.com/zyp/db01ad1349231694fd4db1ff09095518
<zyp[m]> currently have a simple bridge that works for an 8b wide CSR bus, and a decent test case for it: https://paste.jvnv.net/view/95Rax
<whitequark[cis]> that's something i'm interested in having upstream in amaranth-soc eventually
<whitequark[cis]> although regretfully right now i'm not in a position to participate in design work
oter has quit [Remote host closed the connection]
oter has joined #amaranth-lang
Stas[m]1 has quit [Ping timeout: 252 seconds]
Psenteee has joined #amaranth-lang
zyp[m] has quit [Ping timeout: 246 seconds]
Xesxen has joined #amaranth-lang
_catircservices1 has joined #amaranth-lang
vup2 has joined #amaranth-lang
Xesxen has quit [Remote host closed the connection]
Psentee has quit [Ping timeout: 246 seconds]
vup has quit [Remote host closed the connection]
_catircservices has quit [Ping timeout: 248 seconds]
zyp[m] has joined #amaranth-lang
Stas[m]1 has joined #amaranth-lang
peepsalot has quit [Remote host closed the connection]
peepsalot has joined #amaranth-lang
Stary has quit [Quit: ZNC - http://znc.in]
Stary has joined #amaranth-lang
lf has quit [Ping timeout: 252 seconds]
lf has joined #amaranth-lang